ModernUO/Projects/UOContent/Mobiles/Abilities/StunAttack.cs
Kamron Batman dc6f75c3b4
feat: Adds stun, death explosion, poison gas, throw hatchet abilities (#1180)
* Adds Colossal Blow
* Adds Death Explosion
* Adds Poison Gas
* Adds AOE Poison Gas (Counter)
* Adds Stun
* Adds Throw Hatchet
2022-10-02 10:16:37 -07:00

44 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using Server.Items;
namespace Server.Mobiles;
public abstract class StunAttack : MonsterAbility
{
// Prevents infinite loop
private HashSet<BaseCreature> _stunning;
public override MonsterAbilityTrigger AbilityTrigger => MonsterAbilityTrigger.GiveMeleeDamage;
public override MonsterAbilityType AbilityType => MonsterAbilityType.Stun;
public override double ChanceToTrigger => 0.3;
public virtual TimeSpan StunDuration => TimeSpan.FromSeconds(5.0);
public override bool CanTrigger(BaseCreature source) => !_stunning.Contains(source) && base.CanTrigger(source);
public override void Trigger(BaseCreature source, Mobile target)
{
if (source.Weapon is BaseWeapon weapon)
{
_stunning ??= new HashSet<BaseCreature>();
_stunning.Add(source);
weapon.OnHit(source, target);
_stunning.Remove(source);
}
if (target.Alive)
{
target.Frozen = true;
Timer.DelayCall(StunDuration, Recover, target);
}
base.Trigger(source, target);
}
protected virtual void Recover(Mobile defender)
{
defender.Frozen = false;
defender.Combatant = null;
}
}