#W# Mobs: Still working on adding some new mobs.

This commit is contained in:
WarrentyExpired 2026-10-30 14:14:38 -04:00
parent 5bdc30d7ea
commit fbda425fee
12 changed files with 311 additions and 7 deletions

View file

@ -597,5 +597,14 @@
"Castoriel", "Celebrindal", "Chathmiru", "Davlien", "Gerrath", "Jerraintho", "Lewys", "Misran", "Nandrien", "Olonal", "Castoriel", "Celebrindal", "Chathmiru", "Davlien", "Gerrath", "Jerraintho", "Lewys", "Misran", "Nandrien", "Olonal",
"Peorilien", "Regornolas", "Rylvarn", "Silnaliel", "Talendeor", "Uomo", "Verlolas" "Peorilien", "Regornolas", "Rylvarn", "Silnaliel", "Talendeor", "Uomo", "Verlolas"
] ]
},
{
"type": "ancient wyvern",
"names": [
"Malith", "Uira", "Larange", "Mogonth", "Coliath", "Nenith", "Cath", "Antarahi", "Ghilong", "Ngran",
"Marab", "Polarinth", "Emaleth", "Zilahed", "Nenith", "Halzanth", "Speth", "Meth", "Ptorahee",
"Naranoth", "Lauralare", "Olthonis", "Roth", "Camalanth", "Spath", "Halzanth", "Hrontr", "Takhansa",
"Santega", "Lant", "Weth"
]
} }
] ]

View file

@ -19,7 +19,7 @@ anim2.mul
1088 Evil Mage Lord - Added 1088 Evil Mage Lord - Added
1089 Ancient Lich - Added 1089 Ancient Lich - Added
1090 Shambler 1090 Shambler
1091-1095 Balrons 1091-1095 Balrons - Added
1096 Ent 1096 Ent
1097 Larger Ent 1097 Larger Ent
1098 Ancient Ent 1098 Ancient Ent
@ -42,7 +42,7 @@ anim2.mul
1115 Very Large Daemon with Skull for Head 1115 Very Large Daemon with Skull for Head
1117 Giant Black Dragon 1117 Giant Black Dragon
1118 Giant Ice Dragon 1118 Giant Ice Dragon
1119 - 1125 Different Color Wyrms 1119 - 1125 Different Color Wyrms - Added Ancient Wyvrens
1126 Black Knight 1126 Black Knight
1127 Exodus 1127 Exodus
1128 Fire Lion - Added Smoldering Lion 1128 Fire Lion - Added Smoldering Lion
@ -55,8 +55,24 @@ anim2.mul
1133 Skeletal Lion 1133 Skeletal Lion
1134 Fire Unicorn 1134 Fire Unicorn
1135 Hell Steed 1135 Hell Steed
1136 Griffon 1136 Griffon - Added
1137 Hippogriffon 1137 Evil Griffon - Added
1139 Skeleton Archer - Added 1139 Skeleton Archer - Added
1140 - 1143 Clydesdale Horse - Added 1140 - 1143 Clydesdale Horse - Added
1144 - 1147 Clydesdale Horse with Saddles - Added 1144 - 1147 Clydesdale Horse with Saddles - Added
1148 Fire Unicorn
1149 Large Moss Rock Guy
1150 Fire Rock Elemental
1151 - 1153 Medium Size Wyverns
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163 Skeletal Hell Cat
1164

View file

@ -1,3 +1,5 @@
Hellish Nightmare Hellish Nightmare
Smoldering Lion Smoldering Lion
Dark Lion Dark Lion
Griffon
Evil Griffon

View file

