113 pCrone->AI()->AttackStart(creature->
GetVictim());
125 return GetKarazhanAI<boss_dorotheeAI>(creature);
243 return GetKarazhanAI<npc_titoAI>(creature);
274 if (Dorothee && Dorothee->
IsAlive())
315 return GetKarazhanAI<boss_strawmanAI>(creature);
329 BrainBashTimer = 5000;
330 BrainWipeTimer = 7000;
368 me->DespawnOrUnsummon();
400 if (AggroTimer <= diff)
404 }
else AggroTimer -= diff;
410 if (BrainBashTimer <= diff)
413 BrainBashTimer = 15000;
414 }
else BrainBashTimer -= diff;
416 if (BrainWipeTimer <= diff)
420 BrainWipeTimer = 20000;
421 }
else BrainWipeTimer -= diff;
433 return GetKarazhanAI<boss_tinheadAI>(creature);
473 me->DespawnOrUnsummon();
509 if (AggroTimer <= diff)
513 }
else AggroTimer -= diff;
519 if (CleaveTimer <= diff)
523 }
else CleaveTimer -= diff;
527 if (RustTimer <= diff)
533 }
else RustTimer -= diff;
546 return GetKarazhanAI<boss_roarAI>(creature);
601 me->DespawnOrUnsummon();
620 if (AggroTimer <= diff)
624 }
else AggroTimer -= diff;
630 if (MangleTimer <= diff)
633 MangleTimer =
urand(5000, 8000);
634 }
else MangleTimer -= diff;
636 if (ShredTimer <= diff)
639 ShredTimer =
urand(10000, 15000);
640 }
else ShredTimer -= diff;
642 if (ScreamTimer <= diff)
645 ScreamTimer =
urand(20000, 30000);
646 }
else ScreamTimer -= diff;
658 return GetKarazhanAI<boss_croneAI>(creature);
677 me->SetImmuneToPC(
false);
678 CycloneTimer = 30000;
679 ChainLightningTimer = 10000;
694 me->DespawnOrUnsummon();
718 if (CycloneTimer <= diff)
722 CycloneTimer = 30000;
723 }
else CycloneTimer -= diff;
725 if (ChainLightningTimer <= diff)
728 ChainLightningTimer = 15000;
729 }
else ChainLightningTimer -= diff;
741 return GetKarazhanAI<npc_cycloneAI>(creature);
775 if (MoveTimer <= diff)
777 Position pos = me->GetRandomNearPosition(10);
778 me->GetMotionMaster()->MovePoint(0, pos);
779 MoveTimer =
urand(5000, 8000);
780 }
else MoveTimer -= diff;
819 pBigBadWolf->AI()->AttackStart(player);
821 me->DespawnOrUnsummon();
829 return GetKarazhanAI<npc_grandmotherAI>(creature);
840 return GetKarazhanAI<boss_bigbadwolfAI>(creature);
854 FearTimer =
urand(25000, 35000);
891 me->DespawnOrUnsummon();
905 if (ChaseTimer <= diff)
913 TempThreat = GetThreat(target);
915 ModifyThreatByPercent(target, -100);
916 HoodGUID = target->GetGUID();
917 AddThreat(target, 1000000.0f);
929 if (GetThreat(target))
930 ModifyThreatByPercent(target, -100);
931 AddThreat(target, TempThreat);
937 }
else ChaseTimer -= diff;
942 if (FearTimer <= diff)
945 FearTimer =
urand(25000, 35000);
946 }
else FearTimer -= diff;
948 if (SwipeTimer <= diff)
951 SwipeTimer =
urand(25000, 30000);
952 }
else SwipeTimer -= diff;
1036 return GetKarazhanAI<boss_julianneAI>(creature);
1045 EntryYellTimer = 1000;
1046 AggroYellTimer = 10000;
1047 IsFakingDeath =
false;
1056 BlindingPassionTimer = 30000;
1057 DevotionTimer = 15000;
1058 EternalAffectionTimer = 25000;
1059 PowerfulAttractionTimer = 5000;
1060 SummonRomuloTimer = 10000;
1061 DrinkPoisonTimer = 0;
1062 ResurrectSelfTimer = 0;
1064 SummonedRomulo =
false;
1096 IsFakingDeath =
false;
1121 me->DespawnOrUnsummon();
1129 DrinkPoisonTimer = 2500;
1146 void UpdateAI(
uint32 diff)
override;
1157 return GetKarazhanAI<boss_romuloAI>(creature);
1166 EntryYellTimer = 8000;
1167 AggroYellTimer = 15000;
1172 JulianneGUID.Clear();
1175 BackwardLungeTimer = 15000;
1176 DaringTimer = 20000;
1177 DeadlySwatheTimer = 25000;
1178 PoisonThrustTimer = 10000;
1179 ResurrectTimer = 10000;
1181 IsFakingDeath =
false;
1182 JulianneDead =
false;
1208 me->DespawnOrUnsummon();
1213 if (damage < me->GetHealth())
1222 IsFakingDeath =
true;
1241 Julianne->SetUninteractible(
false);
1242 Julianne->GetMotionMaster()->Clear();
1244 Julianne->CombatStop(
true);
1253 IsFakingDeath =
true;
1261 TC_LOG_ERROR(
"scripts",
"boss_romuloAI: DamageTaken reach end of code, that should not happen.");
1300 if (!UpdateVictim() || IsFakingDeath)
1305 if (ResurrectTimer <= diff)
1313 JulianneDead =
false;
1314 ResurrectTimer = 10000;
1316 }
else ResurrectTimer -= diff;
1319 if (BackwardLungeTimer <= diff)
1325 BackwardLungeTimer =
urand(15000, 30000);
1327 }
else BackwardLungeTimer -= diff;
1329 if (DaringTimer <= diff)
1332 DaringTimer =
urand(20000, 40000);
1333 }
else DaringTimer -= diff;
1335 if (DeadlySwatheTimer <= diff)
1339 DeadlySwatheTimer =
urand(15000, 25000);
1340 }
else DeadlySwatheTimer -= diff;
1342 if (PoisonThrustTimer <= diff)
1345 PoisonThrustTimer =
urand(10000, 20000);
1346 }
else PoisonThrustTimer -= diff;
1355 if (EntryYellTimer <= diff)
1359 }
else EntryYellTimer -= diff;
1364 if (AggroYellTimer <= diff)
1370 }
else AggroYellTimer -= diff;
1373 if (DrinkPoisonTimer)
1376 if (DrinkPoisonTimer <= diff)
1380 SummonRomuloTimer = 10000;
1381 DrinkPoisonTimer = 0;
1382 }
else DrinkPoisonTimer -= diff;
1387 if (SummonRomuloTimer <= diff)
1391 RomuloGUID = pRomulo->GetGUID();
1394 DoZoneInCombat(pRomulo);
1398 SummonedRomulo =
true;
1399 }
else SummonRomuloTimer -= diff;
1402 if (ResurrectSelfTimer)
1404 if (ResurrectSelfTimer <= diff)
1408 IsFakingDeath =
false;
1410 if (me->GetVictim())
1411 AttackStart(me->GetVictim());
1413 ResurrectSelfTimer = 0;
1414 ResurrectTimer = 1000;
1415 }
else ResurrectSelfTimer -= diff;
1418 if (!UpdateVictim() || IsFakingDeath)
1423 if (ResurrectTimer <= diff)
1432 ResurrectTimer = 10000;
1434 }
else ResurrectTimer -= diff;
1437 if (BlindingPassionTimer <= diff)
1441 BlindingPassionTimer =
urand(30000, 45000);
1442 }
else BlindingPassionTimer -= diff;
1444 if (DevotionTimer <= diff)
1447 DevotionTimer =
urand(15000, 45000);
1448 }
else DevotionTimer -= diff;
1450 if (PowerfulAttractionTimer <= diff)
1453 PowerfulAttractionTimer =
urand(5000, 30000);
1454 }
else PowerfulAttractionTimer -= diff;
1456 if (EternalAffectionTimer <= diff)
1458 if (
urand(0, 1) && SummonedRomulo)
1461 if (Romulo && Romulo->
IsAlive() && !RomuloDead)
1465 EternalAffectionTimer =
urand(45000, 60000);
1466 }
else EternalAffectionTimer -= diff;
1471 if (damage < me->GetHealth())
1484 me->InterruptNonMeleeSpells(
true);
1487 IsFakingDeath =
true;
1494 TC_LOG_ERROR(
"scripts",
"boss_julianneAI: cannot take damage in PHASE_ROMULO, why was i here?");
1506 Romulo->SetUninteractible(
false);
1507 Romulo->GetMotionMaster()->Clear();
1509 Romulo->CombatStop(
true);
1520 IsFakingDeath =
true;
1527 TC_LOG_ERROR(
"scripts",
"boss_julianneAI: DamageTaken reach end of code, that should not happen.");
#define TC_LOG_ERROR(filterType__,...)
@ TEMPSUMMON_TIMED_DESPAWN
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_OR_DEAD_DESPAWN
uint32 urand(uint32 min, uint32 max)
void CloseGossipMenuFor(Player *player)
@ UNIT_FLAG_NON_ATTACKABLE
@ SAY_DOROTHEE_TITO_DEATH
@ SPELL_ETERNAL_AFFECTION
@ SPELL_POWERFUL_ATTRACTION
@ SPELL_FRIGHTENED_SCREAM
@ OPTION_WHAT_PHAT_LEWTS_YOU_HAVE
@ SPELL_LITTLE_RED_RIDING_HOOD
void AddSC_bosses_opera()
void Resurrect(Creature *target)
void PretendToDie(Creature *creature)
void SummonCroneIfReady(InstanceScript *instance, Creature *creature)
virtual void MoveInLineOfSight(Unit *)
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr)
void AttackStart(Unit *victim) override
== Triggered Actions Requested ==================
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
virtual bool SetBossState(uint32 id, EncounterState state)
void MoveChase(Unit *target, Optional< ChaseRange > dist={}, Optional< ChaseAngle > angle={})
static ObjectGuid GetGUID(Object const *o)
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 DoCast(uint32 spellId)
void SetHealth(uint64 val)
void SetStandState(UnitStandStateType state, uint32 animKitID=0)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
bool HasUnitFlag(UnitFlags flags) const
void SetUninteractible(bool apply)
void RemoveUnitFlag(UnitFlags flags)
InstanceScript * GetInstanceScript() 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)
virtual uint32 GetData(uint32) const
virtual void SetData(uint32, uint32)
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
CreatureAI * GetAI(Creature *creature) const override
@ DATA_OPERA_OZ_DEATHCOUNT
TC_GAME_API Unit * GetUnit(WorldObject const &, ObjectGuid const &guid)
TC_GAME_API Creature * GetCreature(WorldObject const &u, ObjectGuid const &guid)
bool HasInArc(float arcangle, Position const *pos, float border=2.0f) const
constexpr float GetPositionZ() const
void AttackStart(Unit *) override
== Triggered Actions Requested ==================
void UpdateAI(uint32 diff) override
void KilledUnit(Unit *) override
void JustEngagedWith(Unit *) override
InstanceScript * instance
boss_bigbadwolfAI(Creature *creature)
void JustReachedHome() override
void JustDied(Unit *) override
boss_croneAI(Creature *creature)
void UpdateAI(uint32 diff) override
InstanceScript * instance
uint32 ChainLightningTimer
void KilledUnit(Unit *) override
void JustDied(Unit *) override
void JustReachedHome() override
void JustEngagedWith(Unit *) override
boss_dorotheeAI(Creature *creature)
void JustReachedHome() override
InstanceScript * instance
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
void MoveInLineOfSight(Unit *who) override
void JustDied(Unit *) override
void JustEngagedWith(Unit *) override
void UpdateAI(uint32 diff) override
uint32 PowerfulAttractionTimer
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
void KilledUnit(Unit *) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
uint32 BlindingPassionTimer
void JustDied(Unit *) override
uint32 ResurrectSelfTimer
void MoveInLineOfSight(Unit *who) override
uint32 EternalAffectionTimer
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
boss_julianneAI(Creature *creature)
void UpdateAI(uint32 diff) override
void JustEngagedWith(Unit *) override
InstanceScript * instance
void JustReachedHome() override
void JustDied(Unit *) override
void MoveInLineOfSight(Unit *who) override
void JustEngagedWith(Unit *) override
InstanceScript * instance
void JustReachedHome() override
boss_roarAI(Creature *creature)
void UpdateAI(uint32 diff) override
void KilledUnit(Unit *) override
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
void JustDied(Unit *) override
void KilledUnit(Unit *) override
void JustEngagedWith(Unit *) override
InstanceScript * instance
void DamageTaken(Unit *, uint32 &damage, DamageEffectType, SpellInfo const *) override
boss_romuloAI(Creature *creature)
void UpdateAI(uint32 diff) override
void MoveInLineOfSight(Unit *who) override
void JustReachedHome() override
uint32 BackwardLungeTimer
void JustDied(Unit *) override
void SpellHit(WorldObject *, SpellInfo const *spellInfo) override
void JustEngagedWith(Unit *) override
boss_strawmanAI(Creature *creature)
void JustReachedHome() override
void UpdateAI(uint32 diff) override
InstanceScript * instance
void KilledUnit(Unit *) override
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
void MoveInLineOfSight(Unit *who) override
void MoveInLineOfSight(Unit *who) override
InstanceScript * instance
void AttackStart(Unit *who) override
== Triggered Actions Requested ==================
void KilledUnit(Unit *) override
void JustDied(Unit *) override
boss_tinheadAI(Creature *creature)
void UpdateAI(uint32 diff) override
void JustReachedHome() override
void JustEngagedWith(Unit *) override
void JustEngagedWith(Unit *) override
void MoveInLineOfSight(Unit *) override
void UpdateAI(uint32 diff) override
npc_cycloneAI(Creature *creature)
npc_grandmotherAI(Creature *creature)
bool OnGossipSelect(Player *player, uint32 menuId, uint32 gossipListId) override
void JustDied(Unit *) override
void JustEngagedWith(Unit *) override
npc_titoAI(Creature *creature)
void UpdateAI(uint32 diff) override