#W# New: Working on adding new mobs.
This commit is contained in:
parent
ec8264feb0
commit
5bdc30d7ea
17 changed files with 382 additions and 68 deletions
66
Projects/UOContent/Mobiles/Animals/Custom/Clydesdale.cs
Normal file
66
Projects/UOContent/Mobiles/Animals/Custom/Clydesdale.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
68
Projects/UOContent/Mobiles/Monsters/Custom/DarkCat.cs
Normal file
68
Projects/UOContent/Mobiles/Monsters/Custom/DarkCat.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
102
Projects/UOContent/Mobiles/Monsters/Custom/HellishNightmare.cs
Normal file
102
Projects/UOContent/Mobiles/Monsters/Custom/HellishNightmare.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
Projects/UOContent/Mobiles/Monsters/Custom/SmolderingLion.cs
Normal file
65
Projects/UOContent/Mobiles/Monsters/Custom/SmolderingLion.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ namespace Server.Mobiles
|
|||
[Constructible]
|
||||
public AirElemental() : base(AIType.AI_Mage)
|
||||
{
|
||||
Body = 13;
|
||||
Body = 1106; //13;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 655;
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace Server.Mobiles
|
|||
[Constructible]
|
||||
public IceElemental() : base(AIType.AI_Mage)
|
||||
{
|
||||
Body = 161;
|
||||
Body = 1104; //161;
|
||||
BaseSoundID = 268;
|
||||
|
||||
SetStr(156, 185);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace Server.Mobiles
|
|||
[Constructible]
|
||||
public PoisonElemental() : base(AIType.AI_Mage)
|
||||
{
|
||||
Body = 162;
|
||||
Body = 1105; //162;
|
||||
BaseSoundID = 263;
|
||||
|
||||
SetStr(426, 515);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace Server.Mobiles
|
|||
[Constructible]
|
||||
public EarthElemental() : base(AIType.AI_Melee)
|
||||
{
|
||||
Body = 14;
|
||||
Body = 1102; //14;
|
||||
BaseSoundID = 268;
|
||||
|
||||
SetStr(126, 155);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue