Core/Misc: Added lambda support to EventProcessor (ported commit: 813f693768)

This commit is contained in:
Ovahlord
2019-02-16 02:31:41 +01:00
parent a3833d201a
commit 659ad3bca1
2 changed files with 37 additions and 18 deletions

View File

@@ -128,22 +128,6 @@ enum Phases
PHASE_OUTRO = 3
};
class GravityElapseKnockupEvent : public BasicEvent
{
public:
GravityElapseKnockupEvent(Unit* caster, uint32 difficultySpellId) : _caster(caster), _difficultySpellId(difficultySpellId) { }
bool Execute(uint64 /*time*/, uint32 /*diff*/) override
{
_caster->CastSpell(_caster, _difficultySpellId);
_caster->CastSpell(_caster, SPELL_GRAVITY_LAPSE_FLY);
return true;
}
private:
Unit* _caster;
uint32 _difficultySpellId;
};
struct boss_felblood_kaelthas : public BossAI
{
boss_felblood_kaelthas(Creature* creature) : BossAI(creature, DATA_KAELTHAS_SUNSTRIDER)
@@ -240,10 +224,18 @@ struct boss_felblood_kaelthas : public BossAI
switch (spell->Id)
{
case SPELL_GRAVITY_LAPSE_INITIAL:
{
DoCast(target, gravityLapseTeleportSpells[_gravityLapseTargetCount], true);
target->m_Events.AddEventAtOffset(new GravityElapseKnockupEvent(target, SPELL_GRAVITY_LAPSE_DAMAGE), 400ms);
uint32 gravityLapseDamageSpell = SPELL_GRAVITY_LAPSE_DAMAGE;
target->m_Events.AddEventAtOffset([target, gravityLapseDamageSpell]()
{
target->CastSpell(target, gravityLapseDamageSpell);
target->CastSpell(target, SPELL_GRAVITY_LAPSE_FLY);
}, 400ms);
_gravityLapseTargetCount++;
break;
}
case SPELL_CLEAR_FLIGHT:
target->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_FLY);
target->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_DAMAGE);