#W# Exhuation system implimented. And Food has been tweaked.

This commit is contained in:
WarrentyExpired 2026-07-24 21:01:31 -04:00
parent 6cb014d51c
commit 15bb9dccb8
9 changed files with 211 additions and 181 deletions

View file

@ -9,46 +9,42 @@ namespace Server.Scripts.Commands
{ {
public static void Initialize() public static void Initialize()
{ {
// Register the command so players can use [Vitals
CommandSystem.Register("Vitals", AccessLevel.Player, new CommandEventHandler(Vitals_OnCommand)); CommandSystem.Register("Vitals", AccessLevel.Player, new CommandEventHandler(Vitals_OnCommand));
} }
[Usage("Vitals")] [Usage("Vitals")]
[Description("Displays your current hunger and thirst status.")] [Description("Displays your current hunger and thirst status.")
public static void Vitals_OnCommand(CommandEventArgs e) public static void Vitals_OnCommand(CommandEventArgs e)
{ {
Mobile m = e.Mobile; Mobile m = e.Mobile;
if (m is PlayerMobile) if (m is PlayerMobile)
{ {
// Standard UO Hues
int greenHue = 63; int greenHue = 63;
int orangeHue = 43; int orangeHue = 43;
int redHue = 33; int redHue = 33;
// --- Hunger Status --- if (m.Hunger >= 75)
if (m.Hunger >= 16) m.SendMessage(greenHue, "You are completely full and feeling invigorated.");
m.SendMessage(greenHue, "You are completely full and not hungry at all."); else if (m.Hunger >= 50)
else if (m.Hunger >= 11) m.SendMessage(greenHue, "You are satiated and not hungry.");
m.SendMessage(greenHue, "Your stomach gives a slight rumble."); else if (m.Hunger >= 25)
else if (m.Hunger >= 6) m.SendMessage(orangeHue, "Your stomach gives a slight rumble. You should eat soon.");
m.SendMessage(orangeHue, "You are starting to feel hungry.");
else if (m.Hunger >= 1) else if (m.Hunger >= 1)
m.SendMessage(redHue, "You are getting extremely hungry. You should eat soon!"); m.SendMessage(redHue, "You are getting extremely hungry and feel weak!");
else else
m.SendMessage(redHue, "You are starving to death!"); m.SendMessage(redHue, "You are starving to death!");
// --- Thirst Status --- if (m.Thirst >= 75)
if (m.Thirst >= 16) m.SendMessage(greenHue, "You are perfectly hydrated and refreshed.");
m.SendMessage(greenHue, "You are perfectly hydrated and not thirsty."); else if (m.Thirst >= 50)
else if (m.Thirst >= 11) m.SendMessage(greenHue, "You are not thirsty.");
m.SendMessage(greenHue, "Your mouth feels a little dry."); else if (m.Thirst >= 25)
else if (m.Thirst >= 6) m.SendMessage(orangeHue, "Your mouth feels dry. You should drink soon.");
m.SendMessage(orangeHue, "You are starting to feel thirsty.");
else if (m.Thirst >= 1) else if (m.Thirst >= 1)
m.SendMessage(redHue, "You are getting extremely thirsty. You should drink soon!"); m.SendMessage(redHue, "You are terribly thirsty and feel sluggish!");
else else
m.SendMessage(redHue, "You are exhausted from thirst!"); m.SendMessage(redHue, "You are exhausted from thirst!");
} }
} }
} }

View file

@ -33,7 +33,7 @@ namespace Server.Items
public class BeverageBottle : BaseBeverage public class BeverageBottle : BaseBeverage
{ {
public override int BaseLabelNumber { get { return 1042959; } } // a bottle of Ale public override int BaseLabelNumber { get { return 1042959; } } // a bottle of Ale
public override int MaxQuantity { get { return 5; } } public override int MaxQuantity { get { return 20; } }
public override bool Fillable { get { return false; } } public override bool Fillable { get { return false; } }
public override int ComputeItemID() public override int ComputeItemID()
@ -112,7 +112,7 @@ namespace Server.Items
public class Jug : BaseBeverage public class Jug : BaseBeverage
{ {
public override int BaseLabelNumber { get { return 1042965; } } // a jug of Ale public override int BaseLabelNumber { get { return 1042965; } } // a jug of Ale
public override int MaxQuantity { get { return 10; } } public override int MaxQuantity { get { return 25; } }
public override bool Fillable { get { return false; } } public override bool Fillable { get { return false; } }
public override int ComputeItemID() public override int ComputeItemID()
@ -153,7 +153,7 @@ namespace Server.Items
public class CeramicMug : BaseBeverage public class CeramicMug : BaseBeverage
{ {
public override int BaseLabelNumber { get { return 1042982; } } // a ceramic mug of Ale public override int BaseLabelNumber { get { return 1042982; } } // a ceramic mug of Ale
public override int MaxQuantity { get { return 1; } } public override int MaxQuantity { get { return 5; } }
public override int ComputeItemID() public override int ComputeItemID()
{ {
@ -201,7 +201,7 @@ namespace Server.Items
public class PewterMug : BaseBeverage public class PewterMug : BaseBeverage
{ {
public override int BaseLabelNumber { get { return 1042994; } } // a pewter mug with Ale public override int BaseLabelNumber { get { return 1042994; } } // a pewter mug with Ale
public override int MaxQuantity { get { return 1; } } public override int MaxQuantity { get { return 5; } }
public override int ComputeItemID() public override int ComputeItemID()
{ {
@ -247,7 +247,7 @@ namespace Server.Items
public class Goblet : BaseBeverage public class Goblet : BaseBeverage
{ {
public override int BaseLabelNumber { get { return 1043000; } } // a goblet of Ale public override int BaseLabelNumber { get { return 1043000; } } // a goblet of Ale
public override int MaxQuantity { get { return 1; } } public override int MaxQuantity { get { return 5; } }
public override int ComputeItemID() public override int ComputeItemID()
{ {
@ -398,7 +398,7 @@ namespace Server.Items
public class Pitcher : BaseBeverage public class Pitcher : BaseBeverage
{ {
public override int BaseLabelNumber { get { return 1048128; } } // a Pitcher of Ale public override int BaseLabelNumber { get { return 1048128; } } // a Pitcher of Ale
public override int MaxQuantity { get { return 5; } } public override int MaxQuantity { get { return 25; } }
public override int ComputeItemID() public override int ComputeItemID()
{ {
@ -978,24 +978,24 @@ namespace Server.Items
from.PlaySound( 0x4E ); from.PlaySound( 0x4E );
} }
} }
else if ( from == targ && from.Thirst >= 20 ) else if ( from == targ && from.Thirst >= 100 )
{ {
from.SendMessage( "You are too quenched to drink more." ); from.SendMessage( "You are too quenched to drink more." );
} }
else if ( from == targ ) else if ( from == targ )
{ {
int thirst = 1; int thirst = 10;
switch( Content ) switch( Content )
{ {
case BeverageType.Ale: thirst = 3; break; case BeverageType.Ale: thirst = 15; break;
case BeverageType.Cider: thirst = 2; break; case BeverageType.Cider: thirst = 10; break;
case BeverageType.Liquor: thirst = 1; break; case BeverageType.Liquor: thirst = 5; break;
case BeverageType.Milk: thirst = 1; break; case BeverageType.Milk: thirst = 20; break;
case BeverageType.Wine: thirst = 2; break; case BeverageType.Wine: thirst = 10; break;
} }
if( from.Thirst < 20 ) if( from.Thirst < 100 )
from.Thirst += thirst; from.Thirst += thirst;
if( ContainsAlchohol ) if( ContainsAlchohol )

View file

@ -63,7 +63,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 10;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -101,7 +101,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 10;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -139,7 +139,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 8;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -177,7 +177,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 8;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -215,7 +215,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 10;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -253,7 +253,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 10;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -291,7 +291,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 8;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -329,7 +329,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 8;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -367,7 +367,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 1.0; Weight = 1.0;
FillFactor = 2; FillFactor = 10;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -461,7 +461,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 2.0; Weight = 2.0;
FillFactor = 2; FillFactor = 15;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -499,7 +499,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
Weight = 2.0; Weight = 2.0;
FillFactor = 2; FillFactor = 15;
} }
public override bool Eat( Mobile from ) public override bool Eat( Mobile from )
@ -529,4 +529,4 @@ namespace Server.Items
int version = reader.ReadInt(); int version = reader.ReadInt();
} }
} }
} }

View file

@ -41,7 +41,7 @@ namespace Server.Items
{ {
Stackable = true; Stackable = true;
Amount = amount; Amount = amount;
m_FillFactor = 1; m_FillFactor = 5;
} }
public Food( Serial serial ) : base( serial ) public Food( Serial serial ) : base( serial )
@ -91,7 +91,7 @@ namespace Server.Items
static public bool FillHunger( Mobile from, int fillFactor ) static public bool FillHunger( Mobile from, int fillFactor )
{ {
if ( from.Hunger >= 20 ) if ( from.Hunger >= 100 )
{ {
from.SendLocalizedMessage( 500867 ); // You are simply too full to eat any more! from.SendLocalizedMessage( 500867 ); // You are simply too full to eat any more!
return false; return false;
@ -100,20 +100,20 @@ namespace Server.Items
int iHunger = from.Hunger + fillFactor; int iHunger = from.Hunger + fillFactor;
if ( from.Stam < from.StamMax ) if ( from.Stam < from.StamMax )
from.Stam += Utility.Random( 6, 3 ) + fillFactor/5;//restore some stamina from.Stam += Utility.Random( 6, 3 ) + fillFactor/5;//restore some stamina
if ( iHunger >= 20 ) if ( iHunger >= 100 )
{ {
from.Hunger = 20; from.Hunger = 100;
from.SendLocalizedMessage( 500872 ); // You manage to eat the food, but you are stuffed! from.SendLocalizedMessage( 500872 ); // You manage to eat the food, but you are stuffed!
} }
else else
{ {
from.Hunger = iHunger; from.Hunger = iHunger;
if ( iHunger < 5 ) if ( iHunger < 30 )
from.SendLocalizedMessage( 500868 ); // You eat the food, but are still extremely hungry. from.SendLocalizedMessage( 500868 ); // You eat the food, but are still extremely hungry.
else if ( iHunger < 10 ) else if ( iHunger < 50 )
from.SendLocalizedMessage( 500869 ); // You eat the food, and begin to feel more satiated. from.SendLocalizedMessage( 500869 ); // You eat the food, and begin to feel more satiated.
else if ( iHunger < 15 ) else if ( iHunger < 75 )
from.SendLocalizedMessage( 500870 ); // After eating the food, you feel much less hungry. from.SendLocalizedMessage( 500870 ); // After eating the food, you feel much less hungry.
else else
from.SendLocalizedMessage( 500871 ); // You feel quite full after consuming the food. from.SendLocalizedMessage( 500871 ); // You feel quite full after consuming the food.
@ -186,7 +186,7 @@ namespace Server.Items
public BreadLoaf( int amount ) : base( amount, 0x103B ) public BreadLoaf( int amount ) : base( amount, 0x103B )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 3; this.FillFactor = 15;
} }
public BreadLoaf( Serial serial ) : base( serial ) public BreadLoaf( Serial serial ) : base( serial )
@ -219,7 +219,7 @@ namespace Server.Items
public Bacon( int amount ) : base( amount, 0x979 ) public Bacon( int amount ) : base( amount, 0x979 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 10;
} }
public Bacon( Serial serial ) : base( serial ) public Bacon( Serial serial ) : base( serial )
@ -252,7 +252,7 @@ namespace Server.Items
public SlabOfBacon( int amount ) : base( amount, 0x976 ) public SlabOfBacon( int amount ) : base( amount, 0x976 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 3; this.FillFactor = 20;
} }
public SlabOfBacon( Serial serial ) : base( serial ) public SlabOfBacon( Serial serial ) : base( serial )
@ -289,7 +289,7 @@ namespace Server.Items
[Constructable] [Constructable]
public FishSteak( int amount ) : base( amount, 0x97B ) public FishSteak( int amount ) : base( amount, 0x97B )
{ {
this.FillFactor = 3; this.FillFactor = 15;
} }
public FishSteak( Serial serial ) : base( serial ) public FishSteak( Serial serial ) : base( serial )
@ -326,7 +326,7 @@ namespace Server.Items
[Constructable] [Constructable]
public CheeseWheel( int amount ) : base( amount, 0x97E ) public CheeseWheel( int amount ) : base( amount, 0x97E )
{ {
this.FillFactor = 3; this.FillFactor = 15;
} }
public CheeseWheel( Serial serial ) : base( serial ) public CheeseWheel( Serial serial ) : base( serial )
@ -363,7 +363,7 @@ namespace Server.Items
[Constructable] [Constructable]
public CheeseWedge( int amount ) : base( amount, 0x97D ) public CheeseWedge( int amount ) : base( amount, 0x97D )
{ {
this.FillFactor = 3; this.FillFactor = 10;
} }
public CheeseWedge( Serial serial ) : base( serial ) public CheeseWedge( Serial serial ) : base( serial )
@ -400,7 +400,7 @@ namespace Server.Items
[Constructable] [Constructable]
public CheeseSlice( int amount ) : base( amount, 0x97C ) public CheeseSlice( int amount ) : base( amount, 0x97C )
{ {
this.FillFactor = 1; this.FillFactor = 5;
} }
public CheeseSlice( Serial serial ) : base( serial ) public CheeseSlice( Serial serial ) : base( serial )
@ -433,7 +433,7 @@ namespace Server.Items
public FrenchBread( int amount ) : base( amount, 0x98C ) public FrenchBread( int amount ) : base( amount, 0x98C )
{ {
this.Weight = 2.0; this.Weight = 2.0;
this.FillFactor = 3; this.FillFactor = 15;
} }
public FrenchBread( Serial serial ) : base( serial ) public FrenchBread( Serial serial ) : base( serial )
@ -467,7 +467,7 @@ namespace Server.Items
public FriedEggs( int amount ) : base( amount, 0x9B6 ) public FriedEggs( int amount ) : base( amount, 0x9B6 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 4; this.FillFactor = 15;
} }
public FriedEggs( Serial serial ) : base( serial ) public FriedEggs( Serial serial ) : base( serial )
@ -500,7 +500,7 @@ namespace Server.Items
public CookedBird( int amount ) : base( amount, 0x9B7 ) public CookedBird( int amount ) : base( amount, 0x9B7 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 20;
} }
public CookedBird( Serial serial ) : base( serial ) public CookedBird( Serial serial ) : base( serial )
@ -533,7 +533,7 @@ namespace Server.Items
public RoastPig( int amount ) : base( amount, 0x9BB ) public RoastPig( int amount ) : base( amount, 0x9BB )
{ {
this.Weight = 45.0; this.Weight = 45.0;
this.FillFactor = 20; this.FillFactor = 50;
} }
public RoastPig( Serial serial ) : base( serial ) public RoastPig( Serial serial ) : base( serial )
@ -566,7 +566,7 @@ namespace Server.Items
public Sausage( int amount ) : base( amount, 0x9C0 ) public Sausage( int amount ) : base( amount, 0x9C0 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 4; this.FillFactor = 15;
} }
public Sausage( Serial serial ) : base( serial ) public Sausage( Serial serial ) : base( serial )
@ -599,7 +599,7 @@ namespace Server.Items
public Ham( int amount ) : base( amount, 0x9C9 ) public Ham( int amount ) : base( amount, 0x9C9 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 20;
} }
public Ham( Serial serial ) : base( serial ) public Ham( Serial serial ) : base( serial )
@ -628,7 +628,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 10; this.FillFactor = 20;
} }
public Cake( Serial serial ) : base( serial ) public Cake( Serial serial ) : base( serial )
@ -661,7 +661,7 @@ namespace Server.Items
public Ribs( int amount ) : base( amount, 0x9F2 ) public Ribs( int amount ) : base( amount, 0x9F2 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 20;
} }
public Ribs( Serial serial ) : base( serial ) public Ribs( Serial serial ) : base( serial )
@ -690,7 +690,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 4; this.FillFactor = 15;
} }
public Cookies( Serial serial ) : base( serial ) public Cookies( Serial serial ) : base( serial )
@ -719,7 +719,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 4; this.FillFactor = 15;
} }
public Muffins( Serial serial ) : base( serial ) public Muffins( Serial serial ) : base( serial )
@ -751,7 +751,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 6; this.FillFactor = 25;
} }
public CheesePizza( Serial serial ) : base( serial ) public CheesePizza( Serial serial ) : base( serial )
@ -782,7 +782,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 6; this.FillFactor = 25;
} }
public SausagePizza( Serial serial ) : base( serial ) public SausagePizza( Serial serial ) : base( serial )
@ -812,7 +812,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 6; this.FillFactor = 20;
} }
public Pizza( Serial serial ) : base( serial ) public Pizza( Serial serial ) : base( serial )
@ -844,7 +844,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 15;
} }
public FruitPie( Serial serial ) : base( serial ) public FruitPie( Serial serial ) : base( serial )
@ -875,7 +875,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 20;
} }
public MeatPie( Serial serial ) : base( serial ) public MeatPie( Serial serial ) : base( serial )
@ -906,7 +906,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 25;
} }
public PumpkinPie( Serial serial ) : base( serial ) public PumpkinPie( Serial serial ) : base( serial )
@ -937,7 +937,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 20;
} }
public ApplePie( Serial serial ) : base( serial ) public ApplePie( Serial serial ) : base( serial )
@ -968,7 +968,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 25;
} }
public PeachCobbler( Serial serial ) : base( serial ) public PeachCobbler( Serial serial ) : base( serial )
@ -999,7 +999,7 @@ namespace Server.Items
{ {
Stackable = false; Stackable = false;
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 5; this.FillFactor = 15;
} }
public Quiche( Serial serial ) : base( serial ) public Quiche( Serial serial ) : base( serial )
@ -1032,7 +1032,7 @@ namespace Server.Items
public LambLeg( int amount ) : base( amount, 0x160a ) public LambLeg( int amount ) : base( amount, 0x160a )
{ {
this.Weight = 2.0; this.Weight = 2.0;
this.FillFactor = 5; this.FillFactor = 20;
} }
public LambLeg( Serial serial ) : base( serial ) public LambLeg( Serial serial ) : base( serial )
@ -1065,7 +1065,7 @@ namespace Server.Items
public ChickenLeg( int amount ) : base( amount, 0x1608 ) public ChickenLeg( int amount ) : base( amount, 0x1608 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 4; this.FillFactor = 20;
Name = "bird leg"; Name = "bird leg";
} }
@ -1100,7 +1100,7 @@ namespace Server.Items
public HoneydewMelon( int amount ) : base( amount, 0xC74 ) public HoneydewMelon( int amount ) : base( amount, 0xC74 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public HoneydewMelon( Serial serial ) : base( serial ) public HoneydewMelon( Serial serial ) : base( serial )
@ -1134,7 +1134,7 @@ namespace Server.Items
public YellowGourd( int amount ) : base( amount, 0xC64 ) public YellowGourd( int amount ) : base( amount, 0xC64 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public YellowGourd( Serial serial ) : base( serial ) public YellowGourd( Serial serial ) : base( serial )
@ -1168,7 +1168,7 @@ namespace Server.Items
public GreenGourd( int amount ) : base( amount, 0xC66 ) public GreenGourd( int amount ) : base( amount, 0xC66 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public GreenGourd( Serial serial ) : base( serial ) public GreenGourd( Serial serial ) : base( serial )
@ -1202,7 +1202,7 @@ namespace Server.Items
public EarOfCorn( int amount ) : base( amount, 0xC81 ) public EarOfCorn( int amount ) : base( amount, 0xC81 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public EarOfCorn( Serial serial ) : base( serial ) public EarOfCorn( Serial serial ) : base( serial )
@ -1235,7 +1235,7 @@ namespace Server.Items
public Turnip( int amount ) : base( amount, 0xD3A ) public Turnip( int amount ) : base( amount, 0xD3A )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Turnip( Serial serial ) : base( serial ) public Turnip( Serial serial ) : base( serial )
@ -1283,4 +1283,4 @@ namespace Server.Items
int version = reader.ReadInt(); int version = reader.ReadInt();
} }
} }
} }

