164 lines
5.0 KiB
Plaintext
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);
|
|
}
|
|
}
|