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

390 lines
12 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name(ASG_RULE) Setup Magic Items
//:: FileName
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Used for assembiling magic items Vol 1.
*/
//:://////////////////////////////////////////////
//:: Created By: Donny Wilbanks
//:: Created On: 09/07/02
//:://////////////////////////////////////////////
// asg_REQ1(object oPC,int vREQ, int vNUM);
#include "nw_i0_plot"
int asg_REQ1(object oPC,string sTag,int vNUM)
{
int TRUEFALSE = FALSE;
if (sTag=="")
{
ActionSpeakString("ERROR: Test Resource Script Error NO VALID sTag.");
return TRUEFALSE;
}
else
{
int vITEMTOBUILD = GetLocalInt(oPC,"ITEMTOBUILD");
object oItem = GetFirstItemInInventory(oPC);
int vCount;
vCount = GetNumItems(oPC,sTag);
ActionSpeakString("Test: Resource ("+sTag+") Found ["+IntToString(vCount)+"]");
if (vCount>=vNUM)
{
TRUEFALSE=TRUE;
ActionSpeakString("Test: Found Required Resources found.");
}
else
{
ActionSpeakString("Test: Resources not found Required ["+IntToString(vNUM)+"].");
}
return TRUEFALSE;
}
}
//
int StartingConditional()
{
int iResult = FALSE;
object oPC = GetPCSpeaker();
// general religous stuff.
int vGoodEvil = GetLocalInt(oPC,"GoodEvil");
int vLawChaos = GetLocalInt(oPC,"LawChaos");
string sDeity=GetLocalString(oPC,"INGAMEDEITY");
string sName;
// Set Shrine properties based on alignment
if (sDeity=="")
{
SetLocalInt(oPC,"DeityOVERIDE",TRUE);
sDeity = "Baccob";
vGoodEvil = ALIGNMENT_NEUTRAL;
vLawChaos = ALIGNMENT_NEUTRAL;
SetLocalString(oPC,"INGAMEDEITY",sDeity);
SetLocalInt(oPC,"GoodEvil",vGoodEvil);
SetLocalInt(oPC,"LawChaos",vLawChaos);
}
// return to other stuff
int vITEMTOBUILD = GetLocalInt(oPC,"ITEMTOBUILD");
int vNUMBERGIVEN =1;
string sREQ1;
string sREQ2;
string sREQ3;
string sREQ4;
int vNUM1 = 0;
int vNUM2 = 0;
int vNUM3 = 0;
int vNUM4 = 0;
int vNOERROR = TRUE;
int vNEEDED = 0;
int vTRUE = FALSE;
int vREQUIRED = 0;
string sItem;
string sBluePrint;
int vPLACE; // (1) = ITEM, goes on pc's inventory, (2) PLACEABLE, goes on ground at PC's FEET.
// (3) PLACEABLE, goes near another object.
// (4) Item is a Creature - needs a summoning point = again with the sDist_What
string sDIST_WHAT; // If option 3 is selected then search for this object. Look for
// this TAG.
float vDIST; // (0) if option 3 is selected this tells us how far from this object
// that this item can be built.
switch(vITEMTOBUILD)
{
case(1000): // The Pandora's Box (unlit).
{
sItem = "Pandora's Box";
sBluePrint = "pandorasbox";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 10; // 1 Units of Magic Powder
// Items required.
sREQ2="NW_IT_CONTAIN001";
vNUM2 = 1;
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 20;
// tells the true/false that there are "x" number of trues
}
break;
// pandorasretuner
case(1001): // Add On (unlit).
{
sItem = "Pandora's Box";
sBluePrint = "pandorasretuner";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 1; // 1 Units of Magic Powder.
// Items required.
sREQ2="ASG_PUZZELBOX";
vNUM2 = 1;
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 20;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(1002): // Add On (unlit).
{
sItem = "Pandora's Stableizer";
sBluePrint = "pandorasstabalis";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 1; // 1 Units of Magic Powder
// Items required.
sREQ2="ASG_PUZZELBOX";
vNUM2 = 1;
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 2;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(1003): // Build Returner (unlit).
{
sItem = "Pandora's Returner";
sBluePrint = "pandorasretuner";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 1; // 1 Units of Magic Powder.
// Items required.
sREQ2="ASG_PUZZELBOX";
vNUM2 = 1;
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 7;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(1004): // Build Locaalizer (unlit).
{
sItem = "Pandora's Localiser";
sBluePrint = "pandorasloclaise";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 1; // 1 Units of Fairy Dust
// Items required.
sREQ2="ASG_PUZZELBOX";
vNUM2 = 1;
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 10;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(1010): // Dhopper
{
sItem = "Dhopper";
sBluePrint = "dhopper001";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 10; // 1 Units of Fairy Dust
// Items required.
sREQ2="ASG_EARTHGEM";
vNUM2 = 1;
//
sREQ3="MetalRod";
vNUM3 = 1;
// Xp Requirement
sREQ4="XP";
vNUM4 = 100;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(1011): // Secyre Shelter
{
sItem = "Secure Shelter";
sBluePrint = "secureshelter";
vPLACE = 1;
// Items Required.
sREQ1="MagicPowder";
vNUM1 = 10; // 1 Units of Fairy Dust
// Items required.
sREQ2="SmallHouseModel";
vNUM2 = 1;
// Xp Requirement
sREQ4="XP";
vNUM4 = 100;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
// ******* Cleric Stuff ****
case(2000): // Potion of Cure Light Wounds (unlit).
{
sItem = "Potion of Cure Light Wounds";
sBluePrint = "nw_it_mpotion001";
vPLACE = 1;
// Items Required.
sREQ1="ASG_HOLYWATER";
vNUM1 = 1; // 1 Units of Fairy Dust
// Items required.
sREQ2="NW_IT_THNMISC001";
vNUM2 = 1; // 1 unit to build club
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 1;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(2001): // Potion of Moderate Light Wounds (unlit).
{
sItem = "Potion of Moderate Wounds";
sBluePrint = "nw_it_mpotion020";
vPLACE = 1;
// Items Required.
sREQ1="ASG_HOLYWATER";
vNUM1 = 2; // 1 Units of Fairy Dust
// Items required.
sREQ2="NW_IT_THNMISC001";
vNUM2 = 1; // 1 unit to build club
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 1;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(2002): // Potion of Serious Wounds (unlit).
{
sItem = "Potion of Serious Wounds";
sBluePrint = "nw_it_mpotion002";
vPLACE = 1;
// Items Required.
sREQ1="ASG_HOLYWATER";
vNUM1 = 3; // 1 Units of Fairy Dust
// Items required.
sREQ2="NW_IT_THNMISC001";
vNUM2 = 1; // 1 unit to build club
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 2;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(2003): // Potion of Critical Wounds (unlit).
{
sItem = "Potion of Critical Wounds";
sBluePrint = "nw_it_mpotion003";
vPLACE = 1;
// Items Required.
sREQ1="ASG_HOLYWATER";
vNUM1 = 4; // 1 Units of Fairy Dust
// Items required.
sREQ2="NW_IT_THNMISC001";
vNUM2 = 1; // 1 unit to build club
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 11;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
case(2004): // Potion of Serious Wounds (unlit).
{
sItem = "Potion of Heal";
sBluePrint = "nw_it_mpotion012";
vPLACE = 1;
// Items Required.
sREQ1="ASG_HOLYWATER";
vNUM1 = 5; // 1 Units of Fairy Dust
// Items required.
sREQ2="NW_IT_THNMISC001";
vNUM2 = 1; // 1 unit to build club
// Items Requried - Last is always XP.
sREQ4="XP";
vNUM4 = 52;
// tells the true/false that there are "x" number of trues pandorasstabalis
}
break;
default:;
ActionSpeakString("ERROR in ''asg_rul_testbsel'' script on finding item:"+IntToString(vITEMTOBUILD));
}
vNEEDED=0;
object oCChest = GetNearestObjectByTag("ASG_CCHEST",OBJECT_SELF);
if (vNOERROR==TRUE)
{
int vK;vTRUE=FALSE;
if (vNUM1>0)
{
vTRUE = asg_REQ1(oCChest,sREQ1,vNUM1);
vNEEDED++;
}
if (vTRUE==TRUE) vREQUIRED++;
vTRUE=FALSE;
if (vNUM2>0)
{
vTRUE = asg_REQ1(oCChest,sREQ2,vNUM2);
vNEEDED++;
}
if (vTRUE==TRUE) vREQUIRED++;
vTRUE=FALSE;
if (vNUM3>0)
{
vTRUE = asg_REQ1(oCChest,sREQ3,vNUM3);
vNEEDED++;
}
if (vTRUE==TRUE) vREQUIRED++;
vTRUE=FALSE;
if (vNUM4>0)
{
// Specail
int vXP = GetXP(oPC);
if (vXP>=vNUM4)vTRUE=TRUE;
vNEEDED++;
}
if (vTRUE==TRUE) vREQUIRED++;
vTRUE=FALSE;
}
if (vREQUIRED>=vNEEDED)
{
// last check for placement requirements
int vResult = TRUE;
if (vPLACE==5 || vPLACE==3)
{
object oPlace = GetNearestObjectByTag(sDIST_WHAT,oPC);
float vHOWFAR = GetDistanceBetween(oPlace,oPC);
if (vHOWFAR<=vDIST)
{
vResult=TRUE;
}
else
{
ActionSpeakString("ERROR: To Far from closest ["+GetName(oPlace)+"] Distance ["+FloatToString(vHOWFAR)+"]");
vResult=FALSE;
}
}
if (vResult==TRUE)
{
ActionSpeakString("All items for the "+sItem+" have been found.");
SetLocalString(oPC,"BLUEPRINT",sBluePrint);
SetLocalInt(oPC,"NUMBERGIVEN",vNUMBERGIVEN);
object oPC = GetPCSpeaker();
SetLocalString(oPC,"REQ1",sREQ1);
SetLocalString(oPC,"REQ2",sREQ2);
SetLocalString(oPC,"REQ3",sREQ3);
SetLocalString(oPC,"REQ4",sREQ4);
SetLocalInt(oPC,"NUM1",vNUM1);
SetLocalInt(oPC,"NUM2",vNUM2);
SetLocalInt(oPC,"NUM3",vNUM3);
SetLocalInt(oPC,"NUM4",vNUM4);
SetLocalInt(oPC,"PLACE",vPLACE);
SetLocalString(oPC,"DIST_WHAT",sDIST_WHAT);
iResult=TRUE;
}
}
else
{
ActionSpeakString("TEST: Requirement have for the "+sItem+" have not been met.");
}
return iResult;
}