#W# New: Working on adding new mobs.

This commit is contained in:
WarrentyExpired 2026-10-29 18:52:00 -04:00
parent ec8264feb0
commit 5bdc30d7ea
17 changed files with 382 additions and 68 deletions

View file

@ -0,0 +1,66 @@
using ModernUO.Serialization;
namespace Server.Mobiles
{
/*[TypeAlias(
"Server.Mobiles.BrownHorse",
"Server.Mobiles.DirtyHorse",
"Server.Mobiles.GrayHorse",
"Server.Mobiles.TanHorse"
)]*/
[SerializationGenerator(0, false)]
public partial class ClydesdaleHorse : BaseMount
{
private static readonly int[] m_IDs =
{
1140, 1144,
1141, 1145,
1142, 1146,
1143, 1147
};
public override string DefaultName => "a clydesdale";
[Constructible]
public ClydesdaleHorse() : base(1140, 1143, AIType.AI_Animal, FightMode.Aggressor)
{
var random = Utility.Random(4);
Body = m_IDs[random * 2];
ItemID = m_IDs[random * 2 + 1];
//Body = 1140;
//ItemID = 1144;
BaseSoundID = 0xA8;
SetStr(22, 98);
SetDex(56, 75);
SetInt(6, 10);
SetHits(28, 45);
SetMana(0);
SetDamage(3, 4);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 15, 20);
SetSkill(SkillName.MagicResist, 25.1, 30.0);
SetSkill(SkillName.Tactics, 29.3, 44.0);
SetSkill(SkillName.Wrestling, 29.3, 44.0);
Fame = 300;
Karma = 300;
Tamable = true;
ControlSlots = 1;
MinTameSkill = 29.1;
}
public override string CorpseName => "a horse corpse";
public override int Meat => 3;
public override int Hides => 10;
public override FoodType FavoriteFood => FoodType.FruitsAndVeggies | FoodType.GrainsAndHay;
}
}

View file

@ -0,0 +1,68 @@
using ModernUO.Serialization;
using Server.Engines.Plants;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class DarkLion : BaseMount
{
public override string DefaultName => "a dark lion";
[Constructible]
public DarkLion() : base(1132, 1132, AIType.AI_Melee)
{
SetStr(801, 1010);
SetDex(171, 270);
SetInt(301, 325);
SetHits(901, 1100);
SetMana(60);
SetDamage(15, 25);
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Energy, 50);
SetResistance(ResistanceType.Physical, 55, 70);
SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 15, 25);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 60, 70);
SetSkill(SkillName.Anatomy, 75.1, 80.0);
SetSkill(SkillName.MagicResist, 85.1, 100.0);
SetSkill(SkillName.Tactics, 100.1, 110.0);
SetSkill(SkillName.Wrestling, 100.1, 120.0);
Fame = 18000;
Karma = -18000;
Tamable = true;
ControlSlots = 4;
MinTameSkill = 98.7;
}
public override string CorpseName => "a dark lion corpse";
public override double WeaponAbilityChance => 0.07; /* 1 in 15 chance of using per landed hit */
public override bool StatLossAfterTame => true;
public override int TreasureMapLevel => 5;
public override int Meat => 16;
public override int Hides => 60;
public override FoodType FavoriteFood => FoodType.Meat;
public override bool CanAngerOnTame => true;
private static MonsterAbility[] _abilities = { MonsterAbilities.BloodBathAttack };
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 3);
AddLoot(LootPack.Gems, 4);
}
}
}

View file

@ -0,0 +1,102 @@
using ModernUO.Serialization;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class HellishNightmare : BaseMount
{
public override string DefaultName => "a hellish nightmare";
[Constructible]
public HellishNightmare() : base(1131, 1131, AIType.AI_Mage)
{
BaseSoundID = Core.AOS ? 0xA8 : 0x16A;
// Publish 97
if (Core.TOL)
{
if (Utility.RandomDouble() < 0.3)
{
SetStr(296, 315);
ControlSlots = 2;
}
else
{
SetStr(496, 525);
ControlSlots = 3;
}
}
else
{
SetStr(696, 725);
ControlSlots = 3;
}
SetDex(116, 145);
SetInt(116, 145);
SetHits(498, 715);
SetDamage(16, 22);
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Fire, 65);
SetDamageType(ResistanceType.Energy, 30);
SetResistance(ResistanceType.Physical, 55, 65);
SetResistance(ResistanceType.Fire, 60, 70);
SetResistance(ResistanceType.Cold, 60, 70);
SetResistance(ResistanceType.Poison, 30, 40);
SetResistance(ResistanceType.Energy, 20, 30);
SetSkill(SkillName.EvalInt, 40.4, 90.0);
SetSkill(SkillName.Magery, 40.4, 90.0);
SetSkill(SkillName.MagicResist, 85.3, 100.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 80.5, 92.5);
Fame = 18000;
Karma = -18000;
VirtualArmor = 60;
Tamable = true;
MinTameSkill = 100.1;
Body = 1131;
ItemID = 1131;
PackItem(new SulfurousAsh(Utility.RandomMinMax(3, 5)));
}
public override int StepsMax => 6400;
public override string CorpseName => "a hellish nightmare corpse";
public override int Meat => 5;
public override int Hides => 10;
public override HideType HideType => HideType.Barbed;
public override FoodType FavoriteFood => FoodType.Meat;
public override bool CanAngerOnTame => true;
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
public override void GenerateLoot()
{
AddLoot(LootPack.Rich);
AddLoot(LootPack.Average);
AddLoot(LootPack.LowScrolls);
AddLoot(LootPack.Potions);
}
public override int GetAngerSound()
{
if (!Controlled)
{
return 0x16A;
}
return base.GetAngerSound();
}
}
}

View file

@ -0,0 +1,65 @@
using System;
using ModernUO.Serialization;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class SmolderingLion : BaseCreature
{
public override string DefaultName => "a smoldering lion";
[Constructible]
public SmolderingLion() : base(AIType.AI_Melee, FightMode.Closest)
{
Body = 1128;
BaseSoundID = 0x69;
SetStr(250, 300);
SetDex(100, 150);
SetInt(50, 100);
SetHits(150, 2000);
SetDamage(8, 14);
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Fire, 50);
SetResistance(ResistanceType.Physical, 35, 45);
SetResistance(ResistanceType.Fire, 60, 70);
SetResistance(ResistanceType.Cold, 20, 30);
SetResistance(ResistanceType.Poison, 10, 20);
SetResistance(ResistanceType.Energy, 20, 30);
SetSkill(SkillName.MagicResist, 50.0, 70.0);
SetSkill(SkillName.Tactics, 60.0, 80.0);
SetSkill(SkillName.Wrestling, 60.0, 80.0);
Fame = 3500;
Karma = -3500;
Tamable = true;
ControlSlots = 2;
MinTameSkill = 75.1;
PackItem(new SulfurousAsh(Utility.RandomMinMax(2, 4)));
}
public override string CorpseName => "a smoldering lion corpse";
public override bool ReacquireOnMovement => true;
public override int Meat => 2;
public override int Hides => 10;
public override HideType HideType => HideType.Spined;
public override FoodType FavoriteFood => FoodType.Meat;
public override PackInstinct PackInstinct => PackInstinct.Feline;
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.Meager);
}
}
}

View file

@ -9,8 +9,9 @@ namespace Server.Mobiles
[Constructible]
public AcidElemental() : base(AIType.AI_Mage)
{
Body = 0x9E;
Body = 1105; //0x9E;
BaseSoundID = 278;
Hue = 58;
SetStr(326, 355);
SetDex(66, 85);

View file

@ -8,7 +8,7 @@ namespace Server.Mobiles
[Constructible]
public AirElemental() : base(AIType.AI_Mage)
{
Body = 13;
Body = 1106; //13;
Hue = 0x4001;
BaseSoundID = 655;

View file

@ -8,8 +8,9 @@ namespace Server.Mobiles
[Constructible]
public BloodElemental() : base(AIType.AI_Mage)
{
Body = 159;
Body = 1105; //159;
BaseSoundID = 278;
Hue = 33;
SetStr(526, 615);
SetDex(66, 85);

View file

@ -9,7 +9,7 @@ namespace Server.Mobiles
[Constructible]
public FireElemental() : base(AIType.AI_Mage)
{
Body = 15;
Body = 1103; //15;
BaseSoundID = 838;
SetStr(126, 155);
@ -49,7 +49,7 @@ namespace Server.Mobiles
public override string DefaultName => "a fire elemental";
public override bool BleedImmune => true;
public override int TreasureMapLevel => 2;
public override void GenerateLoot()

View file

@ -9,7 +9,7 @@ namespace Server.Mobiles
[Constructible]
public IceElemental() : base(AIType.AI_Mage)
{
Body = 161;
Body = 1104; //161;
BaseSoundID = 268;
SetStr(156, 185);

View file

@ -9,7 +9,7 @@ namespace Server.Mobiles
[Constructible]
public PoisonElemental() : base(AIType.AI_Mage)
{
Body = 162;
Body = 1105; //162;
BaseSoundID = 263;
SetStr(426, 515);

View file

@ -14,8 +14,9 @@ namespace Server.Mobiles
public WaterElemental() : base(AIType.AI_Mage)
{
_hasDecanter = true;
Body = 16;
Body = 1105; //16;
BaseSoundID = 278;
Hue = 88;
SetStr(126, 155);
SetDex(66, 85);

View file

@ -9,7 +9,7 @@ namespace Server.Mobiles
[Constructible]
public EarthElemental() : base(AIType.AI_Melee)
{
Body = 14;
Body = 1102; //14;
BaseSoundID = 268;
SetStr(126, 155);

View file

@ -18,6 +18,7 @@ namespace Server.Mobiles
Add(new AnimalBuyInfo(1, "a pack horse", typeof(PackHorse), 631, 10, 291, 0));
Add(new AnimalBuyInfo(1, "a pack llama", typeof(PackLlama), 565, 10, 292, 0));
Add(new AnimalBuyInfo(1, "a rabbit", typeof(Rabbit), 106, 10, 205, 0));
Add(new AnimalBuyInfo(1, "a clydesdale", typeof(ClydesdaleHorse), 1520, 10, 1140, 0));
if (!Core.AOS)
{