rendered paste bodyIndex: scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp===================================================================--- scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp (revision 290)+++ scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp (working copy)@@ -16,8 +16,8 @@ /* ScriptData SDName: Boss_Fathomlord_Karathress-SD%Complete: 50-SDComment: Missing Multishot, pet, Totems, Windfury, Whirlwind+SD%Complete: 65+SDComment: Totems, Windfury, Whirlwind EndScriptData */ #include "../../../sc_defines.h"@@ -31,15 +31,22 @@ #define SPELL_POWER_OF_TIDALVESS 38452 #define SPELL_POWER_OF_CARIBDIS 38451 #define SPELL_ENRAGE 24318+ //Sharkkis spells+#define SPELL_MULITSHOT 29576 #define SPELL_LEECHING_THROW 29436 #define SPELL_THE_BEAST_WITHIN 38373+// Fathom Lurker 22119+// Fathom Sporebat 22120+ //Tidalvess spells #define SPELL_FROST_SHOCK 38234+#define SPELL_WINDFURY 43303 // Flame Shock, WF don't work+ //Caribdis Spells #define SPELL_WATER_BOLT_VOLLEY 38335-#define SPELL_TIDAL_SURGE 38353-#define SPELL_HEAL 41386+#define SPELL_TIDAL_SURGE 40875 // not working so alternative spell+#define SPELL_HEAL 24947 // Heal whole hp :) #define SAY_AGGRO "Guards, attention! We have visitors..." #define SAY_SLAY1 "I am rid of you."@@ -327,6 +334,8 @@ uint32 LeechingThrow_Timer; uint32 TheBeastWithin_Timer;+ uint32 Multishot_Timer;+ uint32 Summon_Timer; bool InCombat; @@ -334,6 +343,8 @@ { LeechingThrow_Timer = 20000; TheBeastWithin_Timer = 30000;+ Multishot_Timer = 40000;+ Summon_Timer = 2000; InCombat = false; @@ -344,21 +355,6 @@ if(pInstance) pInstance->SetData(DATA_KARATHRESSEVENT, 0);-- - - - - - - - - - - - - - } void JustDied(Unit *victim)@@ -445,6 +441,27 @@ if(pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT)) EnterEvadeMode(); + //Summon_Timer+ if(Summon_Timer < diff)+ {+ Unit* spwcreature = NULL;+ switch(rand()%3)+ {+ case 0:+ spwcreature = m_creature->SummonCreature(22119,m_creature->getVictim()->GetPositionX(),m_creature->getVictim()->GetPositionY(),m_creature->getVictim()->GetPositionZ(),0, TEMPSUMMON_DEAD_DESPAWN, 500000);+ break;++ case 1:+ spwcreature = m_creature->SummonCreature(22120,m_creature->getVictim()->GetPositionX(),m_creature->getVictim()->GetPositionY(),m_creature->getVictim()->GetPositionZ(),0, TEMPSUMMON_DEAD_DESPAWN, 500000);+ break;++ case 2:+ spwcreature = m_creature->SummonCreature(22119,m_creature->getVictim()->GetPositionX(),m_creature->getVictim()->GetPositionY(),m_creature->getVictim()->GetPositionZ(),0, TEMPSUMMON_DEAD_DESPAWN, 500000);+ spwcreature = m_creature->SummonCreature(22120,m_creature->getVictim()->GetPositionX(),m_creature->getVictim()->GetPositionY(),m_creature->getVictim()->GetPositionZ(),0, TEMPSUMMON_DEAD_DESPAWN, 500000);+ break;+ }+ Summon_Timer = 600000;+ }else Summon_Timer -=diff; //LeechingThrow_Timer if(LeechingThrow_Timer < diff) {@@ -456,9 +473,17 @@ if(TheBeastWithin_Timer < diff) { DoCast(m_creature, SPELL_THE_BEAST_WITHIN);- TheBeastWithin_Timer = 30000;+ TheBeastWithin_Timer = 31000; }else TheBeastWithin_Timer -= diff; + //Mulitshot_Timer+ if(Multishot_Timer < diff)+ {+ DoCast(SelectUnit(SELECT_TARGET_RANDOM, 1), SPELL_MULITSHOT);+ Multishot_Timer = 36000;+ }else Multishot_Timer -= diff;++ DoMeleeAttackIfReady(); } };@@ -475,12 +500,14 @@ ScriptedInstance* pInstance; uint32 FrostShock_Timer;+ uint32 Windfury_Timer; bool InCombat; void Reset() { FrostShock_Timer = 25000;+ Windfury_Timer = 20000; InCombat = false; @@ -491,23 +518,8 @@ if(pInstance) pInstance->SetData(DATA_KARATHRESSEVENT, 0);+ } - - - - - - - - - - - - - - - }- void JustDied(Unit *victim) { if(pInstance)@@ -599,6 +611,13 @@ FrostShock_Timer = 25000+rand()%5000; }else FrostShock_Timer -= diff; + //Windfury_Timer+ if(Windfury_Timer < diff)+ {+ DoCast(SelectUnit(SELECT_TARGET_RANDOM, 1), SPELL_WINDFURY);+ Windfury_Timer = 10000+rand()%10000;+ }else Windfury_Timer -= diff;+ DoMeleeAttackIfReady(); } };@@ -624,7 +643,7 @@ { WaterBoltVolley_Timer = 35000; TidalSurge_Timer = 15000+rand()%5000;- Heal_Timer = 55000;+ Heal_Timer = 120000; InCombat = false; @@ -635,23 +654,8 @@ if(pInstance) pInstance->SetData(DATA_KARATHRESSEVENT, 0);+} - - - - - - - - - - - - - - - }- void JustDied(Unit *victim) { if(pInstance)@@ -778,8 +782,8 @@ } }else pUnit = m_creature; - if(pUnit && pUnit->isAlive())- DoCast(pUnit, SPELL_HEAL);+ if(pUnit && pUnit->isAlive()){DoCast(pUnit, SPELL_HEAL);}+ else { DoCast(m_creature, SPELL_HEAL);} Heal_Timer = 60000; }else Heal_Timer -= diff;