@ -0,0 +1,78 @@
using ModernUO.Serialization;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class AncientWyvern : BaseCreature
{
[Constructible]
public AncientWyvern() : base(AIType.AI_Mage)
{
Name = NameList.RandomName("ancient wyvern");
Body = Utility.RandomList(1119, 1120, 1121, 1122, 1123, 1124, 1125); //46;
BaseSoundID = 362;
SetStr(796, 825);
SetDex(86, 105);
SetInt(436, 475);
SetHits(478, 495);
SetDamage(16, 22);
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Poison, 50);
SetResistance(ResistanceType.Physical, 55, 65);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 40, 50);
SetResistance(ResistanceType.Poison, 100 );
SetResistance(ResistanceType.Energy, 50, 60);
SetSkill(SkillName.EvalInt, 30.1, 40.0);
SetSkill(SkillName.Magery, 30.1, 40.0);
SetSkill(SkillName.Meditation, 52.5, 75.0);
SetSkill(SkillName.MagicResist, 99.1, 100.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 90.1, 92.5);
Fame = 15000;
Karma = -15000;
VirtualArmor = 60;
Tamable = true;
ControlSlots = 3;
MinTameSkill = 93.9;
}
public override string CorpseName => "an ancient wyvern corpse";
public override string DefaultName => "an ancient wyvern";
public override bool ReacquireOnMovement => true;
public override bool AutoDispel => true;
public override HideType HideType => HideType.Barbed;
public override int Hides => 40;
public override int Meat => 19;
public override int Scales => 12;
public override ScaleType ScaleType => (ScaleType)Utility.Random(4);
public override Poison PoisonImmune => Poison.Deadly;
public override Poison HitPoison => Utility.RandomBool() ? Poison.Regular : Poison.Deadly;
public override int TreasureMapLevel => 5;
public override bool CanFly => true;
public override bool CanAngerOnTame => true;
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
public override MonsterAbility[] GetMonsterAbilities() => _abilities;
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 2);
AddLoot(LootPack.Gems, 3);
}
public override int GetIdleSound() => 0x16B;
public override int GetHurtSound() => 0x16D;
}
}

View file

@ -13,6 +13,7 @@ namespace Server.Mobiles
public DarkLion() : base(1132, 1132, AIType.AI_Melee) public DarkLion() : base(1132, 1132, AIType.AI_Melee)
{ {
BaseSoundID = 0x0B3;
SetStr(801, 1010); SetStr(801, 1010);
SetDex(171, 270); SetDex(171, 270);
SetInt(301, 325); SetInt(301, 325);
@ -58,6 +59,11 @@ namespace Server.Mobiles
private static MonsterAbility[] _abilities = { MonsterAbilities.BloodBathAttack }; private static MonsterAbility[] _abilities = { MonsterAbilities.BloodBathAttack };
public override MonsterAbility[] GetMonsterAbilities() => _abilities; public override MonsterAbility[] GetMonsterAbilities() => _abilities;
public override int GetAttackSound() => 0x0B2;
public override int GetAngerSound() => 0x0B2;
public override int GetDeathSound() => 0x0B6;
public override int GetIdleSound() => 0x0B5;
public override int GetHurtSound() => 0x0B4;
public override void GenerateLoot() public override void GenerateLoot()
{ {

View file

@ -0,0 +1,54 @@
using System;
using ModernUO.Serialization;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class EvilGriffon : BaseMount
{
public override string DefaultName => "an evil griffon";
[Constructible]
public EvilGriffon() : base(1137, 1137, AIType.AI_Melee)
{
BaseSoundID = 0x4FE;
SetStr(220, 270);
SetDex(130, 150);
SetInt(70, 90);
SetHits(200, 240);
SetDamage(14, 18);
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Energy, 50); // Darker variant hits with a bit of energy
SetResistance(ResistanceType.Physical, 45, 55);
SetResistance(ResistanceType.Fire, 40, 50);
SetResistance(ResistanceType.Cold, 20, 30);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 30, 40);
SetSkill(SkillName.MagicResist, 65.0, 80.0);
SetSkill(SkillName.Tactics, 75.0, 90.0);
SetSkill(SkillName.Wrestling, 75.0, 90.0);
Fame = 5000;
Karma = -5000; // Aggressive
Tamable = true;
ControlSlots = 2;
MinTameSkill = 85.1;
}
public override int Meat => 3;
public override int Feathers => 36;
public override FoodType FavoriteFood => FoodType.Meat;
public override void GenerateLoot()
{
AddLoot(LootPack.Average, 2);
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using ModernUO.Serialization;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class Griffon : BaseMount
{
public override string DefaultName => "a griffon";
[Constructible]
public Griffon() : base(1136, 1136, AIType.AI_Melee)
{
BaseSoundID = 0x4FE;
SetStr(200, 250);
SetDex(120, 140);
SetInt(60, 80);
SetHits(180, 220);
SetDamage(12, 16);
SetDamageType(ResistanceType.Physical, 100);
SetResistance(ResistanceType.Physical, 40, 50);
SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 30, 40);
SetResistance(ResistanceType.Poison, 20, 30);
SetResistance(ResistanceType.Energy, 30, 40);
SetSkill(SkillName.MagicResist, 60.0, 75.0);
SetSkill(SkillName.Tactics, 70.0, 85.0);
SetSkill(SkillName.Wrestling, 70.0, 85.0);
Fame = 4000;
Karma = 0; // Neutral
Tamable = true;
ControlSlots = 2;
MinTameSkill = 80.1;
}
public override int Meat => 3;
public override int Feathers => 36;
public override FoodType FavoriteFood => FoodType.Meat;
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.Meager);
}
}
}

