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

240 lines
9.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: 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;
}