Kod:
using System;
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a burning corpse" )]
public class FireWyrm : BaseCreature
{
[Constructable]
public FireWyrm () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 49;
Hue = 0x489;
Name = "a fire wyrm";
BaseSoundID = 362;
SetStr( 555, 820 );
SetDex( 321, 370 );
SetInt( 498, 657 );
SetHits( 2800, 2980 );
SetDamage( 38, 45 );
SetDamageType( ResistanceType.Physical, 75 );
SetDamageType( ResistanceType.Fire, 100 );
SetResistance( ResistanceType.Physical, 80, 90 );
SetResistance( ResistanceType.Fire, 100, 150 );
SetResistance( ResistanceType.Cold, 40, 50 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetResistance( ResistanceType.Energy, 80, 90 );
SetSkill( SkillName.EvalInt, 190.1, 200.0 );
SetSkill( SkillName.Magery, 199.1, 200.0 );
SetSkill( SkillName.Meditation, 190.1, 200.0 );
SetSkill( SkillName.MagicResist, 200.5, 250.0 );
SetSkill( SkillName.Tactics, 180.1, 190.0 );
SetSkill( SkillName.Wrestling, 180.1, 190.0 );
Fame = 24000;
Karma = -24000;
VirtualArmor = 60;
Tamable = true;
MinTameSkill = 110.0;
ControlSlots = 4;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 3 );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override bool AutoDispel{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 4; } }
public override int Meat{ get{ return 19; } }
public override int Hides{ get{ return 20; } }
public override HideType HideType{ get{ return HideType.Barbed; } }
public override int Scales{ get{ return 9; } }
public override ScaleType ScaleType{ get{ return ScaleType.White; } }
public void FlameStrike()
{
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 10 ) )
{
if ( m == this || !CanBeHarmful( m ) )
continue;
if ( m is BaseCreature && (((BaseCreature)m).Controled ||
((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team) )
list.Add( m );
}
foreach ( Mobile m in list )
{
DoHarmful( m );
m.FixedParticles( 0x3709, 10, 30, 5052, EffectLayer.LeftFoot );
m.PlaySound( 0x208 );
m.SendMessage( "Your skin blisters as the fire burns you!" );
int toStrike = Utility.RandomMinMax( 80, 90 );
Hits += toStrike;
m.Damage( toStrike, this );
}
}
public override void OnGaveMeleeAttack( Mobile defender )//Attack yaptigi kisi
{
if (defender is PlayerMobile)//defender saldirigi kisi eger PlayerMobile a sahip ise
yani player ise
{
ControlOrder = OrderType.Stop;//ControlOrder(hayvanin control sekli) stop
yapiliyor.
Say( "Adam gibi oyna." );//Opsiyonel.
}
else//eger saldirdigi bir player degilde yaratirk ise yapmasi gerekeni yapiyor
{
base.OnGaveMeleeAttack( defender );
if (0.1 > Utility.RandomDouble())
{
/* Grasping Claw
* Start cliloc: 1070836
* Effect: Physical resistance -15% for 5 seconds
* End cliloc: 1070838
* Effect: Type: "3" - From: "0x57D4F5B" (player) - To: "0x0" - ItemId:
"0x37B9" - ItemIdName: "glow" - FromLocation: "(1149 808, 32)" - ToLocation: "(1149 808, 32)" -
Speed: "10" - Duration: "5" - FixedDirection: "True" - Explode: "False"
*/
ExpireTimer timer = (ExpireTimer)m_Table[defender];
if (timer != null)
{
timer.DoExpire();
defender.SendLocalizedMessage( 1070837 ); // The creature lands another
blow in your weakened state.
}
else
defender.SendLocalizedMessage( 1070836 );
int effect = -(defender.PhysicalResistance * 15 / 100);
ResistanceMod mod = new ResistanceMod( ResistanceType.Physical, effect );
defender.FixedEffect( 0x37B9, 10, 5 );
defender.AddResistanceMod( mod );
timer = new ExpireTimer( defender, mod, TimeSpan.FromSeconds( 5.0 ) );
timer.Start();
m_Table[defender] = timer;
}
}
}
private static Hashtable m_Table = new Hashtable();
private class ExpireTimer : Timer
{
private Mobile m_Mobile;
private ResistanceMod m_Mod;
public ExpireTimer( Mobile m, ResistanceMod mod, TimeSpan delay )
: base( delay )
{
m_Mobile = m;
m_Mod = mod;
Priority = TimerPriority.TwoFiftyMS;
}
public void DoExpire()
{
m_Mobile.RemoveResistanceMod( m_Mod );
Stop();
m_Table.Remove( m_Mobile );
}
protected override void OnTick()
{
m_Mobile.SendLocalizedMessage( 1070838 ); // Your resistance to physical attacks
has returned.
DoExpire();
}
}
public FireWyrm( 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();
}
}
}
using System.Collections;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a burning corpse" )]
public class FireWyrm : BaseCreature
{
[Constructable]
public FireWyrm () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 49;
Hue = 0x489;
Name = "a fire wyrm";
BaseSoundID = 362;
SetStr( 555, 820 );
SetDex( 321, 370 );
SetInt( 498, 657 );
SetHits( 2800, 2980 );
SetDamage( 38, 45 );
SetDamageType( ResistanceType.Physical, 75 );
SetDamageType( ResistanceType.Fire, 100 );
SetResistance( ResistanceType.Physical, 80, 90 );
SetResistance( ResistanceType.Fire, 100, 150 );
SetResistance( ResistanceType.Cold, 40, 50 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetResistance( ResistanceType.Energy, 80, 90 );
SetSkill( SkillName.EvalInt, 190.1, 200.0 );
SetSkill( SkillName.Magery, 199.1, 200.0 );
SetSkill( SkillName.Meditation, 190.1, 200.0 );
SetSkill( SkillName.MagicResist, 200.5, 250.0 );
SetSkill( SkillName.Tactics, 180.1, 190.0 );
SetSkill( SkillName.Wrestling, 180.1, 190.0 );
Fame = 24000;
Karma = -24000;
VirtualArmor = 60;
Tamable = true;
MinTameSkill = 110.0;
ControlSlots = 4;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 3 );
AddLoot( LootPack.MedScrolls, 2 );
}
public override bool HasBreath{ get{ return true; } } // fire breath enabled
public override bool AutoDispel{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 4; } }
public override int Meat{ get{ return 19; } }
public override int Hides{ get{ return 20; } }
public override HideType HideType{ get{ return HideType.Barbed; } }
public override int Scales{ get{ return 9; } }
public override ScaleType ScaleType{ get{ return ScaleType.White; } }
public void FlameStrike()
{
ArrayList list = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 10 ) )
{
if ( m == this || !CanBeHarmful( m ) )
continue;
if ( m is BaseCreature && (((BaseCreature)m).Controled ||
((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team) )
list.Add( m );
}
foreach ( Mobile m in list )
{
DoHarmful( m );
m.FixedParticles( 0x3709, 10, 30, 5052, EffectLayer.LeftFoot );
m.PlaySound( 0x208 );
m.SendMessage( "Your skin blisters as the fire burns you!" );
int toStrike = Utility.RandomMinMax( 80, 90 );
Hits += toStrike;
m.Damage( toStrike, this );
}
}
public override void OnGaveMeleeAttack( Mobile defender )//Attack yaptigi kisi
{
if (defender is PlayerMobile)//defender saldirigi kisi eger PlayerMobile a sahip ise
yani player ise
{
ControlOrder = OrderType.Stop;//ControlOrder(hayvanin control sekli) stop
yapiliyor.
Say( "Adam gibi oyna." );//Opsiyonel.
}
else//eger saldirdigi bir player degilde yaratirk ise yapmasi gerekeni yapiyor
{
base.OnGaveMeleeAttack( defender );
if (0.1 > Utility.RandomDouble())
{
/* Grasping Claw
* Start cliloc: 1070836
* Effect: Physical resistance -15% for 5 seconds
* End cliloc: 1070838
* Effect: Type: "3" - From: "0x57D4F5B" (player) - To: "0x0" - ItemId:
"0x37B9" - ItemIdName: "glow" - FromLocation: "(1149 808, 32)" - ToLocation: "(1149 808, 32)" -
Speed: "10" - Duration: "5" - FixedDirection: "True" - Explode: "False"
*/
ExpireTimer timer = (ExpireTimer)m_Table[defender];
if (timer != null)
{
timer.DoExpire();
defender.SendLocalizedMessage( 1070837 ); // The creature lands another
blow in your weakened state.
}
else
defender.SendLocalizedMessage( 1070836 );
int effect = -(defender.PhysicalResistance * 15 / 100);
ResistanceMod mod = new ResistanceMod( ResistanceType.Physical, effect );
defender.FixedEffect( 0x37B9, 10, 5 );
defender.AddResistanceMod( mod );
timer = new ExpireTimer( defender, mod, TimeSpan.FromSeconds( 5.0 ) );
timer.Start();
m_Table[defender] = timer;
}
}
}
private static Hashtable m_Table = new Hashtable();
private class ExpireTimer : Timer
{
private Mobile m_Mobile;
private ResistanceMod m_Mod;
public ExpireTimer( Mobile m, ResistanceMod mod, TimeSpan delay )
: base( delay )
{
m_Mobile = m;
m_Mod = mod;
Priority = TimerPriority.TwoFiftyMS;
}
public void DoExpire()
{
m_Mobile.RemoveResistanceMod( m_Mod );
Stop();
m_Table.Remove( m_Mobile );
}
protected override void OnTick()
{
m_Mobile.SendLocalizedMessage( 1070838 ); // Your resistance to physical attacks
has returned.
DoExpire();
}
}
public FireWyrm( 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();
}
}
}
Yorumlar
Henüz yorum yapılmamıştır.
|
OylamalarOylama :![]()
Üyelerin oylama ortalaması (10 dışında) : Henüz Oylanmamış
Oylar: 0 |
Benzer Sayfalar
| Sayfalar | Yorumlar | Gönderen | Tarih |
| Fire Field | 0 | The And | 27-09-2009 |
| Fire Elemental | 0 | The And | 23-09-2009 |
| Cleanse By Fire | 0 | The And | 23-09-2009 |
| Fire Giant | 0 | TheRaskol | 21-09-2009 |
| Cleanse By Fire | 0 | Amesron | 01-09-2009 |







