Spell/Script: Stasis Field

Port From (https://github.com/TrinityCore/TrinityCore/commit/adb5535483cf202572ae34065959aa94cf0304e8)
This commit is contained in:
hondacrx
2021-12-17 17:29:27 -05:00
parent 6035dc5224
commit f91842d6f2
2 changed files with 124 additions and 62 deletions
+59 -1
View File
@@ -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');