using System; using System.Collections; using Server; using Server.Items; using Server.Network; namespace Server.Mobiles { [CorpseName( "a medusan corpse" )] public class Medusa : BaseCreature { [Constructable] public Medusa() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 ) { Name = "a medusa"; BaseSoundID = 0x284; Body = 106; AnimationMod = 3; SetStr( 388, 520 ); SetDex( 121, 170 ); SetInt( 398, 557 ); SetHits( 212, 253 ); SetDamage( 10, 20 ); SetSkill( SkillName.MagicResist, 70.1, 80.0 ); SetSkill( SkillName.Poisoning, 80.1, 90.0 ); SetSkill( SkillName.Tactics, 80.1, 90.0 ); SetSkill( SkillName.HandToHand, 80.1, 90.0 ); Fame = 14000; Karma = -14000; VirtualArmor = 40; } public override void GenerateLoot() { AddLoot( LootPack.Rich, 2 ); AddLoot( LootPack.Average, 2 ); AddLoot( LootPack.Gems ); } public override int Meat{ get{ return 1; } } public override int Hides{ get{ return 5; } } public override Poison PoisonImmune{ get{ return Poison.Deadly; } } public override Poison HitPoison{ get{ return Poison.Greater; } } public override bool CanRummageCorpses{ get{ return true; } } public void TurnStone() { ArrayList list = new ArrayList(); foreach ( Mobile m in this.GetMobilesInRange( 2 ) ) { if ( m == this || !CanBeHarmful( m ) ) continue; if ( m is BaseCreature && (((BaseCreature)m).Controlled || ((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team) ) list.Add( m ); else if ( m.Player ) list.Add( m ); } foreach ( Mobile m in list ) { DoHarmful( m ); m.PlaySound(0x204); m.FixedEffect(0x376A, 6, 1); int duration = Utility.RandomMinMax(4, 8); m.Paralyze(TimeSpan.FromSeconds(duration)); m.SendMessage( "You are frozen like stone!" ); } } public override void OnGotMeleeAttack( Mobile attacker ) { base.OnGotMeleeAttack( attacker ); if ( 0.1 >= Utility.RandomDouble() ) TurnStone(); } public Medusa( Serial serial ) : base( serial ) { } 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(); } } }