Fixes casting checks

This commit is contained in:
Kamron Batman 2018-08-19 01:38:55 +08:00
parent 7ea00fbf4f
commit 03dd5f1926
431 changed files with 5616 additions and 6250 deletions

View file

@ -14,7 +14,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1063347, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido or Ninjitsu skill to perform that attack!
return false;

View file

@ -17,7 +17,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1063347, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido or Ninjitsu skill to perform that attack!
return false;

View file

@ -15,7 +15,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1063347, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido or Ninjitsu skill to perform that attack!
return false;
@ -28,7 +28,7 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
ClearCurrentAbility( attacker );
@ -41,7 +41,7 @@ namespace Server.Items
DefenseMasteryInfo info = m_Table[attacker] as DefenseMasteryInfo;
if( info != null )
if ( info != null )
EndDefense( (object)info );
ResistanceMod mod = new ResistanceMod( ResistanceType.Physical, 50 + modifier );
@ -76,7 +76,7 @@ namespace Server.Items
{
DefenseMasteryInfo info = m_Table[targ] as DefenseMasteryInfo;
if( info == null )
if ( info == null )
return false;
damageMalus = info.m_DamageMalus;
@ -87,10 +87,10 @@ namespace Server.Items
{
DefenseMasteryInfo info = (DefenseMasteryInfo)state;
if( info.m_Mod != null )
if ( info.m_Mod != null )
info.m_From.RemoveResistanceMod( info.m_Mod );
if( info.m_Timer != null )
if ( info.m_Timer != null )
info.m_Timer.Stop();
// No message is sent to the player.

View file

@ -90,15 +90,15 @@ namespace Server.Items
defender.Mount.Rider = null;
}
if( attacker is PlayerMobile )
if ( attacker is PlayerMobile )
{
(attacker as PlayerMobile).SetMountBlock(BlockMountType.DismountRecovery, RemountDelay, true );
}
else if( Core.ML && attacker is BaseCreature )
else if ( Core.ML && attacker is BaseCreature )
{
BaseCreature bc = attacker as BaseCreature;
if( bc.ControlMaster is PlayerMobile )
if ( bc.ControlMaster is PlayerMobile )
{
PlayerMobile pm = bc.ControlMaster as PlayerMobile;

View file

@ -16,7 +16,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1063347, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido or Ninjitsu skill to perform that attack!
return false;
@ -37,9 +37,9 @@ namespace Server.Items
public override bool Validate( Mobile from )
{
if( base.Validate( from ) )
if ( base.Validate( from ) )
{
if( from.Mounted )
if ( from.Mounted )
return true;
else
{
@ -53,7 +53,7 @@ namespace Server.Items
public void Use( Mobile attacker, Mobile defender )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) || attacker.Weapon == null ) //sanity
if ( !Validate( attacker ) || !CheckMana( attacker, true ) || attacker.Weapon == null ) //sanity
return;
ClearCurrentAbility( attacker );

View file

@ -21,7 +21,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 )
{
from.SendLocalizedMessage( 1063352, "50" ); // You need ~1_SKILL_REQUIREMENT~ Ninjitsu skill to perform that attack!
return false;
@ -32,10 +32,10 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
if( Registry.Contains( attacker ) )
if ( Registry.Contains( attacker ) )
{
DualWieldTimer existingtimer = (DualWieldTimer)Registry[attacker];
existingtimer.Stop();

View file

@ -21,7 +21,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1063347, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido or Ninjitsu skill to perform that attack!
return false;
@ -32,10 +32,10 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
if( Registry.Contains( defender ) )
if ( Registry.Contains( defender ) )
{
FeintTimer existingtimer = (FeintTimer)Registry[defender];
existingtimer.Stop();

View file

@ -17,7 +17,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 && GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1063347, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido or Ninjitsu skill to perform that attack!
return false;
@ -33,19 +33,19 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) ) //Mana check after check that there are targets
if ( !Validate( attacker ) ) //Mana check after check that there are targets
return;
ClearCurrentAbility( attacker );
Map map = attacker.Map;
if( map == null )
if ( map == null )
return;
BaseWeapon weapon = attacker.Weapon as BaseWeapon;
if( weapon == null )
if ( weapon == null )
return;
ArrayList list = new ArrayList();
@ -59,22 +59,22 @@ namespace Server.Items
{
Mobile m = (Mobile)list[i];
if( m != defender && m != attacker && SpellHelper.ValidIndirectTarget( attacker, m ) )
if ( m != defender && m != attacker && SpellHelper.ValidIndirectTarget( attacker, m ) )
{
if( m == null || m.Deleted || m.Map != attacker.Map || !m.Alive || !attacker.CanSee( m ) || !attacker.CanBeHarmful( m ) )
if ( m == null || m.Deleted || m.Map != attacker.Map || !m.Alive || !attacker.CanSee( m ) || !attacker.CanBeHarmful( m ) )
continue;
if( !attacker.InRange( m, weapon.MaxRange ) )
if ( !attacker.InRange( m, weapon.MaxRange ) )
continue;
if( attacker.InLOS( m ) )
if ( attacker.InLOS( m ) )
targets.Add( m );
}
}
if( targets.Count > 0 )
if ( targets.Count > 0 )
{
if( !CheckMana( attacker, true ) )
if ( !CheckMana( attacker, true ) )
return;
attacker.FixedEffect( 0x3728, 10, 15 );
@ -90,7 +90,7 @@ namespace Server.Items
Timer t = Registry[m] as Timer;
if( t != null )
if ( t != null )
{
t.Stop();
Registry.Remove( m );
@ -136,7 +136,7 @@ namespace Server.Items
protected override void OnTick()
{
if( !m_Defender.Alive || m_DamageRemaining <= 0 )
if ( !m_Defender.Alive || m_DamageRemaining <= 0 )
{
Stop();
Server.Items.FrenziedWhirlwind.Registry.Remove( m_Defender );
@ -146,18 +146,18 @@ namespace Server.Items
m_DamageRemaining -= DamagePerTick;
m_DamageToDo += DamagePerTick;
if( m_DamageRemaining <= 0 && m_DamageToDo < 1 )
if ( m_DamageRemaining <= 0 && m_DamageToDo < 1 )
m_DamageToDo = 1.0; //Confirm this 'round up' at the end
int damage = (int)m_DamageToDo;
if( damage > 0 )
if ( damage > 0 )
{
m_Defender.Damage( damage, m_Attacker );
m_DamageToDo -= damage;
}
if( !m_Defender.Alive || m_DamageRemaining <= 0 )
if ( !m_Defender.Alive || m_DamageRemaining <= 0 )
{
Stop();
Server.Items.FrenziedWhirlwind.Registry.Remove( m_Defender );

View file

@ -21,7 +21,7 @@ namespace Server.Items
public override void OnHit(Mobile attacker, Mobile defender, int damage)
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
{
return;
}

View file

@ -16,7 +16,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1070768, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido skill to perform that attack!
return false;
@ -27,7 +27,7 @@ namespace Server.Items
public override bool OnBeforeSwing( Mobile attacker, Mobile defender )
{
if( defender.Paralyzed )
if ( defender.Paralyzed )
{
attacker.SendLocalizedMessage( 1061923 ); // The target is already frozen.
return false;
@ -38,7 +38,7 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
ClearCurrentAbility( attacker );
@ -70,7 +70,7 @@ namespace Server.Items
Server.Items.ParalyzingBlow.BeginImmunity( defender, Server.Items.ParalyzingBlow.FreezeDelayDuration );
}
}
else if( !cantpara )
else if ( !cantpara )
{
AOS.Damage( defender, attacker, (int)(15.0 * (attacker.Skills[SkillName.Bushido].Value - 50.0) / 70.0 + 10), true, 100, 0, 0, 0, 0 ); //10-25
defender.Freeze(TimeSpan.FromSeconds(2.0));

View file

@ -50,7 +50,7 @@ namespace Server.Items
public override bool OnBeforeSwing( Mobile attacker, Mobile defender )
{
if( defender.Paralyzed )
if ( defender.Paralyzed )
{
attacker.SendLocalizedMessage( 1061923 ); // The target is already frozen.
return false;
@ -61,12 +61,12 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
ClearCurrentAbility( attacker );
if( IsImmune( defender ) ) //Intentionally going after Mana consumption
if ( IsImmune( defender ) ) //Intentionally going after Mana consumption
{
attacker.SendLocalizedMessage( 1070804 ); // Your target resists paralysis.
defender.SendLocalizedMessage( 1070813 ); // You resist paralysis.

View file

@ -22,7 +22,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Bushido ) < 50.0 )
if ( GetSkill( from, SkillName.Bushido ) < 50.0 )
{
from.SendLocalizedMessage( 1070768, "50" ); // You need ~1_SKILL_REQUIREMENT~ Bushido skill to perform that attack!
return false;
@ -33,24 +33,24 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !defender.Mounted )
if ( !defender.Mounted )
{
attacker.SendLocalizedMessage( 1060848 ); // This attack only works on mounted targets
ClearCurrentAbility( attacker );
return;
}
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
ClearCurrentAbility( attacker );
if( !attacker.Mounted )
if ( !attacker.Mounted )
{
Mobile mount = defender.Mount as Mobile;
BaseMount.Dismount( defender );
if( mount != null ) //Ethy mounts don't take damage
if ( mount != null ) //Ethy mounts don't take damage
{
int amount = 10 + (int)(10.0 * (attacker.Skills[SkillName.Bushido].Value - 50.0) / 70.0 + 5);
@ -65,7 +65,7 @@ namespace Server.Items
AOS.Damage( defender, attacker, amount, 100, 0, 0, 0, 0 );
if( Server.Items.ParalyzingBlow.IsImmune( defender ) ) //Does it still do damage?
if ( Server.Items.ParalyzingBlow.IsImmune( defender ) ) //Does it still do damage?
{
attacker.SendLocalizedMessage( 1070804 ); // Your target resists paralysis.
defender.SendLocalizedMessage( 1070813 ); // You resist paralysis.

View file

@ -22,7 +22,7 @@ namespace Server.Items
public override bool CheckSkills( Mobile from )
{
if( GetSkill( from, SkillName.Ninjitsu ) < 50.0 )
if ( GetSkill( from, SkillName.Ninjitsu ) < 50.0 )
{
from.SendLocalizedMessage( 1063352, "50" ); // You need ~1_SKILL_REQUIREMENT~ Ninjitsu skill to perform that attack!
return false;
@ -33,7 +33,7 @@ namespace Server.Items
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( Registry.Contains( defender ) || !Validate( attacker ) || !CheckMana( attacker, true ) )
if ( Registry.Contains( defender ) || !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
ClearCurrentAbility( attacker );
@ -73,7 +73,7 @@ namespace Server.Items
protected override void OnTick()
{
if( !m_Defender.Alive || m_DamageRemaining <= 0 )
if ( !m_Defender.Alive || m_DamageRemaining <= 0 )
{
Stop();
Server.Items.TalonStrike.Registry.Remove( m_Defender );
@ -83,19 +83,19 @@ namespace Server.Items
m_DamageRemaining -= DamagePerTick;
m_DamageToDo += DamagePerTick;
if( m_DamageRemaining <= 0 && m_DamageToDo < 1 )
if ( m_DamageRemaining <= 0 && m_DamageToDo < 1 )
m_DamageToDo = 1.0; //Confirm this 'round up' at the end
int damage = (int)m_DamageToDo;
if( damage > 0 )
if ( damage > 0 )
{
//m_Defender.Damage( damage, m_Attacker, false );
m_Defender.Hits -= damage; //Don't show damage, don't disrupt
m_DamageToDo -= damage;
}
if( !m_Defender.Alive || m_DamageRemaining <= 0 )
if ( !m_Defender.Alive || m_DamageRemaining <= 0 )
{
Stop();
Server.Items.TalonStrike.Registry.Remove( m_Defender );

View file

@ -141,7 +141,7 @@ namespace Server.Items
if ( from.Mana < mana )
{
if( ( from is BaseCreature ) && ( from as BaseCreature ).HasManaOveride )
if ( ( from is BaseCreature ) && ( from as BaseCreature ).HasManaOveride )
{
return true;
}
@ -176,7 +176,7 @@ namespace Server.Items
if ( state == null )
return false;
if( RequiresSE && !state.SupportsExpansion( Expansion.SE ) )
if ( RequiresSE && !state.SupportsExpansion( Expansion.SE ) )
{
from.SendLocalizedMessage( 1063456 ); // You must upgrade to Samurai Empire in order to use that ability.
return false;

View file

@ -578,9 +578,9 @@ namespace Server.Items
if ( !Ethics.Ethic.CheckEquip( from, this ) )
return false;
if( RequiredRace != null && from.Race != RequiredRace )
if ( RequiredRace != null && from.Race != RequiredRace )
{
if( RequiredRace == Race.Elf )
if ( RequiredRace == Race.Elf )
from.SendLocalizedMessage( 1072203 ); // Only Elves may use this.
else
from.SendMessage( "Only {0} may use this.", RequiredRace.PluralName );
@ -893,15 +893,15 @@ namespace Server.Items
// Bonus granted by successful use of Honorable Execution.
bonus += HonorableExecution.GetSwingBonus( m );
if( DualWield.Registry.Contains( m ) )
if ( DualWield.Registry.Contains( m ) )
bonus += ((DualWield.DualWieldTimer)DualWield.Registry[m]).BonusSwingSpeed;
if( Feint.Registry.Contains( m ) )
if ( Feint.Registry.Contains( m ) )
bonus -= ((Feint.FeintTimer)Feint.Registry[m]).SwingSpeedReduction;
TransformContext context = TransformationSpellHelper.GetContext( m );
if( context != null && context.Spell is ReaperFormSpell )
if ( context != null && context.Spell is ReaperFormSpell )
bonus += ((ReaperFormSpell)context.Spell).SwingSpeedBonus;
int discordanceEffect = 0;
@ -910,7 +910,7 @@ namespace Server.Items
if ( SkillHandlers.Discordance.GetEffect( m, ref discordanceEffect ) )
bonus -= discordanceEffect;
if( EssenceOfWindSpell.IsDebuffed( m ) )
if ( EssenceOfWindSpell.IsDebuffed( m ) )
bonus -= EssenceOfWindSpell.GetSSIMalus( m );
if ( bonus > 60 )
@ -985,12 +985,12 @@ namespace Server.Items
{
WeaponAbility a = WeaponAbility.GetCurrentAbility( attacker );
if( a != null && !a.OnBeforeSwing( attacker, defender ) )
if ( a != null && !a.OnBeforeSwing( attacker, defender ) )
WeaponAbility.ClearCurrentAbility( attacker );
SpecialMove move = SpecialMove.GetCurrentMove( attacker );
if( move != null && !move.OnBeforeSwing( attacker, defender ) )
if ( move != null && !move.OnBeforeSwing( attacker, defender ) )
SpecialMove.ClearCurrentMove( attacker );
}
@ -1135,22 +1135,22 @@ namespace Server.Items
double aosChance = parry / 800.0;
// Parry or Bushido over 100 grant a 5% bonus.
if( parry >= 100.0 )
if ( parry >= 100.0 )
{
chance += 0.05;
aosChance += 0.05;
}
else if( bushido >= 100.0 )
else if ( bushido >= 100.0 )
{
chance += 0.05;
}
// Evasion grants a variable bonus post ML. 50% prior.
if( Evasion.IsEvading( defender ) )
if ( Evasion.IsEvading( defender ) )
chance *= Evasion.GetParryScalar( defender );
// Low dexterity lowers the chance.
if( defender.Dex < 80 )
if ( defender.Dex < 80 )
chance = chance * (20 + defender.Dex) / 100;
if ( chance > aosChance )
@ -1216,15 +1216,15 @@ namespace Server.Items
Item armorItem;
if( positionChance < 0.07 )
if ( positionChance < 0.07 )
armorItem = defender.NeckArmor;
else if( positionChance < 0.14 )
else if ( positionChance < 0.14 )
armorItem = defender.HandArmor;
else if( positionChance < 0.28 )
else if ( positionChance < 0.28 )
armorItem = defender.ArmsArmor;
else if( positionChance < 0.43 )
else if ( positionChance < 0.43 )
armorItem = defender.HeadArmor;
else if( positionChance < 0.65 )
else if ( positionChance < 0.65 )
armorItem = defender.LegsArmor;
else
armorItem = defender.ChestArmor;
@ -1251,15 +1251,15 @@ namespace Server.Items
Item armorItem;
if( chance < 0.07 )
if ( chance < 0.07 )
armorItem = defender.NeckArmor;
else if( chance < 0.14 )
else if ( chance < 0.14 )
armorItem = defender.HandArmor;
else if( chance < 0.28 )
else if ( chance < 0.28 )
armorItem = defender.ArmsArmor;
else if( chance < 0.43 )
else if ( chance < 0.43 )
armorItem = defender.HeadArmor;
else if( chance < 0.65 )
else if ( chance < 0.65 )
armorItem = defender.LegsArmor;
else
armorItem = defender.ChestArmor;
@ -1402,12 +1402,12 @@ namespace Server.Items
WeaponAbility a = WeaponAbility.GetCurrentAbility( attacker );
SpecialMove move = SpecialMove.GetCurrentMove( attacker );
if( a != null )
if ( a != null )
{
percentageBonus += (int)(a.DamageScalar * 100) - 100;
}
if( move != null )
if ( move != null )
{
percentageBonus += (int)(move.GetDamageScalar( attacker, defender ) * 100) - 100;
}
@ -1426,11 +1426,9 @@ namespace Server.Items
if ( !attacker.Player )
{
if ( defender is PlayerMobile )
if ( defender is PlayerMobile pm )
{
PlayerMobile pm = (PlayerMobile)defender;
if( pm.EnemyOfOneType != null && pm.EnemyOfOneType != attacker.GetType() )
if ( pm.EnemyOfOneType != null && pm.EnemyOfOneType != attacker.GetType() )
{
percentageBonus += 100;
}
@ -1459,19 +1457,19 @@ namespace Server.Items
int packInstinctBonus = GetPackInstinctBonus( attacker, defender );
if( packInstinctBonus != 0 )
if ( packInstinctBonus != 0 )
{
percentageBonus += packInstinctBonus;
}
if( m_InDoubleStrike )
if ( m_InDoubleStrike )
{
percentageBonus -= 10;
}
TransformContext context = TransformationSpellHelper.GetContext( defender );
if( (m_Slayer == SlayerName.Silver || m_Slayer2 == SlayerName.Silver) && context != null && context.Spell is NecromancerSpell && context.Type != typeof( HorrificBeastSpell ) )
if ( (m_Slayer == SlayerName.Silver || m_Slayer2 == SlayerName.Silver) && context != null && context.Spell is NecromancerSpell && context.Type != typeof( HorrificBeastSpell ) )
{
// Every necromancer transformation other than horrific beast takes an additional 25% damage
percentageBonus += 25;
@ -1481,12 +1479,12 @@ namespace Server.Items
{
PlayerMobile pmAttacker = (PlayerMobile) attacker;
if( pmAttacker.HonorActive && pmAttacker.InRange( defender, 1 ) )
if ( pmAttacker.HonorActive && pmAttacker.InRange( defender, 1 ) )
{
percentageBonus += 25;
}
if( pmAttacker.SentHonorContext != null && pmAttacker.SentHonorContext.Target == defender )
if ( pmAttacker.SentHonorContext != null && pmAttacker.SentHonorContext.Target == defender )
{
percentageBonus += pmAttacker.SentHonorContext.PerfectionDamageBonus;
}
@ -1502,11 +1500,11 @@ namespace Server.Items
damage = AOS.Scale( damage, 100 + percentageBonus );
#endregion
if ( attacker is BaseCreature )
((BaseCreature)attacker).AlterMeleeDamageTo( defender, ref damage );
BaseCreature bcAtt = attacker as BaseCreature;
BaseCreature bcDef = defender as BaseCreature;
if ( defender is BaseCreature )
((BaseCreature)defender).AlterMeleeDamageFrom( attacker, ref damage );
bcAtt?.AlterMeleeDamageTo( defender, ref damage );
bcDef?.AlterMeleeDamageFrom( attacker, ref damage );
damage = AbsorbDamage( attacker, defender, damage );
@ -1531,9 +1529,7 @@ namespace Server.Items
if ( Core.ML && this is BaseRanged )
{
BaseQuiver quiver = attacker.FindItemOnLayer( Layer.Cloak ) as BaseQuiver;
if ( quiver != null )
if ( attacker.FindItemOnLayer( Layer.Cloak ) is BaseQuiver quiver )
quiver.AlterBowDamage( ref phys, ref fire, ref cold, ref pois, ref nrgy, ref chaos, ref direct );
}
@ -1661,13 +1657,9 @@ namespace Server.Items
}
}
if ( attacker is VampireBatFamiliar )
if ( attacker is VampireBatFamiliar bc )
{
BaseCreature bc = (BaseCreature)attacker;
Mobile caster = bc.ControlMaster;
if ( caster == null )
caster = bc.SummonMaster;
Mobile caster = bc.ControlMaster ?? bc.SummonMaster;
if ( caster != null && caster.Map == bc.Map && caster.InRange( bc, 2 ) )
caster.Hits += damage;
@ -1729,20 +1721,14 @@ namespace Server.Items
DoLowerDefense( attacker, defender );
}
if ( attacker is BaseCreature )
((BaseCreature)attacker).OnGaveMeleeAttack( defender );
bcAtt?.OnGaveMeleeAttack( defender );
bcDef?.OnGotMeleeAttack( attacker );
if ( defender is BaseCreature )
((BaseCreature)defender).OnGotMeleeAttack( attacker );
a?.OnHit( attacker, defender, damage );
move?.OnHit( attacker, defender, damage );
if ( a != null )
a.OnHit( attacker, defender, damage );
if ( move != null )
move.OnHit( attacker, defender, damage );
if ( defender is IHonorTarget && ((IHonorTarget)defender).ReceivedHonorContext != null )
((IHonorTarget)defender).ReceivedHonorContext.OnTargetHit( attacker );
if ( defender is IHonorTarget it )
it.ReceivedHonorContext?.OnTargetHit( attacker );
if ( !(this is BaseRanged) )
{
@ -1777,7 +1763,7 @@ namespace Server.Items
TransformContext context = TransformationSpellHelper.GetContext( attacker );
if( context != null && context.Spell is ReaperFormSpell )
if ( context != null && context.Spell is ReaperFormSpell )
damageBonus += ((ReaperFormSpell)context.Spell).SpellDamageBonus;
}
@ -1930,11 +1916,11 @@ namespace Server.Items
double scalar = Core.ML ? 1.0 : ( 11 - from.GetDistanceToSqrt( m ) ) / 10;
double damage = GetBaseDamage( from );
if(scalar <= 0)
if (scalar <= 0)
{
continue;
}
else if( scalar < 1.0 )
else if ( scalar < 1.0 )
{
damage *= ( 11 - from.GetDistanceToSqrt( m ) ) / 10;
}
@ -1952,7 +1938,7 @@ namespace Server.Items
SlayerEntry atkSlayer = SlayerGroup.GetEntryByName( atkWeapon.Slayer );
SlayerEntry atkSlayer2 = SlayerGroup.GetEntryByName( atkWeapon.Slayer2 );
if( atkWeapon is ButchersWarCleaver && TalismanSlayer.Slays( TalismanSlayerName.Bovine, defender ) )
if ( atkWeapon is ButchersWarCleaver && TalismanSlayer.Slays( TalismanSlayerName.Bovine, defender ) )
return CheckSlayerResult.Slayer;
if ( atkSlayer != null && atkSlayer.Slays( defender ) || atkSlayer2 != null && atkSlayer2.Slays( defender ) )
@ -1967,15 +1953,15 @@ namespace Server.Items
{
ISlayer defISlayer = Spellbook.FindEquippedSpellbook( defender );
if( defISlayer == null )
if ( defISlayer == null )
defISlayer = defender.Weapon as ISlayer;
if( defISlayer != null )
if ( defISlayer != null )
{
SlayerEntry defSlayer = SlayerGroup.GetEntryByName( defISlayer.Slayer );
SlayerEntry defSlayer2 = SlayerGroup.GetEntryByName( defISlayer.Slayer2 );
if( defSlayer != null && defSlayer.Group.OppositionSuperSlays( attacker ) || defSlayer2 != null && defSlayer2.Group.OppositionSuperSlays( attacker ) )
if ( defSlayer != null && defSlayer.Group.OppositionSuperSlays( attacker ) || defSlayer2 != null && defSlayer2.Group.OppositionSuperSlays( attacker ) )
return CheckSlayerResult.Opposition;
}
}
@ -2003,7 +1989,7 @@ namespace Server.Items
public virtual void GetDamageTypes( Mobile wielder, out int phys, out int fire, out int cold, out int pois, out int nrgy, out int chaos, out int direct )
{
if( wielder is BaseCreature )
if ( wielder is BaseCreature )
{
BaseCreature bc = (BaseCreature)wielder;
@ -2028,11 +2014,11 @@ namespace Server.Items
CraftResourceInfo resInfo = CraftResources.GetInfo( m_Resource );
if( resInfo != null )
if ( resInfo != null )
{
CraftAttributeInfo attrInfo = resInfo.AttributeInfo;
if( attrInfo != null )
if ( attrInfo != null )
{
int left = phys;
@ -2051,7 +2037,7 @@ namespace Server.Items
private int ApplyCraftAttributeElementDamage( int attrDamage, ref int element, int totalRemaining )
{
if( totalRemaining <= 0 )
if ( totalRemaining <= 0 )
return 0;
if ( attrDamage <= 0 )
@ -2062,7 +2048,7 @@ namespace Server.Items
if ( (appliedDamage + element) > 100 )
appliedDamage = 100 - element;
if( appliedDamage > totalRemaining )
if ( appliedDamage > totalRemaining )
appliedDamage = totalRemaining;
element += appliedDamage;
@ -2241,7 +2227,7 @@ namespace Server.Items
int damageBonus = AosAttributes.GetValue( attacker, AosAttribute.WeaponDamage );
// Horrific Beast transformation gives a +25% bonus to damage.
if( TransformationSpellHelper.UnderTransformation( attacker, typeof( HorrificBeastSpell ) ) )
if ( TransformationSpellHelper.UnderTransformation( attacker, typeof( HorrificBeastSpell ) ) )
damageBonus += 25;
// Divine Fury gives a +10% bonus to damage.
@ -2593,10 +2579,10 @@ namespace Server.Items
if ( GetSaveFlag( flags, SaveFlag.Slayer2 ) )
writer.Write( (int)m_Slayer2 );
if( GetSaveFlag( flags, SaveFlag.ElementalDamages ) )
if ( GetSaveFlag( flags, SaveFlag.ElementalDamages ) )
m_AosElementDamages.Serialize( writer );
if( GetSaveFlag( flags, SaveFlag.EngravedText ) )
if ( GetSaveFlag( flags, SaveFlag.EngravedText ) )
writer.Write( (string) m_EngravedText );
}
@ -2801,20 +2787,20 @@ namespace Server.Items
if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) )
m_PlayerConstructed = true;
if( GetSaveFlag( flags, SaveFlag.SkillBonuses ) )
if ( GetSaveFlag( flags, SaveFlag.SkillBonuses ) )
m_AosSkillBonuses = new AosSkillBonuses( this, reader );
else
m_AosSkillBonuses = new AosSkillBonuses( this );
if( GetSaveFlag( flags, SaveFlag.Slayer2 ) )
if ( GetSaveFlag( flags, SaveFlag.Slayer2 ) )
m_Slayer2 = (SlayerName)reader.ReadInt();
if( GetSaveFlag( flags, SaveFlag.ElementalDamages ) )
if ( GetSaveFlag( flags, SaveFlag.ElementalDamages ) )
m_AosElementDamages = new AosElementAttributes( this, reader );
else
m_AosElementDamages = new AosElementAttributes( this );
if( GetSaveFlag( flags, SaveFlag.EngravedText ) )
if ( GetSaveFlag( flags, SaveFlag.EngravedText ) )
m_EngravedText = reader.ReadString();
break;
@ -3020,25 +3006,25 @@ namespace Server.Items
int currentMax = 50;
int hue = 0;
if( pois >= currentMax )
if ( pois >= currentMax )
{
hue = 1267 + (pois - 50) / 10;
currentMax = pois;
}
if( fire >= currentMax )
if ( fire >= currentMax )
{
hue = 1255 + (fire - 50) / 10;
currentMax = fire;
}
if( nrgy >= currentMax )
if ( nrgy >= currentMax )
{
hue = 1273 + (nrgy - 50) / 10;
currentMax = nrgy;
}
if( cold >= currentMax )
if ( cold >= currentMax )
{
hue = 1261 + (cold - 50) / 10;
currentMax = cold;
@ -3145,7 +3131,7 @@ namespace Server.Items
if ( m_Quality == WeaponQuality.Exceptional )
list.Add( 1060636 ); // exceptional
if( RequiredRace == Race.Elf )
if ( RequiredRace == Race.Elf )
list.Add( 1075086 ); // Elves Only
if ( ArtifactRarity > 0 )
@ -3157,17 +3143,17 @@ namespace Server.Items
if ( m_Poison != null && m_PoisonCharges > 0 )
list.Add( 1062412 + m_Poison.Level, m_PoisonCharges.ToString() );
if( m_Slayer != SlayerName.None )
if ( m_Slayer != SlayerName.None )
{
SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer );
if( entry != null )
if ( entry != null )
list.Add( entry.Title );
}
if( m_Slayer2 != SlayerName.None )
if ( m_Slayer2 != SlayerName.None )
{
SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer2 );
if( entry != null )
if ( entry != null )
list.Add( entry.Title );
}
@ -3396,17 +3382,17 @@ namespace Server.Items
if ( m_Identified || from.AccessLevel >= AccessLevel.GameMaster )
{
if( m_Slayer != SlayerName.None )
if ( m_Slayer != SlayerName.None )
{
SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer );
if( entry != null )
if ( entry != null )
attrs.Add( new EquipInfoAttribute( entry.Title ) );
}
if( m_Slayer2 != SlayerName.None )
if ( m_Slayer2 != SlayerName.None )
{
SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer2 );
if( entry != null )
if ( entry != null )
attrs.Add( new EquipInfoAttribute( entry.Title ) );
}
@ -3419,7 +3405,7 @@ namespace Server.Items
if ( m_AccuracyLevel != WeaponAccuracyLevel.Regular )
attrs.Add( new EquipInfoAttribute( 1038010 + (int)m_AccuracyLevel ) );
}
else if( m_Slayer != SlayerName.None || m_Slayer2 != SlayerName.None || m_DurabilityLevel != WeaponDurabilityLevel.Regular || m_DamageLevel != WeaponDamageLevel.Regular || m_AccuracyLevel != WeaponAccuracyLevel.Regular )
else if ( m_Slayer != SlayerName.None || m_Slayer2 != SlayerName.None || m_DurabilityLevel != WeaponDurabilityLevel.Regular || m_DamageLevel != WeaponDamageLevel.Regular || m_AccuracyLevel != WeaponAccuracyLevel.Regular )
attrs.Add( new EquipInfoAttribute( 1038000 ) ); // Unidentified
if ( m_Poison != null && m_PoisonCharges > 0 )
@ -3488,7 +3474,7 @@ namespace Server.Items
else
Attributes.WeaponDamage = 15;
if( Core.ML )
if ( Core.ML )
{
Attributes.WeaponDamage += (int)(from.Skills.ArmsLore.Value / 20);

View file

@ -100,10 +100,10 @@ namespace Server.Items
abyss.Opposition = new SlayerGroup[]{ elemental, fey };
abyss.FoundOn = new Type[]{ typeof( BloodElemental ) };
if( Core.AOS )
if ( Core.AOS )
{
abyss.Super = new SlayerEntry( SlayerName.Exorcism, typeof( AbysmalHorror ), typeof( ArcaneDaemon ), typeof( Balron ), typeof( BoneDemon ), typeof( ChaosDaemon ), typeof( Daemon ), typeof( SummonedDaemon ), typeof( DemonKnight ), typeof( Devourer ), typeof( EnslavedGargoyle ), typeof( FanDancer ), typeof( FireGargoyle ), typeof( Gargoyle ), typeof( GargoyleDestroyer ), typeof( GargoyleEnforcer ), typeof( Gibberling ), typeof( HordeMinion ), typeof( IceFiend ), typeof( Imp ), typeof( Impaler ), typeof( Moloch ), typeof( Oni ), typeof( Ravager ), typeof( Semidar ), typeof( StoneGargoyle ), typeof( Succubus ), typeof( TsukiWolf ) );
abyss.Entries = new SlayerEntry[]
{
// Daemon Dismissal & Balron Damnation have been removed and moved up to super slayer on OSI.
@ -204,4 +204,4 @@ namespace Server.Items
{
}
}
}
}