//:://///////////////////////////////////////////// //:: Name(ASG_RULE) Build Research //:: FileName asg_rul_buldresr //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* */ //::////////////////////////////////////////////// //:: Created By: Donny Wilbanks //:: Created On: 09/07/02 //::////////////////////////////////////////////// #include "nw_i0_plot" #include "asg_include_mics" object oChest = GetLocalObject(OBJECT_SELF,"ASG_MIC_CHEST"); int GetFocus() { int iFmod = 0; object oFocusLevel = GetNearestObjectByTag("asg_magicfocus_1",OBJECT_SELF); if (GetIsObjectValid(oFocusLevel)) { iFmod = 5; } else { oFocusLevel = GetNearestObjectByTag("asg_magicfocus_2",OBJECT_SELF); if (GetIsObjectValid(oFocusLevel)) { iFmod = 10; } else { oFocusLevel = GetNearestObjectByTag("asg_magicfocus_3",OBJECT_SELF); if (GetIsObjectValid(oFocusLevel)) { iFmod = 20; } else { oFocusLevel = GetNearestObjectByTag("asg_magicfocus_4",OBJECT_SELF); if (GetIsObjectValid(oFocusLevel)) { iFmod = 100; } else { oFocusLevel = GetNearestObjectByTag("asg_magicfocus_5",OBJECT_SELF); if (GetIsObjectValid(oFocusLevel)) { iFmod = -20; } } } } } // ** return iFmod; } string AsgBaseType(object oItem) { int iBT = GetBaseItemType(oItem); string sBaseT = "INVALID"; switch(iBT) { case(BASE_ITEM_AMULET): sBaseT = "Amulet";break; case(BASE_ITEM_ARMOR): sBaseT = "Armor";break; case(BASE_ITEM_ARROW): sBaseT = "Arrow";break; case(BASE_ITEM_BASTARDSWORD): sBaseT = "Bastard Sword"; break; case(BASE_ITEM_BATTLEAXE): sBaseT = "Battleaxe"; break; case(BASE_ITEM_BELT): sBaseT = "Belt"; break; case(BASE_ITEM_BOLT): sBaseT = "Bolt"; break; case(BASE_ITEM_BOOK): sBaseT = "Book"; break; case(BASE_ITEM_BOOTS): sBaseT = "Boots"; break; case(BASE_ITEM_BRACER): sBaseT = "Bracer"; break; case(BASE_ITEM_CLOAK): sBaseT = "Cloak"; break; case(BASE_ITEM_CLUB): sBaseT = "Club"; break; case(BASE_ITEM_DAGGER): sBaseT = "Dagger"; break; case(BASE_ITEM_DART): sBaseT = "Dart";break; case(BASE_ITEM_DIREMACE): sBaseT = "Dire Mace";break; case(BASE_ITEM_DOUBLEAXE): sBaseT = "Double Axe";break; case(BASE_ITEM_GLOVES): sBaseT = "Gloves"; break; case(BASE_ITEM_GREATAXE): sBaseT = "Greataxe"; break; case(BASE_ITEM_GREATSWORD): sBaseT = "Greatsword"; break; case(BASE_ITEM_HALBERD): sBaseT = "Halberd"; break; case(BASE_ITEM_HANDAXE): sBaseT = "Handaxe"; break; case(BASE_ITEM_HEALERSKIT): sBaseT = "Healers Kit";break; case(BASE_ITEM_HEAVYCROSSBOW): sBaseT = "Heavy Crossbow"; break; case(BASE_ITEM_HEAVYFLAIL): sBaseT = "Heavy Flail"; break; case(BASE_ITEM_HELMET): sBaseT = "Helmet"; break; case(BASE_ITEM_KAMA): sBaseT = "Kama"; break; case(BASE_ITEM_KATANA): sBaseT = "Katana"; break; case(BASE_ITEM_KUKRI): sBaseT = "Kurkri"; break; case(BASE_ITEM_LARGEBOX): sBaseT = "Large Box"; break; case(BASE_ITEM_LARGESHIELD): sBaseT = "Large Sheild"; break; case(BASE_ITEM_LIGHTCROSSBOW): sBaseT = "Light Crossbow"; break; case(BASE_ITEM_LIGHTFLAIL): sBaseT = "Light Flail"; break; case(BASE_ITEM_LIGHTHAMMER): sBaseT = "Light Hammer"; break; case(BASE_ITEM_LIGHTMACE): sBaseT = "Light Mace"; break; case(BASE_ITEM_LONGBOW): sBaseT = "Long Bow"; break; case(BASE_ITEM_LONGSWORD): sBaseT = "Longsword"; break; case(BASE_ITEM_MAGICROD): sBaseT = "Magic Rod"; break; case(BASE_ITEM_MAGICSTAFF): sBaseT = "Magic Staff"; break; case(BASE_ITEM_MAGICWAND): sBaseT = "Magic Wand"; break; case(BASE_ITEM_MISCLARGE): sBaseT = "Misc Large"; break; case(BASE_ITEM_MISCMEDIUM): sBaseT = "Misc Medium"; break; case(BASE_ITEM_MISCSMALL): sBaseT = "Misc Small"; break; case(BASE_ITEM_MISCTALL): sBaseT = "Misc Tall"; break; case(BASE_ITEM_MISCWIDE): sBaseT = "Misc Wide"; break; case(BASE_ITEM_MISCTHIN): sBaseT = "Misc Thin"; break; case(BASE_ITEM_MORNINGSTAR): sBaseT = "Morningstar"; break; case(BASE_ITEM_POTIONS): sBaseT = "Potions"; break; case(BASE_ITEM_QUARTERSTAFF): sBaseT = "Quarter Staff"; break; case(BASE_ITEM_RAPIER): sBaseT = "Rapier"; break; case(BASE_ITEM_RING): sBaseT = "Ring"; break; case(BASE_ITEM_SCIMITAR): sBaseT = "Scimitar"; break; case(BASE_ITEM_SCROLL): sBaseT = "Scroll"; break; case(BASE_ITEM_SCYTHE): sBaseT = "Scythe"; break; case(BASE_ITEM_SHORTBOW): sBaseT = "Short Bow"; break; case(BASE_ITEM_SHORTSPEAR): sBaseT = "Short Spear"; break; case(BASE_ITEM_SHORTSWORD): sBaseT = "Short Sword"; break; case(BASE_ITEM_SHURIKEN): sBaseT = "Shuriken"; break; case(BASE_ITEM_SICKLE): sBaseT = "Sickle"; break; case(BASE_ITEM_SLING): sBaseT = "Sling"; break; case(BASE_ITEM_SMALLSHIELD): sBaseT = "Small Shield";break; case(BASE_ITEM_SPELLSCROLL): sBaseT = "Spell Scroll";break; case(BASE_ITEM_THIEVESTOOLS): sBaseT = "Theives Tools";break; case(BASE_ITEM_THROWINGAXE):sBaseT = "Throwing Axe";break; case(BASE_ITEM_TORCH):sBaseT = "Torch";break; case(BASE_ITEM_TOWERSHIELD):sBaseT = "Tower Sheild";break; case(BASE_ITEM_TRAPKIT):sBaseT = "Trap Kit"; break; case(BASE_ITEM_TWOBLADEDSWORD): sBaseT = "Two Bladedsword";break; case(BASE_ITEM_WARHAMMER): sBaseT = "Warhammer"; break; } return sBaseT; } int StartingConditional() { // asgmagicitemdesi int iResult = FALSE; float rMatCost = GetLocalFloat(GetModule(),"ASG_MICS_MATERIALCOST"); int iXpCost = GetLocalInt(GetModule(),"ASG_MICS_XPCOST"); object oCChest = GetObjectByTag("ASG_MIC_MIS_COMPONANTS"); object oCCChest = GetNearestObjectByTag("ASG_CCHEST",OBJECT_SELF); int vOption = GetLocalInt(OBJECT_SELF,"ASG_RESEARCH_OPTION"); int iGPValue; string sBluePrint = GetLocalString(OBJECT_SELF,"ASG_BLUEPRINT"); string sItemName; int iBonus = GetLocalInt(OBJECT_SELF,"ASG_MIC_RESEARCHBONUS"); object oPC = GetPCSpeaker(); int iHD; // Set up Temporay item string sChestTag = "ASG_TTEMPSTORAGECHEST"; object oChest = GetObjectByTag(sChestTag); string sArDiv = GetLocalString(OBJECT_SELF,"ASG_MIC_MAGICTYPE"); if (sArDiv=="A") { iHD = GetHitDice(oPC); }else { iHD = GetHitDice(oPC); } int iPass = FALSE; object oItem; if (GetIsObjectValid(oChest)) { oItem = GetLocalObject(OBJECT_SELF,"ASG_BUILDITEM_ITEM"); string sText; if (GetIsObjectValid(oItem)) { int iMlevel = FindItemLevel(oItem); int iFmod = GetFocus(); if (iFmod<0) iMlevel = iMlevel + iFmod; else iMlevel = iMlevel - iFmod; if (iMlevel<0) iMlevel = 1; int iBT = GetBaseItemType(oItem); iGPValue = GetGoldPieceValue(oItem); SetIdentified(oItem,TRUE); sItemName = GetName(oItem); int iType = GetBaseItemType(oItem); // Check for Scrolls and Potions if (iHD>=iMlevel) { iPass = TRUE; } string sBaseType = AsgBaseType(oItem); string sLevel; float fTemp; sText = "The books pages detail plans to build a "+sItemName+" by a "; if (sArDiv == "A") sText = sText + "Arcane"; else sText = sText +"Divine"; sLevel = IntToString(iMlevel); sText = sText + " caster who has reached level "+sLevel+" in their art."; fTemp = IntToFloat(iGPValue)*rMatCost; iGPValue=FloatToInt(fTemp); string sGold = IntToString(iGPValue); sText = sText +" The project will require atleast "+sGold+" gold in Magic Powder."; sText = sText +" The construction will require a "+sBaseType+" along with the Magic Powder."; int iXPloss = iGPValue/iXpCost;if (iXPloss<1) iXPloss = 1; string sXPloss = IntToString(iXPloss); sText = sText +" Estimated Essences (XP) loss should be around "+sXPloss+" Shards of Life."; } if (iPass == TRUE) SetCustomToken(197000,sText); else SendMessageToPC(oPC,"You realise that this project is beyound your current ability."); ActionSpeakString(GetName(oPC)+" reads the book to himself."); } if (iPass == TRUE) { sArDiv = GetLocalString(OBJECT_SELF,"ASG_MIC_MAGICTYPE"); string sTag; if (sArDiv=="A") { sTag="ASG_ENANVIL"; } else { sTag="ASG_ENALTER"; } object oTarget = GetNearestObjectByTag(sTag,OBJECT_SELF); if (GetIsObjectValid(oTarget)==FALSE) { iPass = FALSE; FloatingTextStringOnCreature("No Altar or Enchanted Alar.",oPC,FALSE); } } if (iPass==TRUE) { iResult = TRUE; } return iResult; }