1. Fixed bug where you could get more abilities points if you was already maxlevel.
2. Added Switch to enable and disable Gender
3. Added New Abilities Colossal Blow. 'HULK SMASH'
Version 0.4 Released 8/12/22
1. Fixed Error with Puser
2. Added Defense Mod at Level 30.
3. Adjusted the level exp needed to get to next level.
4. Adjusted how much exp you get per hit.
Version 0.3 Released 8/12/22
1. Fixed so any pets that didn't have Pet Level system before would have it when system is added to shard.
Version 0.2 Released 9/18/21
Added Str,Dex,Int,LoDam,HiDam Buttons to level up on npc
Changed how Much XP you gain for a fight.
Changed how much ability points you gain on a level.
Changed Max Level to be little higher.
Added Female and Male Gender. Note will be for later project.
Version 0.1 Released
Thanks to Xuri for helping me solve my ongumppress
Drop this Js in you custom folder and assign it a number.
You're wondering how to get the gump to come up.
well what I did was add it to my animallore.js
just add this line to your animalore.js around line 60.
Make sure you change the script number on it to our number you assigned the js too.
TriggerEvent(3402, "petGump",pUser, ourObj);
///////////////////////////////////////////
// Pet Level System Version 0.5 //
// Written by Dragon Slayer //
///////////////////////////////////////////
const GenderEnabled = false;
function onCreateDFN(objMade, objType)
{
var randmax = RandomNumber(10, 50)
var iDice = RandomNumber(1, 2)
var pUser = objMade;
var totalstats = pUser.strength + pUser.dexterity + pUser.intelligence + pUser.maxhp + pUser.maxstamina + pUser.maxmana + pUser.lodamage + pUser.hidamage;
var nxtlvl = totalstats * 20;
if (objType == 1)
{
pUser.SetTag("Exp");
pUser.SetTag("Level");
pUser.SetTag("MaxLevel", randmax);
pUser.SetTag("NxtLevel", nxtlvl);
pUser.SetTag("AbilityPoints");
if (GenderEnabled)
{
if (iDice == 1)
{
pUser.SetTag("Gender", "Male");
pUser.title = "(Male)";
}
else
{
pUser.SetTag("Gender", "Female");
pUser.title = "(Female)";
}
}
pUser.SetTag("init", true);
}
}
function Init(pUser)
{
if (!pUser.GetTag("init"))
{
var randmax = RandomNumber(10, 50)
var iDice = RandomNumber(1, 2)
var totalstats = pUser.strength + pUser.dexterity + pUser.intelligence + pUser.maxhp + pUser.maxstamina + pUser.maxmana + pUser.lodamage + pUser.hidamage;
var nxtlvl = totalstats * 20;
pUser.SetTag("Exp");
pUser.SetTag("Level");
pUser.SetTag("MaxLevel", randmax);
pUser.SetTag("NxtLevel", nxtlvl);
pUser.SetTag("AbilityPoints");
if (GenderEnabled)
{
if (iDice == 1)
{
pUser.SetTag("Gender", "Male");
pUser.title = "(Male)";
}
else
{
pUser.SetTag("Gender", "Female");
pUser.title = "(Female)";
}
}
pUser.SetTag("init", true);
}
}
function onAttack(pAttacker, pDefender)
{
if (pAttacker.tamed)
{
Init(pAttacker);
var expgainmin = Math.min(pDefender.maxhp * 5);
var expgainmax = Math.max(pDefender.maxhp * 10);
var xpgain = RandomNumber(expgainmin, expgainmax);
var oldNumExp = parseInt(pAttacker.GetTag("Exp"));
var oldNumlvl = parseInt(pAttacker.GetTag("Level"));
var oldNumnxtlvl = parseInt(pAttacker.GetTag("NxtLevel"));
var oldNumABPoints = parseInt(pAttacker.GetTag("AbilityPoints"));
if (pAttacker.GetTag("Level") <= pAttacker.GetTag("MaxLevel"))
{
var newNumExp = (oldNumExp + xpgain);
pAttacker.SetTag("Exp", newNumExp);
pAttacker.TextMessage(pAttacker.name + " has gained " + xpgain + " experience points.");
}
if (pAttacker.GetTag("Exp") >= oldNumnxtlvl && pAttacker.GetTag("Level") <= pAttacker.GetTag("MaxLevel"))
{
var newNumlvl = (oldNumlvl + 1);
pAttacker.SetTag("Level", newNumlvl);
pAttacker.SetTag("Exp", 0);
pAttacker.StaticEffect(0x373A, 10, 15);
pAttacker.SoundEffect(503, true);
pAttacker.TextMessage(pAttacker.name + " level has increased to " + newNumlvl + ".");
var gainmin = Math.min(pAttacker.GetTag("Level") * 5);
var gainmax = Math.max(pAttacker.GetTag("Level") * 10);
var gain = RandomNumber(gainmin, gainmax);
var newNumABPoints = (oldNumABPoints + gain);
pAttacker.SetTag("AbilityPoints", newNumABPoints);
}
}
}
function petGump(pUser, ourObj)
{
if (!ourObj.tamed)
{
return;
}
Init(ourObj);
pUser.SetTag("petSerial", ourObj.serial);
var petGump = new Gump;
petGump.AddPage(0);
petGump.AddBackground(12, 9, 394, 526, 2620);
petGump.AddTiledGump(17, 15, 384, 113, 9274);
petGump.AddTiledGump(17, 136, 302, 27, 9274);
petGump.AddTiledGump(17, 171, 302, 356, 9274);
petGump.AddTiledGump(326, 136, 76, 27, 9274);
petGump.AddTiledGump(326, 171, 76, 354, 9274);
petGump.AddCheckerTrans(16, 15, 384, 511);
petGump.AddText(33, 20, 1160, ourObj.name);
petGump.AddText(300, 20, 1149, "Gender: " + ourObj.GetTag("Gender"));
petGump.AddText(35, 40, 1149, "Exp: " + ourObj.GetTag("Exp"));
petGump.AddText(35, 55, 1149, "Current Level: " + ourObj.GetTag("Level"));
petGump.AddText(35, 70, 1149, "Maxium Level: " + ourObj.GetTag("MaxLevel"));
petGump.AddText(35, 85, 1149, "Exp Till Next Level: " + ourObj.GetTag("NxtLevel"));
petGump.AddText(35, 100, 1149, "Ability Points: " + ourObj.GetTag("AbilityPoints"));
petGump.AddPicture(336, 40, 5549);
petGump.AddButton(300, 100, 2117, 2118, 1, 0, 11);
petGump.AddButton(320, 100, 2117, 2118, 1, 0, 12);
petGump.AddText(22, 140, 1149, "Property Name");
petGump.AddText(330, 140, 1149, "Amount");
petGump.AddPage(1);
petGump.AddText(60, 175, 1149, "Hit Points");
petGump.AddText(60, 200, 1149, "Stamina");
petGump.AddText(60, 225, 1149, "Mana");
petGump.AddText(330, 175, 1149, ourObj.maxhp + "/" + "1100");
petGump.AddText(330, 200, 1149, ourObj.maxstamina + "/" + "150");
petGump.AddText(330, 225, 1149, ourObj.maxmana + "/" + "1500");
petGump.AddButton(24, 175, 4005, 4006, 1, 0, 1);
petGump.AddButton(24, 200, 4005, 4006, 1, 0, 2);
petGump.AddButton(24, 225, 4005, 4006, 1, 0, 3);
if (ourObj.GetTag("Level") >= 20)
{
petGump.AddText(60, 250, 1149, "Min Damage");
petGump.AddText(60, 275, 1149, "Max Damage");
petGump.AddText(330, 250, 1149, ourObj.lodamage + "/" + "25");
petGump.AddText(330, 275, 1149, ourObj.hidamage + "/" + "50");
petGump.AddButton(24, 250, 4005, 4006, 1, 0, 4);
petGump.AddButton(24, 275, 4005, 4006, 1, 0, 5);
}
else
{
petGump.AddText(60, 250, 38, "-Locked-");
petGump.AddText(60, 275, 38, "-Locked-");
petGump.AddText(330, 250, 38, "???");
petGump.AddText(330, 275, 38, "???");
}
if (ourObj.GetTag("Level") >= 30)
{
petGump.AddText(60, 350, 1149, "Physical");
//petGump.AddText(60, 275, 1149, "Max Damage");
petGump.AddText(330, 350, 1149, ourObj.Resist( 1 ).toString() + "/" + "25");
//petGump.AddText(330, 275, 1149, ourObj.hidamage + "/" + "50");
petGump.AddButton(24, 350, 4005, 4006, 1, 0, 9);
//petGump.AddButton(24, 275, 4005, 4006, 1, 0, 10);
}
else
{
petGump.AddText(60, 350, 38, "-Locked-");
//petGump.AddText(60, 375, 38, "-Locked-");
petGump.AddText(330, 350, 38, "???");
//petGump.AddText(330, 375, 38, "???");
}
if (ourObj.GetTag("Level") >= 40)
{
petGump.AddText(60, 450, 1149, "Strength");
petGump.AddText(60, 475, 1149, "Dexterity");
petGump.AddText(60, 500, 1149, "Intelligence");
petGump.AddText(330, 450, 1149, ourObj.strength + "/" + "100");
petGump.AddText(330, 475, 1149, ourObj.dexterity + "/" + "100");
petGump.AddText(330, 500, 1149, ourObj.intelligence + "/" + "100");
petGump.AddButton(24, 450, 4005, 4006, 1, 0, 6);
petGump.AddButton(24, 475, 4005, 4006, 1, 0, 7);
petGump.AddButton(24, 500, 4005, 4006, 1, 0, 8);
}
else
{
petGump.AddText(60, 450, 38, "-Locked-");
petGump.AddText(60, 475, 38, "-Locked-");
petGump.AddText(60, 500, 38, "-Locked-");
petGump.AddText(330, 450, 38, "???");
petGump.AddText(330, 475, 38, "???");
petGump.AddText(330, 500, 38, "???");
}
petGump.Send(pUser);
petGump.Free();
}
function petGumpPage2(pUser, ourObj)
{
pUser.SetTag("petSerial", ourObj.serial);
var petGump = new Gump;
petGump.AddPage(0);
petGump.AddBackground(12, 9, 394, 526, 2620);
petGump.AddTiledGump(17, 15, 384, 113, 9274);
petGump.AddTiledGump(17, 136, 302, 27, 9274);
petGump.AddTiledGump(17, 171, 302, 356, 9274);
petGump.AddTiledGump(326, 136, 76, 27, 9274);
petGump.AddTiledGump(326, 171, 76, 354, 9274);
petGump.AddCheckerTrans(16, 15, 384, 511);
petGump.AddText(33, 20, 1160, ourObj.name);
petGump.AddText(300, 20, 1149, "Gender: " + ourObj.GetTag("Gender"));
petGump.AddText(35, 40, 1149, "Exp: " + ourObj.GetTag("Exp"));
petGump.AddText(35, 55, 1149, "Current Level: " + ourObj.GetTag("Level"));
petGump.AddText(35, 70, 1149, "Maxium Level: " + ourObj.GetTag("MaxLevel"));
petGump.AddText(35, 85, 1149, "Exp Till Next Level: " + ourObj.GetTag("NxtLevel"));
petGump.AddText(35, 100, 1149, "Ability Points: " + ourObj.GetTag("AbilityPoints"));
petGump.AddPicture(336, 40, 5549);
petGump.AddButton(300, 100, 2117, 2118, 1, 0, 11);
petGump.AddButton(320, 100, 2117, 2118, 1, 0, 12);
petGump.AddText(22, 140, 1149, "Property Name");
petGump.AddText(330, 140, 1149, "Amount");
petGump.AddPage(1);
if (ourObj.GetTag("Level") >= 50)
{
petGump.AddText(60, 175, 1149, "Colossal Blow");
//petGump.AddText(60, 475, 1149, "Dexterity");
//petGump.AddText(60, 500, 1149, "Intelligence");
if (ourObj.scripttrigger == 3511)
{
petGump.AddText(330, 175, 1149, "Enabled");
}
else
{
petGump.AddText(330, 175, 1149, "Disabled");
}
//petGump.AddText(330, 475, 1149, ourObj.dexterity + "/" + "100");
//petGump.AddText(330, 500, 1149, ourObj.intelligence + "/" + "100");
petGump.AddButton(24, 175, 4005, 4006, 1, 0, 10);
//petGump.AddButton(24, 475, 4005, 4006, 1, 0, 7);
//petGump.AddButton(24, 500, 4005, 4006, 1, 0, 8);
}
else
{
petGump.AddText(60, 175, 38, "-Locked-");
//petGump.AddText(60, 475, 38, "-Locked-");
//petGump.AddText(60, 500, 38, "-Locked-");
//petGump.AddText(330, 450, 38, "???");
//petGump.AddText(330, 475, 38, "???");
//petGump.AddText(330, 500, 38, "???");
}
petGump.Send(pUser);
petGump.Free();
}
function onGumpPress(pSock, pButton, gumpData)
{
var pUser = pSock.currentChar;
var myPet = CalcCharFromSer(pUser.GetTag("petSerial"));
switch (pButton)
{
case 0:
break;
case 1:
if (ValidateObject(myPet))
{
if (myPet.maxhp >= 1100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.maxhp;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.maxhp += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 2:
if (ValidateObject(myPet))
{
if (myPet.maxstamina >= 150)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.maxstamina;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.maxstamina += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 3:
if (ValidateObject(myPet))
{
if (myPet.maxmana >= 1500)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.maxmana;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.maxmana += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 4:
if (ValidateObject(myPet))
{
if (myPet.lodamage >= 25)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0) {
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.lodamage;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.lodamage += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 5:
if (ValidateObject(myPet))
{
if (myPet.hidamage >= 50)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.hidamage;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.hidamage += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 6:
if (ValidateObject(myPet))
{
if (myPet.strength >= 100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.strength;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.strength += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 7:
if (ValidateObject(myPet))
{
if (myPet.dexterity >= 100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.dexterity;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.dexterity += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 8:
if (ValidateObject(myPet))
{
if (myPet.intelligence >= 100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.intelligence;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.intelligence += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 9:
if (ValidateObject(myPet))
{
if (myPet.Resist(1) >= 25)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0) {
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.Resist(1);
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.Resist( 1, myPet.Resist( 1 ) + 1 );
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 10:
if (ValidateObject(myPet))
{
if (myPet.scripttrigger == 3511)
{
pUser.TextMessage("You pet already has this.");
petGumpPage2(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = 1000;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.scripttrigger = 3511;
petGumpPage2(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGumpPage2(pUser, myPet);
break;
}
}
break;
case 11: petGump(pUser, myPet); break;
case 12: petGumpPage2(pUser, myPet); break;
}
}
// Pet Level System Version 0.5 //
// Written by Dragon Slayer //
///////////////////////////////////////////
const GenderEnabled = false;
function onCreateDFN(objMade, objType)
{
var randmax = RandomNumber(10, 50)
var iDice = RandomNumber(1, 2)
var pUser = objMade;
var totalstats = pUser.strength + pUser.dexterity + pUser.intelligence + pUser.maxhp + pUser.maxstamina + pUser.maxmana + pUser.lodamage + pUser.hidamage;
var nxtlvl = totalstats * 20;
if (objType == 1)
{
pUser.SetTag("Exp");
pUser.SetTag("Level");
pUser.SetTag("MaxLevel", randmax);
pUser.SetTag("NxtLevel", nxtlvl);
pUser.SetTag("AbilityPoints");
if (GenderEnabled)
{
if (iDice == 1)
{
pUser.SetTag("Gender", "Male");
pUser.title = "(Male)";
}
else
{
pUser.SetTag("Gender", "Female");
pUser.title = "(Female)";
}
}
pUser.SetTag("init", true);
}
}
function Init(pUser)
{
if (!pUser.GetTag("init"))
{
var randmax = RandomNumber(10, 50)
var iDice = RandomNumber(1, 2)
var totalstats = pUser.strength + pUser.dexterity + pUser.intelligence + pUser.maxhp + pUser.maxstamina + pUser.maxmana + pUser.lodamage + pUser.hidamage;
var nxtlvl = totalstats * 20;
pUser.SetTag("Exp");
pUser.SetTag("Level");
pUser.SetTag("MaxLevel", randmax);
pUser.SetTag("NxtLevel", nxtlvl);
pUser.SetTag("AbilityPoints");
if (GenderEnabled)
{
if (iDice == 1)
{
pUser.SetTag("Gender", "Male");
pUser.title = "(Male)";
}
else
{
pUser.SetTag("Gender", "Female");
pUser.title = "(Female)";
}
}
pUser.SetTag("init", true);
}
}
function onAttack(pAttacker, pDefender)
{
if (pAttacker.tamed)
{
Init(pAttacker);
var expgainmin = Math.min(pDefender.maxhp * 5);
var expgainmax = Math.max(pDefender.maxhp * 10);
var xpgain = RandomNumber(expgainmin, expgainmax);
var oldNumExp = parseInt(pAttacker.GetTag("Exp"));
var oldNumlvl = parseInt(pAttacker.GetTag("Level"));
var oldNumnxtlvl = parseInt(pAttacker.GetTag("NxtLevel"));
var oldNumABPoints = parseInt(pAttacker.GetTag("AbilityPoints"));
if (pAttacker.GetTag("Level") <= pAttacker.GetTag("MaxLevel"))
{
var newNumExp = (oldNumExp + xpgain);
pAttacker.SetTag("Exp", newNumExp);
pAttacker.TextMessage(pAttacker.name + " has gained " + xpgain + " experience points.");
}
if (pAttacker.GetTag("Exp") >= oldNumnxtlvl && pAttacker.GetTag("Level") <= pAttacker.GetTag("MaxLevel"))
{
var newNumlvl = (oldNumlvl + 1);
pAttacker.SetTag("Level", newNumlvl);
pAttacker.SetTag("Exp", 0);
pAttacker.StaticEffect(0x373A, 10, 15);
pAttacker.SoundEffect(503, true);
pAttacker.TextMessage(pAttacker.name + " level has increased to " + newNumlvl + ".");
var gainmin = Math.min(pAttacker.GetTag("Level") * 5);
var gainmax = Math.max(pAttacker.GetTag("Level") * 10);
var gain = RandomNumber(gainmin, gainmax);
var newNumABPoints = (oldNumABPoints + gain);
pAttacker.SetTag("AbilityPoints", newNumABPoints);
}
}
}
function petGump(pUser, ourObj)
{
if (!ourObj.tamed)
{
return;
}
Init(ourObj);
pUser.SetTag("petSerial", ourObj.serial);
var petGump = new Gump;
petGump.AddPage(0);
petGump.AddBackground(12, 9, 394, 526, 2620);
petGump.AddTiledGump(17, 15, 384, 113, 9274);
petGump.AddTiledGump(17, 136, 302, 27, 9274);
petGump.AddTiledGump(17, 171, 302, 356, 9274);
petGump.AddTiledGump(326, 136, 76, 27, 9274);
petGump.AddTiledGump(326, 171, 76, 354, 9274);
petGump.AddCheckerTrans(16, 15, 384, 511);
petGump.AddText(33, 20, 1160, ourObj.name);
petGump.AddText(300, 20, 1149, "Gender: " + ourObj.GetTag("Gender"));
petGump.AddText(35, 40, 1149, "Exp: " + ourObj.GetTag("Exp"));
petGump.AddText(35, 55, 1149, "Current Level: " + ourObj.GetTag("Level"));
petGump.AddText(35, 70, 1149, "Maxium Level: " + ourObj.GetTag("MaxLevel"));
petGump.AddText(35, 85, 1149, "Exp Till Next Level: " + ourObj.GetTag("NxtLevel"));
petGump.AddText(35, 100, 1149, "Ability Points: " + ourObj.GetTag("AbilityPoints"));
petGump.AddPicture(336, 40, 5549);
petGump.AddButton(300, 100, 2117, 2118, 1, 0, 11);
petGump.AddButton(320, 100, 2117, 2118, 1, 0, 12);
petGump.AddText(22, 140, 1149, "Property Name");
petGump.AddText(330, 140, 1149, "Amount");
petGump.AddPage(1);
petGump.AddText(60, 175, 1149, "Hit Points");
petGump.AddText(60, 200, 1149, "Stamina");
petGump.AddText(60, 225, 1149, "Mana");
petGump.AddText(330, 175, 1149, ourObj.maxhp + "/" + "1100");
petGump.AddText(330, 200, 1149, ourObj.maxstamina + "/" + "150");
petGump.AddText(330, 225, 1149, ourObj.maxmana + "/" + "1500");
petGump.AddButton(24, 175, 4005, 4006, 1, 0, 1);
petGump.AddButton(24, 200, 4005, 4006, 1, 0, 2);
petGump.AddButton(24, 225, 4005, 4006, 1, 0, 3);
if (ourObj.GetTag("Level") >= 20)
{
petGump.AddText(60, 250, 1149, "Min Damage");
petGump.AddText(60, 275, 1149, "Max Damage");
petGump.AddText(330, 250, 1149, ourObj.lodamage + "/" + "25");
petGump.AddText(330, 275, 1149, ourObj.hidamage + "/" + "50");
petGump.AddButton(24, 250, 4005, 4006, 1, 0, 4);
petGump.AddButton(24, 275, 4005, 4006, 1, 0, 5);
}
else
{
petGump.AddText(60, 250, 38, "-Locked-");
petGump.AddText(60, 275, 38, "-Locked-");
petGump.AddText(330, 250, 38, "???");
petGump.AddText(330, 275, 38, "???");
}
if (ourObj.GetTag("Level") >= 30)
{
petGump.AddText(60, 350, 1149, "Physical");
//petGump.AddText(60, 275, 1149, "Max Damage");
petGump.AddText(330, 350, 1149, ourObj.Resist( 1 ).toString() + "/" + "25");
//petGump.AddText(330, 275, 1149, ourObj.hidamage + "/" + "50");
petGump.AddButton(24, 350, 4005, 4006, 1, 0, 9);
//petGump.AddButton(24, 275, 4005, 4006, 1, 0, 10);
}
else
{
petGump.AddText(60, 350, 38, "-Locked-");
//petGump.AddText(60, 375, 38, "-Locked-");
petGump.AddText(330, 350, 38, "???");
//petGump.AddText(330, 375, 38, "???");
}
if (ourObj.GetTag("Level") >= 40)
{
petGump.AddText(60, 450, 1149, "Strength");
petGump.AddText(60, 475, 1149, "Dexterity");
petGump.AddText(60, 500, 1149, "Intelligence");
petGump.AddText(330, 450, 1149, ourObj.strength + "/" + "100");
petGump.AddText(330, 475, 1149, ourObj.dexterity + "/" + "100");
petGump.AddText(330, 500, 1149, ourObj.intelligence + "/" + "100");
petGump.AddButton(24, 450, 4005, 4006, 1, 0, 6);
petGump.AddButton(24, 475, 4005, 4006, 1, 0, 7);
petGump.AddButton(24, 500, 4005, 4006, 1, 0, 8);
}
else
{
petGump.AddText(60, 450, 38, "-Locked-");
petGump.AddText(60, 475, 38, "-Locked-");
petGump.AddText(60, 500, 38, "-Locked-");
petGump.AddText(330, 450, 38, "???");
petGump.AddText(330, 475, 38, "???");
petGump.AddText(330, 500, 38, "???");
}
petGump.Send(pUser);
petGump.Free();
}
function petGumpPage2(pUser, ourObj)
{
pUser.SetTag("petSerial", ourObj.serial);
var petGump = new Gump;
petGump.AddPage(0);
petGump.AddBackground(12, 9, 394, 526, 2620);
petGump.AddTiledGump(17, 15, 384, 113, 9274);
petGump.AddTiledGump(17, 136, 302, 27, 9274);
petGump.AddTiledGump(17, 171, 302, 356, 9274);
petGump.AddTiledGump(326, 136, 76, 27, 9274);
petGump.AddTiledGump(326, 171, 76, 354, 9274);
petGump.AddCheckerTrans(16, 15, 384, 511);
petGump.AddText(33, 20, 1160, ourObj.name);
petGump.AddText(300, 20, 1149, "Gender: " + ourObj.GetTag("Gender"));
petGump.AddText(35, 40, 1149, "Exp: " + ourObj.GetTag("Exp"));
petGump.AddText(35, 55, 1149, "Current Level: " + ourObj.GetTag("Level"));
petGump.AddText(35, 70, 1149, "Maxium Level: " + ourObj.GetTag("MaxLevel"));
petGump.AddText(35, 85, 1149, "Exp Till Next Level: " + ourObj.GetTag("NxtLevel"));
petGump.AddText(35, 100, 1149, "Ability Points: " + ourObj.GetTag("AbilityPoints"));
petGump.AddPicture(336, 40, 5549);
petGump.AddButton(300, 100, 2117, 2118, 1, 0, 11);
petGump.AddButton(320, 100, 2117, 2118, 1, 0, 12);
petGump.AddText(22, 140, 1149, "Property Name");
petGump.AddText(330, 140, 1149, "Amount");
petGump.AddPage(1);
if (ourObj.GetTag("Level") >= 50)
{
petGump.AddText(60, 175, 1149, "Colossal Blow");
//petGump.AddText(60, 475, 1149, "Dexterity");
//petGump.AddText(60, 500, 1149, "Intelligence");
if (ourObj.scripttrigger == 3511)
{
petGump.AddText(330, 175, 1149, "Enabled");
}
else
{
petGump.AddText(330, 175, 1149, "Disabled");
}
//petGump.AddText(330, 475, 1149, ourObj.dexterity + "/" + "100");
//petGump.AddText(330, 500, 1149, ourObj.intelligence + "/" + "100");
petGump.AddButton(24, 175, 4005, 4006, 1, 0, 10);
//petGump.AddButton(24, 475, 4005, 4006, 1, 0, 7);
//petGump.AddButton(24, 500, 4005, 4006, 1, 0, 8);
}
else
{
petGump.AddText(60, 175, 38, "-Locked-");
//petGump.AddText(60, 475, 38, "-Locked-");
//petGump.AddText(60, 500, 38, "-Locked-");
//petGump.AddText(330, 450, 38, "???");
//petGump.AddText(330, 475, 38, "???");
//petGump.AddText(330, 500, 38, "???");
}
petGump.Send(pUser);
petGump.Free();
}
function onGumpPress(pSock, pButton, gumpData)
{
var pUser = pSock.currentChar;
var myPet = CalcCharFromSer(pUser.GetTag("petSerial"));
switch (pButton)
{
case 0:
break;
case 1:
if (ValidateObject(myPet))
{
if (myPet.maxhp >= 1100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.maxhp;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.maxhp += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 2:
if (ValidateObject(myPet))
{
if (myPet.maxstamina >= 150)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.maxstamina;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.maxstamina += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 3:
if (ValidateObject(myPet))
{
if (myPet.maxmana >= 1500)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.maxmana;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.maxmana += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 4:
if (ValidateObject(myPet))
{
if (myPet.lodamage >= 25)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0) {
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.lodamage;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.lodamage += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 5:
if (ValidateObject(myPet))
{
if (myPet.hidamage >= 50)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.hidamage;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.hidamage += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 6:
if (ValidateObject(myPet))
{
if (myPet.strength >= 100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.strength;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.strength += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 7:
if (ValidateObject(myPet))
{
if (myPet.dexterity >= 100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.dexterity;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.dexterity += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 8:
if (ValidateObject(myPet))
{
if (myPet.intelligence >= 100)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.intelligence;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.intelligence += 1;
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 9:
if (ValidateObject(myPet))
{
if (myPet.Resist(1) >= 25)
{
pUser.TextMessage("This cannot gain any further.");
petGump(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0) {
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = myPet.Resist(1);
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.Resist( 1, myPet.Resist( 1 ) + 1 );
petGump(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGump(pUser, myPet);
break;
}
}
break;
case 10:
if (ValidateObject(myPet))
{
if (myPet.scripttrigger == 3511)
{
pUser.TextMessage("You pet already has this.");
petGumpPage2(pUser, myPet);
break;
}
else if (myPet.GetTag("AbilityPoints") != 0)
{
var oldNumABPoints = myPet.GetTag("AbilityPoints");
var newNumABPoints = (oldNumABPoints - 1);
var totalstats = 1000;
var nxtlvl = totalstats * 20;
var oldNumnxtlvl = myPet.GetTag("NxtLevel");
var newNumnxtlvl = (oldNumnxtlvl + nxtlvl);
if (myPet.GetTag("Level") <= myPet.GetTag("MaxLevel"))
{
myPet.SetTag("NxtLevel", newNumnxtlvl)
myPet.SetTag("AbilityPoints", newNumABPoints);
}
myPet.scripttrigger = 3511;
petGumpPage2(pUser, myPet);
break;
}
else
{
pUser.TextMessage("Your pet lacks the ability points to do that.");
petGumpPage2(pUser, myPet);
break;
}
}
break;
case 11: petGump(pUser, myPet); break;
case 12: petGumpPage2(pUser, myPet); break;
}
}