//Script Name: gc_count_cost ////////////////////////////////////////// //Created By: Genisys (Guile) //Created On: 9/11/08 ///////////////////////////////////////// /* This script goes in the ActionTaken Event of a Conversation line, it will determine the cost of the item after the property would be added.. Open up the script "gen_forge_config" to set up the forge! */ //////////////////////////////////////// #include "gen_forge_config" //////////////////////////////////////////////////////////////// //////////WARNING: DO NOT TOUCH ANYTHING BELOW THIS LINE!/////// //////////////////////////////////////////////////////////////// //Main Script void main() { object oPC = GetPCSpeaker(); int nSlot = GetLocalInt(oPC, "CRAFT_SLOT"); object oCraft = GetItemInSlot(nSlot, oPC); //Check for Max Properties int nMaxProps = GetMaxProps(oCraft); int nMaxDmgs =GetMaxWpnProps(oCraft); //The new cost.. int nNewPrice; int nRandom; int nTotal; string sNewCost; int nPCGold = GetGold(oPC); //Reset the Gold check on the PC SetLocalInt(oPC, "BROKE_JOKE", 0); //Get the Cost Multiplier.. float fCost = GetLocalFloat(oPC, "COST_TOTAL"); if(fCost>10.0) { fCost = 10.0; } //Covert the Float Cost Multiplier to an Intergal (Round up!) int nMC; //Multiplier of Cost float fNMC; //New Multiplier of Cost float fNMA; //New Multiplier Adjustment float fAMC; //Adjusted Max Cost //The Currrent Gold Piece Value of the Item.. int nCost1 = GetGoldPieceValue(oCraft); int gp = nCost1; int nGp; int nLevel; //Return the level.. if (gp<1000) nLevel= 1; if (gp>1000 && gp<1500) nLevel= 2; if (gp>1499 && gp<2500) nLevel= 3; if (gp>2499 && gp<3500) nLevel= 4; if (gp>3499 && gp<5000) nLevel= 5; if (gp>4999 && gp<7000) nLevel= 6; if (gp>6999 && gp<9000) nLevel= 7; if (gp>8999 && gp<12000) nLevel= 8; if (gp>11999 && gp<15000) nLevel= 9; if (gp>14999 && gp<20000) nLevel= 10; if (gp>19999 && gp<25000) nLevel= 11; if (gp>24999 && gp<30000) nLevel= 12; if (gp>29999 && gp<35000) nLevel= 13; if (gp>34999 && gp<40000) nLevel= 14; if (gp>39999 && gp<50000) nLevel= 15; if (gp>49999 && gp<65000) nLevel= 16; if (gp>64000 && gp<75000) nLevel= 17; if (gp>74999 && gp<90000) nLevel= 18; if (gp>89999 && gp>110000) nLevel= 19; if (gp>109999 && gp<130000) nLevel= 20; if (gp>129999 && gp<250000) nLevel= 21; if (gp>249999 && gp<500000) nLevel= 22; if (gp>499999 && gp<750000) nLevel= 23; if (gp>749999 && gp<1000000) nLevel= 24; if (gp>999999 && gp<1200000) nLevel = 25; if (gp>1999999 && gp<1400000) nLevel = 26; if (gp>1399999 && gp<1600000) nLevel = 27; if (gp>1599999 && gp<1800000) nLevel = 28; if (gp>1799999 && gp<2000000) nLevel = 29; if (gp>1999999 && gp<2200000) nLevel = 30; if (gp>2199999 && gp<2400000) nLevel = 31; if (gp>2399999 && gp<2600000) nLevel = 32; if (gp>2599999 && gp<2800000) nLevel = 33; if (gp>2799999 && gp<3000000) nLevel = 34; if (gp>2999999 && gp<3200000) nLevel = 35; if (gp>3199999 && gp<3400000) nLevel = 36; if (gp>3399999 && gp<3600000) nLevel = 37; if (gp>3599999 && gp<3800000) nLevel = 38; if (gp>3799999 && gp<4000000) nLevel = 39; if (gp>3999999) nLevel = 40; string sLevel = IntToString(nLevel); SetCustomToken(3331, sLevel); if(nLevel>nMax) { FloatingTextStringOnCreature("This item has reached it's maximum level.", oPC, FALSE); SetLocalInt(oPC, "MAX_ITEM_LEVEL", 2); return; } int nCCM; float fCCost; float fCalCost; int nCost2; int nCost; //Determine the cost of the upgrade depending upon the value of the item.. if(fCost <1.0) { nNewPrice = 3000; nRandom = d100(20); //+ Random 500 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <2.0 && fCost >=1.0) { nNewPrice = 6000; nRandom = d100(10); //+ Random 500 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <3.0 && fCost >=2.0) { nNewPrice = 10000; nRandom = d100(10); //+ Random 1000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <4.0 && fCost >=3.0) { nNewPrice = 20000; nRandom = d100(10); //+ Random 1000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <5.0 && fCost >=4.0) { nNewPrice = 30000; nRandom = d100(10); //+ Random 1000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <6.0 && fCost >=5.0) { nNewPrice = 40000; nRandom = d100(10); //+ Random 1000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <7.0 && fCost >=6.0) { nNewPrice = 50000; nRandom = d100(10); //+ Random 1000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <8.0 && fCost >=7.0) { nNewPrice = 60000; nRandom = d100(10); //+ Random 1000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <9.0 && fCost >=8.0) { nNewPrice = 70000; nRandom = d100(20); //+ Random 1500 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } else if(fCost <=10.0 && fCost >=9.0) { nNewPrice = 80000; nRandom = d100(20); //+ Random 1500 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } //Otherwise it must be Greather than or Equal to 10.0 //Max Cost.. 38,000 Gold + 2000 (Random) /Per Upgrade! else { nNewPrice = 100000; nRandom = d100(30); //+ Random 2000 Gold nTotal = nNewPrice + nRandom; //Current Cost fCCost = IntToFloat(nTotal); fCalCost = fCCost * fMC; nCost = FloatToInt(fCalCost); sNewCost = IntToString(nCost); SetCustomToken(3330, sNewCost); } //If the PC Doesn't have enough gold, tell the conversation.. if(nCost>nPCGold) { SetLocalInt(oPC, "BROKE_JOKE", 2); } SetLocalInt(oPC, "CRAFT_PAYMENT", nCost); AssignCommand(OBJECT_SELF, ActionPauseConversation()); DelayCommand(1.0, AssignCommand(OBJECT_SELF, ActionResumeConversation())); //Main Script End }