Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using Server.Mobiles;
namespace Server.Items
{
/// <summary>
/// Gain a defensive advantage over your primary opponent for a short time.
/// </summary>
public class Feint : WeaponAbility
{
private static Dictionary<Mobile, FeintTimer> m_Registry = new Dictionary<Mobile, FeintTimer>();
public static Dictionary<Mobile, FeintTimer> Registry { get { return m_Registry; } }
public Feint()
{
}
public override int BaseMana { get { return 30; } }
public override SkillName GetSecondarySkill(Mobile from)
{
return from.Skills[SkillName.Ninjitsu].Base > from.Skills[SkillName.Bushido].Base ? SkillName.Ninjitsu : SkillName.Bushido;
}
public override void OnHit( Mobile attacker, Mobile defender, int damage )
{
if( !Validate( attacker ) || !CheckMana( attacker, true ) )
return;
if( Registry.ContainsKey( attacker ) )
{
if (m_Registry[attacker] != null)
m_Registry[attacker].Stop();
Registry.Remove(attacker);
}
bool creature = attacker is BaseCreature;
ClearCurrentAbility( attacker );
attacker.SendLocalizedMessage( 1063360 ); // You baffle your target with a feint!
defender.SendLocalizedMessage( 1063361 ); // You were deceived by an attacker's feint!
attacker.FixedParticles( 0x3728, 1, 13, 0x7F3, 0x962, 0, EffectLayer.Waist );
attacker.PlaySound(0x525);
double skill = creature ? attacker.Skills[SkillName.Bushido].Value :
Math.Max(attacker.Skills[SkillName.Ninjitsu].Value, attacker.Skills[SkillName.Bushido].Value);
int bonus = (int)(20.0 + 3.0 * (skill - 50.0) / 7.0);
FeintTimer t = new FeintTimer( attacker, defender, bonus ); //20-50 % decrease
t.Start();
m_Registry[attacker] = t;
string args = String.Format("{0}\t{1}", defender.Name, bonus);
BuffInfo.AddBuff(attacker, new BuffInfo(BuffIcon.Feint, 1151308, 1151307, TimeSpan.FromSeconds(6), attacker, args));
if (creature)
PetTrainingHelper.OnWeaponAbilityUsed((BaseCreature)attacker, SkillName.Bushido);
}
public class FeintTimer : Timer
{
private Mobile m_Owner;
private Mobile m_Enemy;
private int m_DamageReduction;
public Mobile Owner { get { return m_Owner; } }
public Mobile Enemy { get { return m_Enemy; } }
public int DamageReduction { get { return m_DamageReduction; } }
public FeintTimer(Mobile owner, Mobile enemy, int DamageReduction)
: base(TimeSpan.FromSeconds(6.0))
{
m_Owner = owner;
m_Enemy = enemy;
m_DamageReduction = DamageReduction;
Priority = TimerPriority.FiftyMS;
}
protected override void OnTick()
{
Registry.Remove(m_Owner);
}
}
}
}