Files
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

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();
}
}
}