113 pCrone->AI()->AttackStart(creature->
GetVictim());
125 return GetKarazhanAI<boss_dorotheeAI>(creature);
245 return GetKarazhanAI<npc_titoAI>(creature);
276 if (Dorothee && Dorothee->
IsAlive())
319 return GetKarazhanAI<boss_strawmanAI>(creature);
333 BrainBashTimer = 5000;
334 BrainWipeTimer = 7000;
372 me->DespawnOrUnsummon();
404 if (AggroTimer <= diff)
408 }
else AggroTimer -= diff;
414 if (BrainBashTimer <= diff)
417 BrainBashTimer = 15000;
418 }
else BrainBashTimer -= diff;
420 if (BrainWipeTimer <= diff)
424 BrainWipeTimer = 20000;
425 }
else BrainWipeTimer -= diff;
427 DoMeleeAttackIfReady();
439 return GetKarazhanAI<boss_tinheadAI>(creature);
479 me->DespawnOrUnsummon();
515 if (AggroTimer <= diff)
519 }
else AggroTimer -= diff;
525 if (CleaveTimer <= diff)
529 }
else CleaveTimer -= diff;
533 if (RustTimer <= diff)
539 }
else RustTimer -= diff;
542 DoMeleeAttackIfReady();
554 return GetKarazhanAI<boss_roarAI>(creature);
609 me->DespawnOrUnsummon();
628 if (AggroTimer <= diff)
632 }
else AggroTimer -= diff;
638 if (MangleTimer <= diff)
641 MangleTimer =
urand(5000, 8000);
642 }
else MangleTimer -= diff;
644 if (ShredTimer <= diff)
647 ShredTimer =
urand(10000, 15000);
648 }
else ShredTimer -= diff;
650 if (ScreamTimer <= diff)
653 ScreamTimer =
urand(20000, 30000);
654 }
else ScreamTimer -= diff;
656 DoMeleeAttackIfReady();
668 return GetKarazhanAI<boss_croneAI>(creature);
687 me->SetImmuneToPC(
false);
688 CycloneTimer = 30000;
689 ChainLightningTimer = 10000;
704 me->DespawnOrUnsummon();
728 if (CycloneTimer <= diff)
732 CycloneTimer = 30000;
733 }
else CycloneTimer -= diff;
735 if (ChainLightningTimer <= diff)
738 ChainLightningTimer = 15000;
739 }
else ChainLightningTimer -= diff;
741 DoMeleeAttackIfReady();
753 return GetKarazhanAI<npc_cycloneAI>(creature);
787 if (MoveTimer <= diff)
789 Position pos = me->GetRandomNearPosition(10);
790 me->GetMotionMaster()->MovePoint(0, pos);
791 MoveTimer =
urand(5000, 8000);
792 }
else MoveTimer -= diff;
831 pBigBadWolf->AI()->AttackStart(player);
833 me->DespawnOrUnsummon();
841 return GetKarazhanAI<npc_grandmotherAI>(creature);
852 return GetKarazhanAI<boss_bigbadwolfAI>(creature);
866 FearTimer =
urand(25000, 35000);
903 me->DespawnOrUnsummon();
917 DoMeleeAttackIfReady();
919 if (ChaseTimer <= diff)
927 TempThreat = GetThreat(target);
929 ModifyThreatByPercent(target, -100);
930 HoodGUID = target->GetGUID();
931 AddThreat(target, 1000000.0f);
943 if (GetThreat(target))
944 ModifyThreatByPercent(target, -100);
945 AddThreat(target, TempThreat);
951 }
else ChaseTimer -= diff;
956 if (FearTimer <= diff)
959 FearTimer =
urand(25000, 35000);
960 }
else FearTimer -= diff;
962 if (SwipeTimer <= diff)
965 SwipeTimer =
urand(25000, 30000);
966 }
else SwipeTimer -= diff;
1050 return GetKarazhanAI<boss_julianneAI>(creature);
1059 EntryYellTimer = 1000;
1060 AggroYellTimer = 10000;
1061 IsFakingDeath =
false;
1070 BlindingPassionTimer = 30000;
1071 DevotionTimer = 15000;
1072 EternalAffectionTimer = 25000;
1073 PowerfulAttractionTimer = 5000;
1074 SummonRomuloTimer = 10000;
1075 DrinkPoisonTimer = 0;
1076 ResurrectSelfTimer = 0;
1078 SummonedRomulo =
false;
1110 IsFakingDeath =
false;
1135 me->DespawnOrUnsummon();
1143 DrinkPoisonTimer = 2500;
1160 void UpdateAI(
uint32 diff)
override;
1171 return GetKarazhanAI<boss_romuloAI>(creature);
1180 EntryYellTimer = 8000;
1181 AggroYellTimer = 15000;
1186 JulianneGUID.Clear();
1189 BackwardLungeTimer = 15000;
1190 DaringTimer = 20000;
1191 DeadlySwatheTimer = 25000;
1192 PoisonThrustTimer = 10000;
1193 ResurrectTimer = 10000;
1195 IsFakingDeath =
false;
1196 JulianneDead =
false;
1222 me->DespawnOrUnsummon();
1227 if (damage < me->GetHealth())
1236 IsFakingDeath =
true;
1256 Julianne->GetMotionMaster()->Clear();
1258 Julianne->CombatStop(
true);
1267 IsFakingDeath =
true;
1275 TC_LOG_ERROR(
"scripts",
"boss_romuloAI: DamageTaken reach end of code, that should not happen.");
1314 if (!UpdateVictim() || IsFakingDeath)
1319 if (ResurrectTimer <= diff)
1327 JulianneDead =
false;
1328 ResurrectTimer = 10000;
1330 }
else ResurrectTimer -= diff;
1333 if (BackwardLungeTimer <= diff)
1339 BackwardLungeTimer =
urand(15000, 30000);
1341 }
else BackwardLungeTimer -= diff;
1343 if (DaringTimer <= diff)
1346 DaringTimer =
urand(20000, 40000);
1347 }
else DaringTimer -= diff;
1349 if (DeadlySwatheTimer <= diff)
1353 DeadlySwatheTimer =
urand(15000, 25000);
1354 }
else DeadlySwatheTimer -= diff;
1356 if (PoisonThrustTimer <= diff)
1359 PoisonThrustTimer =
urand(10000, 20000);
1360 }
else PoisonThrustTimer -= diff;
1362 DoMeleeAttackIfReady();
1371 if (EntryYellTimer <= diff)
1375 }
else EntryYellTimer -= diff;
1380 if (AggroYellTimer <= diff)
1386 }
else AggroYellTimer -= diff;
1389 if (DrinkPoisonTimer)
1392 if (DrinkPoisonTimer <= diff)
1396 SummonRomuloTimer = 10000;
1397 DrinkPoisonTimer = 0;
1398 }
else DrinkPoisonTimer -= diff;
1403 if (SummonRomuloTimer <= diff)
1407 RomuloGUID = pRomulo->GetGUID();
1410 DoZoneInCombat(pRomulo);
1414 SummonedRomulo =
true;
1415 }
else SummonRomuloTimer -= diff;
1418 if (ResurrectSelfTimer)
1420 if (ResurrectSelfTimer <= diff)
1424 IsFakingDeath =
false;
1426 if (me->GetVictim())
1427 AttackStart(me->GetVictim());
1429 ResurrectSelfTimer = 0;
1430 ResurrectTimer = 1000;
1431 }
else ResurrectSelfTimer -= diff;
1434 if (!UpdateVictim() || IsFakingDeath)
1439 if (ResurrectTimer <= diff)
1448 ResurrectTimer = 10000;
1450 }
else ResurrectTimer -= diff;
1453 if (BlindingPassionTimer <= diff)
1457 BlindingPassionTimer =
urand(30000, 45000);
1458 }
else BlindingPassionTimer -= diff;
1460 if (DevotionTimer <= diff)
1463 DevotionTimer =
urand(15000, 45000);
1464 }
else DevotionTimer -= diff;
1466 if (PowerfulAttractionTimer <= diff)
1469 PowerfulAttractionTimer =
urand(5000, 30000);
1470 }
else PowerfulAttractionTimer -= diff;
1472 if (EternalAffectionTimer <= diff)
1474 if (
urand(0, 1) && SummonedRomulo)
1477 if (Romulo && Romulo->
IsAlive() && !RomuloDead)
1481 EternalAffectionTimer =
urand(45000, 60000);
1482 }
else EternalAffectionTimer -= diff;
1484 DoMeleeAttackIfReady();
1489 if (damage < me->GetHealth())
1502 me->InterruptNonMeleeSpells(
true);
1505 IsFakingDeath =
true;
1512 TC_LOG_ERROR(
"scripts",
"boss_julianneAI: cannot take damage in PHASE_ROMULO, why was i here?");
1525 Romulo->GetMotionMaster()->Clear();
1527 Romulo->CombatStop(
true);
1538 IsFakingDeath =
true;
1545 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
@ UNIT_FLAG_UNINTERACTIBLE
@ 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 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)
void DoMeleeAttackIfReady()
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 DoCast(uint32 spellId)
void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid=0, bool withInstant=true)
MotionMaster * GetMotionMaster()
bool HasUnitFlag(UnitFlags flags) const
void SetHealth(uint32 val)
void SetStandState(UnitStandStateType state)
void SetUnitFlag(UnitFlags flags)
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)
float GetPositionZ() const
bool HasInArc(float arcangle, Position const *pos, float border=2.0f) const
void AttackStart(Unit *) override
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
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
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
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
void MoveInLineOfSight(Unit *who) override
void MoveInLineOfSight(Unit *who) override
InstanceScript * instance
void AttackStart(Unit *who) override
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