ModernUO/Projects/UOContent/Mobiles/Abilities/FanningFire.cs

92 lines
2.8 KiB
C#

using System;
namespace Server.Mobiles;
public class FanningFire : MonsterAbilitySingleTargetDoT
{
public override MonsterAbilityType AbilityType => MonsterAbilityType.FanningFire;
public override MonsterAbilityTrigger AbilityTrigger => MonsterAbilityTrigger.SpecialAttack;
public FanningFire(double chanceToTrigger, int fireResistMod, int minDamage, int maxDamage)
{
ChanceToTrigger = chanceToTrigger;
FireResistMod = fireResistMod;
MinDamage = minDamage;
MaxDamage = maxDamage;
}
public sealed override double ChanceToTrigger { get; }
public int FireResistMod { get; }
public int MinDamage { get; }
public int MaxDamage { get; }
public const string Name = "FanningFire";
protected override void OnBeforeTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender)
{
// Renew the effects
RemoveEffect(source, defender);
// The creature fans you with fire, reducing your resistance to fire attacks.
defender.SendLocalizedMessage(1070833);
}
protected override void OnTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender)
{
base.OnTarget(trigger, source, defender);
/**
* Fanning Fire
* Start cliloc: 1070833
* Effect: Fire res -10% for 10 seconds. Does not stack.
* Damage: 35-45, 100% fire
* End cliloc: 1070834
* Sound: 0x208
* Graphic:
* - Type: "3"
* - From: "0x57D4F5B"
* - To: "0x0"
* - ItemId: "0x3709"
* - ItemIdName: "fire column"
* - FromLocation: "(994 325, 16)"
* - ToLocation: "(994 325, 16)"
* - Speed: "10"
* - Duration: "30"
* - FixedDirection: "True"
* - Explode: "False"
* - Hue: "0x0"
* - RenderMode: "0x0"
* - Effect: "0x34"
* - ExplodeEffect: "0x1"
* - ExplodeSound: "0x0"
* - Layer: "5"
* - Unknown: "0x0"
*/
source.DoHarmful(defender);
defender.AddResistanceMod(new ResistanceMod(ResistanceType.Fire, Name, FireResistMod));
defender.FixedParticles(0x3709, 10, 30, 0x34, EffectLayer.RightFoot);
defender.PlaySound(0x208);
AOS.Damage(defender, source, Utility.RandomMinMax(MinDamage, MaxDamage), 0, 100, 0, 0, 0);
}
protected override void EffectTick(BaseCreature source, Mobile defender, ref TimeSpan nextDelay)
{
}
protected override void EndEffect(BaseCreature source, Mobile defender)
{
defender.RemoveResistanceMod(Name);
}
protected override void OnEffectExpired(BaseCreature source, Mobile defender)
{
// Your resistance to fire attacks has returned.
defender.SendLocalizedMessage(1070834);
}
}