diff options
-rw-r--r-- | sql/FULL/world_script_texts.sql | 3 | ||||
-rw-r--r-- | sql/FULL/world_script_waypoints.sql | 10 | ||||
-rw-r--r-- | sql/FULL/world_scripts_full.sql | 1 | ||||
-rw-r--r-- | sql/updates/6742_world_script_texts.sql | 3 | ||||
-rw-r--r-- | sql/updates/6742_world_script_waypoints.sql | 9 | ||||
-rw-r--r-- | sql/updates/6742_world_scriptnames.sql | 1 | ||||
-rw-r--r-- | src/bindings/scripts/scripts/northrend/zuldrak.cpp | 138 |
7 files changed, 164 insertions, 1 deletions
diff --git a/sql/FULL/world_script_texts.sql b/sql/FULL/world_script_texts.sql index 82787a3bdfa..5f55f9b4a4d 100644 --- a/sql/FULL/world_script_texts.sql +++ b/sql/FULL/world_script_texts.sql @@ -1621,7 +1621,7 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (0,-1568022,'Da Amani gonna rule again!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12076,1,0,0,'nalorakk SAY_SLAY2'), (0,-1568023,'I... be waitin'' on da udda side....',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12077,1,0,0,'nalorakk SAY_DEATH'), --- -1 571 000 SHOLAZAR BASIN +-- -1 571 000 NORTHREND (28217,-1571000,'You save me! We thank you. We going to go back to village now. You come too... you can stay with us! Puppy-men kind of mean anyway. ',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'npc_injured_rainspeaker_oracle SAY_END_IRO'), (28217,-1571001,'Let me know when you ready to go, okay?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'npc_injured_rainspeaker_oracle SAY_QUEST_ACCEPT_IRO '), (28217,-1571002,'Home time!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,'npc_injured_rainspeaker_oracle SAY_START_IRO'), @@ -1657,6 +1657,7 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1` (30020,-1571032,'Whisker! Where are you? Assist me!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,0,0,''), (30007,-1571033,'The champion of the Winterax trolls has challenged you, Treeofdoom! I hope you''re ready!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,''), (30007,-1571034,'Hailling from the distant mountains of Alterac, one of the fiercest competitors this arena has ever seen: KORRAK THE BLOODRAGER!!!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,13363,1,0,0,''), + (30007,-1571035,'The battle is about to begin! Am I reading this card right It... It''s the nefarious magnataur lord, STINKBEARD! Yes, folks, STINKBEARD! Chitchat dosen''t stand a chance!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,13363,1,0,0,''), -- -1 574 000 UTGARDE KEEP (23953,-1574000,'Your blood is mine!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,13221,1,0,0,'keleseth SAY_AGGRO'), diff --git a/sql/FULL/world_script_waypoints.sql b/sql/FULL/world_script_waypoints.sql index be2380d7d30..563fddb48d9 100644 --- a/sql/FULL/world_script_waypoints.sql +++ b/sql/FULL/world_script_waypoints.sql @@ -1779,3 +1779,13 @@ INSERT INTO `script_waypoint` VALUES (30023, 4, 5740.416, -2997.536, 277.263, 0, ''), (30023, 5, 5743.790, -3004.050, 273.570, 0, ''), (30023, 6, 5764.240, -2993.788, 272.944, 0, ''); + +DELETE FROM `script_waypoint` WHERE `entry`=30017; +INSERT INTO `script_waypoint` VALUES + (30017, 1, 5790.975, -2927.297, 286.277, 0, ''), + (30017, 2, 5803.003, -2952.998, 286.277, 0, ''), + (30017, 3, 5805.184, -2958.513, 282.899, 0, ''), + (30017, 4, 5807.038, -2961.449, 280.250, 0, ''), + (30017, 5, 5808.862, -2965.138, 277.089, 0, ''), + (30017, 6, 5811.703, -2970.821, 273.569, 0, ''), + (30017, 7, 5789.979, -2980.250, 273.584, 0, ''); diff --git a/sql/FULL/world_scripts_full.sql b/sql/FULL/world_scripts_full.sql index d4d45bb7dcc..e70a46eccca 100644 --- a/sql/FULL/world_scripts_full.sql +++ b/sql/FULL/world_scripts_full.sql @@ -1361,6 +1361,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_orinoko_tuskbreaker' WHERE `ent UPDATE `creature_template` SET `ScriptName`='npc_korrak_bloodrager' WHERE `entry`=30023; UPDATE `creature_template` SET `ScriptName`='npc_yggdras' WHERE `entry`=30014; UPDATE `creature_template` SET `ScriptName`='npc_released_offspring_harkoa' WHERE `entry`=28526; +UPDATE `creature_template` SET `ScriptName`='npc_stinkbeard' WHERE `entry`=30017; /* ZUL'FARRAK */ UPDATE `creature_template` SET `ScriptName`='npc_sergeant_bly' WHERE `entry`=7604; diff --git a/sql/updates/6742_world_script_texts.sql b/sql/updates/6742_world_script_texts.sql new file mode 100644 index 00000000000..5bc4684c3c2 --- /dev/null +++ b/sql/updates/6742_world_script_texts.sql @@ -0,0 +1,3 @@ +DELETE FROM `script_texts` WHERE `entry`=-1571035; +INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1`,`content_loc2`,`content_loc3`,`content_loc4`,`content_loc5`,`content_loc6`,`content_loc7`,`content_loc8`,`sound`,`type`,`language`,`emote`,`comment`) VALUES + (30007,-1571035,'The battle is about to begin! Am I reading this card right It... It''s the nefarious magnataur lord, STINKBEARD! Yes, folks, STINKBEARD! Chitchat dosen''t stand a chance!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,13363,1,0,0,''); diff --git a/sql/updates/6742_world_script_waypoints.sql b/sql/updates/6742_world_script_waypoints.sql new file mode 100644 index 00000000000..306b6ca3552 --- /dev/null +++ b/sql/updates/6742_world_script_waypoints.sql @@ -0,0 +1,9 @@ +DELETE FROM `script_waypoint` WHERE `entry`=30017; +INSERT INTO `script_waypoint` VALUES + (30017, 1, 5790.975, -2927.297, 286.277, 0, ''), + (30017, 2, 5803.003, -2952.998, 286.277, 0, ''), + (30017, 3, 5805.184, -2958.513, 282.899, 0, ''), + (30017, 4, 5807.038, -2961.449, 280.250, 0, ''), + (30017, 5, 5808.862, -2965.138, 277.089, 0, ''), + (30017, 6, 5811.703, -2970.821, 273.569, 0, ''), + (30017, 7, 5789.979, -2980.250, 273.584, 0, ''); diff --git a/sql/updates/6742_world_scriptnames.sql b/sql/updates/6742_world_scriptnames.sql new file mode 100644 index 00000000000..60b96643ab1 --- /dev/null +++ b/sql/updates/6742_world_scriptnames.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `ScriptName`='npc_stinkbeard' WHERE `entry`=30017; diff --git a/src/bindings/scripts/scripts/northrend/zuldrak.cpp b/src/bindings/scripts/scripts/northrend/zuldrak.cpp index 40f5f97275e..ea306279bf9 100644 --- a/src/bindings/scripts/scripts/northrend/zuldrak.cpp +++ b/src/bindings/scripts/scripts/northrend/zuldrak.cpp @@ -217,14 +217,17 @@ enum eGurgthock QUEST_AMPHITHEATER_ANGUISH_KORRAK_BLOODRAGER = 12936, QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_2 = 12954, QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_1 = 12932, + QUEST_AMPHITHEATER_ANGUISH_MAGNATAUR = 12933, NPC_ORINOKO_TUSKBREAKER = 30020, NPC_KORRAK_BLOODRAGER = 30023, NPC_YGGDRAS = 30014, + NPC_STINKBEARD = 30017, SAY_QUEST_ACCEPT_TUSKARRMAGEDON = -1571031, SAY_QUEST_ACCEPT_KORRAK_1 = -1571033, SAY_QUEST_ACCEPT_KORRAK_2 = -1571034, + SAY_QUEST_ACCEPT_MAGNATAUR = -1571035 }; const Position SpawnPosition[] = @@ -307,6 +310,10 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI uiPhase = 6; uiTimer = 3000; break; + case QUEST_AMPHITHEATER_ANGUISH_MAGNATAUR: + uiTimer = 5000; + uiPhase = 7; + break; } break; } @@ -361,6 +368,15 @@ struct TRINITY_DLL_DECL npc_gurgthockAI : public ScriptedAI m_creature->SummonCreature(NPC_YGGDRAS, SpawnPosition[1], TEMPSUMMON_CORPSE_DESPAWN, 1000); uiPhase = 0; break; + case 7: + DoScriptText(SAY_QUEST_ACCEPT_MAGNATAUR, m_creature); + uiTimer = 3000; + uiPhase = 8; + break; + case 8: + m_creature->SummonCreature(NPC_STINKBEARD, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000); + uiPhase = 0; + break; } } else uiTimer -= uiDiff; } @@ -394,6 +410,9 @@ bool QuestAccept_npc_gurgthock(Player* pPlayer, Creature* pCreature, Quest const case QUEST_AMPHITHEATER_ANGUISH_YGGDRAS_1: pCreature->AI()->SetData(1, pQuest->GetQuestId()); break; + case QUEST_AMPHITHEATER_ANGUISH_MAGNATAUR: + pCreature->AI()->SetData(1, pQuest->GetQuestId()); + break; } return false; } @@ -718,6 +737,120 @@ CreatureAI* GetAI_npc_yggdras(Creature* pCreature) return new npc_yggdrasAI(pCreature); } +enum eStinkbeard +{ + SPELL_ENRAGE_STINKBEARD = 50420, + SPELL_KNOCK_AWAY = 31389, + SPELL_STINKY_BEARD = 55867, + SPELL_THUNDERBLADE = 55866, + SPELL_THUNDERCLAP = 15588 +}; + +/*#### +## npc_stinkbeard +####*/ + +struct TRINITY_DLL_DECL npc_stinkbeardAI : public npc_escortAI +{ + npc_stinkbeardAI(Creature* pCreature) : npc_escortAI(pCreature) + { + m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); + m_creature->SetReactState(REACT_PASSIVE); + Start(true,true, 0, NULL); + SetDespawnAtEnd(false); + } + + uint32 uiThunderclapTimer; + uint32 uiKnockAwayTimer; + uint32 uiStinkyBeardTimer; + + bool bEnrage; + + void Reset() + { + DoCast(m_creature, SPELL_THUNDERBLADE); + uiThunderclapTimer = 5000; + uiKnockAwayTimer = 10000; + uiStinkyBeardTimer = 15000; + bEnrage = false; + } + + void EnterEvadeMode() + { + if (m_creature->isSummon()) + if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner()) + CAST_AI(npc_gurgthockAI,CAST_CRE(pSummoner)->AI())->RemoveSummons(); + } + + void WaypointReached(uint32 uiI) + { + switch(uiI) + { + case 7: + m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE); + m_creature->SetReactState(REACT_AGGRESSIVE); + m_creature->SetHomePosition(m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation()); + break; + } + } + + void UpdateAI(const uint32 uiDiff) + { + npc_escortAI::UpdateAI(uiDiff); + + if (!UpdateVictim()) + return; + + if (uiThunderclapTimer <= uiDiff) + { + DoCastAOE(SPELL_THUNDERCLAP); + uiThunderclapTimer = 5000; + } else uiThunderclapTimer -= uiDiff; + + if (uiKnockAwayTimer <= uiDiff) + { + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + { + if (pTarget && pTarget->isAlive()) + DoCast(pTarget, SPELL_KNOCK_AWAY); + } + uiKnockAwayTimer = 10000; + } else uiKnockAwayTimer -= uiDiff; + + if (uiStinkyBeardTimer <= uiDiff) + { + if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0)) + { + if (pTarget && pTarget->isAlive()) + DoCast(pTarget, SPELL_STINKY_BEARD); + } + uiStinkyBeardTimer = 15000; + } else uiStinkyBeardTimer -= uiDiff; + + if (!bEnrage && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 20) + { + DoCast(m_creature, SPELL_ENRAGE_STINKBEARD); + bEnrage = true; + } + DoMeleeAttackIfReady(); + } + + void JustDied(Unit* pKiller) + { + if (m_creature->isSummon()) + if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner()) + CAST_AI(npc_gurgthockAI,CAST_CRE(pSummoner)->AI())->bEventInProgress = false; + + if (pKiller->GetTypeId() == TYPEID_PLAYER) + CAST_PLR(pKiller)->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_MAGNATAUR, CAST_PLR(pKiller)); + } +}; + +CreatureAI* GetAI_npc_stinkbeard(Creature* pCreature) +{ + return new npc_stinkbeardAI(pCreature); +} + /*#### ## npc_released_offspring_harkoa ####*/ @@ -788,6 +921,11 @@ void AddSC_zuldrak() newscript->RegisterSelf(); newscript = new Script; + newscript->Name = "npc_stinkbeard"; + newscript->GetAI = &GetAI_npc_stinkbeard; + newscript->RegisterSelf(); + + newscript = new Script; newscript->Name = "npc_released_offspring_harkoa"; newscript->GetAI = &GetAI_npc_released_offspring_harkoa; newscript->RegisterSelf(); |