// 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) { break; case(3001): // Chest. { sItem = "Wooden Chest"; sBluePrint="chest005"; vPLACE = 2; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 2; // 1 unit to build club // tells the true/false that there are "x" number of trues } break; case(3002): // Candelobra. { sItem = "Candelabra"; sBluePrint="candelabra001"; vPLACE = 2; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // 1 unit to build club // tells the true/false that there are "x" number of trues // Item #2 sREQ2="CANDEL"; vNUM2=4; } break; case(3003): // Forge. { sItem = "Forge/Oven"; sBluePrint="forge"; vPLACE = 2; // item 2 sREQ2="StoneBlock"; vNUM2 = 4; // item 3 sREQ3="NW_IT_MMIDMISC06"; vNUM3 = 1; } break; case(3004): // Large Back Pack (Normal). { sItem = "Leather Back Pack"; sBluePrint="it_contain007"; vPLACE = 1; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(3005): // Small Torch { sItem = "Wooden Torch"; sBluePrint="nw_it_torch001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(3006): // Basic Leather Barbarian outfit. { sItem = "Barbarian Outfit"; sBluePrint="nw_cloth015"; vPLACE = 1; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 2; } break; case(3007): // Anvil { sItem = "Anvil"; sBluePrint="anvil"; vPLACE = 2; // Item #1 sREQ1="StoneBlock"; vNUM1 = 2; } break; // *** // *** Resources // *** case(4001): // Iron Ingit { sItem = "Iron Ingit"; sBluePrint="ironingit"; vPLACE = 1; // Item #1 sREQ1="IronOre"; vNUM1 = 10; } break; case(4002): // Empty Bottle { sItem = "Empty Bottle"; sBluePrint="it_thnmisc002"; vPLACE = 1; // Item #1 sREQ1="Glass"; vNUM1 = 1; } break; case(4003): // Unit of Sand { sItem = "Bag of Sand"; sBluePrint="sand"; vPLACE = 1; vNUMBERGIVEN = 5; // Item #1 sREQ1="StoneBlock"; vNUM1 = 1; } break; case(4004): // Unit of Glass { sItem = "Unit of Glasst"; sBluePrint="glass"; vPLACE = 1; // Item #1 sREQ1="Sand"; vNUM1 = 5; } break; case(4005): // Magic Powder { sItem = "Magic Powder"; sBluePrint="magicpowder"; vPLACE = 1; // Items Required sREQ1="NW_IT_MSMLMISC19"; vNUM1 = 5; } break; case(4006): // Metal Rod { sItem = "Metal Rod"; sBluePrint="metalrod"; vPLACE = 1; // Items Required sREQ1="IronIngit"; vNUM1 = 1; } break; // ***** // ** Arms & Armor - Normal // ***** case(5001): // Daggers { sItem = "Dagger"; sBluePrint="nw_wswdg001"; vPLACE = 1; // Item #1 sREQ1="IronIngit"; vNUM1 = 1; } break; case(5002): // Kama - Exotic { sItem = "Kama"; sBluePrint="nw_wspka001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } case(5003): // Shuriken - Exoitic { sItem = "Shuriken"; sBluePrint="nw_wthsh001"; vPLACE = 1; vNUMBERGIVEN = 99; // Item #1 sREQ1="IronIngit"; vNUM1 = 1; } break; case(5004): // Throwing Hand Axe { sItem = "Throwing Axe"; sBluePrint="nw_wthax001"; vPLACE = 1; vNUMBERGIVEN = 50; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5005): // Lt Crossbow { sItem = "Lt. Crossbow"; sBluePrint="nw_wbwxl001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5006): // Darts { sItem = "Darts"; sBluePrint="nw_wthdt001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5007): // Hammer, light { sItem = "Hammer, Light"; sBluePrint="nw_wblhl001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5008): // Handaxe { sItem = "Handaxe"; sBluePrint="nw_waxhn001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5009): // Mace { sItem = "Mace"; sBluePrint="nw_wblml001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5010): // Sickle - Exotic { sItem = "Sickle"; sBluePrint="nw_wspsc001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5011): // Spear { sItem = "Spear"; sBluePrint="nw_wplss001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5012): // ShortSword { sItem = "Short Sword"; sBluePrint="nw_wswss001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5013): // Battle Axe { sItem = "Battle Axe"; sBluePrint="nw_waxbt001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; case(5014): // Crossbow, Heavy { sItem = "Crossbow, Heavy"; sBluePrint="nw_wbwxh001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 2; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5015): // Flail, Light { sItem = "Flail, Light"; sBluePrint="nw_wblfl001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5016): // Katana { sItem = "Katana"; sBluePrint="nw_wswka001"; vPLACE = 1; // Item #1 sREQ2="IronIngit"; vNUM2 = 2; } break; case(5017): // LongSword { sItem = "Long Sword"; sBluePrint="nw_wswls001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; case(5018): // Morning Star { sItem = "Morning Star"; sBluePrint="nw_wblms001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; } break; case(5019): // Rapeir { sItem = "Rapeir"; sBluePrint="nw_wswrp001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; case(5020): // Warhammer. { sItem = "WarHammer"; sBluePrint="nw_wblhw001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; case(5060): // Scimitar. { sItem = "Scimitar"; sBluePrint="nw_wswsc001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; // *** Large Weapons case(5021): // Bastard Sword { sItem = "Bastard Sword"; sBluePrint="nw_wswbs001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; case(5022): // Dire Mace. { sItem = "Dire Mace"; sBluePrint="nw_wdbma001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 3; } break; case(5023): // Two Bladed. { sItem = "Two Bladed"; sBluePrint="nw_wdbsw001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 3; } break; case(5024): // Double Axe. { sItem = "Double Axe"; sBluePrint="nw_wdbax001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 4; } break; case(5025): // Flial, Heavy. { sItem = "Flail, Heavy"; sBluePrint="nw_wblfh001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 3; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5026): // Great Axe. { sItem = "Great Axe"; sBluePrint="nw_waxgr001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 3; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5027): // Greate Sword. { sItem = "Great Sword"; sBluePrint="nw_wswgs001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 3; } break; case(5028): // Halbred. { sItem = "Halbred"; sBluePrint="nw_wplhb001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 2; } break; case(5029): // LongBow { sItem = "Long Bow"; sBluePrint="nw_wbwln001"; vPLACE = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5030): // Scythe { sItem = "Scythe"; sBluePrint="nw_wplsc001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5031): // Leahter Armor { sItem = "Leather Armor"; sBluePrint="nw_aarcl001"; vPLACE = 1; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 4; } break; case(5032): // Studded Leather { sItem = "Studded Leather"; sBluePrint="nw_aarcl002"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 4; } break; case(5033): // Chain Shirt { sItem = "Chain Shirt"; sBluePrint="nw_aarcl012"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 5; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5034): // Scale { sItem = "Scalemail"; sBluePrint="nw_aarcl003"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 5; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5035): // Chainmail { sItem = "Chainmail"; sBluePrint="nw_aarcl004"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 8; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5036): // Breast Plate { sItem = "Breast Plate"; sBluePrint="nw_aarcl010"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 8; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5037): // Splintmail { sItem = "Splintmail"; sBluePrint="nw_aarcl005"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 9; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5038): // Bandedmail { sItem = "Bandedmail"; sBluePrint="nw_aarcl011"; vPLACE = 9; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5039): // Halfplate { sItem = "Half Plate"; sBluePrint="nw_aarcl006"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 10; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5040): // Full Plate { sItem = "Full Plate"; sBluePrint="nw_aarcl007"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 15; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 1; } break; case(5041): // Large Shield { sItem = "Large Sheild"; sBluePrint="nw_ashlw001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5042): // Tower Sheild. { sItem = "Tower Shield"; sBluePrint="nw_ashto001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5044): // Helm. { sItem = "Helm"; sBluePrint="nw_arhe001"; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5043): // Hide Armor { sItem = "Hide Armor"; sBluePrint="nw_aarcl008"; vPLACE = 1; // Item #1 sREQ1="NW_IT_MMIDMISC06"; vNUM1 = 4; } break; case(5050): // Arrow { sItem = "Arrows"; sBluePrint="nw_wamar001"; vNUMBERGIVEN = 99; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5051): // Bolts { sItem = "Bolts"; sBluePrint="nw_wambo001"; vNUMBERGIVEN=99; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 1; // Item #1 sREQ1="ASG_FIREWOOD"; vNUM1 = 1; } break; case(5052): // Sling Bullets. { sItem = "Sling Bullets"; sBluePrint="nw_wambu001"; vNUMBERGIVEN = 99; vPLACE = 1; // Item #2 sREQ2="IronIngit"; vNUM2 = 2; } break; default:; ActionSpeakString("ERROR in ''asg_rul_testbsel'' script on finding item:"+IntToString(vITEMTOBUILD)); } vNEEDED=0; if (vNOERROR==TRUE) { int vK;vTRUE=FALSE; if (vNUM1>0) { vTRUE = asg_REQ1(oPC,sREQ1,vNUM1); vNEEDED++; } if (vTRUE==TRUE) vREQUIRED++; vTRUE=FALSE; if (vNUM2>0) { vTRUE = asg_REQ1(oPC,sREQ2,vNUM2); vNEEDED++; } if (vTRUE==TRUE)vREQUIRED++; vTRUE=FALSE; if (vNUM3>0) { vTRUE = asg_REQ1(oPC,sREQ3,vNUM3); vNEEDED++; } if (vTRUE==TRUE) vREQUIRED++; vTRUE=FALSE; if (vNUM4>0) { vTRUE = asg_REQ1(oPC,sREQ4,vNUM4); 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; }