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
|
||||
public const uint CorruptingPlague = 40350;
|
||||
|
||||
// StasisFieldEntrys
|
||||
public const uint StasisField = 40307;
|
||||
|
||||
// SiegeTankControl
|
||||
public const uint SiegeTankControl = 47963;
|
||||
|
||||
@@ -294,7 +297,7 @@ namespace Scripts.Spells.Generic
|
||||
public const uint FaceRage = 99947;
|
||||
public const uint ImpatientMind = 187213;
|
||||
|
||||
//enum DefenderOfAzerothData
|
||||
// DefenderOfAzerothData
|
||||
public const uint DeathGateTeleportStormwind = 316999;
|
||||
public const uint DeathGateTeleportOrgrimmar = 317000;
|
||||
}
|
||||
@@ -335,6 +338,9 @@ namespace Scripts.Spells.Generic
|
||||
public const uint ShardHideBoar = 22180;
|
||||
public const uint AetherRay = 22181;
|
||||
|
||||
// StasisFieldEntrys
|
||||
public const uint DaggertailLizard = 22255;
|
||||
|
||||
// DefenderOfAzerothData
|
||||
public const uint Nazgrim = 161706;
|
||||
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]
|
||||
class spell_gen_vehicle_control_link : AuraScript
|
||||
{
|
||||
@@ -4039,4 +4074,27 @@ namespace Scripts.Spells.Generic
|
||||
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