This commit is contained in:
commit
47711d616e
2644 changed files with 479454 additions and 0 deletions
105
Scripts/Mobiles/Monsters/Ants/AntLion.cs
Normal file
105
Scripts/Mobiles/Monsters/Ants/AntLion.cs
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an ant lion corpse" )]
|
||||
public class AntLion : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public AntLion() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "an ant lion";
|
||||
Body = 787;
|
||||
BaseSoundID = 1006;
|
||||
|
||||
SetStr( 296, 320 );
|
||||
SetDex( 81, 105 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 151, 162 );
|
||||
|
||||
SetDamage( 7, 21 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 70 );
|
||||
SetDamageType( ResistanceType.Poison, 30 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 60 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 40, 50 );
|
||||
SetResistance( ResistanceType.Energy, 30, 35 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.0 );
|
||||
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
|
||||
VirtualArmor = 45;
|
||||
|
||||
PackItem( new Bone( 3 ) );
|
||||
PackItem( new FertileDirt( Utility.RandomMinMax( 1, 5 ) ) );
|
||||
|
||||
switch ( Utility.Random( 4 ) )
|
||||
{
|
||||
case 0: PackItem( new DullCopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
|
||||
case 1: PackItem( new ShadowIronOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
|
||||
case 2: PackItem( new CopperOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
|
||||
case 3: PackItem( new BronzeOre( Utility.RandomMinMax( 1, 10 ) ) ); break;
|
||||
}
|
||||
|
||||
// TODO: skeleton
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x5A;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x5A;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x164;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x187;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x1BA;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
}
|
||||
|
||||
|
||||
public AntLion( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
111
Scripts/Mobiles/Monsters/Ants/BlackSolenInfiltratorQueen.cs
Normal file
111
Scripts/Mobiles/Monsters/Ants/BlackSolenInfiltratorQueen.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen infiltrator corpse" )] // TODO: Corpse name?
|
||||
public class BlackSolenInfiltratorQueen : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BlackSolenInfiltratorQueen() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a black solen infiltrator";
|
||||
Body = 807;
|
||||
BaseSoundID = 959;
|
||||
Hue = 0x453;
|
||||
|
||||
SetStr( 326, 350 );
|
||||
SetDex( 141, 165 );
|
||||
SetInt( 96, 120 );
|
||||
|
||||
SetHits( 151, 162 );
|
||||
|
||||
SetDamage( 10, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 70 );
|
||||
SetDamageType( ResistanceType.Poison, 30 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 30, 35 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 35, 40 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.0 );
|
||||
|
||||
Fame = 6500;
|
||||
Karma = -6500;
|
||||
|
||||
VirtualArmor = 50;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( 0.05 > Utility.RandomDouble() ) ? 16 : 4 ) );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x195;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x250;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x25B;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckBlackFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnBlackDamage( from );
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public BlackSolenInfiltratorQueen( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
112
Scripts/Mobiles/Monsters/Ants/BlackSolenInfiltratorWarrior.cs
Normal file
112
Scripts/Mobiles/Monsters/Ants/BlackSolenInfiltratorWarrior.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen infiltrator corpse" )]
|
||||
public class BlackSolenInfiltratorWarrior : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BlackSolenInfiltratorWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a black solen infiltrator";
|
||||
Body = 806;
|
||||
BaseSoundID = 959;
|
||||
Hue = 0x453;
|
||||
|
||||
SetStr( 206, 230 );
|
||||
SetDex( 121, 145 );
|
||||
SetInt( 66, 90 );
|
||||
|
||||
SetHits( 96, 107 );
|
||||
|
||||
SetDamage( 5, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 35 );
|
||||
SetResistance( ResistanceType.Fire, 20, 35 );
|
||||
SetResistance( ResistanceType.Cold, 10, 25 );
|
||||
SetResistance( ResistanceType.Poison, 20, 35 );
|
||||
SetResistance( ResistanceType.Energy, 10, 25 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( 0.05 > Utility.RandomDouble() )? 13 : 3 ) );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x289;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0xBC;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xE4;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 4 ) );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckBlackFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnBlackDamage( from );
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public BlackSolenInfiltratorWarrior( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
150
Scripts/Mobiles/Monsters/Ants/BlackSolenQueen.cs
Normal file
150
Scripts/Mobiles/Monsters/Ants/BlackSolenQueen.cs
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen queen corpse" )]
|
||||
public class BlackSolenQueen : BaseCreature
|
||||
{
|
||||
private bool m_BurstSac;
|
||||
public bool BurstSac{ get{ return m_BurstSac; } }
|
||||
|
||||
[Constructable]
|
||||
public BlackSolenQueen() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a black solen queen";
|
||||
Body = 807;
|
||||
BaseSoundID = 959;
|
||||
Hue = 0x453;
|
||||
|
||||
SetStr( 296, 320 );
|
||||
SetDex( 121, 145 );
|
||||
SetInt( 76, 100 );
|
||||
|
||||
SetHits( 151, 162 );
|
||||
|
||||
SetDamage( 10, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 70 );
|
||||
SetDamageType( ResistanceType.Poison, 30 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 30, 35 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 35, 40 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.0 );
|
||||
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
|
||||
VirtualArmor = 45;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( Utility.RandomDouble() > 0.05 )? 5 : 25 ) );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
PackItem( new BallOfSummoning() );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x195;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x250;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x25B;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckBlackFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnBlackDamage( from );
|
||||
|
||||
if ( !willKill )
|
||||
{
|
||||
if ( !BurstSac )
|
||||
{
|
||||
if ( Hits < 50 )
|
||||
{
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, true, "* The solen's acid sac is burst open! *" );
|
||||
m_BurstSac = true;
|
||||
}
|
||||
}
|
||||
else if ( from != null && from != this && InRange( from, 1 ) )
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, from );
|
||||
}
|
||||
}
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, 1, 4 );
|
||||
|
||||
return base.OnBeforeDeath();
|
||||
}
|
||||
|
||||
public BlackSolenQueen( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 1 );
|
||||
writer.Write( m_BurstSac );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_BurstSac = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
151
Scripts/Mobiles/Monsters/Ants/BlackSolenWarrior.cs
Normal file
151
Scripts/Mobiles/Monsters/Ants/BlackSolenWarrior.cs
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen warrior corpse" )]
|
||||
public class BlackSolenWarrior : BaseCreature
|
||||
{
|
||||
private bool m_BurstSac;
|
||||
public bool BurstSac{ get{ return m_BurstSac; } }
|
||||
|
||||
[Constructable]
|
||||
public BlackSolenWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a black solen warrior";
|
||||
Body = 806;
|
||||
BaseSoundID = 959;
|
||||
Hue = 0x453;
|
||||
|
||||
SetStr( 196, 220 );
|
||||
SetDex( 101, 125 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 96, 107 );
|
||||
|
||||
SetDamage( 5, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 35 );
|
||||
SetResistance( ResistanceType.Fire, 20, 35 );
|
||||
SetResistance( ResistanceType.Cold, 10, 25 );
|
||||
SetResistance( ResistanceType.Poison, 20, 35 );
|
||||
SetResistance( ResistanceType.Energy, 10, 25 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 35;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( 0.05 > Utility.RandomDouble() )? 13 : 3 ) );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
PackItem( new BraceletOfBinding() );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x289;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0xBC;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xE4;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 4 ) );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckBlackFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnBlackDamage( from );
|
||||
|
||||
if ( !willKill )
|
||||
{
|
||||
if ( !BurstSac )
|
||||
{
|
||||
if ( Hits < 50 )
|
||||
{
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, true, "* The solen's acid sac is burst open! *" );
|
||||
m_BurstSac = true;
|
||||
}
|
||||
}
|
||||
else if ( from != null && from != this && InRange( from, 1 ) )
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, from );
|
||||
}
|
||||
}
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, 1, 4 );
|
||||
|
||||
return base.OnBeforeDeath();
|
||||
}
|
||||
|
||||
public BlackSolenWarrior( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 1 );
|
||||
writer.Write( m_BurstSac );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_BurstSac = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
112
Scripts/Mobiles/Monsters/Ants/BlackSolenWorker.cs
Normal file
112
Scripts/Mobiles/Monsters/Ants/BlackSolenWorker.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen worker corpse" )]
|
||||
public class BlackSolenWorker : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public BlackSolenWorker() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a black solen worker";
|
||||
Body = 805;
|
||||
BaseSoundID = 959;
|
||||
Hue = 0x453;
|
||||
|
||||
SetStr( 96, 120 );
|
||||
SetDex( 81, 105 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 58, 72 );
|
||||
|
||||
SetDamage( 5, 7 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 65.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.0 );
|
||||
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackGold( Utility.Random( 100, 180 ) );
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus() );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x269;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x269;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x186;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x1BE;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x8E;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 2 ) );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckBlackFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnBlackDamage( from );
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public BlackSolenWorker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
110
Scripts/Mobiles/Monsters/Ants/RedSolenInfiltratorQueen.cs
Normal file
110
Scripts/Mobiles/Monsters/Ants/RedSolenInfiltratorQueen.cs
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen infiltrator corpse" )] // TODO: Corpse name?
|
||||
public class RedSolenInfiltratorQueen : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RedSolenInfiltratorQueen() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a red solen infiltrator";
|
||||
Body = 783;
|
||||
BaseSoundID = 959;
|
||||
|
||||
SetStr( 326, 350 );
|
||||
SetDex( 141, 165 );
|
||||
SetInt( 96, 120 );
|
||||
|
||||
SetHits( 151, 162 );
|
||||
|
||||
SetDamage( 10, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 70 );
|
||||
SetDamageType( ResistanceType.Poison, 30 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 30, 35 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 35, 40 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.0 );
|
||||
|
||||
Fame = 6500;
|
||||
Karma = -6500;
|
||||
|
||||
VirtualArmor = 50;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( 0.05 < Utility.RandomDouble() )? 4 : 16 ) );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x195;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x250;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x25B;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckRedFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnRedDamage( from );
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public RedSolenInfiltratorQueen( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
112
Scripts/Mobiles/Monsters/Ants/RedSolenInfiltratorWarrior.cs
Normal file
112
Scripts/Mobiles/Monsters/Ants/RedSolenInfiltratorWarrior.cs
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen infiltrator corpse" )]
|
||||
public class RedSolenInfiltratorWarrior : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RedSolenInfiltratorWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a red solen infiltrator";
|
||||
Body = 782;
|
||||
BaseSoundID = 959;
|
||||
|
||||
SetStr( 206, 230 );
|
||||
SetDex( 121, 145 );
|
||||
SetInt( 66, 90 );
|
||||
|
||||
SetHits( 96, 107 );
|
||||
|
||||
SetDamage( 5, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 35 );
|
||||
SetResistance( ResistanceType.Fire, 20, 35 );
|
||||
SetResistance( ResistanceType.Cold, 10, 25 );
|
||||
SetResistance( ResistanceType.Poison, 20, 35 );
|
||||
SetResistance( ResistanceType.Energy, 10, 25 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( 0.05 < Utility.RandomDouble() )? 3 : 13 ) );
|
||||
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x289;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0xBC;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xE4;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 4 ) );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckRedFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnRedDamage( from );
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public RedSolenInfiltratorWarrior( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
150
Scripts/Mobiles/Monsters/Ants/RedSolenQueen.cs
Normal file
150
Scripts/Mobiles/Monsters/Ants/RedSolenQueen.cs
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen queen corpse" )]
|
||||
public class RedSolenQueen : BaseCreature
|
||||
{
|
||||
private bool m_BurstSac;
|
||||
public bool BurstSac{ get{ return m_BurstSac; } }
|
||||
|
||||
[Constructable]
|
||||
public RedSolenQueen() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a red solen queen";
|
||||
Body = 783;
|
||||
BaseSoundID = 959;
|
||||
|
||||
SetStr( 296, 320 );
|
||||
SetDex( 121, 145 );
|
||||
SetInt( 76, 100 );
|
||||
|
||||
SetHits( 151, 162 );
|
||||
|
||||
SetDamage( 10, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 70 );
|
||||
SetDamageType( ResistanceType.Poison, 30 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 30, 35 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 35, 40 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.0 );
|
||||
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
|
||||
VirtualArmor = 45;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus( ( Utility.RandomDouble() > 0.05 )? 5 : 25 ) );
|
||||
|
||||
if( Utility.RandomDouble() < 0.05 )
|
||||
PackItem( new BallOfSummoning() );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x259;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x195;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x250;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x25B;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckRedFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnRedDamage( from );
|
||||
|
||||
if ( !willKill )
|
||||
{
|
||||
if ( !BurstSac )
|
||||
{
|
||||
if ( Hits < 50 )
|
||||
{
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, true, "* The solen's acid sac is burst open! *" );
|
||||
m_BurstSac = true;
|
||||
}
|
||||
}
|
||||
else if ( from != null && from != this && InRange( from, 1 ) )
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, from );
|
||||
}
|
||||
}
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, 1, 4 );
|
||||
|
||||
return base.OnBeforeDeath();
|
||||
}
|
||||
|
||||
public RedSolenQueen( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 1 );
|
||||
writer.Write( m_BurstSac );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_BurstSac = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
150
Scripts/Mobiles/Monsters/Ants/RedSolenWarrior.cs
Normal file
150
Scripts/Mobiles/Monsters/Ants/RedSolenWarrior.cs
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen warrior corpse" )]
|
||||
public class RedSolenWarrior : BaseCreature
|
||||
{
|
||||
private bool m_BurstSac;
|
||||
public bool BurstSac{ get{ return m_BurstSac; } }
|
||||
|
||||
[Constructable]
|
||||
public RedSolenWarrior() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a red solen warrior";
|
||||
Body = 782;
|
||||
BaseSoundID = 959;
|
||||
|
||||
SetStr( 196, 220 );
|
||||
SetDex( 101, 125 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 96, 107 );
|
||||
|
||||
SetDamage( 5, 15 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Poison, 20 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 35 );
|
||||
SetResistance( ResistanceType.Fire, 20, 35 );
|
||||
SetResistance( ResistanceType.Cold, 10, 25 );
|
||||
SetResistance( ResistanceType.Poison, 20, 35 );
|
||||
SetResistance( ResistanceType.Energy, 10, 25 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 35;
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
PackItem( new ZoogiFungus( ( 0.05 < Utility.RandomDouble() )? 3 : 13 ) );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
PackItem( new BraceletOfBinding() );
|
||||
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0xB5;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x289;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0xBC;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xE4;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 4 ) );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckRedFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnRedDamage( from );
|
||||
|
||||
if ( !willKill )
|
||||
{
|
||||
if ( !BurstSac )
|
||||
{
|
||||
if ( Hits < 50 )
|
||||
{
|
||||
PublicOverheadMessage( MessageType.Regular, 0x3B2, true, "* The solen's acid sac is burst open! *" );
|
||||
m_BurstSac = true;
|
||||
}
|
||||
}
|
||||
else if ( from != null && from != this && InRange( from, 1 ) )
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, from );
|
||||
}
|
||||
}
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
SpillAcid( TimeSpan.FromSeconds( 10 ), 30, 30, 1, 4 );
|
||||
|
||||
return base.OnBeforeDeath();
|
||||
}
|
||||
|
||||
public RedSolenWarrior( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 1 );
|
||||
writer.Write( m_BurstSac );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
switch( version )
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
m_BurstSac = reader.ReadBool();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
111
Scripts/Mobiles/Monsters/Ants/RedSolenWorker.cs
Normal file
111
Scripts/Mobiles/Monsters/Ants/RedSolenWorker.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using Server.Items;
|
||||
using Server.Targeting;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a solen worker corpse" )]
|
||||
public class RedSolenWorker : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public RedSolenWorker() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a red solen worker";
|
||||
Body = 781;
|
||||
BaseSoundID = 959;
|
||||
|
||||
SetStr( 96, 120 );
|
||||
SetDex( 81, 105 );
|
||||
SetInt( 36, 60 );
|
||||
|
||||
SetHits( 58, 72 );
|
||||
|
||||
SetDamage( 5, 7 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
|
||||
SetSkill( SkillName.MagicResist, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 65.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.0 );
|
||||
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
|
||||
VirtualArmor = 28;
|
||||
|
||||
PackGold( Utility.Random( 100, 180 ) );
|
||||
|
||||
SolenHelper.PackPicnicBasket( this );
|
||||
|
||||
PackItem( new ZoogiFungus() );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x269;
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x269;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x186;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x1BE;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x8E;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 2 ) );
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( SolenHelper.CheckRedFriendship( m ) )
|
||||
return false;
|
||||
else
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void OnDamage( int amount, Mobile from, bool willKill )
|
||||
{
|
||||
SolenHelper.OnRedDamage( from );
|
||||
|
||||
base.OnDamage( amount, from, willKill );
|
||||
}
|
||||
|
||||
public RedSolenWorker( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
101
Scripts/Mobiles/Monsters/Ants/SolenHelper.cs
Normal file
101
Scripts/Mobiles/Monsters/Ants/SolenHelper.cs
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SolenHelper
|
||||
{
|
||||
public static void PackPicnicBasket( BaseCreature solen )
|
||||
{
|
||||
if ( 1 > Utility.Random( 100 ) )
|
||||
{
|
||||
PicnicBasket basket = new PicnicBasket();
|
||||
|
||||
basket.DropItem( new BeverageBottle( BeverageType.Wine ) );
|
||||
basket.DropItem( new CheeseWedge() );
|
||||
|
||||
solen.PackItem( basket );
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckRedFriendship( Mobile m )
|
||||
{
|
||||
if ( m is BaseCreature )
|
||||
{
|
||||
BaseCreature bc = (BaseCreature)m;
|
||||
|
||||
if ( bc.Controlled && bc.ControlMaster is PlayerMobile )
|
||||
return CheckRedFriendship( bc.ControlMaster );
|
||||
else if ( bc.Summoned && bc.SummonMaster is PlayerMobile )
|
||||
return CheckRedFriendship( bc.SummonMaster );
|
||||
}
|
||||
|
||||
PlayerMobile player = m as PlayerMobile;
|
||||
|
||||
return player != null && player.SolenFriendship == SolenFriendship.Red;
|
||||
}
|
||||
|
||||
public static bool CheckBlackFriendship( Mobile m )
|
||||
{
|
||||
if ( m is BaseCreature )
|
||||
{
|
||||
BaseCreature bc = (BaseCreature)m;
|
||||
|
||||
if ( bc.Controlled && bc.ControlMaster is PlayerMobile )
|
||||
return CheckBlackFriendship( bc.ControlMaster );
|
||||
else if ( bc.Summoned && bc.SummonMaster is PlayerMobile )
|
||||
return CheckBlackFriendship( bc.SummonMaster );
|
||||
}
|
||||
|
||||
PlayerMobile player = m as PlayerMobile;
|
||||
|
||||
return player != null && player.SolenFriendship == SolenFriendship.Black;
|
||||
}
|
||||
|
||||
public static void OnRedDamage( Mobile from )
|
||||
{
|
||||
if ( from is BaseCreature )
|
||||
{
|
||||
BaseCreature bc = (BaseCreature)from;
|
||||
|
||||
if ( bc.Controlled && bc.ControlMaster is PlayerMobile )
|
||||
OnRedDamage( bc.ControlMaster );
|
||||
else if ( bc.Summoned && bc.SummonMaster is PlayerMobile )
|
||||
OnRedDamage( bc.SummonMaster );
|
||||
}
|
||||
|
||||
PlayerMobile player = from as PlayerMobile;
|
||||
|
||||
if ( player != null && player.SolenFriendship == SolenFriendship.Red )
|
||||
{
|
||||
player.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1054103 ); // The solen revoke their friendship. You will now be considered an intruder.
|
||||
|
||||
player.SolenFriendship = SolenFriendship.None;
|
||||
}
|
||||
}
|
||||
|
||||
public static void OnBlackDamage( Mobile from )
|
||||
{
|
||||
if ( from is BaseCreature )
|
||||
{
|
||||
BaseCreature bc = (BaseCreature)from;
|
||||
|
||||
if ( bc.Controlled && bc.ControlMaster is PlayerMobile )
|
||||
OnBlackDamage( bc.ControlMaster );
|
||||
else if ( bc.Summoned && bc.SummonMaster is PlayerMobile )
|
||||
OnBlackDamage( bc.SummonMaster );
|
||||
}
|
||||
|
||||
PlayerMobile player = from as PlayerMobile;
|
||||
|
||||
if ( player != null && player.SolenFriendship == SolenFriendship.Black )
|
||||
{
|
||||
player.LocalOverheadMessage( MessageType.Regular, 0x3B2, 1054103 ); // The solen revoke their friendship. You will now be considered an intruder.
|
||||
|
||||
player.SolenFriendship = SolenFriendship.None;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue