This commit is contained in:
mark 2009-08-09 07:18:50 +00:00
parent 57b345a480
commit 68d742d262
28 changed files with 432 additions and 193 deletions

View file

@ -371,7 +371,7 @@ namespace Server.Mobiles
{
get
{
return TimeSpan.FromSeconds( ((m_Mount.IsDonationItem && RewardSystem.GetRewardLevel( m_Rider ) < 3)? ( 7.5 + ( Core.AOS ? 2.0 : 3.0)) : ( Core.AOS ? 2.0 : 3.0)) );
return TimeSpan.FromSeconds( ((m_Mount.IsDonationItem && RewardSystem.GetRewardLevel( m_Rider ) < 3)? ( 7.5 + ( Core.AOS ? 3.0 : 2.0)) : ( Core.AOS ? 3.0 : 2.0)) );
}
}

View file

@ -1,6 +1,7 @@
using System;
using Server;
using Server.Items;
using Server.Spells;
namespace Server.Mobiles
{
@ -12,9 +13,8 @@ namespace Server.Mobiles
{
return WeaponAbility.CrushingBlow;
}
[Constructable]
public DeathwatchBeetle() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
public DeathwatchBeetle() : base( AIType.AI_Melee, Core.ML ? FightMode.Aggressor : FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a deathwatch beetle";
Body = 242;
@ -30,7 +30,6 @@ namespace Server.Mobiles
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 35, 40 );
SetResistance( ResistanceType.Fire, 15, 30 );
SetResistance( ResistanceType.Cold, 15, 30 );
@ -53,7 +52,6 @@ namespace Server.Mobiles
case 3: PackItem( new LeatherLegs() ); break;
case 4: PackItem( new LeatherCap() ); break;
case 5: PackItem( new LeatherChest() ); break;
}
if ( Utility.RandomDouble() < .5 )
@ -95,15 +93,40 @@ namespace Server.Mobiles
AddLoot( LootPack.Potions, 1 );
}
public override int Feathers{ get{ return 50; } }
public override int Meat{ get{ return 1; } }
public override void AlterMeleeDamageTo( Mobile to, ref int damage )
{
if ( Utility.RandomBool() && (this.Mana > 14) && to != null )
{
damage = (damage + (damage / 2));
to.SendLocalizedMessage( 1060091 ); // You take extra damage from the crushing attack!
to.PlaySound( 0x1E1 );
to.FixedParticles( 0x377A, 1, 32, 0x26da, 0, 0, 0 );
Mana -= 15;
}
}
/*
* Death spit: 0x118
* Effect: source.MovingParticles( m, 0x36D4, 1, 0, false, false, 0x3F, 0, 0x1F73, 1, 0, 255, 0x100 );
* Message: 1070821
*/
public override void OnDamage( int amount, Mobile from, bool willKill )
{
Mobile combatant = Combatant;
if ( combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 12 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
return;
if( Utility.Random( 10 ) == 0 )
PoisonAttack( combatant );
base.OnDamage( amount, from, willKill );
}
public void PoisonAttack( Mobile m )
{
DoHarmful( m );
this.MovingParticles( m, 0x36D4, 1, 0, false, false, 0x3F, 0, 0x1F73, 1, 0, (EffectLayer)255, 0x100 );
m.ApplyPoison( this, Poison.Regular );
m.SendLocalizedMessage( 1070821, this.Name ); // %s spits a poisonous substance at you!
}
public override int Hides{ get{ return 8; } }
public DeathwatchBeetle( Serial serial ) : base( serial )
{
}

View file

@ -1,6 +1,7 @@
using System;
using System.Collections;
using Server;
using Server.Network;
using Server.Items;
namespace Server.Mobiles
@ -19,6 +20,8 @@ namespace Server.Mobiles
SetDex( 51, 75 );
SetInt( 41, 55 );
SetMana ( 30 );
SetHits( 151, 180 );
SetDamage( 6, 12 );
@ -48,8 +51,6 @@ namespace Server.Mobiles
case 2: PackItem( new Axle() ); break;
}
}
}
@ -59,18 +60,6 @@ namespace Server.Mobiles
AddLoot( LootPack.Meager );
AddLoot( LootPack.Average );
}
public override int Meat{ get{ return 1; } }
public override int Hides{ get{ return 10; } }
public override HideType HideType{ get{ return HideType.Spined; } }
// TODO: Soul Sap
/*
* Message: 1070820
* Spits pool of acid (blood, hue 0x3F), hits lost 6-10 per second/step
* Damage is resistable (physical)
* Acid last 10 seconds
*/
public override int GetAngerSound()
{
@ -101,12 +90,13 @@ namespace Server.Mobiles
{
base.OnGaveMeleeAttack (defender);
if ( 0.1 > Utility.RandomDouble() )
if ( Utility.RandomBool() )
{
if ( !IsBeingDrained( defender ) )
if ( !IsBeingDrained( defender ) && Mana > 14)
{
defender.SendLocalizedMessage( 1070848 ); // You feel your life force being stolen away.
BeginLifeDrain( defender, this );
Mana-=15;
}
}
}
@ -135,7 +125,7 @@ namespace Server.Mobiles
{
if ( m.Alive )
{
int damageGiven = AOS.Damage( m, from, 5, 100, 0, 0, 0, 0 );
int damageGiven = AOS.Damage( m, from, 5, 0, 0, 0, 0, 100 );
from.Hits += damageGiven;
}
@ -157,14 +147,33 @@ namespace Server.Mobiles
m.SendLocalizedMessage( 1070849 ); // The drain on your life force is gone.
}
/*
public override bool OnBeforeDeath()
public override void OnDamage( int amount, Mobile from, bool willKill )
{
SpillAcid( 1, 4, 10, 6, 10 );
return base.OnBeforeDeath();
if ( from != null && from.Map != null )
{
int amt=0;
Mobile target = this;
int rand = Utility.Random( 1, 100 );
if ( willKill )
{
amt = ((( rand % 5 ) >> 2 ) + 3);
}
if ( ( Hits < 100 ) && ( rand < 21 ) )
{
target = ( rand % 2 ) < 1 ? this : from;
amt++;
}
if ( amt > 0 )
{
SpillAcid( target, amt, "slime" );
from.SendLocalizedMessage( 1070820 );
if ( Mana > 14)
Mana -= 15;
amt ^= amt;
}
}
base.OnDamage( amount, from, willKill );
}
*/
public Kappa( Serial serial ) : base( serial )
{

View file

@ -2864,6 +2864,20 @@ namespace Server.Mobiles
list.Add( 1060776, "{0}\t{1}", pl.Rank.Title, faction.Definition.PropName ); // ~1_val~, ~2_val~
}
}
if ( Core.ML )
{
for ( int i = AllFollowers.Count - 1; i >= 0; i-- )
{
BaseCreature c = AllFollowers[ i ] as BaseCreature;
if ( c != null && c.ControlOrder == OrderType.Guard )
{
list.Add( 501129 ); // guarded
break;
}
}
}
}
public override void OnSingleClick( Mobile from )