Changeset 164 for trunk/src/bindings/scripts
- Timestamp:
- 11/19/08 13:42:11 (17 years ago)
- Location:
- trunk/src/bindings/scripts
- Files:
-
- 1 added
- 5 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp
r130 r164 26 26 #include "../../../npc/npc_escortAI.h" 27 27 28 #define SAY_AGGRO -1548021 29 #define SAY_GAIN_BLESSING -1548022 30 #define SAY_GAIN_ABILITY1 -1548023 31 #define SAY_GAIN_ABILITY2 -1548024 32 #define SAY_GAIN_ABILITY3 -1548025 33 #define SAY_SLAY1 -1548026 34 #define SAY_SLAY2 -1548027 35 #define SAY_SLAY3 -1548028 36 #define SAY_DEATH -1548029 37 28 38 //Karathress spells 29 #define SPELL_CATACLYSMIC_BOLT 30 #define SPELL_POWER_OF_SHARKKIS 31 #define SPELL_POWER_OF_TIDALVESS 32 #define SPELL_POWER_OF_CARIBDIS 33 #define SPELL_ENRAGE 4507834 #define SPELL_SEAR_NOVA 39 #define SPELL_CATACLYSMIC_BOLT 38441 40 #define SPELL_POWER_OF_SHARKKIS 38455 41 #define SPELL_POWER_OF_TIDALVESS 38452 42 #define SPELL_POWER_OF_CARIBDIS 38451 43 #define SPELL_ENRAGE 24318 44 #define SPELL_SEAR_NOVA 38445 35 45 #define SPELL_BLESSING_OF_THE_TIDES 38449 36 46 37 47 //Sharkkis spells 38 #define SPELL_LEECHING_THROW 29436 39 #define SPELL_THE_BEAST_WITHIN 38373 40 #define SPELL_LEECHING_THROW 29436 48 #define SPELL_LEECHING_THROW 29436 49 #define SPELL_THE_BEAST_WITHIN 38373 41 50 #define SPELL_MULTISHOT 38366 42 #define SPELL_THE_BEAST_WITHIN 3837343 51 #define SPELL_SUMMON_FATHOM_LURKER 38433 44 52 #define SPELL_SUMMON_FATHOM_SPOREBAT 38431 … … 63 71 64 72 //Yells and Quotes 65 #define SAY_AGGRO "Guards, attention! We have visitors..."66 #define SOUND_AGGRO 1127767 #define SAY_SLAY1 "I am rid of you."68 #define SOUND_SLAY1 1128269 #define SAY_SLAY2 "Land-dwelling scum!"70 #define SOUND_SLAY2 1128471 #define SAY_GAIN_ABILITY1 "I am more powerful than ever!"72 #define SOUND_GAIN_ABILITY1 1127973 #define SAY_GAIN_ABILITY2 "Go on, kill them! I'll be the better for it!"74 #define SOUND_GAIN_ABILITY2 1128075 #define SAY_GAIN_ABILITY3 "More knowledge, more power!"76 #define SOUND_GAIN_ABILITY3 1128177 #define SAY_DEATH "Her ... excellency ... awaits!"78 #define SOUND_DEATH 1128579 73 #define SAY_GAIN_BLESSING_OF_TIDES "Your overconfidence will be your undoing! Guards, lend me your strength!" 80 74 #define SOUND_GAIN_BLESSING_OF_TIDES 11278 … … 158 152 void EventSharkkisDeath() 159 153 { 160 DoPlaySoundToSet(m_creature, SOUND_GAIN_ABILITY1); 161 DoYell(SAY_GAIN_ABILITY1, LANG_UNIVERSAL, NULL); 154 DoScriptText(SAY_GAIN_ABILITY1, m_creature); 162 155 DoCast(m_creature, SPELL_POWER_OF_SHARKKIS); 163 156 } … … 165 158 void EventTidalvessDeath() 166 159 { 167 DoPlaySoundToSet(m_creature, SOUND_GAIN_ABILITY2); 168 DoYell(SAY_GAIN_ABILITY2, LANG_UNIVERSAL, NULL); 160 DoScriptText(SAY_GAIN_ABILITY2, m_creature); 169 161 DoCast(m_creature, SPELL_POWER_OF_TIDALVESS); 170 162 } … … 172 164 void EventCaribdisDeath() 173 165 { 174 DoPlaySoundToSet(m_creature, SOUND_GAIN_ABILITY3); 175 DoYell(SAY_GAIN_ABILITY3, LANG_UNIVERSAL, NULL); 166 DoScriptText(SAY_GAIN_ABILITY3, m_creature); 176 167 DoCast(m_creature, SPELL_POWER_OF_CARIBDIS); 177 168 } … … 179 170 void GetAdvisors() 180 171 { 181 if (!pInstance)172 if (!pInstance) 182 173 return; 183 174 … … 189 180 void StartEvent(Unit *who) 190 181 { 191 if (!pInstance)182 if (!pInstance) 192 183 return; 193 184 194 185 GetAdvisors(); 195 186 196 DoPlaySoundToSet(m_creature, SOUND_AGGRO); 197 DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL); 187 DoScriptText(SAY_AGGRO, m_creature); 198 188 DoZoneInCombat(); 199 189 … … 206 196 switch(rand()%3) 207 197 { 208 case 0: 209 DoPlaySoundToSet(m_creature, SOUND_SLAY1); 210 DoYell(SAY_SLAY1, LANG_UNIVERSAL, NULL); 211 break; 212 case 1: 213 DoPlaySoundToSet(m_creature, SOUND_SLAY2); 214 DoYell(SAY_SLAY2, LANG_UNIVERSAL, NULL); 215 break; 198 case 0: DoScriptText(SAY_SLAY1, m_creature); break; 199 case 1: DoScriptText(SAY_SLAY2, m_creature); break; 200 case 2: DoScriptText(SAY_SLAY3, m_creature); break; 216 201 } 217 202 } … … 219 204 void JustDied(Unit *killer) 220 205 { 221 DoPlaySoundToSet(m_creature, SOUND_DEATH); 222 DoYell(SAY_DEATH, LANG_UNIVERSAL, NULL); 223 224 if( pInstance ) 225 pInstance->SetData(DATA_FATHOMLORDKARATHRESSEVENT, DONE); 206 DoScriptText(SAY_DEATH, m_creature); 207 208 if (pInstance) 209 pInstance->SetData(DATA_FATHOMLORDKARATHRESSEVENT, NOT_STARTED); 226 210 227 211 //support for quest 10944 … … 237 221 { 238 222 //Only if not incombat check if the event is started 239 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT))223 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT)) 240 224 { 241 225 Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESSEVENT_STARTER)); 242 226 243 if (target)227 if (target) 244 228 { 245 229 AttackStart(target); … … 253 237 254 238 //someone evaded! 255 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT))239 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT)) 256 240 { 257 241 EnterEvadeMode(); … … 260 244 261 245 //CataclysmicBolt_Timer 262 if (CataclysmicBolt_Timer < diff)246 if (CataclysmicBolt_Timer < diff) 263 247 { 264 248 //select a random unit other than the main tank … … 266 250 267 251 //if there aren't other units, cast on the tank 268 if (!target)252 if (!target) 269 253 target = m_creature->getVictim(); 270 254 … … 283 267 284 268 //Enrage_Timer 285 if (Enrage_Timer < diff)269 if (Enrage_Timer < diff) 286 270 { 287 271 DoCast(m_creature, SPELL_ENRAGE); … … 364 348 void JustDied(Unit *victim) 365 349 { 366 if (pInstance)350 if (pInstance) 367 351 { 368 352 Creature *Karathress = NULL; 369 353 Karathress = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); 370 354 371 if (Karathress)372 if(!m_creature->isAlive() && Karathress) 355 if (Karathress) 356 ((boss_fathomlord_karathressAI*)Karathress->AI())->EventSharkkisDeath(); 373 357 ((boss_fathomlord_karathressAI*)Karathress->AI())->EventSharkkisDeath(); 374 358 } … … 377 361 void Aggro(Unit *who) 378 362 { 379 if (pInstance)363 if (pInstance) 380 364 { 381 365 pInstance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); … … 387 371 { 388 372 //Only if not incombat check if the event is started 389 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT))373 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT)) 390 374 { 391 375 Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESSEVENT_STARTER)); 392 376 393 if (target)377 if (target) 394 378 { 395 379 AttackStart(target); … … 402 386 403 387 //someone evaded! 404 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT))388 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT)) 405 389 { 406 390 EnterEvadeMode(); … … 488 472 Earthbind_Timer = 45000; 489 473 490 if ( pInstance)474 if (pInstance) 491 475 pInstance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); 492 476 } … … 494 478 void JustDied(Unit *victim) 495 479 { 496 if (pInstance)480 if (pInstance) 497 481 { 498 482 Creature *Karathress = NULL; 499 483 Karathress = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); 500 484 501 if (Karathress)485 if (Karathress) 502 486 if(!m_creature->isAlive() && Karathress) 503 487 ((boss_fathomlord_karathressAI*)Karathress->AI())->EventTidalvessDeath(); … … 507 491 void Aggro(Unit *who) 508 492 { 509 if (pInstance)493 if (pInstance) 510 494 { 511 495 pInstance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); … … 518 502 { 519 503 //Only if not incombat check if the event is started 520 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT))504 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT)) 521 505 { 522 506 Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESSEVENT_STARTER)); 523 507 524 if (target)508 if (target) 525 509 { 526 510 AttackStart(target); … … 533 517 534 518 //someone evaded! 535 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT))519 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT)) 536 520 { 537 521 EnterEvadeMode(); … … 545 529 546 530 //FrostShock_Timer 547 if (FrostShock_Timer < diff)531 if (FrostShock_Timer < diff) 548 532 { 549 533 DoCast(m_creature->getVictim(), SPELL_FROST_SHOCK); … … 604 588 Cyclone_Timer = 30000+rand()%10000; 605 589 606 if (pInstance)590 if (pInstance) 607 591 pInstance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED); 608 592 } … … 610 594 void JustDied(Unit *victim) 611 595 { 612 if (pInstance)596 if (pInstance) 613 597 { 614 598 Creature *Karathress = NULL; 615 599 Karathress = (Creature*)(Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESS))); 616 600 617 if (Karathress)601 if (Karathress) 618 602 if(!m_creature->isAlive() && Karathress) 619 603 ((boss_fathomlord_karathressAI*)Karathress->AI())->EventCaribdisDeath(); … … 623 607 void Aggro(Unit *who) 624 608 { 625 if (pInstance)609 if (pInstance) 626 610 { 627 611 pInstance->SetData64(DATA_KARATHRESSEVENT_STARTER, who->GetGUID()); … … 633 617 { 634 618 //Only if not incombat check if the event is started 635 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT))619 if (!InCombat && pInstance && pInstance->GetData(DATA_KARATHRESSEVENT)) 636 620 { 637 621 Unit* target = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_KARATHRESSEVENT_STARTER)); 638 622 639 if (target)623 if (target) 640 624 { 641 625 AttackStart(target); … … 648 632 649 633 //someone evaded! 650 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT))634 if (pInstance && !pInstance->GetData(DATA_KARATHRESSEVENT)) 651 635 { 652 636 EnterEvadeMode(); … … 655 639 656 640 //WaterBoltVolley_Timer 657 if (WaterBoltVolley_Timer < diff)641 if (WaterBoltVolley_Timer < diff) 658 642 { 659 643 DoCast(m_creature->getVictim(), SPELL_WATER_BOLT_VOLLEY); … … 662 646 663 647 //TidalSurge_Timer 664 if (TidalSurge_Timer < diff)648 if (TidalSurge_Timer < diff) 665 649 { 666 650 DoCast(m_creature->getVictim(), SPELL_TIDAL_SURGE); … … 706 690 }else Heal_Timer -= diff; 707 691 708 709 692 DoMeleeAttackIfReady(); 693 } 710 694 711 695 Unit* selectAdvisorUnit() -
trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp
r90 r164 24 24 #include "precompiled.h" 25 25 #include "def_serpent_shrine.h" 26 27 #define SAY_AGGRO -1548000 28 #define SAY_SWITCH_TO_CLEAN -1548001 29 #define SAY_CLEAN_SLAY1 -1548002 30 #define SAY_CLEAN_SLAY2 -1548003 31 #define SAY_CLEAN_DEATH -1548004 32 #define SAY_SWITCH_TO_CORRUPT -1548005 33 #define SAY_CORRUPT_SLAY1 -1548006 34 #define SAY_CORRUPT_SLAY2 -1548007 35 #define SAY_CORRUPT_DEATH -1548008 26 36 27 37 #define SWITCH_RADIUS 18 … … 52 62 #define ENTRY_TAINTED_SPAWN 22036 53 63 54 #define SAY_AGGRO "I cannot allow you to interfere!"55 #define SAY_SWITCH_TO_CLEAN "Better, much better."56 #define SAY_CLEAN_SLAY1 "They have forced me to this..."57 #define SAY_CLEAN_SLAY2 "I have no choice."58 #define SAY_CLEAN_DEATH "I am... released..."59 #define SAY_SWITCH_TO_CORRUPT "Aaghh, the poison..."60 #define SAY_CORRUPT_SLAY1 "I will purge you from this place."61 #define SAY_CORRUPT_SLAY2 "You are no better than they!"62 #define SAY_CORRUPT_DEATH "You are the disease, not I"63 64 #define SOUND_AGGRO 1128965 #define SOUND_SWITCH_TO_CLEAN 1129066 #define SOUND_CLEAN_SLAY1 1129167 #define SOUND_CLEAN_SLAY2 1129268 #define SOUND_CLEAN_DEATH 1129369 #define SOUND_SWITCH_TO_CORRUPT 1129770 #define SOUND_CORRUPT_SLAY1 1129871 #define SOUND_CORRUPT_SLAY2 1129972 #define SOUND_CORRUPT_DEATH 1130073 74 64 #define HYDROSS_X -239.439 75 65 #define HYDROSS_Y -363.481 … … 122 112 m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_CLEAN); 123 113 124 if ( pInstance)114 if (pInstance) 125 115 pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); 126 116 } … … 128 118 void Aggro(Unit *who) 129 119 { 130 DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL); 131 DoPlaySoundToSet(m_creature, SOUND_AGGRO); 132 133 if( pInstance ) 120 DoScriptText(SAY_AGGRO, m_creature); 121 122 if (pInstance) 134 123 pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, IN_PROGRESS); 135 124 } … … 137 126 void KilledUnit(Unit *victim) 138 127 { 139 if(CorruptedForm) 128 if (CorruptedForm) 129 { 140 130 switch(rand()%2) 141 131 { 142 case 0: 143 DoYell(SAY_CORRUPT_SLAY1, LANG_UNIVERSAL, NULL); 144 DoPlaySoundToSet(m_creature, SOUND_CORRUPT_SLAY1); 145 break; 146 case 1: 147 DoYell(SAY_CORRUPT_SLAY2, LANG_UNIVERSAL, NULL); 148 DoPlaySoundToSet(m_creature, SOUND_CORRUPT_SLAY2); 149 break; 132 case 0: DoScriptText(SAY_CORRUPT_SLAY1, m_creature); break; 133 case 1: DoScriptText(SAY_CORRUPT_SLAY2, m_creature); break; 150 134 } 151 else152 {153 switch(rand()%2)154 {155 case 0:156 DoYell(SAY_CLEAN_SLAY1, LANG_UNIVERSAL, NULL);157 DoPlaySoundToSet(m_creature, SOUND_CLEAN_SLAY1);158 break;159 case 1:160 DoYell(SAY_CLEAN_SLAY2, LANG_UNIVERSAL, NULL);161 DoPlaySoundToSet(m_creature, SOUND_CLEAN_SLAY2);162 break;163 }164 }165 }166 167 void JustSummoned(Creature* summoned)168 {169 if( summoned->GetEntry() == ENTRY_PURE_SPAWN )170 summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);171 if( summoned->GetEntry() == ENTRY_TAINTED_SPAWN )172 summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);173 174 summoned->CastSpell(summoned,SPELL_ELEMENTAL_SPAWNIN,true);175 }176 177 void JustDied(Unit *victim)178 {179 if( CorruptedForm )180 {181 DoYell(SAY_CORRUPT_DEATH, LANG_UNIVERSAL, NULL);182 DoPlaySoundToSet(m_creature, SOUND_CORRUPT_DEATH);183 135 } 184 136 else 185 137 { 186 DoYell(SAY_CLEAN_DEATH, LANG_UNIVERSAL, NULL); 187 DoPlaySoundToSet(m_creature, SOUND_CLEAN_DEATH); 138 switch(rand()%2) 139 { 140 case 0: DoScriptText(SAY_CLEAN_SLAY1, m_creature); break; 141 case 1: DoScriptText(SAY_CLEAN_SLAY2, m_creature); break; 142 } 188 143 } 189 190 if( pInstance ) 144 } 145 146 void JustSummoned(Creature* summoned) 147 { 148 if (summoned->GetEntry() == ENTRY_PURE_SPAWN) 149 summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true); 150 if (summoned->GetEntry() == ENTRY_TAINTED_SPAWN) 151 summoned->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); 152 153 summoned->CastSpell(summoned,SPELL_ELEMENTAL_SPAWNIN,true); 154 } 155 156 void JustDied(Unit *victim) 157 { 158 if (CorruptedForm) 159 DoScriptText(SAY_CORRUPT_DEATH, m_creature); 160 else 161 DoScriptText(SAY_CLEAN_DEATH, m_creature); 162 163 if (pInstance) 191 164 pInstance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED); 192 165 } … … 199 172 200 173 // corrupted form 201 if ( CorruptedForm)174 if (CorruptedForm) 202 175 { 203 176 //MarkOfCorruption_Timer 204 if ( MarkOfCorruption_Timer < diff)205 { 206 if ( MarkOfCorruption_Count <= 5)177 if (MarkOfCorruption_Timer < diff) 178 { 179 if (MarkOfCorruption_Count <= 5) 207 180 { 208 181 uint32 mark_spell; … … 220 193 DoCast(m_creature->getVictim(), mark_spell); 221 194 222 if ( MarkOfCorruption_Count < 5)195 if (MarkOfCorruption_Count < 5) 223 196 MarkOfCorruption_Count++; 224 197 } … … 228 201 229 202 //VileSludge_Timer 230 if ( VileSludge_Timer < diff)203 if (VileSludge_Timer < diff) 231 204 { 232 205 Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0); 233 if ( target)206 if (target) 234 207 DoCast(target, SPELL_VILE_SLUDGE); 235 208 … … 238 211 239 212 //PosCheck_Timer 240 if ( PosCheck_Timer < diff)241 { 242 if ( m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) < SWITCH_RADIUS)213 if (PosCheck_Timer < diff) 214 { 215 if (m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) < SWITCH_RADIUS) 243 216 { 244 217 // switch to clean form … … 247 220 MarkOfHydross_Count = 0; 248 221 249 DoYell(SAY_SWITCH_TO_CLEAN, LANG_UNIVERSAL, NULL); 250 DoPlaySoundToSet(m_creature, SOUND_SWITCH_TO_CLEAN); 222 DoScriptText(SAY_SWITCH_TO_CLEAN, m_creature); 251 223 DoResetThreat(); 252 224 … … 269 241 { 270 242 //MarkOfHydross_Timer 271 if ( MarkOfHydross_Timer < diff)272 { 273 if ( MarkOfHydross_Count <= 5)243 if (MarkOfHydross_Timer < diff) 244 { 245 if (MarkOfHydross_Count <= 5) 274 246 { 275 247 uint32 mark_spell; … … 287 259 DoCast(m_creature->getVictim(), mark_spell); 288 260 289 if ( MarkOfHydross_Count < 5)261 if (MarkOfHydross_Count < 5) 290 262 MarkOfHydross_Count++; 291 263 } … … 295 267 296 268 //WaterTomb_Timer 297 if ( WaterTomb_Timer < diff)269 if (WaterTomb_Timer < diff) 298 270 { 299 271 Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0); 300 if ( target)272 if (target) 301 273 DoCast(target, SPELL_WATER_TOMB); 302 274 … … 305 277 306 278 //PosCheck_Timer 307 if ( PosCheck_Timer < diff)308 { 309 if ( m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) >= SWITCH_RADIUS)279 if (PosCheck_Timer < diff) 280 { 281 if (m_creature->GetDistance2d(HYDROSS_X, HYDROSS_Y) >= SWITCH_RADIUS) 310 282 { 311 283 // switch to corrupted form … … 314 286 CorruptedForm = true; 315 287 316 DoYell(SAY_SWITCH_TO_CORRUPT, LANG_UNIVERSAL, NULL); 317 DoPlaySoundToSet(m_creature, SOUND_SWITCH_TO_CORRUPT); 288 DoScriptText(SAY_SWITCH_TO_CORRUPT, m_creature); 318 289 DoResetThreat(); 319 290 … … 334 305 335 306 //EnrageTimer 336 if ( EnrageTimer < diff)307 if (EnrageTimer < diff) 337 308 { 338 309 DoCast(m_creature, SPELL_ENRAGE); -
trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp
r117 r164 28 28 #include "Spell.h" 29 29 30 #define SPELL_MULTI_SHOT 38310 31 #define SPELL_SHOCK_BLAST 38509 32 #define SPELL_ENTANGLE 38316 33 #define SPELL_STATIC_CHARGE_TRIGGER 38280 34 #define SPELL_FORKED_LIGHTNING 40088 35 #define SPELL_SHOOT 40873 36 #define SPELL_POISON_BOLT 40095 37 #define SPELL_TOXIC_SPORES 38575 38 #define SPELL_MAGIC_BARRIER 38112 39 40 #define SAY_INTRO "Water is life. It has become a rare commodity here in Outland. A commodity that we alone shall control. We are the Highborne, and the time has come at last for us to retake our rightful place in the world!" 41 #define SAY_AGGRO1 "I'll split you from stem to stern! " 42 #define SAY_AGGRO2 "Victory to Lord Illidan!" 43 #define SAY_AGGRO3 "I spit on you, surface filth!" 44 #define SAY_AGGRO4 "Death to the outsiders!" 45 #define SAY_PHASE1 "I did not wish to lower myself by engaging your kind, but you leave me little choice!" 46 #define SAY_PHASE2 "The time is now! Leave none standing!" 47 #define SAY_PHASE3 "You may want to take cover." 48 #define SAY_BOWSHOT1 "Straight to the heart!" 49 #define SAY_BOWSHOT2 "Seek your mark!" 50 #define SAY_SLAY1 "Your time ends now!" 51 #define SAY_SLAY2 "You have failed!" 52 #define SAY_DEATH "Lord Illidan, I... I am... sorry." 53 54 #define SOUND_INTRO 11531 55 #define SOUND_AGGRO1 11532 56 #define SOUND_AGGRO2 11533 57 #define SOUND_AGGRO3 11534 58 #define SOUND_AGGRO4 11535 59 #define SOUND_PHASE1 11538 60 #define SOUND_PHASE2 11539 61 #define SOUND_PHASE3 11540 62 #define SOUND_BOWSHOT1 11536 63 #define SOUND_BOWSHOT2 11537 64 #define SOUND_SLAY1 11541 65 #define SOUND_SLAY2 11542 66 #define SOUND_DEATH 11544 67 68 #define MIDDLE_X 30.134 69 #define MIDDLE_Y -923.65 70 #define MIDDLE_Z 42.9 71 72 #define SPOREBAT_X 30.977156 73 #define SPOREBAT_Y -925.297761 74 #define SPOREBAT_Z 77.176567 75 #define SPOREBAT_O 5.223932 76 77 #define SHIED_GENERATOR_CHANNEL 19870 78 #define ENCHANTED_ELEMENTAL 21958 79 #define TAINTED_ELEMENTAL 22009 80 #define COILFANG_STRIDER 22056 81 #define COILFANG_ELITE 22055 82 #define TOXIC_SPOREBAT 22140 30 #define SAY_INTRO -1548042 31 #define SAY_AGGRO1 -1548043 32 #define SAY_AGGRO2 -1548044 33 #define SAY_AGGRO3 -1548045 34 #define SAY_AGGRO4 -1548046 35 #define SAY_PHASE1 -1548047 36 #define SAY_PHASE2 -1548048 37 #define SAY_PHASE3 -1548049 38 #define SAY_BOWSHOT1 -1548050 39 #define SAY_BOWSHOT2 -1548051 40 #define SAY_SLAY1 -1548052 41 #define SAY_SLAY2 -1548053 42 #define SAY_SLAY3 -1548054 43 #define SAY_DEATH -1548055 44 45 #define SPELL_MULTI_SHOT 38310 46 #define SPELL_SHOCK_BLAST 38509 47 #define SPELL_ENTANGLE 38316 48 #define SPELL_STATIC_CHARGE_TRIGGER 38280 49 #define SPELL_FORKED_LIGHTNING 40088 50 #define SPELL_SHOOT 40873 51 #define SPELL_POISON_BOLT 40095 52 #define SPELL_TOXIC_SPORES 38575 53 #define SPELL_MAGIC_BARRIER 38112 54 55 #define MIDDLE_X 30.134 56 #define MIDDLE_Y -923.65 57 #define MIDDLE_Z 42.9 58 59 #define SPOREBAT_X 30.977156 60 #define SPOREBAT_Y -925.297761 61 #define SPOREBAT_Z 77.176567 62 #define SPOREBAT_O 5.223932 63 64 #define SHIED_GENERATOR_CHANNEL 19870 65 #define ENCHANTED_ELEMENTAL 21958 66 #define TAINTED_ELEMENTAL 22009 67 #define COILFANG_STRIDER 22056 68 #define COILFANG_ELITE 22055 69 #define TOXIC_SPOREBAT 22140 83 70 84 71 float ElementPos[8][4] = … … 214 201 m_creature->GetMotionMaster()->Clear(false); 215 202 m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); 216 DoYell(SAY_INTRO,LANG_UNIVERSAL,NULL); 217 DoPlaySoundToSet(m_creature, SOUND_INTRO); 203 DoScriptText(SAY_INTRO, m_creature); 218 204 m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK); 219 205 AggroTargetGUID = who->GetGUID(); … … 225 211 void KilledUnit(Unit *victim) 226 212 { 227 switch(rand()%2) 228 { 229 case 0: 230 DoYell(SAY_SLAY1, LANG_UNIVERSAL, NULL); 231 DoPlaySoundToSet(m_creature, SOUND_SLAY1); 232 break; 233 234 case 1: 235 DoPlaySoundToSet(m_creature, SOUND_SLAY1); 236 DoYell(SAY_SLAY2, LANG_UNIVERSAL, NULL); 237 break; 213 switch(rand()%3) 214 { 215 case 0: DoScriptText(SAY_SLAY1, m_creature); break; 216 case 1: DoScriptText(SAY_SLAY2, m_creature); break; 217 case 2: DoScriptText(SAY_SLAY3, m_creature); break; 238 218 } 239 219 } … … 241 221 void JustDied(Unit *victim) 242 222 { 243 DoPlaySoundToSet(m_creature, SOUND_DEATH); 244 DoYell(SAY_DEATH, LANG_UNIVERSAL, NULL); 223 DoScriptText(SAY_DEATH, m_creature); 245 224 246 225 if(pInstance) … … 252 231 switch(rand()%4) 253 232 { 254 case 0: 255 DoPlaySoundToSet(m_creature, SOUND_AGGRO1); 256 DoYell(SAY_AGGRO1, LANG_UNIVERSAL, NULL); 257 break; 258 case 1: 259 DoPlaySoundToSet(m_creature, SOUND_AGGRO2); 260 DoYell(SAY_AGGRO2, LANG_UNIVERSAL, NULL); 261 break; 262 case 2: 263 DoPlaySoundToSet(m_creature, SOUND_AGGRO3); 264 DoYell(SAY_AGGRO3, LANG_UNIVERSAL, NULL); 265 break; 266 case 3: 267 DoPlaySoundToSet(m_creature, SOUND_AGGRO4); 268 DoYell(SAY_AGGRO4, LANG_UNIVERSAL, NULL); 269 break; 233 case 0: DoScriptText(SAY_AGGRO1, m_creature); break; 234 case 1: DoScriptText(SAY_AGGRO2, m_creature); break; 235 case 2: DoScriptText(SAY_AGGRO3, m_creature); break; 236 case 3: DoScriptText(SAY_AGGRO4, m_creature); break; 270 237 } 271 238 … … 298 265 switch(rand()%2) 299 266 { 300 case 0: 301 DoPlaySoundToSet(m_creature, SOUND_BOWSHOT1); 302 DoYell(SAY_BOWSHOT1, LANG_UNIVERSAL, NULL); 303 break; 304 case 1: 305 DoPlaySoundToSet(m_creature, SOUND_BOWSHOT2); 306 DoYell(SAY_BOWSHOT2, LANG_UNIVERSAL, NULL); 307 break; 267 case 0: DoScriptText(SAY_BOWSHOT1, m_creature); break; 268 case 1: DoScriptText(SAY_BOWSHOT2, m_creature); break; 308 269 } 309 270 } … … 332 293 switch(rand()%4) 333 294 { 334 case 0: 335 DoPlaySoundToSet(m_creature, SOUND_AGGRO1); 336 DoYell(SAY_AGGRO1, LANG_UNIVERSAL, NULL); 337 break; 338 case 1: 339 DoPlaySoundToSet(m_creature, SOUND_AGGRO2); 340 DoYell(SAY_AGGRO2, LANG_UNIVERSAL, NULL); 341 break; 342 case 2: 343 DoPlaySoundToSet(m_creature, SOUND_AGGRO3); 344 DoYell(SAY_AGGRO3, LANG_UNIVERSAL, NULL); 345 break; 346 case 3: 347 DoPlaySoundToSet(m_creature, SOUND_AGGRO4); 348 DoYell(SAY_AGGRO4, LANG_UNIVERSAL, NULL); 349 break; 295 case 0: DoScriptText(SAY_AGGRO1, m_creature); break; 296 case 1: DoScriptText(SAY_AGGRO2, m_creature); break; 297 case 2: DoScriptText(SAY_AGGRO3, m_creature); break; 298 case 3: DoScriptText(SAY_AGGRO4, m_creature); break; 350 299 } 351 300 Phase = 1; … … 439 388 } 440 389 441 DoPlaySoundToSet(m_creature, SOUND_PHASE2); 442 DoYell(SAY_PHASE2, LANG_UNIVERSAL, NULL); 390 DoScriptText(SAY_PHASE2, m_creature); 443 391 } 444 392 } … … 591 539 m_creature->RemoveAurasDueToSpell(SPELL_MAGIC_BARRIER); 592 540 593 DoPlaySoundToSet(m_creature, SOUND_PHASE3); 594 DoYell(SAY_PHASE3, LANG_UNIVERSAL, NULL); 541 DoScriptText(SAY_PHASE3, m_creature); 595 542 596 543 Phase = 3; -
trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp
r90 r164 25 25 #include "def_serpent_shrine.h" 26 26 27 #define SAY_AGGRO -1548009 28 #define SAY_SWITCH_TO_DEMON -1548010 29 #define SAY_INNER_DEMONS -1548011 30 #define SAY_DEMON_SLAY1 -1548012 31 #define SAY_DEMON_SLAY2 -1548013 32 #define SAY_DEMON_SLAY3 -1548014 33 #define SAY_NIGHTELF_SLAY1 -1548015 34 #define SAY_NIGHTELF_SLAY2 -1548016 35 #define SAY_NIGHTELF_SLAY3 -1548017 36 #define SAY_FINAL_FORM -1548018 37 #define SAY_FREE -1548019 38 #define SAY_DEATH -1548020 39 27 40 #define SPELL_WHIRLWIND 40653 28 41 #define SPELL_CHAOS_BLAST 37675 29 42 //#define SPELL_INSIDIOUS_WHISPER 37676 // useless - dummy effect that can't be implemented 30 43 31 #define SAY_AGGRO "Finally my banishment ends!"32 #define SAY_SWITCH_TO_DEMON "Be gone trifling elf. I'm in control now."33 #define SAY_INNER_DEMONS "We all have our demons..."34 #define SAY_DEMON_SLAY1 "I have no equal."35 #define SAY_DEMON_SLAY2 "Perish, mortal."36 #define SAY_DEMON_SLAY3 "Yes, YES! Ahahah!"37 #define SAY_NIGHTELF_SLAY1 "Kill! KILL!"38 #define SAY_NIGHTELF_SLAY2 "That's right! Yes!"39 #define SAY_NIGHTELF_SLAY3 "Who's the master now?"40 #define SAY_FINAL_FORM "No! NO! What have you done?! I am the master, do you hear me? I... aaghh... Can't... contain him..."41 #define SAY_FREE "At last I am liberated. It has been too long since I have tasted true freedom!"42 #define SAY_DEATH "You cannot kill me! Fools, I'll be back! I'll... aarghh..."43 44 #define SOUND_AGGRO 1131245 #define SOUND_SWITCH_TO_DEMON 1130446 #define SOUND_INNER_DEMONS 1130547 #define SOUND_DEMON_SLAY1 1130648 #define SOUND_DEMON_SLAY2 1130749 #define SOUND_DEMON_SLAY3 1130850 #define SOUND_NIGHTELF_SLAY1 1131451 #define SOUND_NIGHTELF_SLAY2 1131552 #define SOUND_NIGHTELF_SLAY3 1131653 #define SOUND_FINAL_FORM 1131354 #define SOUND_FREE 1130955 #define SOUND_DEATH 1131756 57 44 #define MODEL_DEMON 14555 58 45 #define MODEL_NIGHTELF 20514 … … 65 52 boss_leotheras_the_blindAI(Creature *c) : ScriptedAI(c) 66 53 { 67 pInstance = ( c->GetInstanceData()) ? ((ScriptedInstance*)c->GetInstanceData()) : NULL;54 pInstance = ((ScriptedInstance*)c->GetInstanceData()); 68 55 Demon = 0; 69 56 Reset(); … … 92 79 m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF); 93 80 94 if (pInstance)95 pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, 0);81 if (pInstance) 82 pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, NOT_STARTED); 96 83 } 97 84 98 85 void StartEvent() 99 86 { 100 DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL); 101 DoPlaySoundToSet(m_creature, SOUND_AGGRO); 102 103 if(pInstance) 104 pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, 1); 87 DoScriptText(SAY_AGGRO, m_creature); 88 89 if (pInstance) 90 pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, IN_PROGRESS); 105 91 } 106 92 107 93 void KilledUnit(Unit *victim) 108 94 { 109 if(victim->GetTypeId() != TYPEID_PLAYER) 110 return; 111 112 if(DemonForm) 95 if (victim->GetTypeId() != TYPEID_PLAYER) 96 return; 97 98 if (DemonForm) 99 { 113 100 switch(rand()%3) 114 101 { 115 case 0: 116 DoYell(SAY_DEMON_SLAY1, LANG_UNIVERSAL, NULL); 117 DoPlaySoundToSet(m_creature, SOUND_DEMON_SLAY1); 118 break; 119 case 1: 120 DoYell(SAY_DEMON_SLAY2, LANG_UNIVERSAL, NULL); 121 DoPlaySoundToSet(m_creature, SOUND_DEMON_SLAY2); 122 break; 123 case 2: 124 DoYell(SAY_DEMON_SLAY3, LANG_UNIVERSAL, NULL); 125 DoPlaySoundToSet(m_creature, SOUND_DEMON_SLAY3); 126 break; 127 } 128 else 129 switch(rand()%3) 130 { 131 case 0: 132 DoYell(SAY_NIGHTELF_SLAY1, LANG_UNIVERSAL, NULL); 133 DoPlaySoundToSet(m_creature, SOUND_NIGHTELF_SLAY1); 134 break; 135 case 1: 136 DoYell(SAY_NIGHTELF_SLAY2, LANG_UNIVERSAL, NULL); 137 DoPlaySoundToSet(m_creature, SOUND_NIGHTELF_SLAY2); 138 break; 139 case 2: 140 DoYell(SAY_NIGHTELF_SLAY3, LANG_UNIVERSAL, NULL); 141 DoPlaySoundToSet(m_creature, SOUND_NIGHTELF_SLAY3); 142 break; 143 } 102 case 0: DoScriptText(SAY_DEMON_SLAY1, m_creature); break; 103 case 1: DoScriptText(SAY_DEMON_SLAY2, m_creature); break; 104 case 2: DoScriptText(SAY_DEMON_SLAY3, m_creature); break; 105 } 106 } 107 else 108 { 109 switch(rand()%3) 110 { 111 case 0: DoScriptText(SAY_NIGHTELF_SLAY1, m_creature); break; 112 case 1: DoScriptText(SAY_NIGHTELF_SLAY2, m_creature); break; 113 case 2: DoScriptText(SAY_NIGHTELF_SLAY3, m_creature); break; 114 } 115 } 144 116 } 145 117 146 118 void JustDied(Unit *victim) 147 119 { 148 DoYell(SAY_DEATH, LANG_UNIVERSAL, NULL); 149 DoPlaySoundToSet(m_creature, SOUND_DEATH); 120 DoScriptText(SAY_DEATH, m_creature); 150 121 151 122 //despawn copy 152 if (Demon)123 if (Demon) 153 124 { 154 125 Unit *pUnit = NULL; 155 126 pUnit = Unit::GetUnit((*m_creature), Demon); 156 127 157 if (pUnit)128 if (pUnit) 158 129 pUnit->DealDamage(pUnit, pUnit->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); 159 130 } 160 131 161 if (pInstance)162 pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, 0);132 if (pInstance) 133 pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, DONE); 163 134 } 164 135 … … 174 145 return; 175 146 176 if (!DemonForm)147 if (!DemonForm) 177 148 { 178 149 //Whirlwind_Timer 179 if (Whirlwind_Timer < diff)150 if (Whirlwind_Timer < diff) 180 151 { 181 152 DoCast(m_creature, SPELL_WHIRLWIND); … … 184 155 185 156 //Switch_Timer 186 if (!IsFinalForm)187 if(Switch_Timer < diff)188 {189 //switch to demon form190 m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_DEMON);191 DoYell(SAY_SWITCH_TO_DEMON, LANG_UNIVERSAL, NULL);192 DoPlaySoundToSet(m_creature, SOUND_SWITCH_TO_DEMON);193 DemonForm = true;194 195 Switch_Timer = 60000;196 } else Switch_Timer -= diff;157 if (!IsFinalForm) 158 { 159 if (Switch_Timer < diff) 160 { 161 //switch to demon form 162 m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_DEMON); 163 DoScriptText(SAY_SWITCH_TO_DEMON, m_creature); 164 DemonForm = true; 165 Switch_Timer = 60000; 166 }else Switch_Timer -= diff; 167 } 197 168 198 169 DoMeleeAttackIfReady(); … … 201 172 { 202 173 //ChaosBlast_Timer 203 if (ChaosBlast_Timer < diff)174 if (ChaosBlast_Timer < diff) 204 175 { 205 176 DoCast(m_creature->getVictim(), SPELL_CHAOS_BLAST); … … 208 179 209 180 //Switch_Timer 210 if (Switch_Timer < diff)181 if (Switch_Timer < diff) 211 182 { 212 183 //switch to nightelf form … … 218 189 } 219 190 220 if (!IsFinalForm && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 15)191 if (!IsFinalForm && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 15) 221 192 { 222 193 //at this point he divides himself in two parts … … 224 195 Copy = DoSpawnCreature(DEMON_FORM, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); 225 196 226 if (Copy)197 if (Copy) 227 198 { 228 199 Demon = Copy->GetGUID(); … … 234 205 DemonForm = false; 235 206 236 DoYell(SAY_FINAL_FORM, LANG_UNIVERSAL, NULL); 237 DoPlaySoundToSet(m_creature, SOUND_FINAL_FORM); 238 207 DoScriptText(SAY_FINAL_FORM, m_creature); 239 208 m_creature->SetUInt32Value(UNIT_FIELD_DISPLAYID, MODEL_NIGHTELF); 240 209 } … … 259 228 void StartEvent() 260 229 { 261 DoYell(SAY_FREE, LANG_UNIVERSAL, NULL); 262 DoPlaySoundToSet(m_creature, SOUND_FREE); 230 DoScriptText(SAY_FREE, m_creature); 263 231 } 264 232 265 233 void KilledUnit(Unit *victim) 266 234 { 267 if (victim->GetTypeId() != TYPEID_PLAYER)235 if (victim->GetTypeId() != TYPEID_PLAYER) 268 236 return; 269 237 270 238 switch(rand()%3) 271 239 { 272 case 0: 273 DoYell(SAY_DEMON_SLAY1, LANG_UNIVERSAL, NULL); 274 DoPlaySoundToSet(m_creature, SOUND_DEMON_SLAY1); 275 break; 276 case 1: 277 DoYell(SAY_DEMON_SLAY2, LANG_UNIVERSAL, NULL); 278 DoPlaySoundToSet(m_creature, SOUND_DEMON_SLAY2); 279 break; 280 case 2: 281 DoYell(SAY_DEMON_SLAY3, LANG_UNIVERSAL, NULL); 282 DoPlaySoundToSet(m_creature, SOUND_DEMON_SLAY3); 283 break; 240 case 0: DoScriptText(SAY_DEMON_SLAY1, m_creature); break; 241 case 1: DoScriptText(SAY_DEMON_SLAY2, m_creature); break; 242 case 2: DoScriptText(SAY_DEMON_SLAY3, m_creature); break; 284 243 } 285 244 } … … 303 262 304 263 //ChaosBlast_Timer 305 if (ChaosBlast_Timer < diff)264 if (ChaosBlast_Timer < diff) 306 265 { 307 266 DoCast(m_creature->getVictim(), SPELL_CHAOS_BLAST); -
trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp
r109 r164 25 25 #include "def_serpent_shrine.h" 26 26 27 #define SPELL_TIDAL_WAVE 37730 28 #define SPELL_WATERY_GRAVE 38049 29 #define SPELL_EARTHQUAKE 37764 27 #define SAY_AGGRO -1548030 28 #define SAY_SUMMON1 -1548031 29 #define SAY_SUMMON2 -1548032 30 #define SAY_SUMMON_BUBL1 -1548033 31 #define SAY_SUMMON_BUBL2 -1548034 32 #define SAY_SLAY1 -1548035 33 #define SAY_SLAY2 -1548036 34 #define SAY_SLAY3 -1548037 35 #define SAY_DEATH -1548038 36 #define EMOTE_WATERY_GRAVE -1548039 37 #define EMOTE_EARTHQUAKE -1548040 38 #define EMOTE_WATERY_GLOBULES -1548041 39 40 #define SPELL_TIDAL_WAVE 37730 41 #define SPELL_WATERY_GRAVE 38049 42 #define SPELL_EARTHQUAKE 37764 30 43 #define SPELL_WATERY_GRAVE_EXPLOSION 37852 31 44 32 #define SAY_AGGRO "Flood of the deep, take you!" 33 #define SAY_SUMMON1 "By the Tides, kill them at once!" 34 #define SAY_SUMMON2 "Destroy them my subjects!" 35 #define SAY_SLAY1 "It is done!" 36 #define SAY_SLAY2 "Strugging only makes it worse." 37 #define SAY_SLAY3 "Only the strong survive." 38 #define SAY_SUMMON_BUBL1 "There is nowhere to hide!" 39 #define SAY_SUMMON_BUBL2 "Soon it will be finished!" 40 #define SAY_DEATH "Great... currents of... Ageon." 41 42 #define SOUND_AGGRO 11321 43 #define SOUND_SUMMON1 11322 44 #define SOUND_SUMMON2 11323 45 #define SOUND_SLAY1 11326 46 #define SOUND_SLAY2 11327 47 #define SOUND_SLAY3 11328 48 #define SOUND_SUMMON_BUBL1 11324 49 #define SOUND_SUMMON_BUBL2 11325 50 #define SOUND_DEATH 11329 51 52 #define WATERY_GRAVE_X1 334.64 53 #define WATERY_GRAVE_Y1 -728.89 54 #define WATERY_GRAVE_Z1 -14.42 55 #define WATERY_GRAVE_X2 365.51 56 #define WATERY_GRAVE_Y2 -737.14 57 #define WATERY_GRAVE_Z2 -14.44 58 #define WATERY_GRAVE_X3 366.19 59 #define WATERY_GRAVE_Y3 -709.59 60 #define WATERY_GRAVE_Z3 -14.36 61 #define WATERY_GRAVE_X4 372.93 62 #define WATERY_GRAVE_Y4 -690.96 63 #define WATERY_GRAVE_Z4 -14.44 64 65 #define EMOTE_WATERY_GRAVE "sends his enemies to their watery graves!" 66 #define EMOTE_EARTHQUAKE "The violent earthquake has alerted nearby murlocs!" 67 #define EMOTE_WATERY_GLOBULES "summons Watery Globules!" 68 69 #define WATER_GLOBULE 21913 70 #define TIDEWALKER_LURKER 21920 45 #define WATERY_GRAVE_X1 334.64 46 #define WATERY_GRAVE_Y1 -728.89 47 #define WATERY_GRAVE_Z1 -14.42 48 #define WATERY_GRAVE_X2 365.51 49 #define WATERY_GRAVE_Y2 -737.14 50 #define WATERY_GRAVE_Z2 -14.44 51 #define WATERY_GRAVE_X3 366.19 52 #define WATERY_GRAVE_Y3 -709.59 53 #define WATERY_GRAVE_Z3 -14.36 54 #define WATERY_GRAVE_X4 372.93 55 #define WATERY_GRAVE_Y4 -690.96 56 #define WATERY_GRAVE_Z4 -14.44 57 58 #define WATER_GLOBULE 21913 59 #define TIDEWALKER_LURKER 21920 71 60 72 61 //Morogrim Tidewalker AI … … 99 88 Phase2 = false; 100 89 101 if (pInstance)90 if (pInstance) 102 91 pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); 103 92 } … … 105 94 void StartEvent() 106 95 { 107 DoPlaySoundToSet(m_creature, SOUND_AGGRO); 108 DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL); 109 110 if(pInstance) 96 DoScriptText(SAY_AGGRO, m_creature); 97 98 if (pInstance) 111 99 pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, IN_PROGRESS); 112 100 } … … 116 104 switch(rand()%3) 117 105 { 106 case 0: DoScriptText(SAY_SLAY1, m_creature); break; 107 case 1: DoScriptText(SAY_SLAY2, m_creature); break; 108 case 2: DoScriptText(SAY_SLAY3, m_creature); break; 109 } 110 } 111 112 void JustDied(Unit *victim) 113 { 114 DoScriptText(SAY_DEATH, m_creature); 115 116 if (pInstance) 117 pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED); 118 } 119 120 void Aggro(Unit *who) { StartEvent(); } 121 122 void ApplyWateryGrave(Unit *player, uint8 pos) 123 { 124 float x, y, z; 125 126 switch(pos) 127 { 118 128 case 0: 119 DoPlaySoundToSet(m_creature, SOUND_SLAY1); 120 DoYell(SAY_SLAY1, LANG_UNIVERSAL, NULL); 129 x = WATERY_GRAVE_X1; 130 y = WATERY_GRAVE_Y1; 131 z = WATERY_GRAVE_Z1; 121 132 break; 122 123 133 case 1: 124 DoPlaySoundToSet(m_creature, SOUND_SLAY2); 125 DoYell(SAY_SLAY2, LANG_UNIVERSAL, NULL); 134 x = WATERY_GRAVE_X2; 135 y = WATERY_GRAVE_Y2; 136 z = WATERY_GRAVE_Z2; 126 137 break; 127 128 138 case 2: 129 DoPlaySoundToSet(m_creature, SOUND_SLAY3); 130 DoYell(SAY_SLAY3, LANG_UNIVERSAL, NULL); 139 x = WATERY_GRAVE_X3; 140 y = WATERY_GRAVE_Y3; 141 z = WATERY_GRAVE_Z3; 131 142 break; 132 }133 }134 135 void JustDied(Unit *victim)136 {137 DoPlaySoundToSet(m_creature, SOUND_DEATH);138 DoYell(SAY_DEATH, LANG_UNIVERSAL, NULL);139 140 if(pInstance)141 pInstance->SetData(DATA_MOROGRIMTIDEWALKEREVENT, NOT_STARTED);142 }143 144 void Aggro(Unit *who) { StartEvent(); }145 146 void ApplyWateryGrave(Unit *player, uint8 pos)147 {148 float x, y, z;149 150 switch(pos)151 {152 case 0:153 x = WATERY_GRAVE_X1;154 y = WATERY_GRAVE_Y1;155 z = WATERY_GRAVE_Z1;156 break;157 158 case 1:159 x = WATERY_GRAVE_X2;160 y = WATERY_GRAVE_Y2;161 z = WATERY_GRAVE_Z2;162 break;163 164 case 2:165 x = WATERY_GRAVE_X3;166 y = WATERY_GRAVE_Y3;167 z = WATERY_GRAVE_Z3;168 break;169 170 143 case 3: 171 x = WATERY_GRAVE_X4;172 y = WATERY_GRAVE_Y4;173 z = WATERY_GRAVE_Z4;174 break;144 x = WATERY_GRAVE_X4; 145 y = WATERY_GRAVE_Y4; 146 z = WATERY_GRAVE_Z4; 147 break; 175 148 } 176 149 … … 184 157 185 158 Summoned = m_creature->SummonCreature(TIDEWALKER_LURKER, x, y, z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000); 186 if (Summoned)159 if (Summoned) 187 160 { 188 161 Unit *target = NULL; 189 162 target = SelectUnit(SELECT_TARGET_RANDOM, 0); 190 if (target)163 if (target) 191 164 Summoned->AI()->AttackStart(target); 192 165 } … … 198 171 199 172 Globule = m_creature->SummonCreature(WATER_GLOBULE, x, y, z, 0, TEMPSUMMON_TIMED_DESPAWN, 30000); //they despawn after 30 seconds 200 if (Globule)173 if (Globule) 201 174 { 202 175 Unit *target = NULL; 203 176 target = SelectUnit(SELECT_TARGET_RANDOM, 0); 204 if (target)177 if (target) 205 178 Globule->AI()->AttackStart(target); 206 179 } … … 214 187 215 188 //Earthquake_Timer 216 if (Earthquake_Timer < diff)217 { 218 if (!Earthquake)189 if (Earthquake_Timer < diff) 190 { 191 if (!Earthquake) 219 192 { 220 193 DoCast(m_creature->getVictim(), SPELL_EARTHQUAKE); … … 226 199 switch(rand()%2) 227 200 { 228 case 0: 229 DoPlaySoundToSet(m_creature, SOUND_SUMMON1); 230 DoYell(SAY_SUMMON1, LANG_UNIVERSAL, NULL); 231 break; 232 233 case 1: 234 DoPlaySoundToSet(m_creature, SOUND_SUMMON2); 235 DoYell(SAY_SUMMON2, LANG_UNIVERSAL, NULL); 236 break; 201 case 0: DoScriptText(SAY_SUMMON1, m_creature); break; 202 case 1: DoScriptText(SAY_SUMMON2, m_creature); break; 237 203 } 238 204 … … 253 219 SummonMurloc(293.64, -726.64, -9.81); 254 220 255 Do TextEmote(EMOTE_EARTHQUAKE, NULL);221 DoScriptText(EMOTE_EARTHQUAKE, m_creature); 256 222 257 223 Earthquake = false; … … 261 227 262 228 //TidalWave_Timer 263 if (TidalWave_Timer < diff)229 if (TidalWave_Timer < diff) 264 230 { 265 231 DoCast(m_creature->getVictim(), SPELL_TIDAL_WAVE); … … 267 233 }else TidalWave_Timer -= diff; 268 234 269 if (!Phase2)235 if (!Phase2) 270 236 { 271 237 //WateryGrave_Timer 272 if (WateryGrave_Timer < diff)238 if (WateryGrave_Timer < diff) 273 239 { 274 240 //Teleport 4 players under the waterfalls … … 277 243 { 278 244 target = SelectUnit(SELECT_TARGET_RANDOM, 1); 279 if (target && (target->GetTypeId() == TYPEID_PLAYER) && !target->HasAura(SPELL_WATERY_GRAVE, 0) && target->IsWithinDistInMap(m_creature, 50))245 if (target && (target->GetTypeId() == TYPEID_PLAYER) && !target->HasAura(SPELL_WATERY_GRAVE, 0) && target->IsWithinDistInMap(m_creature, 50)) 280 246 ApplyWateryGrave(target, i); 281 247 } … … 283 249 switch(rand()%2) 284 250 { 285 case 0: 286 DoPlaySoundToSet(m_creature, SOUND_SUMMON_BUBL1); 287 DoYell(SAY_SUMMON_BUBL1, LANG_UNIVERSAL, NULL); 288 break; 289 290 case 1: 291 DoPlaySoundToSet(m_creature, SOUND_SUMMON_BUBL2); 292 DoYell(SAY_SUMMON_BUBL2, LANG_UNIVERSAL, NULL); 293 break; 294 295 case 2: 296 break; 251 case 0: DoScriptText(SAY_SUMMON_BUBL1, m_creature); break; 252 case 1: DoScriptText(SAY_SUMMON_BUBL2, m_creature); break; 297 253 } 298 254 299 DoTextEmote(EMOTE_WATERY_GRAVE, NULL); 300 255 DoScriptText(EMOTE_WATERY_GRAVE, m_creature); 301 256 WateryGrave_Timer = 30000; 302 257 }else WateryGrave_Timer -= diff; 303 258 304 259 //Start Phase2 305 if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)260 if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25) 306 261 Phase2 = true; 307 262 } … … 309 264 { 310 265 //WateryGlobules_Timer 311 if (WateryGlobules_Timer < diff)266 if (WateryGlobules_Timer < diff) 312 267 { 313 268 SummonWaterGlobule(WATERY_GRAVE_X1, WATERY_GRAVE_Y1, WATERY_GRAVE_Z1); … … 316 271 SummonWaterGlobule(WATERY_GRAVE_X4, WATERY_GRAVE_Y4, WATERY_GRAVE_Z4); 317 272 318 Do TextEmote(EMOTE_WATERY_GLOBULES, NULL);273 DoScriptText(EMOTE_WATERY_GLOBULES, m_creature); 319 274 320 275 WateryGlobules_Timer = 25000; … … 363 318 return; 364 319 365 if (Check_Timer < diff)366 { 367 if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 5))320 if (Check_Timer < diff) 321 { 322 if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 5)) 368 323 { 369 324 uint32 damage = 4000+rand()%2000;