BritainKnights/Scripts/Items/Food/Food.cs

1286 lines
No EOL
24 KiB
C#

using System;
using System.Collections;
using Server.Network;
using System.Collections.Generic;
using Server.ContextMenus;
namespace Server.Items
{
public abstract class Food : Item
{
private Mobile m_Poisoner;
private Poison m_Poison;
private int m_FillFactor;
[CommandProperty( AccessLevel.GameMaster )]
public Mobile Poisoner
{
get { return m_Poisoner; }
set { m_Poisoner = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public Poison Poison
{
get { return m_Poison; }
set { m_Poison = value; }
}
[CommandProperty( AccessLevel.GameMaster )]
public int FillFactor
{
get { return m_FillFactor; }
set { m_FillFactor = value; }
}
public Food( int itemID ) : this( 1, itemID )
{
}
public Food( int amount, int itemID ) : base( itemID )
{
Stackable = true;
Amount = amount;
m_FillFactor = 1;
}
public Food( Serial serial ) : base( serial )
{
}
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
{
base.GetContextMenuEntries( from, list );
if ( from.Alive )
list.Add( new ContextMenus.EatEntry( from, this ) );
}
public override void OnDoubleClick( Mobile from )
{
if ( !Movable )
return;
if ( from.InRange( this.GetWorldLocation(), 1 ) )
{
Eat( from );
}
}
public virtual bool Eat( Mobile from )
{
// Fill the Mobile with FillFactor
if ( FillHunger( from, m_FillFactor ) )
{
// Play a random "eat" sound
from.PlaySound( Utility.Random( 0x3A, 3 ) );
if ( from.Body.IsHuman && !from.Mounted )
from.Animate( 34, 5, 1, true, false, 0 );
if ( m_Poison != null )
from.ApplyPoison( m_Poisoner, m_Poison );
Consume();
return true;
}
return false;
}
static public bool FillHunger( Mobile from, int fillFactor )
{
if ( from.Hunger >= 20 )
{
from.SendLocalizedMessage( 500867 ); // You are simply too full to eat any more!
return false;
}
int iHunger = from.Hunger + fillFactor;
if ( from.Stam < from.StamMax )
from.Stam += Utility.Random( 6, 3 ) + fillFactor/5;//restore some stamina
if ( iHunger >= 20 )
{
from.Hunger = 20;
from.SendLocalizedMessage( 500872 ); // You manage to eat the food, but you are stuffed!
}
else
{
from.Hunger = iHunger;
if ( iHunger < 5 )
from.SendLocalizedMessage( 500868 ); // You eat the food, but are still extremely hungry.
else if ( iHunger < 10 )
from.SendLocalizedMessage( 500869 ); // You eat the food, and begin to feel more satiated.
else if ( iHunger < 15 )
from.SendLocalizedMessage( 500870 ); // After eating the food, you feel much less hungry.
else
from.SendLocalizedMessage( 500871 ); // You feel quite full after consuming the food.
}
return true;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 4 ); // version
writer.Write( m_Poisoner );
Poison.Serialize( m_Poison, writer );
writer.Write( m_FillFactor );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 1:
{
switch ( reader.ReadInt() )
{
case 0: m_Poison = null; break;
case 1: m_Poison = Poison.Lesser; break;
case 2: m_Poison = Poison.Regular; break;
case 3: m_Poison = Poison.Greater; break;
case 4: m_Poison = Poison.Deadly; break;
}
break;
}
case 2:
{
m_Poison = Poison.Deserialize( reader );
break;
}
case 3:
{
m_Poison = Poison.Deserialize( reader );
m_FillFactor = reader.ReadInt();
break;
}
case 4:
{
m_Poisoner = reader.ReadMobile();
goto case 3;
}
}
}
}
public class BreadLoaf : Food
{
[Constructable]
public BreadLoaf() : this( 1 )
{
}
[Constructable]
public BreadLoaf( int amount ) : base( amount, 0x103B )
{
this.Weight = 1.0;
this.FillFactor = 3;
}
public BreadLoaf( 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();
}
}
public class Bacon : Food
{
[Constructable]
public Bacon() : this( 1 )
{
}
[Constructable]
public Bacon( int amount ) : base( amount, 0x979 )
{
this.Weight = 1.0;
this.FillFactor = 1;
}
public Bacon( 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();
}
}
public class SlabOfBacon : Food
{
[Constructable]
public SlabOfBacon() : this( 1 )
{
}
[Constructable]
public SlabOfBacon( int amount ) : base( amount, 0x976 )
{
this.Weight = 1.0;
this.FillFactor = 3;
}
public SlabOfBacon( 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();
}
}
public class FishSteak : Food
{
public override double DefaultWeight
{
get { return 0.1; }
}
[Constructable]
public FishSteak() : this( 1 )
{
}
[Constructable]
public FishSteak( int amount ) : base( amount, 0x97B )
{
this.FillFactor = 3;
}
public FishSteak( 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();
}
}
public class CheeseWheel : Food
{
public override double DefaultWeight
{
get { return 0.1; }
}
[Constructable]
public CheeseWheel() : this( 1 )
{
}
[Constructable]
public CheeseWheel( int amount ) : base( amount, 0x97E )
{
this.FillFactor = 3;
}
public CheeseWheel( 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();
}
}
public class CheeseWedge : Food
{
public override double DefaultWeight
{
get { return 0.1; }
}
[Constructable]
public CheeseWedge() : this( 1 )
{
}
[Constructable]
public CheeseWedge( int amount ) : base( amount, 0x97D )
{
this.FillFactor = 3;
}
public CheeseWedge( 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();
}
}
public class CheeseSlice : Food
{
public override double DefaultWeight
{
get { return 0.1; }
}
[Constructable]
public CheeseSlice() : this( 1 )
{
}
[Constructable]
public CheeseSlice( int amount ) : base( amount, 0x97C )
{
this.FillFactor = 1;
}
public CheeseSlice( 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();
}
}
public class FrenchBread : Food
{
[Constructable]
public FrenchBread() : this( 1 )
{
}
[Constructable]
public FrenchBread( int amount ) : base( amount, 0x98C )
{
this.Weight = 2.0;
this.FillFactor = 3;
}
public FrenchBread( 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();
}
}
public class FriedEggs : Food
{
[Constructable]
public FriedEggs() : this( 1 )
{
}
[Constructable]
public FriedEggs( int amount ) : base( amount, 0x9B6 )
{
this.Weight = 1.0;
this.FillFactor = 4;
}
public FriedEggs( 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();
}
}
public class CookedBird : Food
{
[Constructable]
public CookedBird() : this( 1 )
{
}
[Constructable]
public CookedBird( int amount ) : base( amount, 0x9B7 )
{
this.Weight = 1.0;
this.FillFactor = 5;
}
public CookedBird( 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();
}
}
public class RoastPig : Food
{
[Constructable]
public RoastPig() : this( 1 )
{
}
[Constructable]
public RoastPig( int amount ) : base( amount, 0x9BB )
{
this.Weight = 45.0;
this.FillFactor = 20;
}
public RoastPig( 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();
}
}
public class Sausage : Food
{
[Constructable]
public Sausage() : this( 1 )
{
}
[Constructable]
public Sausage( int amount ) : base( amount, 0x9C0 )
{
this.Weight = 1.0;
this.FillFactor = 4;
}
public Sausage( 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();
}
}
public class Ham : Food
{
[Constructable]
public Ham() : this( 1 )
{
}
[Constructable]
public Ham( int amount ) : base( amount, 0x9C9 )
{
this.Weight = 1.0;
this.FillFactor = 5;
}
public Ham( 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();
}
}
public class Cake : Food
{
[Constructable]
public Cake() : base( 0x9E9 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 10;
}
public Cake( 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();
}
}
public class Ribs : Food
{
[Constructable]
public Ribs() : this( 1 )
{
}
[Constructable]
public Ribs( int amount ) : base( amount, 0x9F2 )
{
this.Weight = 1.0;
this.FillFactor = 5;
}
public Ribs( 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();
}
}
public class Cookies : Food
{
[Constructable]
public Cookies() : base( 0x160b )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 4;
}
public Cookies( 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();
}
}
public class Muffins : Food
{
[Constructable]
public Muffins() : base( 0x9eb )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 4;
}
public Muffins( 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();
}
}
[TypeAlias( "Server.Items.Pizza" )]
public class CheesePizza : Food
{
public override int LabelNumber{ get{ return 1044516; } } // cheese pizza
[Constructable]
public CheesePizza() : base( 0x1040 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 6;
}
public CheesePizza( 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();
}
}
public class SausagePizza : Food
{
public override int LabelNumber{ get{ return 1044517; } } // sausage pizza
[Constructable]
public SausagePizza() : base( 0x1040 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 6;
}
public SausagePizza( 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();
}
}
#if false
public class Pizza : Food
{
[Constructable]
public Pizza() : base( 0x1040 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 6;
}
public Pizza( 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();
}
}
#endif
public class FruitPie : Food
{
public override int LabelNumber{ get{ return 1041346; } } // baked fruit pie
[Constructable]
public FruitPie() : base( 0x1041 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 5;
}
public FruitPie( 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();
}
}
public class MeatPie : Food
{
public override int LabelNumber{ get{ return 1041347; } } // baked meat pie
[Constructable]
public MeatPie() : base( 0x1041 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 5;
}
public MeatPie( 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();
}
}
public class PumpkinPie : Food
{
public override int LabelNumber{ get{ return 1041348; } } // baked pumpkin pie
[Constructable]
public PumpkinPie() : base( 0x1041 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 5;
}
public PumpkinPie( 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();
}
}
public class ApplePie : Food
{
public override int LabelNumber{ get{ return 1041343; } } // baked apple pie
[Constructable]
public ApplePie() : base( 0x1041 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 5;
}
public ApplePie( 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();
}
}
public class PeachCobbler : Food
{
public override int LabelNumber{ get{ return 1041344; } } // baked peach cobbler
[Constructable]
public PeachCobbler() : base( 0x1041 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 5;
}
public PeachCobbler( 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();
}
}
public class Quiche : Food
{
public override int LabelNumber{ get{ return 1041345; } } // baked quiche
[Constructable]
public Quiche() : base( 0x1041 )
{
Stackable = false;
this.Weight = 1.0;
this.FillFactor = 5;
}
public Quiche( 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();
}
}
public class LambLeg : Food
{
[Constructable]
public LambLeg() : this( 1 )
{
}
[Constructable]
public LambLeg( int amount ) : base( amount, 0x160a )
{
this.Weight = 2.0;
this.FillFactor = 5;
}
public LambLeg( 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();
}
}
public class ChickenLeg : Food
{
[Constructable]
public ChickenLeg() : this( 1 )
{
}
[Constructable]
public ChickenLeg( int amount ) : base( amount, 0x1608 )
{
this.Weight = 1.0;
this.FillFactor = 4;
Name = "bird leg";
}
public ChickenLeg( 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();
}
}
[FlipableAttribute( 0xC74, 0xC75 )]
public class HoneydewMelon : Food
{
[Constructable]
public HoneydewMelon() : this( 1 )
{
}
[Constructable]
public HoneydewMelon( int amount ) : base( amount, 0xC74 )
{
this.Weight = 1.0;
this.FillFactor = 1;
}
public HoneydewMelon( 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();
}
}
[FlipableAttribute( 0xC64, 0xC65 )]
public class YellowGourd : Food
{
[Constructable]
public YellowGourd() : this( 1 )
{
}
[Constructable]
public YellowGourd( int amount ) : base( amount, 0xC64 )
{
this.Weight = 1.0;
this.FillFactor = 1;
}
public YellowGourd( 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();
}
}
[FlipableAttribute( 0xC66, 0xC67 )]
public class GreenGourd : Food
{
[Constructable]
public GreenGourd() : this( 1 )
{
}
[Constructable]
public GreenGourd( int amount ) : base( amount, 0xC66 )
{
this.Weight = 1.0;
this.FillFactor = 1;
}
public GreenGourd( 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();
}
}
[FlipableAttribute( 0xC7F, 0xC81 )]
public class EarOfCorn : Food
{
[Constructable]
public EarOfCorn() : this( 1 )
{
}
[Constructable]
public EarOfCorn( int amount ) : base( amount, 0xC81 )
{
this.Weight = 1.0;
this.FillFactor = 1;
}
public EarOfCorn( 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();
}
}
public class Turnip : Food
{
[Constructable]
public Turnip() : this( 1 )
{
}
[Constructable]
public Turnip( int amount ) : base( amount, 0xD3A )
{
this.Weight = 1.0;
this.FillFactor = 1;
}
public Turnip( 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();
}
}
public class SheafOfHay : Item
{
[Constructable]
public SheafOfHay() : base( 0xF36 )
{
this.Weight = 10.0;
}
public SheafOfHay( 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();
}
}
}