View file

@ -53,7 +53,7 @@ namespace Server.Items
public Banana( int amount ) : base( amount, 0x171f ) public Banana( int amount ) : base( amount, 0x171f )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Banana( Serial serial ) : base( serial ) public Banana( Serial serial ) : base( serial )
@ -86,7 +86,7 @@ namespace Server.Items
public Bananas( int amount ) : base( amount, 0x1721 ) public Bananas( int amount ) : base( amount, 0x1721 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Bananas( Serial serial ) : base( serial ) public Bananas( Serial serial ) : base( serial )
@ -118,7 +118,7 @@ namespace Server.Items
public SplitCoconut( int amount ) : base( amount, 0x1725 ) public SplitCoconut( int amount ) : base( amount, 0x1725 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public SplitCoconut( Serial serial ) : base( serial ) public SplitCoconut( Serial serial ) : base( serial )
@ -150,7 +150,7 @@ namespace Server.Items
public Lemon( int amount ) : base( amount, 0x1728 ) public Lemon( int amount ) : base( amount, 0x1728 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Lemon( Serial serial ) : base( serial ) public Lemon( Serial serial ) : base( serial )
@ -182,7 +182,7 @@ namespace Server.Items
public Lemons( int amount ) : base( amount, 0x1729 ) public Lemons( int amount ) : base( amount, 0x1729 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Lemons( Serial serial ) : base( serial ) public Lemons( Serial serial ) : base( serial )
@ -214,7 +214,7 @@ namespace Server.Items
public Lime( int amount ) : base( amount, 0x172a ) public Lime( int amount ) : base( amount, 0x172a )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Lime( Serial serial ) : base( serial ) public Lime( Serial serial ) : base( serial )
@ -246,7 +246,7 @@ namespace Server.Items
public Limes( int amount ) : base( amount, 0x172B ) public Limes( int amount ) : base( amount, 0x172B )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Limes( Serial serial ) : base( serial ) public Limes( Serial serial ) : base( serial )
@ -278,7 +278,7 @@ namespace Server.Items
public Coconut( int amount ) : base( amount, 0x1726 ) public Coconut( int amount ) : base( amount, 0x1726 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Coconut( Serial serial ) : base( serial ) public Coconut( Serial serial ) : base( serial )
@ -310,7 +310,7 @@ namespace Server.Items
public OpenCoconut( int amount ) : base( amount, 0x1723 ) public OpenCoconut( int amount ) : base( amount, 0x1723 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public OpenCoconut( Serial serial ) : base( serial ) public OpenCoconut( Serial serial ) : base( serial )
@ -342,7 +342,7 @@ namespace Server.Items
public Dates( int amount ) : base( amount, 0x1727 ) public Dates( int amount ) : base( amount, 0x1727 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Dates( Serial serial ) : base( serial ) public Dates( Serial serial ) : base( serial )
@ -374,7 +374,7 @@ namespace Server.Items
public Grapes( int amount ) : base( amount, 0x9D1 ) public Grapes( int amount ) : base( amount, 0x9D1 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Grapes( Serial serial ) : base( serial ) public Grapes( Serial serial ) : base( serial )
@ -406,7 +406,7 @@ namespace Server.Items
public Peach( int amount ) : base( amount, 0x9D2 ) public Peach( int amount ) : base( amount, 0x9D2 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Peach( Serial serial ) : base( serial ) public Peach( Serial serial ) : base( serial )
@ -438,7 +438,7 @@ namespace Server.Items
public Pear( int amount ) : base( amount, 0x994 ) public Pear( int amount ) : base( amount, 0x994 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Pear( Serial serial ) : base( serial ) public Pear( Serial serial ) : base( serial )
@ -470,7 +470,7 @@ namespace Server.Items
public Apple( int amount ) : base( amount, 0x9D0 ) public Apple( int amount ) : base( amount, 0x9D0 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Apple( Serial serial ) : base( serial ) public Apple( Serial serial ) : base( serial )
@ -576,7 +576,7 @@ namespace Server.Items
public Squash( int amount ) : base( amount, 0xc72 ) public Squash( int amount ) : base( amount, 0xc72 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Squash( Serial serial ) : base( serial ) public Squash( Serial serial ) : base( serial )
@ -609,7 +609,7 @@ namespace Server.Items
public Cantaloupe( int amount ) : base( amount, 0xc79 ) public Cantaloupe( int amount ) : base( amount, 0xc79 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Cantaloupe( Serial serial ) : base( serial ) public Cantaloupe( Serial serial ) : base( serial )
@ -629,4 +629,4 @@ namespace Server.Items
int version = reader.ReadInt(); int version = reader.ReadInt();
} }
} }
} }

View file

@ -30,16 +30,16 @@ namespace Server.Items
else else
{ {
// increase characters thirst value based on type of drink // increase characters thirst value based on type of drink
if ( from.Thirst < 20 ) if ( from.Thirst < 100 )
{ {
from.Thirst += 2; from.Thirst += 5;
// Send message to character about their current thirst value // Send message to character about their current thirst value
int iThirst = from.Thirst; int iThirst = from.Thirst;
if ( iThirst < 5 ) if ( iThirst < 50 )
from.SendMessage( "You drink the ale but are still extremely thirsty" ); from.SendMessage( "You drink the ale but are still extremely thirsty" );
else if ( iThirst < 10 ) else if ( iThirst < 75 )
from.SendMessage( "You drink the ale and feel less thirsty" ); from.SendMessage( "You drink the ale and feel less thirsty" );
else if ( iThirst < 15 ) else if ( iThirst < 100 )
from.SendMessage( "You drink the ale and feel much less thirsty" ); from.SendMessage( "You drink the ale and feel much less thirsty" );
else else
from.SendMessage( "You drink the ale and are no longer thirsty" ); from.SendMessage( "You drink the ale and are no longer thirsty" );
@ -101,11 +101,11 @@ namespace Server.Items
from.Thirst += 2; from.Thirst += 2;
// Send message to character about their current thirst value // Send message to character about their current thirst value
int iThirst = from.Thirst; int iThirst = from.Thirst;
if ( iThirst < 5 ) if ( iThirst < 50 )
from.SendMessage( "You drink the wine but are still extremely thirsty" ); from.SendMessage( "You drink the wine but are still extremely thirsty" );
else if ( iThirst < 10 ) else if ( iThirst < 75 )
from.SendMessage( "You drink the wine and feel less thirsty" ); from.SendMessage( "You drink the wine and feel less thirsty" );
else if ( iThirst < 15 ) else if ( iThirst < 100 )
from.SendMessage( "You drink the wine and feel much less thirsty" ); from.SendMessage( "You drink the wine and feel much less thirsty" );
else else
from.SendMessage( "You drink the wine and are no longer thirsty" ); from.SendMessage( "You drink the wine and are no longer thirsty" );
@ -137,4 +137,4 @@ namespace Server.Items
int version = reader.ReadInt(); int version = reader.ReadInt();
} }
} }
} }

View file

@ -15,7 +15,7 @@ namespace Server.Items
public Carrot( int amount ) : base( amount, 0xc78 ) public Carrot( int amount ) : base( amount, 0xc78 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Carrot( Serial serial ) : base( serial ) public Carrot( Serial serial ) : base( serial )
@ -48,7 +48,7 @@ namespace Server.Items
public Cabbage( int amount ) : base( amount, 0xc7b ) public Cabbage( int amount ) : base( amount, 0xc7b )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Cabbage( Serial serial ) : base( serial ) public Cabbage( Serial serial ) : base( serial )
@ -81,7 +81,7 @@ namespace Server.Items
public Onion( int amount ) : base( amount, 0xc6d ) public Onion( int amount ) : base( amount, 0xc6d )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Onion( Serial serial ) : base( serial ) public Onion( Serial serial ) : base( serial )
@ -114,7 +114,7 @@ namespace Server.Items
public Lettuce( int amount ) : base( amount, 0xc70 ) public Lettuce( int amount ) : base( amount, 0xc70 )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Lettuce( Serial serial ) : base( serial ) public Lettuce( Serial serial ) : base( serial )
@ -147,7 +147,7 @@ namespace Server.Items
{ {
Name = "tomato"; Name = "tomato";
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 1; this.FillFactor = 5;
} }
public Tomato( Serial serial ) : base( serial ) public Tomato( Serial serial ) : base( serial )
@ -179,7 +179,7 @@ namespace Server.Items
public Pumpkin( int amount ) : base( amount, 0xC6A ) public Pumpkin( int amount ) : base( amount, 0xC6A )
{ {
this.Weight = 1.0; this.Weight = 1.0;
this.FillFactor = 8; this.FillFactor = 18;
} }
public Pumpkin( Serial serial ) : base( serial ) public Pumpkin( Serial serial ) : base( serial )
@ -240,4 +240,4 @@ namespace Server.Items
int version = reader.ReadInt(); int version = reader.ReadInt();
} }
} }
} }

