108 lines
3.3 KiB
C#
108 lines
3.3 KiB
C#
using System;
|
|
using Server;
|
|
using Server.Items;
|
|
|
|
namespace Server.Mobiles
|
|
{
|
|
[CorpseName("a silverback gorilla corpse")]
|
|
public class SilverbackGorilla : BaseCreature
|
|
{
|
|
[Constructable]
|
|
public SilverbackGorilla()
|
|
: base(AIType.AI_Melee, FightMode.Closest, 10, 1, .2, .4)
|
|
{
|
|
Name = "a silverback gorilla";
|
|
Body = 0x1D;
|
|
BaseSoundID = 0x9E;
|
|
|
|
SetStr(79, 106);
|
|
SetDex(77, 91);
|
|
SetInt(16, 29);
|
|
|
|
SetDamage(5, 10);
|
|
|
|
SetHits(446, 588);
|
|
SetMana(0);
|
|
|
|
SetResistance(ResistanceType.Physical, 20);
|
|
SetResistance(ResistanceType.Fire, 10, 20);
|
|
SetResistance(ResistanceType.Cold, 10, 20);
|
|
SetResistance(ResistanceType.Poison, 30, 40);
|
|
SetResistance(ResistanceType.Energy, 10, 20);
|
|
|
|
SetDamageType(ResistanceType.Physical, 50);
|
|
SetDamageType(ResistanceType.Poison, 50);
|
|
|
|
SetSkill(SkillName.MagicResist, 30.1, 43.5);
|
|
SetSkill(SkillName.Tactics, 30.1, 49.0);
|
|
SetSkill(SkillName.Wrestling, 40, 50);
|
|
|
|
PackGold(60, 70);
|
|
|
|
Fame = 5000;
|
|
Karma = -5000;
|
|
}
|
|
|
|
public override int Meat { get { return 1; } }
|
|
public override int Hides { get { return 7; } }
|
|
public override FoodType FavoriteFood { get { return FoodType.FruitsAndVegies; } }
|
|
|
|
private DateTime _NextBanana;
|
|
private int _Thrown;
|
|
|
|
public override void OnActionCombat()
|
|
{
|
|
Mobile combatant = Combatant as Mobile;
|
|
|
|
if (DateTime.UtcNow < _NextBanana || combatant == null || combatant.Deleted || combatant.Map != Map || !InRange(combatant, 12) || !CanBeHarmful(combatant) || !InLOS(combatant))
|
|
return;
|
|
|
|
ThrowBanana(combatant);
|
|
|
|
_Thrown++;
|
|
|
|
if (0.75 >= Utility.RandomDouble() && (_Thrown % 2) == 1) // 75% chance to quickly throw another bomb
|
|
_NextBanana = DateTime.UtcNow + TimeSpan.FromSeconds(3.0);
|
|
else
|
|
_NextBanana = DateTime.UtcNow + TimeSpan.FromSeconds(5.0 + (10.0 * Utility.RandomDouble())); // 5-15 seconds
|
|
}
|
|
|
|
public void ThrowBanana(Mobile m)
|
|
{
|
|
DoHarmful(m);
|
|
|
|
this.MovingParticles(m, Utility.RandomList(0x171f, 0x1720, 0x1721, 0x1722), 10, 0, false, true, 0, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0);
|
|
|
|
Timer.DelayCall(TimeSpan.FromSeconds(1), () =>
|
|
{
|
|
m.PlaySound(0x11D);
|
|
AOS.Damage(m, this, Utility.RandomMinMax(50, 85), 100, 0, 0, 0, 0);
|
|
});
|
|
}
|
|
|
|
public override bool OnBeforeDeath()
|
|
{
|
|
if (Region.IsPartOf("GreatApeLair") && 0.25 > Utility.RandomDouble())
|
|
PackItem(new PerfectBanana(Utility.RandomMinMax(1, 5)));
|
|
|
|
return base.OnBeforeDeath();
|
|
}
|
|
|
|
public SilverbackGorilla(Serial serial)
|
|
: base(serial)
|
|
{
|
|
}
|
|
|
|
public override void Serialize(GenericWriter writer)
|
|
{
|
|
base.Serialize(writer);
|
|
writer.Write(0);
|
|
}
|
|
|
|
public override void Deserialize(GenericReader reader)
|
|
{
|
|
base.Deserialize(reader);
|
|
int version = reader.ReadInt();
|
|
}
|
|
}
|
|
} |