feat: Adds leather/metal food, fixes weapons/armors with wrong materials (#1718)
### Summary - Fixes the name `Vegies` to `Veggies` - Adds feeding leather to goats - Adds metal for Lava Lizards - Fixes Bone Helm being classified as plate instead of bone. - Fixes wooden shields not classified as wood. ### Note On OSI, the preferred foods on the animal lore gump doesn't contain all possible favorite food categories. Furthermore, the one listed is not necessarily always the "first" in the list of possible categories. We aren't going to try and fix that since it isn't important.
This commit is contained in:
parent
29ea813242
commit
974062b0d4
61 changed files with 266 additions and 128 deletions
|
|
@ -48,7 +48,7 @@ namespace Server.Mobiles
|
|||
public override string CorpseName => "an unholy corpse";
|
||||
public override bool IsDispellable => false;
|
||||
public override bool IsBondable => false;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
|
||||
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
public override string CorpseName => "a holy corpse";
|
||||
public override bool IsDispellable => false;
|
||||
public override bool IsBondable => false;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
|
||||
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ namespace Server.Factions
|
|||
}
|
||||
}
|
||||
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,6 +23,6 @@ namespace Server.Items
|
|||
|
||||
public override int ArmorBase => 30;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Bone;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,4 +19,6 @@ public partial class GargishWoodenShield : BaseShield
|
|||
public override int AosStrReq => 20;
|
||||
|
||||
public override int RequiredRaces => Race.AllowGargoylesOnly;
|
||||
}
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,4 +20,6 @@ public partial class WoodenKiteShield : BaseShield
|
|||
public override int AosStrReq => 20;
|
||||
|
||||
public override int ArmorBase => 12;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,4 +20,6 @@ public partial class WoodenShield : BaseShield
|
|||
public override int AosStrReq => 20;
|
||||
|
||||
public override int ArmorBase => 8;
|
||||
|
||||
public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ public abstract partial class BaseWand : BaseBashing
|
|||
Attributes.SpellChanneling = 1;
|
||||
Attributes.CastSpeed = -1;
|
||||
WeaponAttributes.MageWeapon = Utility.RandomMinMax(1, 10);
|
||||
Resource = CraftResource.None;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.Dismount;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,11 @@ namespace Server.Items
|
|||
public partial class ElvenCompositeLongbow : BaseRanged
|
||||
{
|
||||
[Constructible]
|
||||
public ElvenCompositeLongbow() : base(0x2D1E) => Weight = 8.0;
|
||||
public ElvenCompositeLongbow() : base(0x2D1E)
|
||||
{
|
||||
Weight = 8.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0xF42;
|
||||
public override Type AmmoType => typeof(Arrow);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,11 @@ namespace Server.Items
|
|||
public partial class MagicalShortbow : BaseRanged
|
||||
{
|
||||
[Constructible]
|
||||
public MagicalShortbow() : base(0x2D2B) => Weight = 6.0;
|
||||
public MagicalShortbow() : base(0x2D2B)
|
||||
{
|
||||
Weight = 6.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0xF42;
|
||||
public override Type AmmoType => typeof(Arrow);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,11 @@ namespace Server.Items
|
|||
public partial class WildStaff : BaseStaff
|
||||
{
|
||||
[Constructible]
|
||||
public WildStaff() : base(0x2D25) => Weight = 8.0;
|
||||
public WildStaff() : base(0x2D25)
|
||||
{
|
||||
Weight = 8.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.Block;
|
||||
public override WeaponAbility SecondaryAbility => WeaponAbility.ForceOfNature;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ namespace Server.Items
|
|||
{
|
||||
Weight = 6.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0xF42;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,11 @@ namespace Server.Items
|
|||
public partial class CompositeBow : BaseRanged
|
||||
{
|
||||
[Constructible]
|
||||
public CompositeBow() : base(0x26C2) => Weight = 5.0;
|
||||
public CompositeBow() : base(0x26C2)
|
||||
{
|
||||
Weight = 5.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0xF42;
|
||||
public override Type AmmoType => typeof(Arrow);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ namespace Server.Items
|
|||
{
|
||||
Weight = 7.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0x1BFE;
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ namespace Server.Items
|
|||
{
|
||||
Weight = 9.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0x1BFE;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ namespace Server.Items
|
|||
[Constructible]
|
||||
public JukaBow()
|
||||
{
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int AosStrengthReq => 80;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,11 @@ namespace Server.Items
|
|||
public partial class RepeatingCrossbow : BaseRanged
|
||||
{
|
||||
[Constructible]
|
||||
public RepeatingCrossbow() : base(0x26C3) => Weight = 6.0;
|
||||
public RepeatingCrossbow() : base(0x26C3)
|
||||
{
|
||||
Weight = 6.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0x1BFE;
|
||||
public override Type AmmoType => typeof(Bolt);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ namespace Server.Items
|
|||
{
|
||||
Weight = 9.0;
|
||||
Layer = Layer.TwoHanded;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override int EffectID => 0xF42;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,11 @@ namespace Server.Items
|
|||
public partial class GlassStaff : BaseStaff
|
||||
{
|
||||
[Constructible]
|
||||
public GlassStaff() : base(0x905) =>
|
||||
public GlassStaff() : base(0x905)
|
||||
{
|
||||
Weight = 4.0;
|
||||
Resource = CraftResource.None;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.DoubleStrike;
|
||||
public override WeaponAbility SecondaryAbility => WeaponAbility.MortalStrike;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,11 @@ namespace Server.Items
|
|||
public partial class GnarledStaff : BaseStaff
|
||||
{
|
||||
[Constructible]
|
||||
public GnarledStaff() : base(0x13F8) => Weight = 3.0;
|
||||
public GnarledStaff() : base(0x13F8)
|
||||
{
|
||||
Weight = 3.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.ConcussionBlow;
|
||||
public override WeaponAbility SecondaryAbility => WeaponAbility.ForceOfNature;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,11 @@ namespace Server.Items
|
|||
public partial class QuarterStaff : BaseStaff
|
||||
{
|
||||
[Constructible]
|
||||
public QuarterStaff() : base(0xE89) => Weight = 4.0;
|
||||
public QuarterStaff() : base(0xE89)
|
||||
{
|
||||
Weight = 4.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.DoubleStrike;
|
||||
public override WeaponAbility SecondaryAbility => WeaponAbility.ConcussionBlow;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ namespace Server.Items
|
|||
[Constructible]
|
||||
public SerpentstoneStaff() : base(0x906)
|
||||
{
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.CrushingBlow;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,11 @@ namespace Server.Items
|
|||
public partial class ShepherdsCrook : BaseStaff
|
||||
{
|
||||
[Constructible]
|
||||
public ShepherdsCrook() : base(0xE81) => Weight = 4.0;
|
||||
public ShepherdsCrook() : base(0xE81)
|
||||
{
|
||||
Weight = 4.0;
|
||||
Resource = CraftResource.RegularWood;
|
||||
}
|
||||
|
||||
public override WeaponAbility PrimaryAbility => WeaponAbility.CrushingBlow;
|
||||
public override WeaponAbility SecondaryAbility => WeaponAbility.Disarm;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 12;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.Meat | FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.Meat | FoodType.FruitsAndVeggies;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Bear;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 12;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.FruitsAndVegies | FoodType.Meat;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.FruitsAndVeggies | FoodType.Meat;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Bear;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 2;
|
||||
public override int Hides => 16;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.FruitsAndVegies | FoodType.Meat;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.FruitsAndVeggies | FoodType.Meat;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Bear;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 2;
|
||||
public override int Hides => 16;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.FruitsAndVegies | FoodType.Meat;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.FruitsAndVeggies | FoodType.Meat;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Bear;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 8;
|
||||
public override int Hides => 12;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override void OnDoubleClick(Mobile from)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -44,6 +44,6 @@ namespace Server.Mobiles
|
|||
public override string DefaultName => "a boar";
|
||||
|
||||
public override int Meat => 2;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -43,6 +43,6 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 2;
|
||||
public override int Hides => 8;
|
||||
public override FoodType FavoriteFood => FoodType.GrainsAndHay | FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.GrainsAndHay | FoodType.FruitsAndVeggies | FoodType.Leather;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,6 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 6;
|
||||
public override int Hides => 15;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override int GetAttackSound() => 0x82;
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 5;
|
||||
public override int Hides => 8;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override int GetAttackSound() => 0x82;
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,6 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 12;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,6 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 2;
|
||||
public override int Hides => 12;
|
||||
public override FoodType FavoriteFood => FoodType.GrainsAndHay | FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.GrainsAndHay | FoodType.FruitsAndVeggies;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 3;
|
||||
public override int Hides => 10;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ namespace Server.Mobiles
|
|||
public override string DefaultName => "a pack llama";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -42,6 +42,6 @@ namespace Server.Mobiles
|
|||
public override string DefaultName => "a pig";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 3;
|
||||
public override MeatType MeatType => MeatType.LambLeg;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override int Wool => Body == 0xCF ? 3 : 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ namespace Server.Mobiles
|
|||
public override string CorpseName => "an ostard corpse";
|
||||
|
||||
public override int Meat => 3;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Ostard;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ namespace Server.Mobiles
|
|||
public override string CorpseName => "an ostard corpse";
|
||||
|
||||
public override int Meat => 3;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Ostard;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ namespace Server.Mobiles
|
|||
public override string CorpseName => "an ostard corpse";
|
||||
|
||||
public override int Meat => 3;
|
||||
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Fish | FoodType.Eggs | FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Fish | FoodType.Eggs | FoodType.FruitsAndVeggies;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Ostard;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,6 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 3;
|
||||
public override int Hides => 10;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ namespace Server.Mobiles
|
|||
public override int Meat => 3;
|
||||
public override int Hides => 10;
|
||||
public override HideType HideType => HideType.Horned;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override void OnDisallowedRider(Mobile m)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -47,6 +47,6 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 12;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
public override int Meat => 1;
|
||||
public override int Hides => 12;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override bool OverrideBondingReqs() => true;
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
public override int Meat => 1;
|
||||
public override int Hides => 12;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override bool OverrideBondingReqs() => true;
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace Server.Mobiles
|
|||
public override int Meat => 3;
|
||||
public override int Hides => 10;
|
||||
public override HideType HideType => HideType.Horned;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
|
||||
public override void OnDisallowedRider(Mobile m)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,6 +55,6 @@ namespace Server.Mobiles
|
|||
public override int StepsMax => 6400;
|
||||
public override string CorpseName => "a war horse corpse";
|
||||
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ namespace Server.Mobiles
|
|||
public override string DefaultName => "a lava lizard";
|
||||
public override int Hides => 12;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override FoodType FavoriteFood => FoodType.Metal | FoodType.Gold;
|
||||
|
||||
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
|
||||
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.Meat | FoodType.FruitsAndVegies | FoodType.Eggs;
|
||||
public override FoodType FavoriteFood => FoodType.Fish | FoodType.Meat | FoodType.FruitsAndVeggies | FoodType.Eggs;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 1;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies;
|
||||
|
||||
public override int GetAttackSound() => 0xC9;
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 1;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies;
|
||||
|
||||
public override int GetAttackSound() => 0xC9;
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ namespace Server.Mobiles
|
|||
public override string DefaultName => "a sewer rat";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Eggs | FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Eggs | FoodType.FruitsAndVeggies;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace Server.Mobiles
|
|||
public override MeatType MeatType => MeatType.Bird;
|
||||
public override int Meat => 1;
|
||||
public override int Feathers => 25;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
|
||||
[SerializationGenerator(0, false)]
|
||||
|
|
@ -98,6 +98,6 @@ namespace Server.Mobiles
|
|||
public override MeatType MeatType => MeatType.Bird;
|
||||
public override int Meat => 1;
|
||||
public override int Feathers => 25;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,11 +67,13 @@ namespace Server.Mobiles
|
|||
{
|
||||
None = 0x0000,
|
||||
Meat = 0x0001,
|
||||
FruitsAndVegies = 0x0002,
|
||||
FruitsAndVeggies = 0x0002,
|
||||
GrainsAndHay = 0x0004,
|
||||
Fish = 0x0008,
|
||||
Eggs = 0x0010,
|
||||
Gold = 0x0020
|
||||
Gold = 0x0020,
|
||||
Leather = 0x0040,
|
||||
Metal = 0x0080
|
||||
}
|
||||
|
||||
[Flags]
|
||||
|
|
@ -205,22 +207,22 @@ namespace Server.Mobiles
|
|||
private static readonly bool EnableRummaging = true;
|
||||
public static readonly TimeSpan ShoutDelay = TimeSpan.FromMinutes(1);
|
||||
|
||||
private static readonly Type[] m_Eggs =
|
||||
private static readonly Type[] _eggs =
|
||||
{
|
||||
typeof(FriedEggs), typeof(Eggs)
|
||||
};
|
||||
|
||||
private static readonly Type[] m_Fish =
|
||||
private static readonly Type[] _fish =
|
||||
{
|
||||
typeof(FishSteak), typeof(RawFishSteak)
|
||||
};
|
||||
|
||||
private static readonly Type[] m_GrainsAndHay =
|
||||
private static readonly Type[] _grainsAndHay =
|
||||
{
|
||||
typeof(BreadLoaf), typeof(FrenchBread), typeof(SheafOfHay)
|
||||
};
|
||||
|
||||
private static readonly Type[] m_Meat =
|
||||
private static readonly Type[] _meat =
|
||||
{
|
||||
/* Cooked */
|
||||
typeof(Bacon), typeof(CookedBird), typeof(Sausage),
|
||||
|
|
@ -236,7 +238,7 @@ namespace Server.Mobiles
|
|||
typeof(Torso), typeof(RightArm), typeof(RightLeg)
|
||||
};
|
||||
|
||||
private static readonly Type[] m_FruitsAndVegies =
|
||||
private static readonly Type[] _fruitsAndVeggies =
|
||||
{
|
||||
typeof(HoneydewMelon), typeof(YellowGourd), typeof(GreenGourd),
|
||||
typeof(Banana), typeof(Bananas), typeof(Lemon), typeof(Lime),
|
||||
|
|
@ -246,12 +248,31 @@ namespace Server.Mobiles
|
|||
typeof(Onion), typeof(Lettuce), typeof(Pumpkin)
|
||||
};
|
||||
|
||||
private static readonly Type[] m_Gold =
|
||||
private static readonly Type[] _gold =
|
||||
{
|
||||
// white wyrms eat gold..
|
||||
typeof(Gold)
|
||||
};
|
||||
|
||||
private static readonly Type[] _metal =
|
||||
{
|
||||
// Materials
|
||||
typeof(BaseIngot), typeof(BaseOre),
|
||||
|
||||
// Containers
|
||||
typeof(MetalChest), typeof(MetalGoldenChest), typeof(MetalBox),
|
||||
|
||||
// Crafting
|
||||
typeof(Gears), typeof(Saw), typeof(Axle), typeof(AxleGears),
|
||||
typeof(ClockParts), typeof(Hinge), typeof(Springs), typeof(Spyglass),
|
||||
typeof(Fork), typeof(ForkLeft), typeof(ForkRight), typeof(Spoon),
|
||||
typeof(SpoonLeft), typeof(SpoonRight), typeof(Knife), typeof(KnifeLeft),
|
||||
typeof(KnifeRight), typeof(DrawKnife), typeof(Hammer), typeof(Froe), typeof(Inshave),
|
||||
typeof(Nails), typeof(RunicDovetailSaw), typeof(RunicHammer), typeof(Skillet),
|
||||
typeof(SledgeHammer), typeof(Tongs), typeof(TinkerTools), typeof(SmithHammer),
|
||||
typeof(AncientSmithyHammer), typeof(Scorp)
|
||||
};
|
||||
|
||||
private bool _summoned;
|
||||
|
||||
private bool m_bTamable;
|
||||
|
|
@ -4155,40 +4176,107 @@ namespace Server.Mobiles
|
|||
}
|
||||
|
||||
public virtual bool CheckFoodPreference(Item f) =>
|
||||
CheckFoodPreference(f, FoodType.Eggs, m_Eggs) ||
|
||||
CheckFoodPreference(f, FoodType.Fish, m_Fish) ||
|
||||
CheckFoodPreference(f, FoodType.GrainsAndHay, m_GrainsAndHay) ||
|
||||
CheckFoodPreference(f, FoodType.Meat, m_Meat) ||
|
||||
CheckFoodPreference(f, FoodType.FruitsAndVegies, m_FruitsAndVegies) ||
|
||||
CheckFoodPreference(f, FoodType.Gold, m_Gold);
|
||||
CheckFoodPreference(f, FoodType.Eggs) ||
|
||||
CheckFoodPreference(f, FoodType.Fish) ||
|
||||
CheckFoodPreference(f, FoodType.GrainsAndHay) ||
|
||||
CheckFoodPreference(f, FoodType.Meat) ||
|
||||
CheckFoodPreference(f, FoodType.FruitsAndVeggies) ||
|
||||
CheckFoodPreference(f, FoodType.Gold) ||
|
||||
CheckFoodPreference(f, FoodType.Metal) ||
|
||||
CheckFoodPreference(f, FoodType.Leather);
|
||||
|
||||
public virtual bool CheckFoodPreference(Item fed, FoodType type, Type[] types)
|
||||
private bool CheckFoodPreference(Item fed, FoodType type)
|
||||
{
|
||||
if ((FavoriteFood & type) == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var fedType = fed.GetType();
|
||||
var contains = false;
|
||||
|
||||
for (var i = 0; !contains && i < types.Length; ++i)
|
||||
// Goat special case
|
||||
if (type == FoodType.Leather)
|
||||
{
|
||||
contains = fedType == types[i];
|
||||
if (fed is BaseLeather or Bag or Pouch or Server.Items.Backpack or StrongBackpack)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (fed is BaseArmor armor)
|
||||
{
|
||||
return armor.MaterialType
|
||||
is ArmorMaterialType.Leather
|
||||
or ArmorMaterialType.Studded
|
||||
or ArmorMaterialType.Spined
|
||||
or ArmorMaterialType.Horned
|
||||
or ArmorMaterialType.Barbed;
|
||||
}
|
||||
|
||||
CraftResource craftResource;
|
||||
if (fed is BaseWeapon weapon)
|
||||
{
|
||||
craftResource = weapon.Resource;
|
||||
}
|
||||
else if (fed is BaseClothing clothing)
|
||||
{
|
||||
craftResource = clothing.Resource;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return CraftResources.GetType(craftResource) == CraftResourceType.Leather;
|
||||
}
|
||||
|
||||
return contains;
|
||||
if (type == FoodType.Metal)
|
||||
{
|
||||
if (fed is BaseArmor armor)
|
||||
{
|
||||
return armor.MaterialType
|
||||
is ArmorMaterialType.Ringmail
|
||||
or ArmorMaterialType.Chainmail
|
||||
or ArmorMaterialType.Plate;
|
||||
}
|
||||
|
||||
CraftResource craftResource;
|
||||
if (fed is BaseWeapon weapon)
|
||||
{
|
||||
craftResource = weapon.Resource;
|
||||
}
|
||||
else if (fed is BaseClothing clothing)
|
||||
{
|
||||
craftResource = clothing.Resource;
|
||||
}
|
||||
else
|
||||
{
|
||||
return fed.GetType().InTypeList(_metal);
|
||||
}
|
||||
|
||||
return CraftResources.GetType(craftResource) == CraftResourceType.Metal;
|
||||
}
|
||||
|
||||
var types = type switch
|
||||
{
|
||||
FoodType.Eggs => _eggs,
|
||||
FoodType.Fish => _fish,
|
||||
FoodType.GrainsAndHay => _grainsAndHay,
|
||||
FoodType.Meat => _meat,
|
||||
FoodType.FruitsAndVeggies => _fruitsAndVeggies,
|
||||
FoodType.Gold => _gold,
|
||||
};
|
||||
|
||||
return fed.GetType().InTypeList(types);
|
||||
}
|
||||
|
||||
public virtual bool CheckFeed(Mobile from, Item dropped)
|
||||
{
|
||||
if (IsDeadPet || !Controlled || (ControlMaster != from && !IsPetFriend(from)))
|
||||
if (IsDeadPet || !Controlled || ControlMaster != from && !IsPetFriend(from))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!CheckFoodPreference(dropped))
|
||||
{
|
||||
PrivateOverheadMessage(MessageType.Regular, 0x3B2, 1043257, from.NetState); // The animal shies away.
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -4219,7 +4307,6 @@ namespace Server.Mobiles
|
|||
m_Loyalty = Math.Min(MaxLoyalty, Utility.CoinFlips(amount, MaxLoyaltyIncrease) * 10);
|
||||
}
|
||||
|
||||
/* if (happier )*/
|
||||
// looks like in OSI pets say they are happier even if they are at maximum loyalty
|
||||
SayTo(from, 502060); // Your pet looks happier.
|
||||
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override bool CanHeal => true;
|
||||
public override bool CanHealOwner => true;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies;
|
||||
public override bool CanAngerOnTame => true;
|
||||
public override bool StatLossAfterTame => true;
|
||||
public override int Hides => 10;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,6 @@ namespace Server.Mobiles
|
|||
public override string DefaultName => "a squirrell";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace Server.Mobiles
|
|||
public override Poison PoisonImmune => Poison.Lesser;
|
||||
public override Poison HitPoison => Poison.Lesser;
|
||||
|
||||
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Fish | FoodType.FruitsAndVegies |
|
||||
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Fish | FoodType.FruitsAndVeggies |
|
||||
FoodType.GrainsAndHay | FoodType.Eggs;
|
||||
|
||||
public override void GenerateLoot()
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ namespace Server.Mobiles
|
|||
|
||||
public override Poison PoisonImmune => Poison.Greater;
|
||||
public override Poison HitPoison => Poison.Greater;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVegies | FoodType.GrainsAndHay;
|
||||
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
|
||||
public override bool CanAngerOnTame => true;
|
||||
|
||||
public override WeaponAbility GetWeaponAbility() => WeaponAbility.BleedAttack;
|
||||
|
|
|
|||
|
|
@ -34,47 +34,36 @@ namespace Server.SkillHandlers
|
|||
{
|
||||
from.SendLocalizedMessage(500331); // The spirits of the dead are not the province of animal lore.
|
||||
}
|
||||
else if (targeted is BaseCreature c)
|
||||
else if (targeted is not BaseCreature c)
|
||||
{
|
||||
if (!c.IsDeadPet)
|
||||
{
|
||||
if (c.Body.IsAnimal || c.Body.IsMonster || c.Body.IsSea)
|
||||
{
|
||||
if (!c.Controlled && from.Skills.AnimalLore.Value < 100.0)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1049674
|
||||
); // At your skill level, you can only lore tamed creatures.
|
||||
}
|
||||
else if (!c.Controlled && !c.Tamable && from.Skills.AnimalLore.Value < 110.0)
|
||||
{
|
||||
from.SendLocalizedMessage(
|
||||
1049675
|
||||
); // At your skill level, you can only lore tamed or tameable creatures.
|
||||
}
|
||||
else if (!from.CheckTargetSkill(SkillName.AnimalLore, c, 0.0, 120.0))
|
||||
{
|
||||
from.SendLocalizedMessage(500334); // You can't think of anything you know offhand.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.CloseGump<AnimalLoreGump>();
|
||||
from.SendGump(new AnimalLoreGump(c));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500329); // That's not an animal!
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500331); // The spirits of the dead are not the province of animal lore.
|
||||
}
|
||||
from.SendLocalizedMessage(500329); // That's not an animal!
|
||||
}
|
||||
else if (c.IsDeadPet)
|
||||
{
|
||||
from.SendLocalizedMessage(500331); // The spirits of the dead are not the province of animal lore.
|
||||
}
|
||||
else if (!c.Body.IsAnimal && c.Body is { IsMonster: false, IsSea: false })
|
||||
{
|
||||
from.SendLocalizedMessage(500329); // That's not an animal!
|
||||
}
|
||||
else if (!c.Controlled && from.Skills.AnimalLore.Value < 100.0)
|
||||
{
|
||||
// At your skill level, you can only lore tamed creatures.
|
||||
from.SendLocalizedMessage(1049674);
|
||||
}
|
||||
else if (!c.Controlled && !c.Tamable && from.Skills.AnimalLore.Value < 110.0)
|
||||
{
|
||||
// At your skill level, you can only lore tamed or tameable creatures.
|
||||
from.SendLocalizedMessage(1049675);
|
||||
}
|
||||
else if (!from.CheckTargetSkill(SkillName.AnimalLore, c, 0.0, 120.0))
|
||||
{
|
||||
from.SendLocalizedMessage(500334); // You can't think of anything you know offhand.
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(500329); // That's not an animal!
|
||||
from.CloseGump<AnimalLoreGump>();
|
||||
from.SendGump(new AnimalLoreGump(c));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -181,23 +170,20 @@ namespace Server.SkillHandlers
|
|||
AddHtml(320, 168, 35, 18, FormatElement(c.PhysicalResistance));
|
||||
|
||||
AddHtmlLocalized(153, 186, 160, 18, 1061647, LabelColor); // Fire
|
||||
AddHtml(320, 186, 35, 18, FormatElement(c.FireResistance));
|
||||
AddHtml(320, 186, 35, 18, FormatElement(c.FireResistance, "#FF0000"));
|
||||
|
||||
AddHtmlLocalized(153, 204, 160, 18, 1061648, LabelColor); // Cold
|
||||
AddHtml(320, 204, 35, 18, FormatElement(c.ColdResistance));
|
||||
AddHtml(320, 204, 35, 18, FormatElement(c.ColdResistance, "#000080"));
|
||||
|
||||
AddHtmlLocalized(153, 222, 160, 18, 1061649, LabelColor); // Poison
|
||||
AddHtml(320, 222, 35, 18, FormatElement(c.PoisonResistance));
|
||||
AddHtml(320, 222, 35, 18, FormatElement(c.PoisonResistance, "#008000"));
|
||||
|
||||
AddHtmlLocalized(153, 240, 160, 18, 1061650, LabelColor); // Energy
|
||||
AddHtml(320, 240, 35, 18, FormatElement(c.EnergyResistance));
|
||||
AddHtml(320, 240, 35, 18, FormatElement(c.EnergyResistance, "#BF80FF"));
|
||||
|
||||
AddButton(340, 358, 5601, 5605, 0, GumpButtonType.Page, page + 1);
|
||||
AddButton(317, 358, 5603, 5607, 0, GumpButtonType.Page, page - 1);
|
||||
}
|
||||
|
||||
if (Core.AOS)
|
||||
{
|
||||
AddPage(++page);
|
||||
|
||||
AddImage(128, 152, 2086);
|
||||
|
|
@ -207,16 +193,16 @@ namespace Server.SkillHandlers
|
|||
AddHtml(320, 168, 35, 18, FormatElement(c.PhysicalDamage));
|
||||
|
||||
AddHtmlLocalized(153, 186, 160, 18, 1061647, LabelColor); // Fire
|
||||
AddHtml(320, 186, 35, 18, FormatElement(c.FireDamage));
|
||||
AddHtml(320, 186, 35, 18, FormatElement(c.FireDamage, "#FF0000"));
|
||||
|
||||
AddHtmlLocalized(153, 204, 160, 18, 1061648, LabelColor); // Cold
|
||||
AddHtml(320, 204, 35, 18, FormatElement(c.ColdDamage));
|
||||
AddHtml(320, 204, 35, 18, FormatElement(c.ColdDamage, "#000080"));
|
||||
|
||||
AddHtmlLocalized(153, 222, 160, 18, 1061649, LabelColor); // Poison
|
||||
AddHtml(320, 222, 35, 18, FormatElement(c.PoisonDamage));
|
||||
AddHtml(320, 222, 35, 18, FormatElement(c.PoisonDamage, "#008000"));
|
||||
|
||||
AddHtmlLocalized(153, 240, 160, 18, 1061650, LabelColor); // Energy
|
||||
AddHtml(320, 240, 35, 18, FormatElement(c.EnergyDamage));
|
||||
AddHtml(320, 240, 35, 18, FormatElement(c.EnergyDamage, "#BF80FF"));
|
||||
|
||||
if (Core.ML)
|
||||
{
|
||||
|
|
@ -256,6 +242,8 @@ namespace Server.SkillHandlers
|
|||
AddHtml(320, 240, 35, 18, FormatSkill(c, SkillName.Poisoning));
|
||||
}
|
||||
|
||||
// TODO: Add remaining combat skills
|
||||
|
||||
AddImage(128, 260, 2086);
|
||||
AddHtmlLocalized(147, 258, 160, 18, 3001032, 200); // Lore & Knowledge
|
||||
|
||||
|
|
@ -268,6 +256,8 @@ namespace Server.SkillHandlers
|
|||
AddHtmlLocalized(153, 312, 160, 18, 1044106, LabelColor); // Meditation
|
||||
AddHtml(320, 312, 35, 18, FormatSkill(c, SkillName.Meditation));
|
||||
|
||||
// TODO: Add remaining skills
|
||||
|
||||
AddButton(340, 358, 5601, 5605, 0, GumpButtonType.Page, page + 1);
|
||||
AddButton(317, 358, 5603, 5607, 0, GumpButtonType.Page, page - 1);
|
||||
|
||||
|
|
@ -278,7 +268,11 @@ namespace Server.SkillHandlers
|
|||
|
||||
var foodPref = 3000340;
|
||||
|
||||
if ((c.FavoriteFood & FoodType.FruitsAndVegies) != 0)
|
||||
if ((c.FavoriteFood & FoodType.Meat) != 0)
|
||||
{
|
||||
foodPref = 1049564; // Meat
|
||||
}
|
||||
else if ((c.FavoriteFood & FoodType.FruitsAndVeggies) != 0)
|
||||
{
|
||||
foodPref = 1049565; // Fruits and Vegetables
|
||||
}
|
||||
|
|
@ -290,15 +284,17 @@ namespace Server.SkillHandlers
|
|||
{
|
||||
foodPref = 1049568; // Fish
|
||||
}
|
||||
else if ((c.FavoriteFood & FoodType.Meat) != 0)
|
||||
else if ((c.FavoriteFood & FoodType.Metal) != 0)
|
||||
{
|
||||
foodPref = 1049564; // Meat
|
||||
foodPref = 1049567; // Metal
|
||||
}
|
||||
else if ((c.FavoriteFood & FoodType.Eggs) != 0)
|
||||
{
|
||||
foodPref = 1044477; // Eggs
|
||||
}
|
||||
|
||||
// TODO: Add 1115752 "Blackrock Stew" as a food type
|
||||
|
||||
AddHtmlLocalized(153, 168, 160, 18, foodPref, LabelColor);
|
||||
|
||||
AddImage(128, 188, 2086);
|
||||
|
|
@ -341,6 +337,10 @@ namespace Server.SkillHandlers
|
|||
|
||||
AddHtmlLocalized(153, 204, 160, 18, packInstinct, LabelColor);
|
||||
|
||||
// TODO: Add Pet Slots
|
||||
|
||||
// TODO: Add Abilities
|
||||
|
||||
if (!Core.AOS)
|
||||
{
|
||||
AddImage(128, 224, 2086);
|
||||
|
|
@ -402,14 +402,16 @@ namespace Server.SkillHandlers
|
|||
return $"<div align=right>{val:F1}</div>";
|
||||
}
|
||||
|
||||
private static string FormatElement(int val)
|
||||
private static string FormatElement(int val, string color = null)
|
||||
{
|
||||
if (val <= 0)
|
||||
if (color == null)
|
||||
{
|
||||
return "<div align=right>---</div>";
|
||||
return val == 0 ? "<div align=right>---</div>" : $"<div align=right>{val}%</div>";
|
||||
}
|
||||
|
||||
return $"<div align=right>{val}%</div>";
|
||||
return val == 0
|
||||
? $"<BASEFONT COLOR={color}><div align=right>---</div>"
|
||||
: $"<BASEFONT COLOR={color}><div align=right>{val}%</div>";
|
||||
}
|
||||
|
||||
private static string FormatDamage(int min, int max)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue