diff --git a/ElunaCreatureAI.h b/ElunaCreatureAI.h index a02c5df..4cd4b46 100644 --- a/ElunaCreatureAI.h +++ b/ElunaCreatureAI.h @@ -70,6 +70,15 @@ struct ElunaCreatureAI : ScriptedAI } } +#ifdef TRINITY + // Called for reaction when initially engaged - this will always happen _after_ JustEnteredCombat + // Called at creature aggro either by MoveInLOS or Attack Start + void JustEngagedWith(Unit* target) override + { + if (!sEluna->EnterCombat(me, target)) + ScriptedAI::JustEngagedWith(target); + } +#else //Called for reaction at enter to combat if not in combat yet (enemy can be NULL) //Called at creature aggro either by MoveInLOS or Attack Start void EnterCombat(Unit* target) override @@ -77,6 +86,7 @@ struct ElunaCreatureAI : ScriptedAI if (!sEluna->EnterCombat(me, target)) ScriptedAI::EnterCombat(target); } +#endif // Called at any Damage from any attacker (before damage apply) void DamageTaken(Unit* attacker, uint32& damage) override diff --git a/UnitMethods.h b/UnitMethods.h index 1c128b8..4552f3e 100644 --- a/UnitMethods.h +++ b/UnitMethods.h @@ -2371,7 +2371,24 @@ namespace LuaUnit Item* castItem = Eluna::CHECKOBJ(L, 8, false); uint64 originalCaster = Eluna::CHECKVAL(L, 9, 0); +#ifdef TRINITY + CastSpellExtraArgs args; + if (has_bp0) + args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT0, bp0); + if (has_bp1) + args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT1, bp1); + if (has_bp2) + args.SpellValueOverrides.AddMod(SPELLVALUE_BASE_POINT2, bp2); + if (triggered) + args.TriggerFlags = TRIGGERED_FULL_MASK; + if (castItem) + args.SetCastItem(castItem); + if (originalCaster) + args.SetOriginalCaster(ObjectGuid(originalCaster)); + unit->CastSpell(target, spell, args); +#else unit->CastCustomSpell(target, spell, has_bp0 ? &bp0 : NULL, has_bp1 ? &bp1 : NULL, has_bp2 ? &bp2 : NULL, triggered, castItem, NULL, ObjectGuid(originalCaster)); +#endif return 0; } @@ -2393,8 +2410,15 @@ namespace LuaUnit bool triggered = Eluna::CHECKVAL(L, 6, true); #ifdef CMANGOS unit->CastSpell(_x, _y, _z, spell, TRIGGERED_OLD_TRIGGERED); -#else +#endif +#ifdef MANGOS unit->CastSpell(_x, _y, _z, spell, triggered); +#endif +#ifdef TRINITY + CastSpellExtraArgs args; + if (triggered) + args.TriggerFlags = TRIGGERED_FULL_MASK; + unit->CastSpell(Position(_x, _y, _z), spell, args); #endif return 0; }