Files
abysmal-isle/Scripts/Scripts-master/Items/Misc/StatBall.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

229 lines
6.9 KiB
C#

//Version 1.1
using System;
using System.Collections;
using Server;
using Server.Prompts;
using Server.Mobiles;
using Server.Network;
using Server.Gumps;
using Server.Items;
namespace Server.Items
{
public class StatBall : Item
{
[Constructable]
public StatBall() : base(0xE73)
{
Weight = 1.0;
Hue = 39;
Name = "a stat ball";
LootType = LootType.Blessed;
Movable = false;
}
public override void OnDoubleClick(Mobile from)
{
if (!IsChildOf(from.Backpack))
{
from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it.
return;
}
else if (from is PlayerMobile)
{
if (from.Str < 75)
{
from.Str = 75;
from.SendMessage("Your STR has been set to 75/{0}.", from.StrCap);
}
if (from.Int < 75)
{
from.Int = 75;
from.SendMessage("Your INT has been set to 75/{0}.", from.IntCap);
}
if (from.Dex < 75)
{
from.Dex = 75;
from.SendMessage("Your DEX has been set to 75/{0}.", from.DexCap);
}
if (from.StrMaxCap != 500)
{
from.StrMaxCap = 500;
from.SendMessage("Your STR Max Cap has been reset.");
}
if (from.DexMaxCap != 500)
{
from.DexMaxCap = 500;
from.SendMessage("Your DEX Max Cap has been reset.");
}
if (from.IntMaxCap != 500)
{
from.IntMaxCap = 500;
from.SendMessage("Your INT Max Cap has been reset.");
}
//from.SendMessage("You have been given a Starter Stat Boost of 75 in each Stat.");
this.Delete();
//from.SendGump(new StatBallGump((PlayerMobile)from, this));
}
}
public override bool DisplayLootType { get { return false; } }
public StatBall(Serial serial) : base(serial)
{
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}
namespace Server.Items
{
public class StatBallGump : Gump
{
//-----------------
// Edit to your liking or leave blank for default values
//------------------------
private int statcap;
private int defaultStr;
private int defaultDex;
private int defaultInt;
private int maxStr;
private int maxDex;
private int maxInt;
//-----------------------
private PlayerMobile m_From;
private StatBall m_Ball;
private int str;
private int dex;
private int intel;
public StatBallGump(PlayerMobile from, StatBall ball) : base(50, 50)
{
m_From = from;
m_Ball = ball;
if (statcap <= 0)
{
statcap = m_From.StatCap;
}
if (defaultStr <= 0)
{
defaultStr = 50;
}
if (defaultDex <= 0)
{
defaultDex = 50;
}
if (defaultInt <= 0)
{
defaultInt = 50;
}
if (maxStr <= 0)
{
maxStr = 105;
}
if (maxDex <= 0)
{
maxDex = 105;
}
if (maxInt <= 0)
{
maxInt = 105;
}
this.Closable = true;
this.Disposable = true;
this.Dragable = true;
this.Resizable = false;
this.AddPage(0);
this.AddBackground(50, 50, 437, 215, 9200);
this.AddLabel(200, 67, 1160, "Stat Ball Selection");
this.AddLabel(114, 96, 1160, "Choose your Strength, Dexterity, and Intelligence");
this.AddLabel(69, 156, 1152, "STR");
this.AddLabel(213, 156, 1152, "DEX");
this.AddLabel(353, 156, 1152, "INT");
this.AddTextEntry(109, 156, 32, 20, 1359, 0, defaultStr.ToString());
this.AddTextEntry(253, 156, 32, 20, 1359, 1, defaultDex.ToString());
this.AddTextEntry(393, 156, 32, 20, 1359, 2, defaultInt.ToString());
this.AddLabel(139, 156, 1152, " / " + maxStr.ToString());
this.AddLabel(283, 156, 1152, " / " + maxDex.ToString());
this.AddLabel(423, 156, 1152, " / " + maxInt.ToString());
this.AddButton(405, 221, 238, 240, 4, GumpButtonType.Reply, 0);
this.AddLabel(140, 200, 1152, "* Stat totals should equal " + statcap + " *");
}
public override void OnResponse(NetState sender, RelayInfo info)
{
if (m_Ball.Deleted)
return;
TextRelay s = info.GetTextEntry(0);
try
{
str = Convert.ToInt32(s.Text);
}
catch
{
m_From.SendMessage("Bad strength entry. A number was expected.");
}
TextRelay d = info.GetTextEntry(1);
try
{
dex = Convert.ToInt32(d.Text);
}
catch
{
m_From.SendMessage("Bad dexterity entry. A number was expected.");
}
TextRelay i = info.GetTextEntry(2);
try
{
intel = Convert.ToInt32(i.Text);
}
catch
{
m_From.SendMessage("Bad intelligence entry. A number was expected.");
}
if (str > 0 && dex > 0 && intel > 0)
{
// Uncomment the line line below, and add a comment to the line under it to use a defined number instead of the standard Stat Cap
// if ( ( ( str + dex + intel ) > Cap ) || ( ( str + dex + intel ) < Cap ) || ( str < 10 ) || ( dex < 10 ) || ( intel < 10 ) )
if (((str + dex + intel) > statcap) || ((str + dex + intel) < statcap) || (str < 10) || (dex < 10) || (intel < 10) || (str > maxStr) || (dex > maxDex) || (intel > maxInt))
m_From.SendMessage("Your choice totals are invalid. Please try again!");
else
{
m_From.RawStr = str;
m_From.RawDex = dex;
m_From.RawInt = intel;
m_Ball.Delete();
}
}
}
}
}