diff --git a/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs b/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs index 5e06a2422..cbcfb8130 100644 --- a/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs +++ b/Projects/UOContent/Engines/Ethics/Evil/Mobiles/UnholySteed.cs @@ -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; diff --git a/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs b/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs index a5fb4c602..38c305a16 100644 --- a/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs +++ b/Projects/UOContent/Engines/Ethics/Hero/Mobiles/HolySteed.cs @@ -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; diff --git a/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs b/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs index f6a19ccca..0ed017bfc 100644 --- a/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs +++ b/Projects/UOContent/Engines/Factions/Mobiles/FactionWarHorse.cs @@ -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) { diff --git a/Projects/UOContent/Items/Armor/Helmets/BoneHelm.cs b/Projects/UOContent/Items/Armor/Helmets/BoneHelm.cs index f863f6d7a..38c8b1c2f 100644 --- a/Projects/UOContent/Items/Armor/Helmets/BoneHelm.cs +++ b/Projects/UOContent/Items/Armor/Helmets/BoneHelm.cs @@ -23,6 +23,6 @@ namespace Server.Items public override int ArmorBase => 30; - public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate; + public override ArmorMaterialType MaterialType => ArmorMaterialType.Bone; } } diff --git a/Projects/UOContent/Items/Shields/GargishWoodenShield.cs b/Projects/UOContent/Items/Shields/GargishWoodenShield.cs index d2cf78790..5bdf1157c 100644 --- a/Projects/UOContent/Items/Shields/GargishWoodenShield.cs +++ b/Projects/UOContent/Items/Shields/GargishWoodenShield.cs @@ -19,4 +19,6 @@ public partial class GargishWoodenShield : BaseShield public override int AosStrReq => 20; public override int RequiredRaces => Race.AllowGargoylesOnly; -} \ No newline at end of file + + public override ArmorMaterialType MaterialType => ArmorMaterialType.Wood; +} diff --git a/Projects/UOContent/Items/Shields/WoodenKiteShield.cs b/Projects/UOContent/Items/Shields/WoodenKiteShield.cs index a6fea5c87..3a8874839 100644 --- a/Projects/UOContent/Items/Shields/WoodenKiteShield.cs +++ b/Projects/UOContent/Items/Shields/WoodenKiteShield.cs @@ -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; } diff --git a/Projects/UOContent/Items/Shields/WoodenShield.cs b/Projects/UOContent/Items/Shields/WoodenShield.cs index e09f7884c..46b78874d 100644 --- a/Projects/UOContent/Items/Shields/WoodenShield.cs +++ b/Projects/UOContent/Items/Shields/WoodenShield.cs @@ -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; } diff --git a/Projects/UOContent/Items/Wands/BaseWand.cs b/Projects/UOContent/Items/Wands/BaseWand.cs index db20dee6b..9d6b0c46e 100644 --- a/Projects/UOContent/Items/Wands/BaseWand.cs +++ b/Projects/UOContent/Items/Wands/BaseWand.cs @@ -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; diff --git a/Projects/UOContent/Items/Weapons/ML Weapons/ElvenCompositeLongbow.cs b/Projects/UOContent/Items/Weapons/ML Weapons/ElvenCompositeLongbow.cs index 199c76d82..43a972d92 100644 --- a/Projects/UOContent/Items/Weapons/ML Weapons/ElvenCompositeLongbow.cs +++ b/Projects/UOContent/Items/Weapons/ML Weapons/ElvenCompositeLongbow.cs @@ -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); diff --git a/Projects/UOContent/Items/Weapons/ML Weapons/MagicalShortbow.cs b/Projects/UOContent/Items/Weapons/ML Weapons/MagicalShortbow.cs index 63f3e0ae0..5a078290f 100644 --- a/Projects/UOContent/Items/Weapons/ML Weapons/MagicalShortbow.cs +++ b/Projects/UOContent/Items/Weapons/ML Weapons/MagicalShortbow.cs @@ -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); diff --git a/Projects/UOContent/Items/Weapons/ML Weapons/WildStaff.cs b/Projects/UOContent/Items/Weapons/ML Weapons/WildStaff.cs index 4f307bcaa..e253665f1 100644 --- a/Projects/UOContent/Items/Weapons/ML Weapons/WildStaff.cs +++ b/Projects/UOContent/Items/Weapons/ML Weapons/WildStaff.cs @@ -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; diff --git a/Projects/UOContent/Items/Weapons/Ranged/Bow.cs b/Projects/UOContent/Items/Weapons/Ranged/Bow.cs index 400d2bf8a..0953163d2 100644 --- a/Projects/UOContent/Items/Weapons/Ranged/Bow.cs +++ b/Projects/UOContent/Items/Weapons/Ranged/Bow.cs @@ -12,6 +12,7 @@ namespace Server.Items { Weight = 6.0; Layer = Layer.TwoHanded; + Resource = CraftResource.RegularWood; } public override int EffectID => 0xF42; diff --git a/Projects/UOContent/Items/Weapons/Ranged/CompositeBow.cs b/Projects/UOContent/Items/Weapons/Ranged/CompositeBow.cs index 58515ae4c..bc1e26185 100644 --- a/Projects/UOContent/Items/Weapons/Ranged/CompositeBow.cs +++ b/Projects/UOContent/Items/Weapons/Ranged/CompositeBow.cs @@ -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); diff --git a/Projects/UOContent/Items/Weapons/Ranged/Crossbow.cs b/Projects/UOContent/Items/Weapons/Ranged/Crossbow.cs index cccfd0103..12c823bba 100644 --- a/Projects/UOContent/Items/Weapons/Ranged/Crossbow.cs +++ b/Projects/UOContent/Items/Weapons/Ranged/Crossbow.cs @@ -12,6 +12,7 @@ namespace Server.Items { Weight = 7.0; Layer = Layer.TwoHanded; + Resource = CraftResource.RegularWood; } public override int EffectID => 0x1BFE; diff --git a/Projects/UOContent/Items/Weapons/Ranged/HeavyCrossbow.cs b/Projects/UOContent/Items/Weapons/Ranged/HeavyCrossbow.cs index 84679ce07..947762bd5 100644 --- a/Projects/UOContent/Items/Weapons/Ranged/HeavyCrossbow.cs +++ b/Projects/UOContent/Items/Weapons/Ranged/HeavyCrossbow.cs @@ -12,6 +12,7 @@ namespace Server.Items { Weight = 9.0; Layer = Layer.TwoHanded; + Resource = CraftResource.RegularWood; } public override int EffectID => 0x1BFE; diff --git a/Projects/UOContent/Items/Weapons/Ranged/JukaBow.cs b/Projects/UOContent/Items/Weapons/Ranged/JukaBow.cs index 763d2b373..bcb2b879a 100644 --- a/Projects/UOContent/Items/Weapons/Ranged/JukaBow.cs +++ b/Projects/UOContent/Items/Weapons/Ranged/JukaBow.cs @@ -10,6 +10,7 @@ namespace Server.Items [Constructible] public JukaBow() { + Resource = CraftResource.RegularWood; } public override int AosStrengthReq => 80; diff --git a/Projects/UOContent/Items/Weapons/Ranged/RepeatingCrossbow.cs b/Projects/UOContent/Items/Weapons/Ranged/RepeatingCrossbow.cs index 71bac450f..92af83a9c 100644 --- a/Projects/UOContent/Items/Weapons/Ranged/RepeatingCrossbow.cs +++ b/Projects/UOContent/Items/Weapons/Ranged/RepeatingCrossbow.cs @@ -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); diff --git a/Projects/UOContent/Items/Weapons/SE Weapons/Yumi.cs b/Projects/UOContent/Items/Weapons/SE Weapons/Yumi.cs index 56ee5b3a3..024f51657 100644 --- a/Projects/UOContent/Items/Weapons/SE Weapons/Yumi.cs +++ b/Projects/UOContent/Items/Weapons/SE Weapons/Yumi.cs @@ -12,6 +12,7 @@ namespace Server.Items { Weight = 9.0; Layer = Layer.TwoHanded; + Resource = CraftResource.RegularWood; } public override int EffectID => 0xF42; diff --git a/Projects/UOContent/Items/Weapons/Staves/GlassStaff.cs b/Projects/UOContent/Items/Weapons/Staves/GlassStaff.cs index db2250053..22719d53e 100644 --- a/Projects/UOContent/Items/Weapons/Staves/GlassStaff.cs +++ b/Projects/UOContent/Items/Weapons/Staves/GlassStaff.cs @@ -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; diff --git a/Projects/UOContent/Items/Weapons/Staves/GnarledStaff.cs b/Projects/UOContent/Items/Weapons/Staves/GnarledStaff.cs index 3611907b5..cc05d6a12 100644 --- a/Projects/UOContent/Items/Weapons/Staves/GnarledStaff.cs +++ b/Projects/UOContent/Items/Weapons/Staves/GnarledStaff.cs @@ -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; diff --git a/Projects/UOContent/Items/Weapons/Staves/QuarterStaff.cs b/Projects/UOContent/Items/Weapons/Staves/QuarterStaff.cs index e0d5c567d..a6ee04d97 100644 --- a/Projects/UOContent/Items/Weapons/Staves/QuarterStaff.cs +++ b/Projects/UOContent/Items/Weapons/Staves/QuarterStaff.cs @@ -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; diff --git a/Projects/UOContent/Items/Weapons/Staves/SerpentstoneStaff.cs b/Projects/UOContent/Items/Weapons/Staves/SerpentstoneStaff.cs index 2caebfb21..58211ff1a 100644 --- a/Projects/UOContent/Items/Weapons/Staves/SerpentstoneStaff.cs +++ b/Projects/UOContent/Items/Weapons/Staves/SerpentstoneStaff.cs @@ -10,6 +10,7 @@ namespace Server.Items [Constructible] public SerpentstoneStaff() : base(0x906) { + Resource = CraftResource.RegularWood; } public override WeaponAbility PrimaryAbility => WeaponAbility.CrushingBlow; diff --git a/Projects/UOContent/Items/Weapons/Staves/ShepherdsCrook.cs b/Projects/UOContent/Items/Weapons/Staves/ShepherdsCrook.cs index 88e36240a..3378f14b6 100644 --- a/Projects/UOContent/Items/Weapons/Staves/ShepherdsCrook.cs +++ b/Projects/UOContent/Items/Weapons/Staves/ShepherdsCrook.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Bears/BlackBear.cs b/Projects/UOContent/Mobiles/Animals/Bears/BlackBear.cs index 31b6c0325..7b6a42e51 100644 --- a/Projects/UOContent/Mobiles/Animals/Bears/BlackBear.cs +++ b/Projects/UOContent/Mobiles/Animals/Bears/BlackBear.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Bears/BrownBear.cs b/Projects/UOContent/Mobiles/Animals/Bears/BrownBear.cs index dbd80f3b6..31fd238c9 100644 --- a/Projects/UOContent/Mobiles/Animals/Bears/BrownBear.cs +++ b/Projects/UOContent/Mobiles/Animals/Bears/BrownBear.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Bears/GrizzlyBear.cs b/Projects/UOContent/Mobiles/Animals/Bears/GrizzlyBear.cs index 046324987..65a3b6e49 100644 --- a/Projects/UOContent/Mobiles/Animals/Bears/GrizzlyBear.cs +++ b/Projects/UOContent/Mobiles/Animals/Bears/GrizzlyBear.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Bears/PolarBear.cs b/Projects/UOContent/Mobiles/Animals/Bears/PolarBear.cs index 9683c3d7b..51b1a97fc 100644 --- a/Projects/UOContent/Mobiles/Animals/Bears/PolarBear.cs +++ b/Projects/UOContent/Mobiles/Animals/Bears/PolarBear.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Cows/Cow.cs b/Projects/UOContent/Mobiles/Animals/Cows/Cow.cs index d51300474..efce25446 100644 --- a/Projects/UOContent/Mobiles/Animals/Cows/Cow.cs +++ b/Projects/UOContent/Mobiles/Animals/Cows/Cow.cs @@ -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) { diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Boar.cs b/Projects/UOContent/Mobiles/Animals/Misc/Boar.cs index 182937f99..919abb4b5 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Boar.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Boar.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Goat.cs b/Projects/UOContent/Mobiles/Animals/Misc/Goat.cs index 61ac4f400..7ce40573f 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Goat.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Goat.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Gorilla.cs b/Projects/UOContent/Mobiles/Animals/Misc/Gorilla.cs index f0ce19d1b..176a14dd6 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Gorilla.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Gorilla.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Misc/GreatHart.cs b/Projects/UOContent/Mobiles/Animals/Misc/GreatHart.cs index e97c1568d..6dc7e9da7 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/GreatHart.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/GreatHart.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Hind.cs b/Projects/UOContent/Mobiles/Animals/Misc/Hind.cs index 8afd07d9a..7af2b1f33 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Hind.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Hind.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Llama.cs b/Projects/UOContent/Mobiles/Animals/Misc/Llama.cs index b54dd145d..3f8654372 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Llama.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Llama.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Misc/MountainGoat.cs b/Projects/UOContent/Mobiles/Animals/Misc/MountainGoat.cs index 222b11d53..91593b6bd 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/MountainGoat.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/MountainGoat.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Misc/PackHorse.cs b/Projects/UOContent/Mobiles/Animals/Misc/PackHorse.cs index 0819ddcfd..fad36b42d 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/PackHorse.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/PackHorse.cs @@ -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() { diff --git a/Projects/UOContent/Mobiles/Animals/Misc/PackLlama.cs b/Projects/UOContent/Mobiles/Animals/Misc/PackLlama.cs index 0cc7c7872..557086811 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/PackLlama.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/PackLlama.cs @@ -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() { diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Pig.cs b/Projects/UOContent/Mobiles/Animals/Misc/Pig.cs index bef9b44f6..838b15879 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Pig.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Pig.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Misc/Sheep.cs b/Projects/UOContent/Mobiles/Animals/Misc/Sheep.cs index 9472d57b3..b43c34272 100644 --- a/Projects/UOContent/Mobiles/Animals/Misc/Sheep.cs +++ b/Projects/UOContent/Mobiles/Animals/Misc/Sheep.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/DesertOstard.cs b/Projects/UOContent/Mobiles/Animals/Mounts/DesertOstard.cs index 70c78274c..079fec239 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/DesertOstard.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/DesertOstard.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/ForestOstard.cs b/Projects/UOContent/Mobiles/Animals/Mounts/ForestOstard.cs index 17ebd33eb..2cbb00ea1 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/ForestOstard.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/ForestOstard.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/FrenziedOstard.cs b/Projects/UOContent/Mobiles/Animals/Mounts/FrenziedOstard.cs index 78a4fa0dc..751013afb 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/FrenziedOstard.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/FrenziedOstard.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/Horse.cs b/Projects/UOContent/Mobiles/Animals/Mounts/Horse.cs index 3bde139eb..8540cf8c6 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/Horse.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/Horse.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/Kirin.cs b/Projects/UOContent/Mobiles/Animals/Mounts/Kirin.cs index a537cb800..3e3a34ae3 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/Kirin.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/Kirin.cs @@ -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) { diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/RidableLlama.cs b/Projects/UOContent/Mobiles/Animals/Mounts/RidableLlama.cs index 8fbbd9f4d..f2b07020e 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/RidableLlama.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/RidableLlama.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/Ridgeback.cs b/Projects/UOContent/Mobiles/Animals/Mounts/Ridgeback.cs index c88a336c2..accb2a7a9 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/Ridgeback.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/Ridgeback.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/SavageRidgeback.cs b/Projects/UOContent/Mobiles/Animals/Mounts/SavageRidgeback.cs index 0e15f1a29..d6d0442b6 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/SavageRidgeback.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/SavageRidgeback.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/Unicorn.cs b/Projects/UOContent/Mobiles/Animals/Mounts/Unicorn.cs index 2a33b99bf..d7ab98aa5 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/Unicorn.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/Unicorn.cs @@ -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) { diff --git a/Projects/UOContent/Mobiles/Animals/Mounts/War Horses/BaseWarHorse.cs b/Projects/UOContent/Mobiles/Animals/Mounts/War Horses/BaseWarHorse.cs index 3f6a04a4d..8a439a98c 100644 --- a/Projects/UOContent/Mobiles/Animals/Mounts/War Horses/BaseWarHorse.cs +++ b/Projects/UOContent/Mobiles/Animals/Mounts/War Horses/BaseWarHorse.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Animals/Reptiles/LavaLizard.cs b/Projects/UOContent/Mobiles/Animals/Reptiles/LavaLizard.cs index ef8c46784..3dcf70928 100644 --- a/Projects/UOContent/Mobiles/Animals/Reptiles/LavaLizard.cs +++ b/Projects/UOContent/Mobiles/Animals/Reptiles/LavaLizard.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Rodents/GiantRat.cs b/Projects/UOContent/Mobiles/Animals/Rodents/GiantRat.cs index f1dcd1612..9aa6fd2c0 100644 --- a/Projects/UOContent/Mobiles/Animals/Rodents/GiantRat.cs +++ b/Projects/UOContent/Mobiles/Animals/Rodents/GiantRat.cs @@ -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() { diff --git a/Projects/UOContent/Mobiles/Animals/Rodents/JackRabbit.cs b/Projects/UOContent/Mobiles/Animals/Rodents/JackRabbit.cs index 0233d0938..cb1554232 100644 --- a/Projects/UOContent/Mobiles/Animals/Rodents/JackRabbit.cs +++ b/Projects/UOContent/Mobiles/Animals/Rodents/JackRabbit.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Rodents/Rabbit.cs b/Projects/UOContent/Mobiles/Animals/Rodents/Rabbit.cs index cedafdfa0..6a3f43ecd 100644 --- a/Projects/UOContent/Mobiles/Animals/Rodents/Rabbit.cs +++ b/Projects/UOContent/Mobiles/Animals/Rodents/Rabbit.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Animals/Rodents/SewerRat.cs b/Projects/UOContent/Mobiles/Animals/Rodents/SewerRat.cs index 285b0d58f..421eff714 100644 --- a/Projects/UOContent/Mobiles/Animals/Rodents/SewerRat.cs +++ b/Projects/UOContent/Mobiles/Animals/Rodents/SewerRat.cs @@ -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() { diff --git a/Projects/UOContent/Mobiles/Animals/Town Critters/Bird.cs b/Projects/UOContent/Mobiles/Animals/Town Critters/Bird.cs index e2dd79297..230389dab 100644 --- a/Projects/UOContent/Mobiles/Animals/Town Critters/Bird.cs +++ b/Projects/UOContent/Mobiles/Animals/Town Critters/Bird.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/BaseCreature.cs b/Projects/UOContent/Mobiles/BaseCreature.cs index fb579d09c..1b0a38609 100644 --- a/Projects/UOContent/Mobiles/BaseCreature.cs +++ b/Projects/UOContent/Mobiles/BaseCreature.cs @@ -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. diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs b/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs index 5f34a1e58..f22f4dafe 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Animal/CuSidhe.cs @@ -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; diff --git a/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs b/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs index 5c105679c..631c551c4 100644 --- a/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs +++ b/Projects/UOContent/Mobiles/Monsters/ML/Animal/Squirrel.cs @@ -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; } } diff --git a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Slime.cs b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Slime.cs index e396a06af..80acf1d95 100644 --- a/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Slime.cs +++ b/Projects/UOContent/Mobiles/Monsters/Misc/Melee/Slime.cs @@ -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() diff --git a/Projects/UOContent/Mobiles/Monsters/SE/RuneBeetle.cs b/Projects/UOContent/Mobiles/Monsters/SE/RuneBeetle.cs index 754ca2aa1..f888633f7 100644 --- a/Projects/UOContent/Mobiles/Monsters/SE/RuneBeetle.cs +++ b/Projects/UOContent/Mobiles/Monsters/SE/RuneBeetle.cs @@ -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; diff --git a/Projects/UOContent/Skills/AnimalLore.cs b/Projects/UOContent/Skills/AnimalLore.cs index 740caedfd..e7b77de1d 100644 --- a/Projects/UOContent/Skills/AnimalLore.cs +++ b/Projects/UOContent/Skills/AnimalLore.cs @@ -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(); - 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(); + 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 $"
{val:F1}
"; } - private static string FormatElement(int val) + private static string FormatElement(int val, string color = null) { - if (val <= 0) + if (color == null) { - return "
---
"; + return val == 0 ? "
---
" : $"
{val}%
"; } - return $"
{val}%
"; + return val == 0 + ? $"
---
" + : $"
{val}%
"; } private static string FormatDamage(int min, int max)