From 5fd7801c2890755b8b05af6f7f37864a44fe7b76 Mon Sep 17 00:00:00 2001 From: "philipp.dallig" Date: Tue, 27 Sep 2011 17:45:42 +0000 Subject: [PATCH] colossus fixes und cleanup --- VC100/100ScriptDev2.vcxproj.filters | 4 +- scripts/custom/custom_cybernetic.cpp | 2 +- scripts/northrend/gundrak/boss_colossus.cpp | 45 ++++++++++++--------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/VC100/100ScriptDev2.vcxproj.filters b/VC100/100ScriptDev2.vcxproj.filters index 456effb..f6b0c2b 100644 --- a/VC100/100ScriptDev2.vcxproj.filters +++ b/VC100/100ScriptDev2.vcxproj.filters @@ -1843,7 +1843,6 @@ - scripts\northrend\ulduar\ulduar @@ -1857,6 +1856,9 @@ scripts\custom + + scripts\battlegrounds + diff --git a/scripts/custom/custom_cybernetic.cpp b/scripts/custom/custom_cybernetic.cpp index 32e640f..d859060 100644 --- a/scripts/custom/custom_cybernetic.cpp +++ b/scripts/custom/custom_cybernetic.cpp @@ -291,7 +291,7 @@ bool GossipSelect_custum_cybernetic_2(Player *pPlayer, Creature *pCreature, uint bool GossipHello_custum_cybernetic_3(Player* pPlayer, Creature* pCreature) { - pPlayer->PrepareGossipMenu(pCreature, pCreature->GetCreatureInfo()->GossipMenuId); + pPlayer->PrepareGossipMenu(pCreature, pCreature->GetCreatureInfo()->GossipMenuId); pPlayer->SendPreparedGossip(pCreature); pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT,"Ich will meinen Super Tollen Ring haben.", GOSSIP_SENDER_MAIN, 555); pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetObjectGuid()); diff --git a/scripts/northrend/gundrak/boss_colossus.cpp b/scripts/northrend/gundrak/boss_colossus.cpp index 581ca3b..258a388 100644 --- a/scripts/northrend/gundrak/boss_colossus.cpp +++ b/scripts/northrend/gundrak/boss_colossus.cpp @@ -36,6 +36,7 @@ enum SPELL_MIGHTY_BLOW = 54719, SPELL_MORTAL_STRIKES = 54715, SPELL_MORTAL_STRIKES_H = 59454, + SPELL_STUN = 54852, // elemental's abilities SPELL_MERGE = 54269, @@ -74,17 +75,20 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI uint32 m_uiMightyBlowTimer; uint32 m_uiEmergeTimer; + uint32 m_uiElementarTimer; void Reset() { - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_PASSIVE); + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE | UNIT_FLAG_PASSIVE | UNIT_FLAG_UNK_6 | UNIT_FLAG_UNK_15); SetCombatMovement(false); m_uiPhase = PHASE_START; m_uiEmergeTimer = 12000; m_uiMightyBlowTimer = 3000; + m_creature->SetWalk(true); m_uiMojoDieTimer = 4000; m_bElementsHasMoved = false; + m_uiElementarTimer = 26000; } void Aggro(Unit* pWho) @@ -103,7 +107,7 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI { if (m_pInstance) m_pInstance->SetData(TYPE_COLOSSUS, DONE); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); } void KillElementals() @@ -116,7 +120,9 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI { if (pMojo->isAlive()) { - m_creature->DealDamage(pMojo, pMojo->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + pMojo->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE | UNIT_FLAG_NON_ATTACKABLE); + m_creature->DealDamage(pMojo, pMojo->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + m_creature->RemoveAurasDueToSpell(16245); } } } @@ -127,9 +133,12 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI { if (pSpell->Id == SPELL_MERGE) { - m_uiPhase = PHASE_NORMAL; + if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE)) + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); SetCombatMovement(true); - m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); + m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); + m_uiPhase = PHASE_NORMAL; + m_uiElementarTimer = 26000; } } @@ -165,6 +174,7 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI { KillElementals(); SetCombatMovement(true); + m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); m_uiPhase = PHASE_NORMAL; } else @@ -187,8 +197,7 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI { if (DoCastSpellIfCan(m_creature, SPELL_EMERGE) == CAST_OK) { - m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); - SetCombatMovement(false); + //SetCombatMovement(false); m_uiPhase = PHASE_ELEMENTAR; m_uiEmergeTimer = 15000; return; @@ -202,7 +211,16 @@ struct MANGOS_DLL_DECL boss_colossusAI : public ScriptedAI } case PHASE_ELEMENTAR: { - // Do nothing + + if (m_uiElementarTimer < uiDiff) + { + //SetCombatMovement(true); + //m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); + m_uiPhase = PHASE_NORMAL; + m_uiElementarTimer = 26000; + } + else + m_uiElementarTimer -= uiDiff; break; } @@ -247,16 +265,7 @@ struct MANGOS_DLL_DECL mob_colossus_elementalAI : public ScriptedAI { if (DoCastSpellIfCan(m_creature, SPELL_MERGE) == CAST_OK) { - if (Creature * pColossus = m_pInstance->GetSingleCreatureFromStorage(NPC_COLOSSUS)) - { - if (boss_colossusAI * pColossusAI = (boss_colossusAI*)pColossus->AI()) - { - pColossusAI->m_uiPhase = PHASE_NORMAL; - pColossusAI->SetCombatMovement(true); - pColossus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); - m_uiMergeTimer = 25000; - } - } + m_uiMergeTimer = 5000; } } else