86#define MUTATED_INFECTION RAID_MODE<int32>(69674, 71224, 73022, 73023)
169 professor->AI()->EnterEvadeMode();
292 rotface->AI()->JustSummoned(
me);
298 rotface->AI()->SummonedCreatureDespawn(
me);
363 if (rotface->IsAlive())
391 for (
uint32 i = 0; i < 11; ++i)
415 std::list<Creature*> triggers;
418 if (triggers.empty())
432 if (targets.size() > 4)
435 while (targets.size() > 2)
459 targets.push_back(target);
488 .SetTriggeringAura(aurEff)
527 if (!(target && target->
IsAlive()) || !caster)
533 unstable->ModStackAmount(targetAura->GetStackAmount());
535 unstable->ModStackAmount(1);
537 if (unstable->GetStackAmount() >= 5)
546 if (rotface->IsAlive())
580 uint8 newStack =
uint8(unstable->GetStackAmount()+1);
581 unstable->SetStackAmount(newStack);
606 if (rotface->IsAlive())
668 .SetOriginalCaster(
GetCaster()->GetGUID()));
708 std::list<WorldObject*> ranged, melee;
709 std::list<WorldObject*>::iterator itr = targets.begin();
710 while (itr != targets.end() && (*itr)->GetDistance(
GetCaster()) < 5.0f)
712 melee.push_back((*itr)->ToUnit());
716 while (itr != targets.end())
718 ranged.push_back((*itr)->ToUnit());
723 while (ranged.size() < minTargets)
729 ranged.push_back(target);
730 melee.remove(target);
736 targets.swap(ranged);
T GetEntry(std::unordered_map< uint32, T > const &map, CriteriaTreeEntry const *tree)
std::chrono::milliseconds Milliseconds
Milliseconds shorthand typedef.
@ TEMPSUMMON_TIMED_DESPAWN
@ QUEST_STATUS_INCOMPLETE
#define RegisterSpellAndAuraScriptPair(script_1, script_2)
#define RegisterSpellScript(spell_script)
@ TARGET_UNIT_SRC_AREA_ENTRY
@ TARGET_UNIT_SRC_AREA_ENEMY
@ SPELL_EFFECT_SCRIPT_EFFECT
@ SPELL_EFFECT_TRIGGER_MISSILE
@ SPELL_EFFECT_FORCE_CAST
@ AURA_EFFECT_HANDLE_REAL
@ SPELL_AURA_PERIODIC_DAMAGE
@ SPELL_AURA_PERIODIC_TRIGGER_SPELL
@ TRIGGERED_FULL_MASK
Used when doing CastSpell with triggered == true.
#define SpellEffectFn(F, I, N)
#define SpellObjectAreaTargetSelectFn(F, I, N)
#define AuraEffectPeriodicFn(F, I, N)
#define AuraEffectRemoveFn(F, I, N, M)
@ SPELL_MUTATED_INFECTION
@ SPELL_LARGE_OOZE_COMBINE
@ SPELL_UNSTABLE_OOZE_EXPLOSION
@ SPELL_UNSTABLE_OOZE_EXPLOSION_TRIGGER
@ SPELL_AWAKEN_PLAGUED_ZOMBIES
@ SPELL_VERTEX_COLOR_DARK_RED
@ SPELL_VERTEX_COLOR_BRIGHT_RED
@ SPELL_WEAK_RADIATING_OOZE
@ SPELL_VILE_GAS_TRIGGER_SUMMON
@ SPELL_LITTLE_OOZE_COMBINE
@ SPELL_VERTEX_COLOR_PINK
@ SPELL_GREEN_ABOMINATION_HITTIN__YA_PROC
@ SPELL_LARGE_OOZE_BUFF_COMBINE
#define MUTATED_INFECTION
void AddSC_boss_rotface()
@ EMOTE_MUTATED_INFECTION
@ EMOTE_UNSTABLE_EXPLOSION
@ EVENT_MUTATED_INFECTION
@ EVENT_HASTEN_INFECTIONS
void PreventDefaultAction()
HookList< EffectApplyHandler > AfterEffectRemove
HookList< EffectPeriodicHandler > OnEffectPeriodic
SpellEffectInfo const & GetEffectInfo(SpellEffIndex effIndex) const
ObjectGuid GetCasterGUID() const
InstanceScript *const instance
virtual void EnterEvadeMode(EvadeReason why=EvadeReason::Other)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
Creature * DoSummon(uint32 entry, Position const &pos, Milliseconds despawnTime=30s, TempSummonType summonType=TEMPSUMMON_CORPSE_TIMED_DESPAWN)
void SetCanMelee(bool canMelee, bool fleeFromMelee=false)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
void CancelEvent(uint32 eventId)
virtual bool SetBossState(uint32 id, EncounterState state)
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
void DoCastSpellOnPlayers(uint32 spell, bool includePets=false, bool includeControlled=false)
virtual ObjectGuid GetGuidData(uint32 type) const override
virtual bool CheckRequiredBosses(uint32, Player const *=nullptr) const
static ObjectGuid const Empty
static Creature * ToCreature(Object *o)
static Unit * ToUnit(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
QuestStatus GetQuestStatus(uint32 quest_id) const
int32 CalcValue(WorldObject const *caster=nullptr, int32 const *basePoints=nullptr, Unit const *target=nullptr, float *variance=nullptr, uint32 castItemId=0, int32 itemLevel=-1) const
SpellEffectInfo const & GetEffect(SpellEffIndex index) const
static bool ValidateSpellInfo(std::initializer_list< uint32 > spellIds)
static bool ValidateSpellEffect(std::initializer_list< std::pair< uint32, SpellEffIndex > > effects)
Creature * GetHitCreature() const
Player * GetHitPlayer() const
HookList< HitHandler > AfterHit
HookList< HitHandler > OnHit
HookList< EffectHandler > OnEffectHit
void PreventHitDefaultEffect(SpellEffIndex effIndex)
Unit * GetHitUnit() const
int32 GetEffectValue() const
SpellEffectInfo const & GetEffectInfo() const
HookList< EffectHandler > OnEffectHitTarget
void PreventHitEffect(SpellEffIndex effIndex)
WorldLocation const * GetExplTargetDest() const
SpellInfo const * GetSpellInfo() const
HookList< ObjectAreaTargetSelectHandler > OnObjectAreaTargetSelect
Unit * GetOriginalCaster() const
void Despawn(Creature const *summon)
void Summon(Creature const *summon)
virtual void DoAction(int32)
SpellCastResult DoCastSelf(uint32 spellId, CastSpellExtraArgs const &args={})
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={})
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
bool HasUnitState(const uint32 f) const
bool HasAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
InstanceScript * GetInstanceScript() const
void GetCreatureListWithEntryInGrid(Container &creatureContainer, uint32 entry, float maxSearchRange=250.0f) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
TempSummon * SummonCreature(uint32 entry, Position const &pos, TempSummonType despawnType=TEMPSUMMON_MANUAL_DESPAWN, Milliseconds despawnTime=0s, uint32 vehId=0, uint32 spellId=0, ObjectGuid privateObjectOwner=ObjectGuid::Empty)
void setActive(bool isActiveObject)
virtual void SetData(uint32, uint32)
void HandleScript(SpellEffIndex)
void HandleScript(SpellEffIndex)
void HandleScript(SpellEffIndex)
void HandleEffectRemove(AuraEffect const *aurEff, AuraEffectHandleModes)
bool Validate(SpellInfo const *spellInfo) override
void FilterTargets(std::list< WorldObject * > &targets)
void HandleScript(SpellEffIndex)
void FilterTargets(std::list< WorldObject * > &targets)
bool Validate(SpellInfo const *) override
void HandleCast(SpellEffIndex effIndex)
void DespawnSelf(AuraEffect const *)
void CheckTarget(SpellEffIndex effIndex)
void HandleDummy(SpellEffIndex effIndex)
void FilterTargets(std::list< WorldObject * > &targets)
@ SPELL_GREEN_BLIGHT_RESIDUE
@ LIGHT_S_HAMMER_TELEPORT
#define RegisterIcecrownCitadelCreatureAI(ai_name)
@ DATA_OOZE_DANCE_ACHIEVEMENT
@ DATA_PROFESSOR_PUTRICIDE
@ NPC_UNSTABLE_EXPLOSION_STALKER
@ QUEST_RESIDUE_RENDEZVOUS_10
@ QUEST_RESIDUE_RENDEZVOUS_25
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
auto SelectRandomContainerElement(C const &container) -> typename std::add_const< decltype(*std::begin(container))>::type &
void RandomResize(C &container, std::size_t requestedSize)
constexpr void GetPosition(float &x, float &y) const
void AddThreat(Unit *victim, float amount, Unit *who=nullptr)
void JustEngagedWith(Unit *who) override
void EnterEvadeMode(EvadeReason why) override
void JustDied(Unit *) override
void UpdateAI(uint32 diff) override
boss_rotface(Creature *creature)
void JustReachedHome() override
void KilledUnit(Unit *victim) override
void JustSummoned(Creature *summon) override
void SpellHitTarget(WorldObject *, SpellInfo const *spellInfo) override
Milliseconds infectionCooldown
void IsSummonedBy(WorldObject *) override
void JustDied(Unit *) override
void DoAction(int32 action) override
npc_big_ooze(Creature *creature)
void UpdateAI(uint32 diff) override
InstanceScript * instance
void UpdateAI(uint32 diff) override
void JustDied(Unit *) override
npc_little_ooze(Creature *creature)
void IsSummonedBy(WorldObject *summonerWO) override
void JustSummoned(Creature *summon) override
InstanceScript * _instance
npc_precious_icc(Creature *creature)
void JustDied(Unit *) override
void SummonedCreatureDespawn(Creature *summon) override
void UpdateAI(uint32 diff) override