Files
abysmal-isle/Scripts/Mobiles/Bosses/SlasherOfVeils.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

206 lines
5.5 KiB
C#

using System;
using System.Collections;
using Server.Items;
using Server.Spells;
namespace Server.Mobiles
{
[CorpseName("a slasher of veils corpse")]
public class SlasherOfVeils : BaseSABoss
{
private static readonly int[] m_North = new int[]
{
-1, -1,
1, -1,
-1, 2,
1, 2
};
private static readonly int[] m_East = new int[]
{
-1, 0,
2, 0
};
[Constructable]
public SlasherOfVeils()
: base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = "The Slasher of Veils";
Body = 741;
SetStr(901, 1010);
SetDex(127, 153);
SetInt(1078, 1263);
SetHits(50000, 65000);
SetMana(10000);
SetDamage(10, 15);
SetDamageType(ResistanceType.Physical, 20);
SetDamageType(ResistanceType.Fire, 20);
SetDamageType(ResistanceType.Cold, 20);
SetDamageType(ResistanceType.Poison, 20);
SetDamageType(ResistanceType.Energy, 20);
SetResistance(ResistanceType.Physical, 65, 80);
SetResistance(ResistanceType.Fire, 70, 80);
SetResistance(ResistanceType.Cold, 70, 80);
SetResistance(ResistanceType.Poison, 70, 80);
SetResistance(ResistanceType.Energy, 70, 80);
SetSkill(SkillName.Anatomy, 110.8, 129.7);
SetSkill(SkillName.EvalInt, 113.4, 130);
SetSkill(SkillName.Magery, 111.7, 130);
SetSkill(SkillName.Spellweaving, 111.1, 125);
SetSkill(SkillName.Meditation, 113.5, 129.9);
SetSkill(SkillName.MagicResist, 110, 129.8);
SetSkill(SkillName.Tactics, 110.5, 126.3);
SetSkill(SkillName.Wrestling, 110.1, 130);
SetSkill(SkillName.DetectHidden, 127.1);
Fame = 35000;
Karma = -35000;
SetSpecialAbility(SpecialAbility.AngryFire);
SetSpecialAbility(SpecialAbility.ManaDrain);
SetWeaponAbility(WeaponAbility.ParalyzingBlow);
SetSpecialAbility(SpecialAbility.TrueFear);
}
public SlasherOfVeils(Serial serial)
: base(serial)
{
}
public override Type[] UniqueSAList
{
get
{
return new Type[] { typeof(ClawsOfTheBerserker), typeof(Lavaliere), typeof(Mangler), typeof(HumanSignOfChaos), typeof(GargishSignOfChaos), typeof(StandardOfChaosG), typeof(StandardOfChaos) };
}
}
public override Type[] SharedSAList
{
get
{
return new Type[] { typeof(AxesOfFury), typeof(BladeOfBattle), typeof(DemonBridleRing), typeof(PetrifiedSnake), typeof(PillarOfStrength), typeof(SwordOfShatteredHopes), typeof(SummonersKilt) };
}
}
public override bool Unprovokable
{
get
{
return false;
}
}
public override bool BardImmune
{
get
{
return false;
}
}
public override int GetIdleSound()
{
return 1589;
}
public override int GetAngerSound()
{
return 1586;
}
public override int GetHurtSound()
{
return 1588;
}
public override int GetDeathSound()
{
return 1587;
}
public override bool AlwaysMurderer { get { return true; } }
public override void GenerateLoot()
{
AddLoot(LootPack.AosSuperBoss, 4);
AddLoot(LootPack.Gems, 8);
}
public override void OnThink()
{
base.OnThink();
//if (Combatant == null)
// return;
//if (Hits > 0.6 * HitsMax && Utility.RandomDouble() < 0.05)
// FireRing();
}
public override void FireRing()
{
for (int i = 0; i < m_North.Length; i += 2)
{
Point3D p = Location;
p.X += m_North[i];
p.Y += m_North[i + 1];
IPoint3D po = p as IPoint3D;
SpellHelper.GetSurfaceTop(ref po);
Effects.SendLocationEffect(po, Map, 0x3E27, 50);
}
for (int i = 0; i < m_East.Length; i += 2)
{
Point3D p = Location;
p.X += m_East[i];
p.Y += m_East[i + 1];
IPoint3D po = p as IPoint3D;
SpellHelper.GetSurfaceTop(ref po);
Effects.SendLocationEffect(po, Map, 0x3E31, 50);
}
}
public override void OnDamagedBySpell(Mobile caster)
{
if (0.5 > Utility.RandomDouble() && caster.InRange(Location, 10) && Map != null && caster.Alive && caster != this && caster.Map == Map)
{
MoveToWorld(caster.Location, Map);
Timer.DelayCall(() =>
{
Combatant = caster;
});
Effects.PlaySound(Location, Map, 0x1FE);
}
base.OnDamagedBySpell(caster);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write((int)0);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}