View file

@ -89,7 +89,11 @@ namespace Server.Mobiles
AddLoot(LootPack.Potions); AddLoot(LootPack.Potions);
} }
public override int GetAngerSound() public override int GetAttackSound() => 0x0AB;
//public override int GetAngerSound() => 0x0A9;
public override int GetDeathSound() => 0x0AC;
public override int GetIdleSound() => 0x0A8;
public override int GetHurtSound() => 0x0AA;
{ {
if (!Controlled) if (!Controlled)
{ {

View file

@ -0,0 +1,75 @@
using System;
using ModernUO.Serialization;
using Server.Items;
namespace Server.Mobiles
{
[SerializationGenerator(0, false)]
public partial class SkeletalHellCat : BaseCreature
{
public override string DefaultName => "a skeletal hell cat";
[Constructible]
public SkeletalHellCat() : base(AIType.AI_Melee, FightMode.Closest)
{
Body = 1163;
BaseSoundID = 0x0B3;
SetStr(250, 300);
SetDex(100, 150);
SetInt(50, 100);
SetHits(150, 200);
SetDamage(8, 14);
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Fire, 50);
SetResistance(ResistanceType.Physical, 45, 55);
SetResistance(ResistanceType.Fire, 60, 70);
SetResistance(ResistanceType.Cold, 20, 30);
SetResistance(ResistanceType.Poison, 10, 20);
SetResistance(ResistanceType.Energy, 20, 30); public override int GetAttackSound() => 0x0B2;
public override int GetAngerSound() => 0x0B2
public override int GetDeathSound() => 0x0B6;
public override int GetIdleSound() => 0x0B5;
public override int GetHurtSound() => 0x0B4;
SetSkill(SkillName.MagicResist, 50.0, 70.0);
SetSkill(SkillName.Tactics, 65.0, 85.0);
SetSkill(SkillName.Wrestling, 65.0, 85.0);
Fame = 3500;
Karma = -3500;
Tamable = true;
ControlSlots = 2;
MinTameSkill = 85.1;
PackItem(new SulfurousAsh(Utility.RandomMinMax(2, 4)));
}
public override string CorpseName => "a skeletal hell cat 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 int GetAttackSound() => 0x0B2;
public override int GetAngerSound() => 0x0B2;
public override int GetDeathSound() => 0x0B6;
public override int GetIdleSound() => 0x0B5;
public override int GetHurtSound() => 0x0B4;
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.Meager);
}
}
}

View file

@ -13,7 +13,7 @@ namespace Server.Mobiles
public SmolderingLion() : base(AIType.AI_Melee, FightMode.Closest) public SmolderingLion() : base(AIType.AI_Melee, FightMode.Closest)
{ {
Body = 1128; Body = 1128;
BaseSoundID = 0x69; BaseSoundID = 0x0B3;
SetStr(250, 300); SetStr(250, 300);
SetDex(100, 150); SetDex(100, 150);
@ -56,6 +56,11 @@ namespace Server.Mobiles
private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath }; private static MonsterAbility[] _abilities = { MonsterAbilities.FireBreath };
public override MonsterAbility[] GetMonsterAbilities() => _abilities; public override MonsterAbility[] GetMonsterAbilities() => _abilities;
public override int GetAttackSound() => 0x0B2;
public override int GetAngerSound() => 0x0B2;
public override int GetDeathSound() => 0x0B6;
public override int GetIdleSound() => 0x0B5;
public override int GetHurtSound() => 0x0B4;
public override void GenerateLoot() public override void GenerateLoot()
{ {
AddLoot(LootPack.Average); AddLoot(LootPack.Average);

View file

@ -10,7 +10,7 @@ namespace Server.Mobiles
public Balron() : base(AIType.AI_Mage) public Balron() : base(AIType.AI_Mage)
{ {
Name = NameList.RandomName("balron"); Name = NameList.RandomName("balron");
Body = 40; Body = Utility.RandomList(1091, 1092, 1093, 1094); //40;
BaseSoundID = 357; BaseSoundID = 357;
SetStr(986, 1185); SetStr(986, 1185);

View file

@ -8,6 +8,7 @@ namespace Server.Mobiles
[Constructible] [Constructible]
public AncientWyrm() : base(AIType.AI_Mage) public AncientWyrm() : base(AIType.AI_Mage)
{ {
Name = NameList.RandomName("ancient wyvern");
Body = 46; Body = 46;
BaseSoundID = 362; BaseSoundID = 362;