Nah I don't even mean a default script, which I'd assume are larger by, well default :p Take for instance (and this just happens to be first one I randomly clicked on, so if the code sucks or it's unnecessarily long, blame the scripter not me :p) THIS ONE:
Code:
Code:
/////////Script by Tanya - Admin Rhosyn- The Midnight Runners - 2005 - Thanks To Mortis For His Help////
using System;
using Server;
using Server.Misc;
using Server.Items;
using Server.Network;
using Server.Mobiles;
namespace Server.Mobiles
{
[CorpseName( "a fire corpse" )]
public class FireSlaver : BaseCreature
{
[Constructable]
public FireSlaver() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.15, 0.4 )
{
Name = "Fire Slaver" ;
Body = 43;
BaseSoundID = 357;
Hue = 1360;
SetStr( 851, 890 );
SetDex( 292, 330 );
SetInt( 51, 65 );
SetHits( 658, 711 );
SetDamage( 29, 35 );
SetDamageType( ResistanceType.Physical, 70 );
SetSkill( SkillName.Fencing, 72.5, 95.0 );
SetSkill( SkillName.Healing, 60.3, 90.0 );
SetSkill( SkillName.Macing, 72.5, 95.0 );
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
SetSkill( SkillName.MagicResist, 72.5, 95.0 );
SetSkill( SkillName.Swords, 72.5, 95.0 );
SetSkill( SkillName.Tactics, 72.5, 95.0 );
SetSkill( SkillName.Healing, 72.5, 95.0 );
SetSkill( SkillName.Wrestling, 72.5, 95.0 );
Fame = 1000;
Karma = -1000;
PackGold( 260, 490 );
PackItem( new Bandage( Utility.RandomMinMax( 30, 75 ) ) );
// if ( 0.3 > Utility.RandomDouble() )
// PackSkillScroll();
// if ( 0.025 > Utility.RandomDouble() )
// PackMinusSkillScroll();
switch ( Utility.Random( 100 ) )
{
case 0: PackItem( new LeatherGorget() ); break;
case 1: PackItem( new Candle() ); break;
case 2: PackItem( new Bloodmoss( 50 ) ); break;
case 3: PackItem( new Bandage() ); break;
case 4: PackItem( new Lemon() ); break;
case 5: PackItem( new Katana() ); break;
case 6: PackItem( new ColdBlood() ); break;
case 7: PackItem( new GlovesOfThePugilist() ); break;
}
}
public override bool AlwaysMurderer{ get{ return true; } }
public override bool ShowFameTitle{ get{ return false; } }
public override bool Unprovokable{ get{ return true; } }
public override bool BardImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Deadly; } }
public override Poison HitPoison{ get{ return Poison.Deadly; } }
public override int TreasureMapLevel{ get{ return 5; } }
public override bool OnBeforeDeath()
{
this.SpeechHue = 33;
this.Say(" By the lords of fire I summon thee oh lord of the flames");
IMount mount = this.Mount;
if ( mount != null )
mount.Rider = null;
if ( mount is Mobile )
switch ( Utility.Random( 3 ))
{
case 0: ((Mobile)mount).Kill(); break;
case 1: ((Mobile)mount).Delete(); break;
case 2: ((Mobile)mount).Kill(); break;
}
FireSteed2 ll = new FireSteed2();
ll.Map = this.Map;
ll.Location = (new Point3D( this.X + 3, this.Y - 3, this.Z + 4 ) );
ll.CanSwim = false;
ll.SpeechHue = 67;
ll.Say( "I Bring You Fire To Purge Your Bones.");
Effects.SendLocationEffect( Location,Map, 0x3709, 13, 0x3B2, 0 );
Container bag = new Bag();
switch ( Utility.Random( 9 ))
{
case 0: bag.DropItem( new Amber() ); break;
case 1: bag.DropItem( new Amethyst() ); break;
case 2: bag.DropItem( new Citrine() ); break;
case 3: bag.DropItem( new Diamond() ); break;
case 4: bag.DropItem( new Emerald() ); break;
case 5: bag.DropItem( new Ruby() ); break;
case 6: bag.DropItem( new Sapphire() ); break;
case 7: bag.DropItem( new StarSapphire() ); break;
case 8: bag.DropItem( new Tourmaline() ); break;
}
switch ( Utility.Random( 8 ))
{
case 0: bag.DropItem( new SpidersSilk( 3 ) ); break;
case 1: bag.DropItem( new BlackPearl( 3 ) ); break;
case 2: bag.DropItem( new Bloodmoss( 3 ) ); break;
case 3: bag.DropItem( new Garlic( 3 ) ); break;
case 4: bag.DropItem( new MandrakeRoot( 3 ) ); break;
case 5: bag.DropItem( new Nightshade( 3 ) ); break;
case 6: bag.DropItem( new SulfurousAsh( 3 ) ); break;
case 7: bag.DropItem( new Ginseng( 3 ) ); break;
}
bag.DropItem( new Gold( 200, 300 ));
ll.AddItem( bag );
return true;
}
public override void OnDamagedBySpell( Mobile caster )
{
if ( caster == this )
return;
SpawnFireSteed2( caster );
if ( 0.4 >= Utility.RandomDouble() )
caster.Damage( Utility.Random( 6, 15 ) );
caster.SendMessage( 0x35, "Your spell does damage the slaver but some damage is relected back to you." );
}
public void SpawnFireSteed2( Mobile target )
{
this.SpeechHue = 33;
this.Say( " The legions of fire are on my side.");
target.SpeechHue = 3;
target.Say( " The git spawned a Fire Steed on me.");
Map map = target.Map;
if ( map == null )
return;
int FireSteed2s = 0;
foreach ( Mobile m in this.GetMobilesInRange( 4 ) )
{
if ( m is FireSteed2 )
++FireSteed2s;
}
if ( FireSteed2s < 4 )
{
BaseCreature FireSteed2 = new FireSteed2();
FireSteed2.Team = this.Team;
FireSteed2.Map = map;
FireSteed2.CanSwim = true;
bool validLocation = false;
for ( int j = 0; !validLocation && j < 10; ++j )
{
int x = target.X + Utility.Random( 3 ) - 1;
int y = target.Y + Utility.Random( 3 ) - 1;
int z = map.GetAverageZ( x, y );
if ( validLocation = map.CanFit( x, y, this.Z, 16, false, false ) )
FireSteed2.Location = new Point3D( x, y, Z );
else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) )
FireSteed2.Location = new Point3D( x, y, z );
}
if ( !validLocation )
FireSteed2.Location = target.Location;
FireSteed2.Combatant = target;
FireSteed2.SpeechHue = 33;
FireSteed2.Say( "I hear and obey master.");
}
}
public FireSlaver( Serial serial ) : base( serial )
{
}
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
DoSpecialAbility( attacker );
}
public override void OnGaveMeleeAttack( Mobile defender )
{
base.OnGaveMeleeAttack( defender );
//defender.Damage( Utility.Random( 20, 10 ), this );
defender.Stam -= Utility.Random( 20, 10 );
defender.Mana -= Utility.Random( 20, 10 );
DoSpecialAbility( defender );
}
public void DoSpecialAbility( Mobile target )
{
if ( target.InRange( this, 10 ) ) //if a player is within 10 tiles of the NPC
{
if ( 0.5 >= Utility.RandomDouble() )
SpawnFireSteed2( target );
else if ( target.InRange( this, 2 ) ) //if a player is within 3 tiles of the NPC
{
if ( ( target.RawStr ) > 250 )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 11, 15 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 2, 5 ) );
else if ( ( target.RawStr ) > 225 && ( ( target.RawStr ) < 250 ) )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 10, 14 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 2, 4 ) );
else if ( ( target.RawStr ) > 200 && ( ( target.RawStr ) < 225 ) )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 9, 13 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 2, 3 ) );
else if ( ( target.RawStr ) > 175 && ( ( target.RawStr ) < 200 ) )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 8, 12 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 1, 3 ) );
else if ( ( target.RawStr ) > 150 && ( ( target.RawStr ) < 175 ) )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 7, 11 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 1, 3 ) );
else if ( ( target.RawStr ) > 125 && ( ( target.RawStr ) < 150 ) )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 6, 10 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 1, 2 ) );
else if ( ( target.RawStr ) > 100 && ( ( target.RawStr ) < 125 ) )
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 5, 9 ) );
if ( 0.02 >= Utility.RandomDouble() ) // 20% chance to more damage
target.Damage( Utility.Random( 1, 2 ) );
if ( 0.06 >= Utility.RandomDouble() ) // 60% chance to do more damage
target.Damage( Utility.Random( 1, 2 ) );
}
}
}
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();
}
}
}
All of that to make a critter that summons fire steeds when you beat his ass? No thanks I'll stick to "limited" sphere.