Aantioch_Infernum/_module/nss/asg_rul_bulditem.nss
Jaysyn904 22947ad4b6 Initial Upload
Initial Upload
2023-08-08 16:22:17 -04:00

164 lines
5.0 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name(ASG_RULE) Build Item Routine
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
script version 1.1 - 12/17/02
*/
//:://////////////////////////////////////////////
//:: Created By: Donny Wilbanks
//:: Created On: 08/02/02
//:://////////////////////////////////////////////
#include "nw_i0_plot"
void Asg_TakeItems(object oPC,string sREQ,int vNUM)
{
// Take items from player
int vK=1;
string sTag = sREQ;
int vSP = FALSE;
if (sTag=="EXP")
{
vSP=TRUE;
int vPCXP = GetXP(oPC);
int vNEWXP = vPCXP - vNUM;
SetXP(oPC,vNEWXP);
}
if (sTag=="GOLD")
{
vSP=TRUE;
TakeGold(vNUM,oPC,TRUE);
}
if (vSP == FALSE)
{
object oItem = GetFirstItemInInventory(oPC);
while (GetIsObjectValid(oItem))
{
if (vK<=vNUM)
{
sTag=GetTag(oItem);
// DEBUG : SendMessageToPC(GetFirstPC(),"DEBUG: fOUND "+sTag+".");
if (sTag==sREQ)
{
DestroyObject(oItem);
// DEBUG: SendMessageToPC(GetFirstPC(),"DEBUG: fOUND "+sREQ+" # "+IntToString(vNUM));
vK++;
}
}
oItem = GetNextItemInInventory(oPC);
}
// DEBUG: SendMessageToPC(GetFirstPC(),"DEBUG: "+sREQ+" # "+IntToString(vNUM));
}
}
//
void main()
{
object oPC = GetPCSpeaker();
object oItem;
object oCreature;
int vITEMTOBUILD = GetLocalInt(oPC,"ITEMTOBUILD");
int vNUMBERGIVEN = GetLocalInt(oPC,"NUMBERGIVEN");
string sREQ1 = GetLocalString(oPC,"REQ1");
string sREQ2 = GetLocalString(oPC,"REQ2");
string sREQ3 = GetLocalString(oPC,"REQ3");
string sREQ4 = GetLocalString(oPC,"REQ4");
int vNUM1 = GetLocalInt(oPC,"NUM1");
int vNUM2 = GetLocalInt(oPC,"NUM2");
int vNUM3 = GetLocalInt(oPC,"NUM3");
int vNUM4 = GetLocalInt(oPC,"NUM4");
int vPLACE = GetLocalInt(oPC,"PLACE");
string sDIST_WHAT= GetLocalString(oPC,"PLACE");
float vDIST = GetLocalFloat(oPC,"DIST");
object oSummoningPoint = GetNearestObjectByTag(sDIST_WHAT,oPC);
// **
// ** Search and Destroy Componants.
// **
string sBluePrint = GetLocalString(oPC,"BLUEPRINT");
if (vNUM1>=1) Asg_TakeItems(oPC,sREQ1,vNUM1);
if (vNUM2>=1) Asg_TakeItems(oPC,sREQ2,vNUM2);
if (vNUM3>=1) Asg_TakeItems(oPC,sREQ3,vNUM3);
if (vNUM4>=1) Asg_TakeItems(oPC,sREQ4,vNUM4);
// **
// ** Create Item or Placeable at Location or on Person.
// **
switch (vPLACE)
{
case(1):
{
oItem = CreateItemOnObject(sBluePrint,oPC,vNUMBERGIVEN);
}
break;
case(2):
{
oItem = CreateObject(OBJECT_TYPE_PLACEABLE,sBluePrint,GetLocation(oPC),TRUE);
}
break;
case(3):
{
oItem = CreateObject(OBJECT_TYPE_PLACEABLE,sBluePrint,GetLocation(oSummoningPoint),TRUE);
}
break;
case(4):
{
oCreature = CreateObject(OBJECT_TYPE_CREATURE,sBluePrint,GetLocation(oSummoningPoint),TRUE);
}
break;
case(5):
{
oItem = CreateItemOnObject(sBluePrint,oPC,vNUMBERGIVEN);
}
break;
default:
// ActionSpeakString("ERROR: Failure to Create item ["+sBluePrint+"] in asg_rul_bulditem.");
}
if (GetIsObjectValid(oItem))
{
SetLocalObject(oPC,"ASG_SPECIAL_ITEM_CONSTRUCTION_FLAG",oItem);
SetIdentified(oItem,TRUE);
}
// **
// ** Specail Propeties that need to be assigned - assign them here.
// **
string sTag; sTag=GetTag(oItem);
if (sTag=="ASG_BEDROLL")
{
SetLocalInt(oItem,"BEDROLL_CHARGES",50);
}
//
SetLocalObject(oPC,"ASG_SPECIAL_ITEM_CONSTRUCTION_FLAG",oItem);
// ** Clean up old varibles
SetLocalInt(oPC,"ITEMTOBUILD",0);
SetLocalString(oPC,"ITEMNAME","none");
SetLocalString(oPC,"BLUEPRINT","none");
SetLocalInt(oPC,"NUMBERGIVEN",0);
SetLocalString(oPC,"REQ1","empty");
SetLocalString(oPC,"REQ2","empty");
SetLocalString(oPC,"REQ3","empty");
SetLocalString(oPC,"REQ4","empty");
SetLocalInt(oPC,"NUM1",0);
SetLocalInt(oPC,"NUM2",0);
SetLocalInt(oPC,"NUM3",0);
SetLocalInt(oPC,"NUM4",0);
SetLocalInt(oPC,"PLACE",1);
SetLocalString(oPC,"DIST_WHAT","none");
if (GetIsObjectValid(oItem))
{
// Setup it's religon...
string sDName = GetLocalString(oPC,"INGAMEDEITY");
if (sDName=="")
{
sDName="Baccob";
SetLocalString(oPC,"INGAMEDEITY","Baccob");
SetLocalInt(oPC,"GoodEvil",ALIGNMENT_NEUTRAL);
SetLocalInt(oPC,"LawChaos",ALIGNMENT_NEUTRAL);
}
int vGoodEvil = GetLocalInt(oPC,"GoodEvil");
int vLawChaos = GetLocalInt(oPC,"LawChaos");
SetLocalString(oItem,"INGAMEDEITY",sDName);
SetLocalInt(oItem,"GoodEvil",vGoodEvil);
SetLocalInt(oItem,"LawChaos",vLawChaos);
}
}