ModernUO/Scripts/Mobiles/Monsters/LBR/Meers/EnragedCreatures.cs
mark 208acafd7e Runic sewing kits will no longer apply durability
http://www.uodemise.com/forum/showthread.php?t=133757

Vendor Look/Browse/View will now work properly
http://www.uodemise.com/forum/showthread.php?t=135531

Stacked Eggbombs will now unstack correctly
http://www.uodemise.com/forum/showthread.php?t=134321

Unbonded pets should logout too
http://www.uodemise.com/forum/showthread.php?t=119262

Paragon chests placed on player vendors will now behave correctly
http://www.uodemise.com/forum/showthread.php?t=116864

Proper party fame/karma sharing
http://www.uodemise.com/forum/showthread.php?t=122749

Guild Alliance/War update bug fixed
http://www.uodemise.com/forum/showthread.php?t=115236

Fukiya properties updates and loading bug fixed
http://www.uodemise.com/forum/showthread.php?t=136042

Shuriken, same problems as fukiya
http://www.uodemise.com/forum/showthread.php?t=120212

greater mongbats will now be recognised as quest objectives
http://www.uodemise.com/forum/showthread.php?t=128072

divine fury sound tweaks.
http://www.uodemise.com/forum/showthread.php?t=136489

pet stat gains fix
http://www.uodemise.com/forum/showthread.php?t=134820

Pets follow speed corrected
http://www.uodemise.com/forum/showthread.php?t=124774

E-fields no longer block in trammel rulesets.
http://www.uodemise.com/forum/showthread.php?t=116680

Disguise kit timer fix
http://www.uodemise.com/forum/showthread.php?t=133913

Meer Mage special abilities fixes.
http://www.uodemise.com/forum/showthread.php?t=122134

Missing food property if eggs, in animal lore gump
http://www.uodemise.com/forum/showthread.php?t=135258

Pets will follow after an attack is completed.
http://www.uodemise.com/forum/showthread.php?t=135962

Hides should not be scissored whilst still on the corpse
http://www.uodemise.com/forum/showthread.php?t=118799

Pet bonding changed to include jewelry skill adjustments.
http://www.uodemise.com/forum/showthread.php?t=121060

Skinning knife can be used to cut corpses
http://www.uodemise.com/forum/showthread.php?t=115248

PlayerVendors will correctly send update packets to the client when hair is changed
http://www.uodemise.com/forum/showthread.php?t=120216

Corrections to house sign gump
http://www.uodemise.com/forum/showthread.php?t=134406

pet "guarding" system message added
http://www.uodemise.com/forum/showthread.php?t=134091

Giant toads should be aggressive
http://www.uodemise.com/forum/showthread.php?t=133984

bardiche and halberds are axe tools.
http://www.uodemise.com/forum/showthread.php?t=122739
2010-01-17 06:59:32 +00:00

296 lines
5.9 KiB
C#

using System;
using Server;
using Server.Network;
namespace Server.Mobiles
{
[CorpseName( "a hare corpse" )]
public class EnragedRabbit : BaseEnraged
{
public EnragedRabbit( Mobile summoner ) : base( summoner )
{
Name = "a rabbit";
Body = 0xcd;
}
public override int GetAttackSound()
{
return 0xC9;
}
public override int GetHurtSound()
{
return 0xCA;
}
public override int GetDeathSound()
{
return 0xCB;
}
public EnragedRabbit( 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();
}
}
[CorpseName( "a deer corpse" )]
public class EnragedHart : BaseEnraged
{
public EnragedHart( Mobile summoner ) : base( summoner )
{
Name = "a great hart";
Body = 0xea;
}
public override int GetAttackSound()
{
return 0x82;
}
public override int GetHurtSound()
{
return 0x83;
}
public override int GetDeathSound()
{
return 0x84;
}
public EnragedHart( 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();
}
}
[CorpseName( "a deer corpse" )]
public class EnragedHind : BaseEnraged
{
public EnragedHind( Mobile summoner ) : base( summoner )
{
Name = "a hind";
Body = 0xed;
}
public override int GetAttackSound()
{
return 0x82;
}
public override int GetHurtSound()
{
return 0x83;
}
public override int GetDeathSound()
{
return 0x84;
}
public EnragedHind( 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();
}
}
[CorpseName( "a bear corpse" )]
public class EnragedBlackBear : BaseEnraged
{
public EnragedBlackBear( Mobile summoner ) : base( summoner )
{
Name = "a black bear";
Body = 0xd3;
BaseSoundID = 0xa3;
}
public EnragedBlackBear( 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();
}
}
[CorpseName( "an eagle corpse" )]
public class EnragedEagle : BaseEnraged
{
public EnragedEagle( Mobile summoner ) : base( summoner )
{
Name = "an eagle";
Body = 0x5;
BaseSoundID = 0x2ee;
}
public EnragedEagle( 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();
}
}
public class BaseEnraged : BaseCreature
{
public BaseEnraged( Mobile summoner )
: base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
SetStr( 50, 200 );
SetDex( 50, 200 );
SetHits( 50, 200 );
SetStam( 50, 200 );
/*
On OSI, all stats are random 50-200, but
str is never less than hits, and dex is never
less than stam.
*/
if( Str < Hits )
Str = Hits;
if( Dex < Stam )
Dex = Stam;
Karma = -1000;
Tamable = false;
SummonMaster = summoner;
}
public override void OnThink()
{
if( SummonMaster == null || SummonMaster.Deleted )
{
Delete();
}
/*
On OSI, without combatant, they behave as if they have been
given "come" command, ie they wander towards their summoner,
but never actually "follow".
*/
else if( !Combat( this ))
{
if( AIObject != null )
{
AIObject.MoveTo( SummonMaster, false , 5 );
}
}
/*
On OSI, if the summon attacks a mobile, the summoner meer also
attacks them, regardless of karma, etc. as long as the combatant
is a player or controlled/summoned, and the summoner is not already
engaged in combat.
*/
else if( !Combat( SummonMaster ))
{
BaseCreature bc = null;
if( Combatant is BaseCreature )
{
bc = (BaseCreature)Combatant;
}
if( Combatant.Player || ( bc != null && ( bc.Controlled || bc.SummonMaster != null )))
{
SummonMaster.Combatant = Combatant;
}
}
else
{
base.OnThink();
}
}
private bool Combat( Mobile mobile )
{
Mobile combatant = mobile.Combatant;
if( combatant == null || combatant.Deleted )
{
return false;
}
else if ( combatant.IsDeadBondedPet || !combatant.Alive )
{
return false;
}
return true;
}
public override void OnSingleClick( Mobile from )
{
base.OnSingleClick( from );
PrivateOverheadMessage( MessageType.Regular, 0x3B2, 1060768, from.NetState ); // enraged
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
list.Add( 1060768 ); // enraged
}
public BaseEnraged( 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();
}
}
}