214 stalagg->setActive(
false);
215 stalagg->SetFarVisible(
false);
219 feugen->setActive(
false);
220 feugen->SetFarVisible(
false);
254 stalagg->setActive(
true);
255 stalagg->SetFarVisible(
true);
259 feugen->setActive(
true);
260 feugen->SetFarVisible(
true);
554 if (!feugen->IsEngaged())
560 if (damage < me->GetHealth())
744 if (stalagg->GetVictim())
746 AddThreat(stalagg->EnsureVictim(), 0.0f);
790 if (!stalagg->IsInCombat())
796 if (damage < me->GetHealth())
960 switch (triggeringId)
974 switch (
GetCaster()->GetMap()->GetDifficultyID())
986 uint8 stacksCount = 1;
987 std::list<WorldObject*>::iterator it = targetList.begin();
988 while(it != targetList.end())
992 it = targetList.erase(it);
995 if ((*it)->ToPlayer()->HasAura(triggeringId))
997 it = targetList.erase(it);
998 if (stacksCount < maxStacks)
1089 if (!feugenTank || !stalaggTank)
1092 if (feugenTank == stalaggTank)
1094 float feugenTankThreat = feugenThreat.
GetThreat(feugenTank);
1095 float stalaggTankThreat = stalaggThreat.
GetThreat(stalaggTank);
1104 float feugenTankThreat = feugenThreat.
GetThreat(feugenTank);
1105 float feugenOtherThreat = feugenThreat.
GetThreat(stalaggTank);
1106 float stalaggTankThreat = stalaggThreat.
GetThreat(stalaggTank);
1107 float stalaggOtherThreat = stalaggThreat.
GetThreat(feugenTank);
1126 if (feugen->
GetAI())
1128 if (stalagg->
GetAI())
std::chrono::seconds Seconds
Seconds shorthand typedef.
Milliseconds randtime(Milliseconds min, Milliseconds max)
uint32 urandms(uint32 min, uint32 max)
bool roll_chance_i(int chance)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ALLY
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
void AddSC_boss_thaddius()
@ EMOTE_TESLA_LINK_BREAKS
@ SPELL_MAGNETIC_PULL_EFFECT
@ SPELL_FEUGEN_TESLA_PERIODIC
@ SPELL_STALAGG_CHAIN_VISUAL
@ SPELL_STALAGG_POWERSURGE
@ SPELL_FEUGEN_STATICFIELD
@ SPELL_FEUGEN_CHAIN_VISUAL
@ SPELL_STALAGG_TESLA_PERIODIC
@ ACTION_POLARITY_CROSSED
@ ACTION_FEUGEN_REVIVING_FX
@ ACTION_STALAGG_REVIVING_FX
@ ACTION_BEGIN_RESET_ENCOUNTER
@ SPELL_NEGATIVE_CHARGE_TICK
@ SPELL_POSITIVE_CHARGE_TICK
@ SPELL_THADDIUS_SPARK_VISUAL
@ SPELL_POSITIVE_CHARGE_APPLY
@ SPELL_NEGATIVE_CHARGE_APPLY
@ SPELL_THADDIUS_INACTIVE_VISUAL
@ SPELL_POSITIVE_CHARGE_AMP
@ SPELL_NEGATIVE_CHARGE_AMP
@ EVENT_ENABLE_BALL_LIGHTNING
InstanceScript *const instance
bool CanAIAttack(Unit const *target) const override
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void SetBoundary(CreatureBoundary const *boundary, bool negativeBoundaries=false)
void SetImmuneToPC(bool apply) override
void GetHomePosition(float &x, float &y, float &z, float &ori) const
bool IsEngaged() const override
void SetReactState(ReactStates st)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void Repeat(Milliseconds time)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
bool IsInPhase(uint8 phase) const
void SetPhase(uint8 phase)
virtual bool SetBossState(uint32 id, EncounterState state)
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
virtual ObjectGuid GetGuidData(uint32 type) const override
CreatureBoundary const * GetBossBoundary(uint32 id) const
EncounterState GetBossState(uint32 id) const
virtual bool CheckRequiredBosses(uint32, Player const *=nullptr) const
void Respawn(RespawnInfo *info, CharacterDatabaseTransaction dbTrans=nullptr)
static Creature * ToCreature(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
SpellInfo const * GetTriggeringSpell() const
Unit * GetHitUnit() const
HookList< EffectHandler > OnEffectHitTarget
HookList< CastHandler > OnCast
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
Unit * GetCurrentVictim()
void AddThreat(Unit *target, float amount, SpellInfo const *spell=nullptr, bool ignoreModifiers=false, bool ignoreRedirects=false)
== AFFECT MY THREAT LIST ==
float GetThreat(Unit const *who, bool includeOffline=false) const
virtual void AttackStart(Unit *victim)
virtual uint32 GetData(uint32) const
SpellCastResult DoCastVictim(uint32 spellId, CastSpellExtraArgs const &args={})
Unit * SelectTarget(SelectTargetMethod targetType, uint32 offset=0, float dist=0.0f, bool playerOnly=false, bool withTank=true, int32 aura=0)
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void CastStop(uint32 except_spellid=0)
bool IsWithinMeleeRange(Unit const *obj) const
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
ThreatManager & GetThreatManager()
void SetInCombatWith(Unit *enemy, bool addSecondUnitSuppressed=false)
void SetControlled(bool apply, UnitState state)
Spell * FindCurrentSpellBySpellId(uint32 spell_id) const
void SetAuraStack(uint32 spellId, Unit *target, uint32 stack)
Aura * AddAura(uint32 spellId, Unit *target)
void SetUninteractible(bool apply)
bool HasUnitState(const uint32 f) const
void SetUnitFlag(UnitFlags flags)
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
void KillSelf(bool durabilityLoss=true, bool skipSettingDeathState=false)
GameObject * FindNearestGameObject(uint32 entry, float range, bool spawnedOnly=true) const
InstanceScript * GetInstanceScript() const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
void setActive(bool isActiveObject)
void SetFarVisible(bool on)
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
bool OnCheck(Player *, Unit *target) override
achievement_thaddius_shocking()
bool TryHandleOnce(Player *player, AreaTriggerEntry const *) override
bool Validate(SpellInfo const *) override
void HandleTargets(std::list< WorldObject * > &targetList)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
bool Validate(SpellInfo const *) override
TC_GAME_API GameObject * GetGameObject(WorldObject const &u, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
@ GO_CONS_NOX_TESLA_FEUGEN
@ GO_CONS_NOX_TESLA_STALAGG
#define RegisterNaxxramasCreatureAI(ai_name)
void SetCombatMovement(bool allowMovement)
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
boss_thaddius(Creature *creature)
void KilledUnit(Unit *victim) override
void DoAction(int32 action) override
bool ballLightningUnlocked
void EnterEvadeMode(EvadeReason why) override
void InitializeAI() override
bool CanAIAttack(Unit const *who) const override
bool ballLightningEnabled
uint32 GetData(uint32 id) const override
void JustDied(Unit *) override
void JustAppeared() override
void BeginResetEncounter()
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *who) override
InstanceScript * instance
void InitializeAI() override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
void KilledUnit(Unit *victim) override
void UpdateAI(uint32 uiDiff) override
void DoAction(int32 action) override
npc_feugen(Creature *creature)
void BeginResetEncounter()
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void EnterEvadeMode(EvadeReason) override
void EnterEvadeMode(EvadeReason) override
void KilledUnit(Unit *victim) override
InstanceScript * instance
void JustEngagedWith(Unit *who) override
void DoAction(int32 action) override
npc_stalagg(Creature *creature)
void UpdateAI(uint32 uiDiff) override
void InitializeAI() override
void BeginResetEncounter()
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
void SpellHit(WorldObject *caster, SpellInfo const *spellInfo) override
void JustEngagedWith(Unit *) override
void EnterEvadeMode(EvadeReason) override
npc_tesla(Creature *creature)
void UpdateAI(uint32) override
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override