170 lines
5.2 KiB
C#
170 lines
5.2 KiB
C#
using System;
|
|
|
|
namespace Server.Mobiles;
|
|
|
|
public class RuneCorruption : MonsterAbilitySingleTargetDoT
|
|
{
|
|
public override MonsterAbilityType AbilityType => MonsterAbilityType.RuneCorruption;
|
|
public override MonsterAbilityTrigger AbilityTrigger => MonsterAbilityTrigger.GiveMeleeDamage;
|
|
public override double ChanceToTrigger => 0.05;
|
|
|
|
private const string Name = "RuneCorruption";
|
|
|
|
protected override void OnBeforeTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender)
|
|
{
|
|
if (RemoveEffect(source, defender))
|
|
{
|
|
defender.SendLocalizedMessage(1070845); // The creature continues to corrupt your armor!
|
|
}
|
|
else
|
|
{
|
|
defender.SendLocalizedMessage(1070846); // The creature magically corrupts your armor!
|
|
}
|
|
}
|
|
|
|
protected override void OnTarget(MonsterAbilityTrigger trigger, BaseCreature source, Mobile defender)
|
|
{
|
|
base.OnTarget(trigger, source, defender);
|
|
|
|
/**
|
|
* Rune Corruption
|
|
* Start cliloc: 1070846 "The creature magically corrupts your armor!"
|
|
* Effect: All resistances -70 (lowest 0) for 5 seconds
|
|
* End ASCII: "The corruption of your armor has worn off"
|
|
*/
|
|
|
|
source.DoHarmful(defender);
|
|
|
|
if (Core.ML)
|
|
{
|
|
if (defender.PhysicalResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Physical,
|
|
Name,
|
|
-(defender.PhysicalResistance / 2)
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.FireResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Fire,
|
|
Name,
|
|
-(defender.FireResistance / 2)
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.ColdResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Cold,
|
|
Name,
|
|
-(defender.ColdResistance / 2)
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.PoisonResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Poison,
|
|
Name,
|
|
-(defender.PoisonResistance / 2)
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.EnergyResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Energy,
|
|
Name,
|
|
-(defender.EnergyResistance / 2)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (defender.PhysicalResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Physical,
|
|
Name,
|
|
defender.PhysicalResistance > 70 ? -70 : -defender.PhysicalResistance
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.FireResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Fire,
|
|
Name,
|
|
defender.FireResistance > 70 ? -70 : -defender.FireResistance
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.ColdResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Cold,
|
|
Name,
|
|
defender.ColdResistance > 70 ? -70 : -defender.ColdResistance
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.PoisonResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Poison,
|
|
Name,
|
|
defender.PoisonResistance > 70 ? -70 : -defender.PoisonResistance
|
|
)
|
|
);
|
|
}
|
|
|
|
if (defender.EnergyResistance > 0)
|
|
{
|
|
defender.AddResistanceMod(
|
|
new ResistanceMod(
|
|
ResistanceType.Energy,
|
|
Name,
|
|
defender.EnergyResistance > 70 ? -70 : -defender.EnergyResistance
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
defender.FixedEffect(0x37B9, 10, 5);
|
|
}
|
|
|
|
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)
|
|
{
|
|
|
|
defender.SendLocalizedMessage(1071967); // The corruption of your armor has worn off
|
|
}
|
|
}
|