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);
556 if (!feugen->IsEngaged())
562 if (damage < me->GetHealth())
749 if (stalagg->GetVictim())
751 AddThreat(stalagg->EnsureVictim(), 0.0f);
795 if (!stalagg->IsInCombat())
801 if (damage < me->GetHealth())
969 switch (triggeringId)
983 switch (
GetCaster()->GetMap()->GetDifficulty())
995 uint8 stacksCount = 1;
996 std::list<WorldObject*>::iterator it = targetList.begin();
997 while(it != targetList.end())
1001 it = targetList.erase(it);
1004 if ((*it)->ToPlayer()->HasAura(triggeringId))
1006 it = targetList.erase(it);
1007 if (stacksCount < maxStacks)
1021 if (!
GetCaster()->ToPlayer()->HasAura(ampId))
1102 if (!feugenTank || !stalaggTank)
1105 if (feugenTank == stalaggTank)
1107 float feugenTankThreat = feugenThreat.
GetThreat(feugenTank);
1108 float stalaggTankThreat = stalaggThreat.
GetThreat(stalaggTank);
1117 float feugenTankThreat = feugenThreat.
GetThreat(feugenTank);
1118 float feugenOtherThreat = feugenThreat.
GetThreat(stalaggTank);
1119 float stalaggTankThreat = stalaggThreat.
GetThreat(stalaggTank);
1120 float stalaggOtherThreat = stalaggThreat.
GetThreat(feugenTank);
1139 if (feugen->
GetAI())
1141 if (stalagg->
GetAI())
@ RAID_DIFFICULTY_10MAN_NORMAL
@ RAID_DIFFICULTY_25MAN_NORMAL
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)
@ UNIT_FLAG_UNINTERACTIBLE
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
@ EVADE_REASON_NO_HOSTILES
void DoZoneInCombat(Creature *creature=nullptr)
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)
bool IsInPhase(PhaseIndex phase) const
void SetPhase(PhaseIndex phase)
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
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)
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
void DoMeleeAttackIfReady()
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)
virtual void AttackStart(Unit *)
SpellCastResult DoCastAOE(uint32 spellId, CastSpellExtraArgs const &args={})
SpellCastResult DoCast(uint32 spellId)
void CastStop(uint32 except_spellid=0)
bool IsWithinMeleeRange(Unit const *obj) const
void KillSelf(bool durabilityLoss=true)
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
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)
bool HasUnitState(const uint32 f) const
void SetStandState(UnitStandStateType state)
void SetUnitFlag(UnitFlags flags)
bool isAttackReady(WeaponAttackType type=BASE_ATTACK) const
void RemoveUnitFlag(UnitFlags flags)
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
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
bool OnCheck(Player *, Unit *target) override
achievement_thaddius_shocking()
bool TryHandleOnce(Player *player, AreaTriggerEntry const *) override
bool Validate(SpellInfo const *) override
PrepareSpellScript(spell_thaddius_magnetic_pull)
void HandleTargets(std::list< WorldObject * > &targetList)
PrepareSpellScript(spell_thaddius_polarity_charge)
bool Validate(SpellInfo const *) override
void HandleDummy(SpellEffIndex)
PrepareSpellScript(spell_thaddius_polarity_shift)
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