Reorganizes Project (#41)
This commit is contained in:
parent
08bf44af9a
commit
3614a66aee
3499 changed files with 79 additions and 55 deletions
136
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/LadyJennifyr.cs
Normal file
136
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/LadyJennifyr.cs
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class LadyJennifyr : SkeletalKnight
|
||||
{
|
||||
private static Dictionary<Mobile, ExpireTimer> m_Table = new Dictionary<Mobile, ExpireTimer>();
|
||||
|
||||
[Constructible]
|
||||
public LadyJennifyr()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Hue = 0x76D;
|
||||
|
||||
SetStr(208, 309);
|
||||
SetDex(91, 118);
|
||||
SetInt(44, 101);
|
||||
|
||||
SetHits(1113, 1285);
|
||||
|
||||
SetDamage(15, 25);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 56, 65);
|
||||
SetResistance(ResistanceType.Fire, 41, 49);
|
||||
SetResistance(ResistanceType.Cold, 71, 80);
|
||||
SetResistance(ResistanceType.Poison, 41, 50);
|
||||
SetResistance(ResistanceType.Energy, 50, 58);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 127.9, 137.1);
|
||||
SetSkill(SkillName.Tactics, 128.4, 141.9);
|
||||
SetSkill(SkillName.MagicResist, 102.1, 119.5);
|
||||
SetSkill(SkillName.Anatomy, 129.0, 137.5);
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
}
|
||||
|
||||
public LadyJennifyr(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Lady Jennifyr corpse";
|
||||
public override string DefaultName => "Lady Jennifyr";
|
||||
|
||||
/*
|
||||
// TODO: Uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.15 )
|
||||
c.DropItem( new DisintegratingThesisNotes() );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.1 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
}
|
||||
*/
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 3);
|
||||
}
|
||||
|
||||
public override void OnGaveMeleeAttack(Mobile defender)
|
||||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (Utility.RandomDouble() >= 0.1)
|
||||
return;
|
||||
|
||||
if (m_Table.TryGetValue(defender, out ExpireTimer timer))
|
||||
timer.DoExpire();
|
||||
|
||||
defender.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot);
|
||||
defender.PlaySound(0x208);
|
||||
defender.SendLocalizedMessage(
|
||||
1070833); // The creature fans you with fire, reducing your resistance to fire attacks.
|
||||
|
||||
ResistanceMod mod = new ResistanceMod(ResistanceType.Fire, -10);
|
||||
defender.AddResistanceMod(mod);
|
||||
|
||||
m_Table[defender] = timer = new ExpireTimer(defender, mod);
|
||||
timer.Start();
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
||||
private class ExpireTimer : Timer
|
||||
{
|
||||
private Mobile m_Mobile;
|
||||
private ResistanceMod m_Mod;
|
||||
|
||||
public ExpireTimer(Mobile m, ResistanceMod mod)
|
||||
: base(TimeSpan.FromSeconds(10))
|
||||
{
|
||||
m_Mobile = m;
|
||||
m_Mod = mod;
|
||||
Priority = TimerPriority.TwoFiftyMS;
|
||||
}
|
||||
|
||||
public void DoExpire()
|
||||
{
|
||||
m_Mobile.RemoveResistanceMod(m_Mod);
|
||||
|
||||
Stop();
|
||||
m_Table.Remove(m_Mobile);
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_Mobile.SendLocalizedMessage(1070834); // Your resistance to fire attacks has returned.
|
||||
DoExpire();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
88
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/LadyMarai.cs
Normal file
88
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/LadyMarai.cs
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class LadyMarai : SkeletalKnight
|
||||
{
|
||||
[Constructible]
|
||||
public LadyMarai()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Hue = 0x21;
|
||||
|
||||
SetStr(221, 304);
|
||||
SetDex(98, 138);
|
||||
SetInt(54, 99);
|
||||
|
||||
SetHits(694, 846);
|
||||
|
||||
SetDamage(15, 25);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 55, 65);
|
||||
SetResistance(ResistanceType.Fire, 40, 50);
|
||||
SetResistance(ResistanceType.Cold, 70, 80);
|
||||
SetResistance(ResistanceType.Poison, 40, 50);
|
||||
SetResistance(ResistanceType.Energy, 50, 60);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 126.6, 137.2);
|
||||
SetSkill(SkillName.Tactics, 128.7, 134.5);
|
||||
SetSkill(SkillName.MagicResist, 102.1, 119.1);
|
||||
SetSkill(SkillName.Anatomy, 126.2, 136.5);
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
}
|
||||
|
||||
public LadyMarai(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Lady Marai corpse";
|
||||
public override string DefaultName => "Lady Marai";
|
||||
|
||||
/*
|
||||
// TODO: Uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.15 )
|
||||
c.DropItem( new DisintegratingThesisNotes() );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.1 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
}
|
||||
*/
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 3);
|
||||
}
|
||||
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.CrushingBlow;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
95
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/MasterJonath.cs
Normal file
95
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/MasterJonath.cs
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class MasterJonath : BoneMagi
|
||||
{
|
||||
[Constructible]
|
||||
public MasterJonath()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Hue = 0x455;
|
||||
|
||||
SetStr(109, 131);
|
||||
SetDex(98, 110);
|
||||
SetInt(232, 259);
|
||||
|
||||
SetHits(766, 920);
|
||||
|
||||
SetDamage(10, 15);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 55, 60);
|
||||
SetResistance(ResistanceType.Fire, 43, 49);
|
||||
SetResistance(ResistanceType.Cold, 45, 80);
|
||||
SetResistance(ResistanceType.Poison, 41, 45);
|
||||
SetResistance(ResistanceType.Energy, 54, 55);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 80.5, 88.6);
|
||||
SetSkill(SkillName.Tactics, 88.5, 95.1);
|
||||
SetSkill(SkillName.MagicResist, 102.7, 102.9);
|
||||
SetSkill(SkillName.Magery, 100.0, 106.6);
|
||||
SetSkill(SkillName.EvalInt, 99.6, 106.9);
|
||||
SetSkill(SkillName.Necromancy, 100.0, 106.6);
|
||||
SetSkill(SkillName.SpiritSpeak, 99.6, 106.9);
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
if (Utility.RandomBool())
|
||||
PackNecroScroll(Utility.RandomMinMax(5, 9));
|
||||
else
|
||||
PackScroll(4, 7);
|
||||
|
||||
PackReg(7);
|
||||
PackReg(7);
|
||||
PackReg(8);
|
||||
}
|
||||
|
||||
public MasterJonath(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Master Jonath corpse";
|
||||
public override string DefaultName => "Master Jonath";
|
||||
|
||||
// TODO: Special move?
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.15 )
|
||||
c.DropItem( new DisintegratingThesisNotes() );
|
||||
}
|
||||
*/
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 3);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
93
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/MasterMikael.cs
Normal file
93
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/MasterMikael.cs
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class MasterMikael : BoneMagi
|
||||
{
|
||||
[Constructible]
|
||||
public MasterMikael()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Hue = 0x8FD;
|
||||
|
||||
SetStr(93, 122);
|
||||
SetDex(91, 100);
|
||||
SetInt(252, 271);
|
||||
|
||||
SetHits(789, 1014);
|
||||
|
||||
SetDamage(11, 19);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 55, 59);
|
||||
SetResistance(ResistanceType.Fire, 40, 46);
|
||||
SetResistance(ResistanceType.Cold, 72, 80);
|
||||
SetResistance(ResistanceType.Poison, 44, 49);
|
||||
SetResistance(ResistanceType.Energy, 50, 57);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 80.1, 87.2);
|
||||
SetSkill(SkillName.Tactics, 79.0, 90.9);
|
||||
SetSkill(SkillName.MagicResist, 90.3, 106.9);
|
||||
SetSkill(SkillName.Magery, 103.8, 108.0);
|
||||
SetSkill(SkillName.EvalInt, 96.1, 105.3);
|
||||
SetSkill(SkillName.Necromancy, 103.8, 108.0);
|
||||
SetSkill(SkillName.SpiritSpeak, 96.1, 105.3);
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
if (Utility.RandomBool())
|
||||
PackNecroScroll(Utility.RandomMinMax(5, 9));
|
||||
else
|
||||
PackScroll(4, 7);
|
||||
|
||||
PackReg(3);
|
||||
PackNecroReg(1, 10);
|
||||
}
|
||||
|
||||
public MasterMikael(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Master Mikael corpse";
|
||||
public override string DefaultName => "Master Mikael";
|
||||
|
||||
// TODO: Special move?
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.15 )
|
||||
c.DropItem( new DisintegratingThesisNotes() );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.1 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
}
|
||||
*/
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 2);
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class MasterTheophilus : EvilMageLord
|
||||
{
|
||||
[Constructible]
|
||||
public MasterTheophilus()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Title = "the necromancer";
|
||||
Hue = 0;
|
||||
|
||||
SetStr(137, 187);
|
||||
SetDex(253, 301);
|
||||
SetInt(393, 444);
|
||||
|
||||
SetHits(663, 876);
|
||||
|
||||
SetDamage(15, 20);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 55, 60);
|
||||
SetResistance(ResistanceType.Fire, 50, 58);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 50, 60);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 69.9, 105.3);
|
||||
SetSkill(SkillName.Tactics, 113.0, 117.9);
|
||||
SetSkill(SkillName.MagicResist, 127.0, 132.8);
|
||||
SetSkill(SkillName.Magery, 138.1, 143.7);
|
||||
SetSkill(SkillName.EvalInt, 125.6, 133.8);
|
||||
SetSkill(SkillName.Necromancy, 125.6, 133.8);
|
||||
SetSkill(SkillName.SpiritSpeak, 125.6, 133.8);
|
||||
SetSkill(SkillName.Meditation, 128.8, 132.9);
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
AddItem(new Shoes(0x537));
|
||||
AddItem(new Robe(0x452));
|
||||
|
||||
for (int i = 0; i < 2; ++i)
|
||||
if (Utility.RandomBool())
|
||||
PackNecroScroll(Utility.RandomMinMax(5, 9));
|
||||
else
|
||||
PackScroll(4, 7);
|
||||
|
||||
PackReg(7);
|
||||
PackReg(7);
|
||||
PackReg(8);
|
||||
}
|
||||
|
||||
public MasterTheophilus(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Master Theophilus corpse";
|
||||
public override string DefaultName => "Master Theophilus";
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 3);
|
||||
}
|
||||
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.ParalyzingBlow;
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
95
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/RedDeath.cs
Normal file
95
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/RedDeath.cs
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class RedDeath : SkeletalMount
|
||||
{
|
||||
[Constructible]
|
||||
public RedDeath()
|
||||
: base("Red Death")
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Hue = 0x21;
|
||||
BaseSoundID = 0x1C3;
|
||||
|
||||
AI = AIType.AI_Melee;
|
||||
FightMode = FightMode.Closest;
|
||||
|
||||
SetStr(319, 324);
|
||||
SetDex(241, 244);
|
||||
SetInt(242, 255);
|
||||
|
||||
SetHits(1540, 1605);
|
||||
|
||||
SetDamage(25, 29);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 25);
|
||||
SetDamageType(ResistanceType.Fire, 75);
|
||||
SetDamageType(ResistanceType.Cold, 0);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 60, 70);
|
||||
SetResistance(ResistanceType.Fire, 90);
|
||||
SetResistance(ResistanceType.Cold, 0);
|
||||
SetResistance(ResistanceType.Poison, 100);
|
||||
SetResistance(ResistanceType.Energy, 0);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 121.4, 143.7);
|
||||
SetSkill(SkillName.Tactics, 120.9, 142.2);
|
||||
SetSkill(SkillName.MagicResist, 120.1, 142.3);
|
||||
SetSkill(SkillName.Anatomy, 120.2, 144.0);
|
||||
|
||||
Fame = 28000;
|
||||
Karma = -28000;
|
||||
|
||||
if (Utility.RandomBool())
|
||||
PackNecroScroll(Utility.RandomMinMax(5, 9));
|
||||
else
|
||||
PackScroll(4, 7);
|
||||
}
|
||||
|
||||
public RedDeath(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Red Death corpse";
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool HasBreath => true;
|
||||
public override int BreathChaosDamage => 100;
|
||||
public override int BreathFireDamage => 0;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 3);
|
||||
}
|
||||
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.WhirlwindAttack;
|
||||
}
|
||||
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
c.DropItem(new ResolvesBridle());
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
133
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/SirPatrick.cs
Normal file
133
Projects/Scripts/Mobiles/Monsters/ML/Bedlam/SirPatrick.cs
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SirPatrick : SkeletalKnight
|
||||
{
|
||||
[Constructible]
|
||||
public SirPatrick()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Hue = 0x47E;
|
||||
|
||||
SetStr(208, 319);
|
||||
SetDex(98, 132);
|
||||
SetInt(45, 91);
|
||||
|
||||
SetHits(616, 884);
|
||||
|
||||
SetDamage(15, 25);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 55, 62);
|
||||
SetResistance(ResistanceType.Fire, 40, 48);
|
||||
SetResistance(ResistanceType.Cold, 71, 80);
|
||||
SetResistance(ResistanceType.Poison, 40, 50);
|
||||
SetResistance(ResistanceType.Energy, 50, 60);
|
||||
|
||||
SetSkill(SkillName.Wrestling, 126.3, 136.5);
|
||||
SetSkill(SkillName.Tactics, 128.5, 143.8);
|
||||
SetSkill(SkillName.MagicResist, 102.8, 117.9);
|
||||
SetSkill(SkillName.Anatomy, 127.5, 137.2);
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
}
|
||||
|
||||
public SirPatrick(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a Sir Patrick corpse";
|
||||
public override string DefaultName => "Sir Patrick";
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.15 )
|
||||
c.DropItem( new DisintegratingThesisNotes() );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
c.DropItem( new AssassinChest() );
|
||||
}
|
||||
*/
|
||||
|
||||
public override bool GivesMLMinorArtifact => true;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.UltraRich, 2);
|
||||
}
|
||||
|
||||
public override void OnGaveMeleeAttack(Mobile defender)
|
||||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if (Utility.RandomDouble() < 0.1)
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
public override void OnGotMeleeAttack(Mobile attacker)
|
||||
{
|
||||
base.OnGotMeleeAttack(attacker);
|
||||
|
||||
if (Utility.RandomDouble() < 0.1)
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
public virtual void DrainLife()
|
||||
{
|
||||
List<Mobile> list = new List<Mobile>();
|
||||
|
||||
foreach (Mobile m in GetMobilesInRange(2))
|
||||
{
|
||||
if (m == this || !CanBeHarmful(m, false) || Core.AOS && !InLOS(m))
|
||||
continue;
|
||||
|
||||
if (m is BaseCreature bc)
|
||||
{
|
||||
if (bc.Controlled || bc.Summoned || bc.Team != Team)
|
||||
list.Add(bc);
|
||||
}
|
||||
else if (m.Player)
|
||||
{
|
||||
list.Add(m);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (Mobile m in list)
|
||||
{
|
||||
DoHarmful(m);
|
||||
|
||||
m.FixedParticles(0x374A, 10, 15, 5013, 0x455, 0, EffectLayer.Waist);
|
||||
m.PlaySound(0x1EA);
|
||||
|
||||
int drain = Utility.RandomMinMax(14, 30);
|
||||
|
||||
Hits += drain;
|
||||
m.Damage(drain, this);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue