From 974062b0d467f84827a44a6209885e635853ccbb Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 4 Apr 2024 19:43:02 -0700 Subject: [PATCH] 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. --- .../Ethics/Evil/Mobiles/UnholySteed.cs | 2 +- .../Engines/Ethics/Hero/Mobiles/HolySteed.cs | 2 +- .../Factions/Mobiles/FactionWarHorse.cs | 2 +- .../UOContent/Items/Armor/Helmets/BoneHelm.cs | 2 +- .../Items/Shields/GargishWoodenShield.cs | 4 +- .../Items/Shields/WoodenKiteShield.cs | 2 + .../UOContent/Items/Shields/WoodenShield.cs | 2 + Projects/UOContent/Items/Wands/BaseWand.cs | 1 + .../ML Weapons/ElvenCompositeLongbow.cs | 6 +- .../Weapons/ML Weapons/MagicalShortbow.cs | 6 +- .../Items/Weapons/ML Weapons/WildStaff.cs | 6 +- .../UOContent/Items/Weapons/Ranged/Bow.cs | 1 + .../Items/Weapons/Ranged/CompositeBow.cs | 6 +- .../Items/Weapons/Ranged/Crossbow.cs | 1 + .../Items/Weapons/Ranged/HeavyCrossbow.cs | 1 + .../UOContent/Items/Weapons/Ranged/JukaBow.cs | 1 + .../Items/Weapons/Ranged/RepeatingCrossbow.cs | 6 +- .../Items/Weapons/SE Weapons/Yumi.cs | 1 + .../Items/Weapons/Staves/GlassStaff.cs | 5 +- .../Items/Weapons/Staves/GnarledStaff.cs | 6 +- .../Items/Weapons/Staves/QuarterStaff.cs | 6 +- .../Items/Weapons/Staves/SerpentstoneStaff.cs | 1 + .../Items/Weapons/Staves/ShepherdsCrook.cs | 6 +- .../Mobiles/Animals/Bears/BlackBear.cs | 2 +- .../Mobiles/Animals/Bears/BrownBear.cs | 2 +- .../Mobiles/Animals/Bears/GrizzlyBear.cs | 2 +- .../Mobiles/Animals/Bears/PolarBear.cs | 2 +- .../UOContent/Mobiles/Animals/Cows/Cow.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Boar.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Goat.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Gorilla.cs | 2 +- .../Mobiles/Animals/Misc/GreatHart.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Hind.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Llama.cs | 2 +- .../Mobiles/Animals/Misc/MountainGoat.cs | 2 +- .../Mobiles/Animals/Misc/PackHorse.cs | 2 +- .../Mobiles/Animals/Misc/PackLlama.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Pig.cs | 2 +- .../UOContent/Mobiles/Animals/Misc/Sheep.cs | 2 +- .../Mobiles/Animals/Mounts/DesertOstard.cs | 2 +- .../Mobiles/Animals/Mounts/ForestOstard.cs | 2 +- .../Mobiles/Animals/Mounts/FrenziedOstard.cs | 2 +- .../UOContent/Mobiles/Animals/Mounts/Horse.cs | 2 +- .../UOContent/Mobiles/Animals/Mounts/Kirin.cs | 2 +- .../Mobiles/Animals/Mounts/RidableLlama.cs | 2 +- .../Mobiles/Animals/Mounts/Ridgeback.cs | 2 +- .../Mobiles/Animals/Mounts/SavageRidgeback.cs | 2 +- .../Mobiles/Animals/Mounts/Unicorn.cs | 2 +- .../Animals/Mounts/War Horses/BaseWarHorse.cs | 2 +- .../Mobiles/Animals/Reptiles/LavaLizard.cs | 1 + .../Mobiles/Animals/Rodents/GiantRat.cs | 2 +- .../Mobiles/Animals/Rodents/JackRabbit.cs | 2 +- .../Mobiles/Animals/Rodents/Rabbit.cs | 2 +- .../Mobiles/Animals/Rodents/SewerRat.cs | 2 +- .../Mobiles/Animals/Town Critters/Bird.cs | 4 +- Projects/UOContent/Mobiles/BaseCreature.cs | 133 +++++++++++++++--- .../Mobiles/Monsters/ML/Animal/CuSidhe.cs | 2 +- .../Mobiles/Monsters/ML/Animal/Squirrel.cs | 2 +- .../Mobiles/Monsters/Misc/Melee/Slime.cs | 2 +- .../Mobiles/Monsters/SE/RuneBeetle.cs | 2 +- Projects/UOContent/Skills/AnimalLore.cs | 112 +++++++-------- 61 files changed, 266 insertions(+), 128 deletions(-) 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)