diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/VioletHold/violet_hold.cpp | 176 |
1 files changed, 90 insertions, 86 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 7744a51cfb3..516163a0834 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -317,7 +317,7 @@ bool GossipHello_npc_sinclari(Player* pPlayer, Creature* pCreature) pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_ITEM_1,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+2); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,GOSSIP_START_EVENT,GOSSIP_SENDER_MAIN,GOSSIP_ACTION_INFO_DEF+1); pPlayer->SEND_GOSSIP_MENU(13853, pCreature->GetGUID()); - }else + } else pPlayer->SEND_GOSSIP_MENU(13910, pCreature->GetGUID()); return true; } @@ -377,7 +377,7 @@ struct npc_teleportation_portalAI : public ScriptedAI { // spawn elite mobs and then set portals visibility to make it look like it dissapeard case 0: - if(!bPortalGuardianOrKeeperOrEliteSpawn) + if (!bPortalGuardianOrKeeperOrEliteSpawn) { if (uiSpawnTimer <= diff) { @@ -394,7 +394,7 @@ struct npc_teleportation_portalAI : public ScriptedAI else { // if all spawned elites have died kill portal - if(listOfMobs.empty()) + if (listOfMobs.empty()) { me->Kill(me, false); me->RemoveCorpse(); @@ -405,7 +405,7 @@ struct npc_teleportation_portalAI : public ScriptedAI case 1: if (uiSpawnTimer <= diff) { - if(bPortalGuardianOrKeeperOrEliteSpawn) + if (bPortalGuardianOrKeeperOrEliteSpawn) { uint8 k = pInstance->GetData(DATA_WAVE_COUNT) < 12 ? 3 : 4; for (uint8 i = 0; i < k; ++i) @@ -444,7 +444,7 @@ struct npc_teleportation_portalAI : public ScriptedAI listOfMobs.Summon(pSummoned); } - void SummonedCreatureDespawn(Creature *pSummoned) + void SummonedMobDied(Creature *pSummoned) { listOfMobs.Despawn(pSummoned); } @@ -461,7 +461,8 @@ struct violet_hold_trashAI : public npc_escortAI { pInstance = c->GetInstanceData(); bHasGotMovingPoints = false; - portalLocationID = pInstance->GetData(DATA_PORTAL_LOCATION); + if (pInstance) + portalLocationID = pInstance->GetData(DATA_PORTAL_LOCATION); Reset(); } @@ -480,23 +481,23 @@ struct violet_hold_trashAI : public npc_escortAI CreatureStartAttackDoor(me->GetGUID()); break; case 1: - if((uiPointId == 8 && secondPortalRouteID == 0) || (uiPointId == 7 && secondPortalRouteID == 1)) + if ((uiPointId == 8 && secondPortalRouteID == 0) || (uiPointId == 7 && secondPortalRouteID == 1)) CreatureStartAttackDoor(me->GetGUID()); break; case 2: - if(uiPointId == 7) + if (uiPointId == 7) CreatureStartAttackDoor(me->GetGUID()); break; case 3: - if(uiPointId == 8) + if (uiPointId == 8) CreatureStartAttackDoor(me->GetGUID()); break; case 4: - if(uiPointId == 5) + if (uiPointId == 5) CreatureStartAttackDoor(me->GetGUID()); break; case 5: - if(uiPointId == 3) + if (uiPointId == 3) CreatureStartAttackDoor(me->GetGUID()); break; } @@ -504,10 +505,10 @@ struct violet_hold_trashAI : public npc_escortAI void UpdateAI(const uint32) { - if(pInstance->GetData(DATA_MAIN_DOOR) != GO_STATE_READY) + if (pInstance->GetData(DATA_MAIN_DOOR) != GO_STATE_READY) me->CastStop(); - if(!bHasGotMovingPoints) + if (!bHasGotMovingPoints) { bHasGotMovingPoints = true; switch(portalLocationID) @@ -561,15 +562,18 @@ struct violet_hold_trashAI : public npc_escortAI void JustDied(Unit *unit) { - Creature* portal = Unit::GetCreature((*me),pInstance->GetData64(DATA_TELEPORTATION_PORTAL)); - pInstance->SetData(DATA_NPC_PRESENCE_AT_DOOR_REMOVE,1); + if (Creature* portal = Unit::GetCreature((*me),pInstance->GetData64(DATA_TELEPORTATION_PORTAL))) + CAST_AI(npc_teleportation_portalAI,portal->AI())->SummonedMobDied(me); + if (pInstance) + pInstance->SetData(DATA_NPC_PRESENCE_AT_DOOR_REMOVE,1); } void CreatureStartAttackDoor(uint32 creature_guid) { me->SetReactState(REACT_PASSIVE); DoCast(SPELL_DESTROY_DOOR_SEAL); - pInstance->SetData(DATA_NPC_PRESENCE_AT_DOOR_ADD,1); + if (pInstance) + pInstance->SetData(DATA_NPC_PRESENCE_AT_DOOR_ADD,1); } }; @@ -599,39 +603,39 @@ struct mob_azure_invaderAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(me->GetEntry() == CREATURE_AZURE_INVADER_1) + if (me->GetEntry() == CREATURE_AZURE_INVADER_1) { - if(uiCleaveTimer <= diff) + if (uiCleaveTimer <= diff) { DoCast(me->getVictim(),SPELL_CLEAVE); uiCleaveTimer = 5000; - }else uiCleaveTimer -= diff; + } else uiCleaveTimer -= diff; - if(uiImpaleTimer <= diff) + if (uiImpaleTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,SPELL_IMPALE); uiImpaleTimer = 4000; - }else uiImpaleTimer -= diff; + } else uiImpaleTimer -= diff; } - if(me->GetEntry() == CREATURE_AZURE_INVADER_2) + if (me->GetEntry() == CREATURE_AZURE_INVADER_2) { - if(uiBrutalStrikeTimer <= diff) + if (uiBrutalStrikeTimer <= diff) { DoCast(me->getVictim(),SPELL_BRUTAL_STRIKE); uiBrutalStrikeTimer = 5000; - }else uiBrutalStrikeTimer -= diff; + } else uiBrutalStrikeTimer -= diff; - if(uiSunderArmorTimer <= diff) + if (uiSunderArmorTimer <= diff) { DoCast(me->getVictim(),SPELL_SUNDER_ARMOR); uiSunderArmorTimer = urand(8000,10000); - }else uiSunderArmorTimer -= diff; + } else uiSunderArmorTimer -= diff; DoMeleeAttackIfReady(); } @@ -666,43 +670,43 @@ struct mob_azure_spellbreakerAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(me->GetEntry() == CREATURE_AZURE_SPELLBREAKER_1) + if (me->GetEntry() == CREATURE_AZURE_SPELLBREAKER_1) { - if(uiArcaneBlastTimer <= diff) + if (uiArcaneBlastTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,DUNGEON_MODE(SPELL_ARCANE_BLAST,H_SPELL_ARCANE_BLAST)); uiArcaneBlastTimer = 6000; - }else uiArcaneBlastTimer -= diff; + } else uiArcaneBlastTimer -= diff; - if(uiSlowTimer <= diff) + if (uiSlowTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,SPELL_SLOW); uiSlowTimer = 5000; - }else uiSlowTimer -= diff; + } else uiSlowTimer -= diff; } - if(me->GetEntry() == CREATURE_AZURE_SPELLBREAKER_2) + if (me->GetEntry() == CREATURE_AZURE_SPELLBREAKER_2) { - if(uiChainsOfIceTimer <= diff) + if (uiChainsOfIceTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,SPELL_CHAINS_OF_ICE); uiChainsOfIceTimer = 7000; - }else uiChainsOfIceTimer -= diff; + } else uiChainsOfIceTimer -= diff; - if(uiConeOfColdTimer <= diff) + if (uiConeOfColdTimer <= diff) { DoCast(DUNGEON_MODE(SPELL_CONE_OF_COLD,H_SPELL_CONE_OF_COLD)); uiConeOfColdTimer = 5000; - }else uiConeOfColdTimer -= diff; + } else uiConeOfColdTimer -= diff; } DoMeleeAttackIfReady(); @@ -734,41 +738,41 @@ struct mob_azure_binderAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(me->GetEntry() == CREATURE_AZURE_BINDER_1) + if (me->GetEntry() == CREATURE_AZURE_BINDER_1) { - if(uiArcaneExplosionTimer <= diff) + if (uiArcaneExplosionTimer <= diff) { DoCast(DUNGEON_MODE(SPELL_ARCANE_EXPLOSION,H_SPELL_ARCANE_EXPLOSION)); uiArcaneExplosionTimer = 5000; - }else uiArcaneExplosionTimer -= diff; + } else uiArcaneExplosionTimer -= diff; - if(uiArcainBarrageTimer <= diff) + if (uiArcainBarrageTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,DUNGEON_MODE(SPELL_ARCANE_BARRAGE,H_SPELL_ARCANE_BARRAGE)); uiArcainBarrageTimer = 6000; - }else uiArcainBarrageTimer -= diff; + } else uiArcainBarrageTimer -= diff; } - if(me->GetEntry() == CREATURE_AZURE_BINDER_2) + if (me->GetEntry() == CREATURE_AZURE_BINDER_2) { - if(uiFrostNovaTimer <= diff) + if (uiFrostNovaTimer <= diff) { DoCast(DUNGEON_MODE(SPELL_FROST_NOVA,H_SPELL_FROST_NOVA)); uiFrostNovaTimer = 5000; - }else uiFrostNovaTimer -= diff; + } else uiFrostNovaTimer -= diff; - if(uiFrostboltTimer <= diff) + if (uiFrostboltTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,DUNGEON_MODE(SPELL_FROSTBOLT,H_SPELL_FROSTBOLT)); uiFrostboltTimer = 6000; - }else uiFrostboltTimer -= diff; + } else uiFrostboltTimer -= diff; } DoMeleeAttackIfReady(); @@ -796,27 +800,27 @@ struct mob_azure_mage_slayerAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(me->GetEntry() == CREATURE_AZURE_MAGE_SLAYER_1) + if (me->GetEntry() == CREATURE_AZURE_MAGE_SLAYER_1) { - if(uiArcaneEmpowermentTimer <= diff) + if (uiArcaneEmpowermentTimer <= diff) { DoCast(me,SPELL_ARCANE_EMPOWERMENT); uiArcaneEmpowermentTimer = 14000; - }else uiArcaneEmpowermentTimer -= diff; + } else uiArcaneEmpowermentTimer -= diff; } - if(me->GetEntry() == CREATURE_AZURE_MAGE_SLAYER_2) + if (me->GetEntry() == CREATURE_AZURE_MAGE_SLAYER_2) { - if(uiSpellLockTimer <= diff) + if (uiSpellLockTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,SPELL_SPELL_LOCK); uiSpellLockTimer = 9000; - }else uiSpellLockTimer -= diff; + } else uiSpellLockTimer -= diff; } DoMeleeAttackIfReady(); @@ -844,20 +848,20 @@ struct mob_azure_captainAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(uiMortalStrikeTimer <= diff) + if (uiMortalStrikeTimer <= diff) { DoCast(me->getVictim(),SPELL_MORTAL_STRIKE); uiMortalStrikeTimer = 5000; - }else uiMortalStrikeTimer -= diff; + } else uiMortalStrikeTimer -= diff; - if(uiWhirlwindTimer <= diff) + if (uiWhirlwindTimer <= diff) { DoCast(me,SPELL_WHIRLWIND_OF_STEEL); uiWhirlwindTimer = 8000; - }else uiWhirlwindTimer -= diff; + } else uiWhirlwindTimer -= diff; DoMeleeAttackIfReady(); } @@ -886,23 +890,23 @@ struct mob_azure_sorcerorAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(uiArcaneStreamTimer <= diff) + if (uiArcaneStreamTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true); - if(pTarget) + if (pTarget) DoCast(pTarget,DUNGEON_MODE(SPELL_ARCANE_STREAM,H_SPELL_ARCANE_STREAM)); uiArcaneStreamTimer = urand(0,5000)+5000; uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer; - }else uiArcaneStreamTimer -= diff; + } else uiArcaneStreamTimer -= diff; - if(uiManaDetonationTimer <= diff && uiArcaneStreamTimer >=1500 && uiArcaneStreamTimer <= uiArcaneStreamTimerStartingValueHolder/2) + if (uiManaDetonationTimer <= diff && uiArcaneStreamTimer >=1500 && uiArcaneStreamTimer <= uiArcaneStreamTimerStartingValueHolder/2) { DoCast(DUNGEON_MODE(SPELL_MANA_DETONATION,H_SPELL_MANA_DETONATION)); uiManaDetonationTimer = urand(2000,6000); - }else uiManaDetonationTimer -= diff; + } else uiManaDetonationTimer -= diff; DoMeleeAttackIfReady(); } @@ -929,20 +933,20 @@ struct mob_azure_raiderAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(uiConcussionBlowTimer <= diff) + if (uiConcussionBlowTimer <= diff) { DoCast(me->getVictim(),SPELL_CONCUSSION_BLOW); uiConcussionBlowTimer = 5000; - }else uiConcussionBlowTimer -= diff; + } else uiConcussionBlowTimer -= diff; - if(uiMagicReflectionTimer <= diff) + if (uiMagicReflectionTimer <= diff) { DoCast(SPELL_MAGIC_REFLECTION); uiMagicReflectionTimer = urand(10000,15000); - }else uiMagicReflectionTimer -= diff; + } else uiMagicReflectionTimer -= diff; DoMeleeAttackIfReady(); } @@ -970,30 +974,30 @@ struct mob_azure_stalkerAI : public violet_hold_trashAI violet_hold_trashAI::UpdateAI(diff); npc_escortAI::UpdateAI(diff); - if(!UpdateVictim()) + if (!UpdateVictim()) return; - if(!TacticalBlinkCasted) + if (!TacticalBlinkCasted) { - if(uiTacticalBlinkTimer <= diff) + if (uiTacticalBlinkTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 40, true); - if(pTarget) + if (pTarget) DoCast(pTarget,SPELL_TACTICAL_BLINK); uiTacticalBlinkTimer = 6000; TacticalBlinkCasted = true; - }else uiTacticalBlinkTimer -= diff; + } else uiTacticalBlinkTimer -= diff; } else { - if(uiBackstabTimer <= diff) + if (uiBackstabTimer <= diff) { Unit* pTarget = SelectTarget(SELECT_TARGET_NEAREST, 0, 10, true); DoCast(pTarget,SPELL_BACKSTAB); TacticalBlinkCasted = false; uiBackstabTimer =1300; - }else uiBackstabTimer -= diff; + } else uiBackstabTimer -= diff; } DoMeleeAttackIfReady(); |