Spell/Script: Stasis Field
Port From (https://github.com/TrinityCore/TrinityCore/commit/adb5535483cf202572ae34065959aa94cf0304e8)
This commit is contained in:
@@ -277,6 +277,9 @@ namespace Scripts.Spells.Generic
|
|||||||
// CorruptinPlagueEntrys
|
// CorruptinPlagueEntrys
|
||||||
public const uint CorruptingPlague = 40350;
|
public const uint CorruptingPlague = 40350;
|
||||||
|
|
||||||
|
// StasisFieldEntrys
|
||||||
|
public const uint StasisField = 40307;
|
||||||
|
|
||||||
// SiegeTankControl
|
// SiegeTankControl
|
||||||
public const uint SiegeTankControl = 47963;
|
public const uint SiegeTankControl = 47963;
|
||||||
|
|
||||||
@@ -294,7 +297,7 @@ namespace Scripts.Spells.Generic
|
|||||||
public const uint FaceRage = 99947;
|
public const uint FaceRage = 99947;
|
||||||
public const uint ImpatientMind = 187213;
|
public const uint ImpatientMind = 187213;
|
||||||
|
|
||||||
//enum DefenderOfAzerothData
|
// DefenderOfAzerothData
|
||||||
public const uint DeathGateTeleportStormwind = 316999;
|
public const uint DeathGateTeleportStormwind = 316999;
|
||||||
public const uint DeathGateTeleportOrgrimmar = 317000;
|
public const uint DeathGateTeleportOrgrimmar = 317000;
|
||||||
}
|
}
|
||||||
@@ -335,6 +338,9 @@ namespace Scripts.Spells.Generic
|
|||||||
public const uint ShardHideBoar = 22180;
|
public const uint ShardHideBoar = 22180;
|
||||||
public const uint AetherRay = 22181;
|
public const uint AetherRay = 22181;
|
||||||
|
|
||||||
|
// StasisFieldEntrys
|
||||||
|
public const uint DaggertailLizard = 22255;
|
||||||
|
|
||||||
// DefenderOfAzerothData
|
// DefenderOfAzerothData
|
||||||
public const uint Nazgrim = 161706;
|
public const uint Nazgrim = 161706;
|
||||||
public const uint Trollbane = 161707;
|
public const uint Trollbane = 161707;
|
||||||
@@ -3777,6 +3783,35 @@ namespace Scripts.Spells.Generic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Script] // 40306 - Stasis Field
|
||||||
|
class spell_stasis_field_aura : AuraScript
|
||||||
|
{
|
||||||
|
public override bool Validate(SpellInfo spellInfo)
|
||||||
|
{
|
||||||
|
return ValidateSpellInfo(SpellIds.StasisField);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPeriodic(AuraEffect aurEff)
|
||||||
|
{
|
||||||
|
Unit owner = GetTarget();
|
||||||
|
|
||||||
|
List<Creature> targets = new();
|
||||||
|
StasisFieldSearcher creature_check = new(owner, 15.0f);
|
||||||
|
CreatureListSearcher creature_searcher = new(owner, targets, creature_check);
|
||||||
|
Cell.VisitGridObjects(owner, creature_searcher, 15.0f);
|
||||||
|
|
||||||
|
if (!targets.Empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
PreventDefaultAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
OnEffectPeriodic.Add(new EffectPeriodicHandler(OnPeriodic, 0, AuraType.PeriodicTriggerSpell));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_vehicle_control_link : AuraScript
|
class spell_gen_vehicle_control_link : AuraScript
|
||||||
{
|
{
|
||||||
@@ -4039,4 +4074,27 @@ namespace Scripts.Spells.Generic
|
|||||||
OnEffectHitTarget.Add(new EffectHandler(HandleDummy, 0, SpellEffectName.Dummy));
|
OnEffectHitTarget.Add(new EffectHandler(HandleDummy, 0, SpellEffectName.Dummy));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 40307 - Stasis Field
|
||||||
|
class StasisFieldSearcher : ICheck<Unit>
|
||||||
|
{
|
||||||
|
Unit _unit;
|
||||||
|
float _distance;
|
||||||
|
|
||||||
|
public StasisFieldSearcher(Unit obj, float distance)
|
||||||
|
{
|
||||||
|
_unit = obj;
|
||||||
|
_distance = distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Invoke(Unit u)
|
||||||
|
{
|
||||||
|
if (_unit.GetDistance2d(u) < _distance &&
|
||||||
|
(u.GetEntry() == CreatureIds.ApexisFlayer || u.GetEntry() == CreatureIds.ShardHideBoar || u.GetEntry() == CreatureIds.AetherRay || u.GetEntry() == CreatureIds.DaggertailLizard) &&
|
||||||
|
!u.HasAura(SpellIds.StasisField))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
--
|
||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_stasis_field_aura');
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(40306,'spell_stasis_field_aura');
|
||||||
Reference in New Issue
Block a user