View file

@ -38,22 +38,22 @@ namespace Server.Misc
if ( m.Hunger >= 1 ) if ( m.Hunger >= 1 )
{ {
m.Hunger -= 1; m.Hunger -= 1;
if ( m.Hunger == 15 ) if ( m.Hunger == 75 )
m.SendMessage( "Your stomach gives a slight rumble." ); m.SendMessage( "Your stomach gives a slight rumble." );
else if ( m.Hunger == 10 ) else if ( m.Hunger == 50 )
m.SendMessage( "You are starting to feel hungry." ); m.SendMessage( "You are starting to feel hungry." );
else if ( m.Hunger == 5 ) else if ( m.Hunger == 25 )
m.SendMessage( "You are getting extremely hungry. You should eat soon!" ); m.SendMessage( "You are getting extremely hungry. You should eat soon!" );
} }
if ( m.Thirst >= 1 ) if ( m.Thirst >= 1 )
{ {
m.Thirst -= 1; m.Thirst -= 1;
if ( m.Thirst == 15 ) if ( m.Thirst == 75 )
m.SendMessage( "Your mouth feels a little dry." ); m.SendMessage( "Your mouth feels a little dry." );
else if ( m.Thirst == 10 ) else if ( m.Thirst == 50 )
m.SendMessage( "You are starting to feel thirsty." ); m.SendMessage( "You are starting to feel thirsty." );
else if ( m.Thirst == 5 ) else if ( m.Thirst == 25 )
m.SendMessage( "You are getting extremely thirsty. You should drink soon!" ); m.SendMessage( "You are getting extremely thirsty. You should drink soon!" );
} }
} }
@ -89,61 +89,56 @@ namespace Server.Misc
{ {
if ( m is PlayerMobile && m.Alive ) if ( m is PlayerMobile && m.Alive )
{ {
if ( m.Hunger < 5 || m.Thirst < 5 ) // Starvation penalties begin when stats fall below 25
if ( m.Hunger < 25 || m.Thirst < 25 )
{ {
if ( m.Hunger < 5 ) if ( m.Hunger < 25 )
{ {
int hits = 0; int hits = 0;
switch (m.Hunger) if ( m.Hunger >= 20 ) hits = 2;
else if ( m.Hunger >= 15 ) hits = 3;
else if ( m.Hunger >= 10 ) hits = 4;
else if ( m.Hunger >= 5 ) hits = 5;
else
{ {
case 4: hits = 2; break; hits = 6;
case 3: hits = 3; break; m.SendMessage( "You are starving to death!" );
case 2: hits = 4; break; m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am so hungry!");
case 1: hits = 5; break;
case 0:
{
hits = 6;
m.SendMessage( "You are starving to death!" );
m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am so hungry!");
break;
}
} }
if ( m.Hits < hits ) if ( m.Hits < hits )
hits = m.Hits-1; hits = m.Hits - 1;
if ( hits > 0 ) if ( hits > 0 )
m.Hits -= hits; m.Hits -= hits;
if ( m.Hunger < 3 && m.Hunger > 0 ) if ( m.Hunger < 15 && m.Hunger > 0 )
{ {
if ( Utility.RandomBool() ){ m.SendMessage( "You are getting very hungry!" ); } if ( Utility.RandomBool() ) m.SendMessage( "You are getting very hungry!" );
if ( Utility.RandomMinMax(1,5)==1 ){ m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am getting hungry!"); } if ( Utility.RandomMinMax(1,5) == 1 ) m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am getting hungry!");
} }
} }
if ( m.Thirst < 5 ) if ( m.Thirst < 25 )
{ {
switch (m.Thirst) if ( m.Thirst >= 20 ) m.Stam -= 2;
else if ( m.Thirst >= 15 ) m.Stam -= 3;
else if ( m.Thirst >= 10 ) m.Stam -= 4;
else if ( m.Thirst >= 5 ) m.Stam -= 5;
else
{ {
case 4: m.Stam -= 2; break; m.Stam -= 6;
case 3: m.Stam -= 3; break; m.SendMessage( "You are exhausted from thirst!" );
case 2: m.Stam -= 4; break; m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am so thirsty!");
case 1: m.Stam -= 5; break;
case 0:
{
m.Stam -= 6;
m.SendMessage( "You are exhausted from thirst!" );
m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am so thirsty!");
break;
}
} }
if ( m.Thirst < 3 && m.Thirst > 0 )
if ( m.Thirst < 15 && m.Thirst > 0 )
{ {
if ( Utility.RandomBool() ){ m.SendMessage( "You are getting exhausted from thirst!" ); } if ( Utility.RandomBool() ) m.SendMessage( "You are getting exhausted from thirst!" );
if ( Utility.RandomMinMax(1,5)==1 ){ m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am getting thirsty!"); } if ( Utility.RandomMinMax(1,5) == 1 ) m.LocalOverheadMessage(MessageType.Emote, 1150, true, "I am getting thirsty!");
} }
if ( m.Stam < 0 ) if ( m.Stam < 0 )
m.Stam = 0; m.Stam = 0;
} }
@ -152,35 +147,33 @@ namespace Server.Misc
if ( m.Hunger < m.Thirst ) if ( m.Hunger < m.Thirst )
test = m.Hunger; test = m.Hunger;
switch (test) if ( test >= 20 ) m.Mana -= 2;
{ else if ( test >= 15 ) m.Mana -= 3;
case 4: m.Mana -= 2; break; else if ( test >= 10 ) m.Mana -= 4;
case 3: m.Mana -= 3; break; else if ( test >= 5 ) m.Mana -= 5;
case 2: m.Mana -= 4; break; else m.Mana -= 6;
case 1: m.Mana -= 5; break;
case 0: m.Mana -= 6; break;
}
if ( m.Mana < 0 ) if ( m.Mana < 0 )
m.Mana = 0; m.Mana = 0;
} }
else else
{ {
if ( m.Hunger >= 15 && m.Hits < m.HitsMax ) // Well-Fed Regeneration starts when stats are 75 or higher
{ if ( m.Hunger >= 75 && m.Hits < m.HitsMax )
int hpRegen = (int)(2 * Server.Misc.Settings.HitPoints()); {
int hpRegen = (int)(2 * Server.Misc.Settings.HitPoints());
m.Hits += hpRegen; m.Hits += hpRegen;
} }
if ( m.Thirst >= 15 && m.Stam < m.StamMax ) if ( m.Thirst >= 75 && m.Stam < m.StamMax )
{ {
m.Stam += 2; m.Stam += 2;
} }
if ( m.Hunger >= 15 && m.Thirst >= 15 && m.Mana < m.ManaMax ) if ( m.Hunger >= 75 && m.Thirst >= 75 && m.Mana < m.ManaMax )
{ {
m.Mana += 2; m.Mana += 2;
} }
} }
} }
} }

View file

@ -99,6 +99,7 @@ namespace Server.Mobiles
private string m_MapMarkers; private string m_MapMarkers;
private int m_VirtuePoints; private int m_VirtuePoints;
private bool m_VirtueTomeCompleted; private bool m_VirtueTomeCompleted;
private int m_ExhaustionPoints;
#region Getters & Setters #region Getters & Setters
@ -294,6 +295,13 @@ namespace Server.Mobiles
set { m_VirtueTomeCompleted = value; } set { m_VirtueTomeCompleted = value; }
} }
[CommandProperty( AccessLevel.GameMaster )]
public int ExhaustionPoints
{
get { return m_ExhaustionPoints; }
set { m_ExhaustionPoints = value; }
}
#endregion #endregion
#region Auto Arrow Recovery #region Auto Arrow Recovery
@ -1399,6 +1407,39 @@ namespace Server.Mobiles
Timer.DelayCall( TimeSpan.FromSeconds( 10 ), new TimerCallback( ((PlayerMobile) from).RecoverAmmo ) ); Timer.DelayCall( TimeSpan.FromSeconds( 10 ), new TimerCallback( ((PlayerMobile) from).RecoverAmmo ) );
base.OnDamage( amount, from, willKill ); base.OnDamage( amount, from, willKill );
// --- EXHAUSTION SYSTEM START ---
if ( this.AccessLevel == AccessLevel.Player && this.Alive && !willKill )
{
this.ExhaustionPoints += amount;
if ( this.ExhaustionPoints >= 100 )
{
this.ExhaustionPoints -= 100;
bool decayed = false;
if ( this.Hunger > 0 )
{
this.Hunger -= 1;
decayed = true;
}
if ( this.Thirst > 0 )
{
this.Thirst -= 1;
decayed = true;
}
if ( decayed )
{
if ( this.Hunger <= 25 || this.Thirst <= 25 )
this.SendMessage( 38, "The physical toll of combat is severely draining your body. You need nourishment!" );
else
this.SendMessage( "Healing your wounds and taking damage makes you feel a bit more hungry and thirsty." );
}
}
}
// --- EXHAUSTION SYSTEM END ---
} }
public override void Resurrect() public override void Resurrect()
@ -1414,8 +1455,8 @@ namespace Server.Mobiles
Hits = HitsMax; Hits = HitsMax;
Stam = StamMax; Stam = StamMax;
Mana = ManaMax; Mana = ManaMax;
Hunger = 20; Hunger = 100;
Thirst = 20; Thirst = 100;
if ( !EquipItem( deathRobe ) ) if ( !EquipItem( deathRobe ) )
deathRobe.Delete(); deathRobe.Delete();