## BREAKING CHANGES You will receive a deserialization error saying cannot find type PoolOfAcid. This is ok, just hit yes to delete all.
116 lines
3.5 KiB
C#
116 lines
3.5 KiB
C#
using System;
|
|
using ModernUO.Serialization;
|
|
using Server.Items;
|
|
using Server.Items.Holiday;
|
|
|
|
namespace Server.Mobiles
|
|
{
|
|
[SerializationGenerator(0, false)]
|
|
public partial class PumpkinHead : BaseCreature
|
|
{
|
|
[Constructible]
|
|
public PumpkinHead()
|
|
: base(Utility.RandomBool() ? AIType.AI_Melee : AIType.AI_Mage)
|
|
{
|
|
Body = 1246 + Utility.Random(2);
|
|
|
|
BaseSoundID = 268;
|
|
|
|
SetStr(350);
|
|
SetDex(125);
|
|
SetInt(250);
|
|
|
|
SetHits(500);
|
|
SetMana(1000);
|
|
|
|
SetDamage(10, 15);
|
|
|
|
SetDamageType(ResistanceType.Physical, 100);
|
|
|
|
SetResistance(ResistanceType.Physical, 55);
|
|
SetResistance(ResistanceType.Fire, 50);
|
|
SetResistance(ResistanceType.Cold, 50);
|
|
SetResistance(ResistanceType.Poison, 65);
|
|
SetResistance(ResistanceType.Energy, 80);
|
|
|
|
SetSkill(SkillName.DetectHidden, 100.0);
|
|
SetSkill(SkillName.Meditation, 120.0);
|
|
SetSkill(SkillName.Necromancy, 100.0);
|
|
SetSkill(SkillName.SpiritSpeak, 120.0);
|
|
SetSkill(SkillName.Magery, 160.0);
|
|
SetSkill(SkillName.EvalInt, 100.0);
|
|
SetSkill(SkillName.MagicResist, 100.0);
|
|
SetSkill(SkillName.Tactics, 100.0);
|
|
SetSkill(SkillName.Wrestling, 80.0);
|
|
|
|
Fame = 5000;
|
|
Karma = -5000;
|
|
|
|
VirtualArmor = 49;
|
|
}
|
|
|
|
public override string CorpseName => "a killer pumpkin corpse";
|
|
public override bool AutoDispel => true;
|
|
public override bool BardImmune => true;
|
|
public override bool Unprovokable => true;
|
|
public override bool AreaPeaceImmune => true;
|
|
public override string DefaultName => "a killer pumpkin";
|
|
|
|
public override void GenerateLoot()
|
|
{
|
|
if (Utility.RandomDouble() < .05)
|
|
{
|
|
switch (Utility.Random(5))
|
|
{
|
|
case 0:
|
|
PackItem(new PaintedEvilClownMask());
|
|
break;
|
|
case 1:
|
|
PackItem(new PaintedDaemonMask());
|
|
break;
|
|
case 2:
|
|
PackItem(new PaintedPlagueMask());
|
|
break;
|
|
case 3:
|
|
PackItem(new PaintedEvilJesterMask());
|
|
break;
|
|
case 4:
|
|
PackItem(new PaintedPorcelainMask());
|
|
break;
|
|
}
|
|
}
|
|
|
|
PackItem(new WrappedCandy());
|
|
AddLoot(LootPack.UltraRich, 2);
|
|
}
|
|
|
|
public virtual void Lifted_Callback(Mobile from)
|
|
{
|
|
if (from?.Deleted == false && from is PlayerMobile)
|
|
{
|
|
Combatant = from;
|
|
Warmode = true;
|
|
}
|
|
}
|
|
|
|
public override Item NewHarmfulItem() =>
|
|
new Acid(TimeSpan.FromSeconds(10), 25, 30)
|
|
{
|
|
Name = "gooey nasty pumpkin hummus",
|
|
Hue = 144
|
|
};
|
|
|
|
public override void OnDamage(int amount, Mobile from, bool willKill)
|
|
{
|
|
if (Utility.RandomBool())
|
|
{
|
|
if (from?.Map != null && Map != Map.Internal && Map == from.Map && from.InRange(this, 12))
|
|
{
|
|
SpillAcid(willKill ? this : from, willKill ? 3 : 1);
|
|
}
|
|
}
|
|
|
|
base.OnDamage(amount, from, willKill);
|
|
}
|
|
}
|
|
}
|