diff --git a/sql/sylvania/rivage_1460_voix_complet.sql b/sql/sylvania/rivage_1460_voix_complet.sql new file mode 100644 index 0000000..bca0a07 --- /dev/null +++ b/sql/sylvania/rivage_1460_voix_complet.sql @@ -0,0 +1,98 @@ +/*M!999999\- enable the sandbox mode */ +-- MariaDB dump 10.19-11.4.7-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Host: localhost Database: dc_world +-- ------------------------------------------------------ +-- Server version 11.4.7-MariaDB-0ubuntu0.25.04.1 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*M!100616 SET @OLD_NOTE_VERBOSITY=@@NOTE_VERBOSITY, NOTE_VERBOSITY=0 */; + +-- +-- Dumping data for table `creature_text` +-- +-- WHERE: CreatureID IN (90367,90413,90544,90705,90708,90709,90710,90711,90713,90714,90716,90717,91951,94276) + +LOCK TABLES `creature_text` WRITE; +/*!40000 ALTER TABLE `creature_text` DISABLE KEYS */; +INSERT INTO `creature_text` VALUES (90367,0,0,'Ne vous souciez pas de moi ! Le tombeau... Gul\'dan ouvre le tombeau ! Arrêtez-le !',14,0,100,5,0,0,0,0,'Tirion crevasse'); +INSERT INTO `creature_text` VALUES (90367,20,0,'Stay back... it\'s a trap... the Light will protect me...',14,0,100,0,0,53452,99237,0,'mort de Tirion 1'); +INSERT INTO `creature_text` VALUES (90367,21,0,'The Light... will... ahh! Aahhhh!!',14,0,100,0,0,53455,99240,0,'mort de Tirion 5'); +INSERT INTO `creature_text` VALUES (90413,0,0,'Vous arrivez trop tard ! Les ténèbres s\'éveillent sous ce tombeau !',14,0,100,25,0,0,0,0,'Guldan accueil'); +INSERT INTO `creature_text` VALUES (90413,1,0,'Sargeras... accueille leurs âmes !',14,0,100,25,0,0,0,0,'Guldan invocation'); +INSERT INTO `creature_text` VALUES (90413,2,0,'Cette victoire ne changera rien. L\'Étoile ardente approche !',14,0,100,25,0,0,0,0,'Guldan retraite'); +INSERT INTO `creature_text` VALUES (90413,20,0,'Ha, you fool! You stand before the temple of a GOD. Your pitiful Light cannot reach you here.',14,0,100,0,0,53453,99238,0,'mort de Tirion 2'); +INSERT INTO `creature_text` VALUES (90413,21,0,'Destroy him.',14,0,100,0,0,53454,99239,0,'mort de Tirion 4'); +INSERT INTO `creature_text` VALUES (90413,22,0,'All you have worked for, all you have sacrificed, just to see your champions fall to ash one by one.',14,0,100,0,0,53458,99243,0,'mort de Tirion 7'); +INSERT INTO `creature_text` VALUES (90413,23,0,'Destroy them!',14,0,100,0,0,53462,99247,0,'mort de Tirion 8'); +INSERT INTO `creature_text` VALUES (90544,10,0,'You will know fear.',14,0,100,0,0,53463,99248,0,'voix officielle -- son 53463'); +INSERT INTO `creature_text` VALUES (90705,0,0,'Vos armées ne sont que poussière. Je suis Arganoth, et cette plage sera votre tombeau !',14,0,100,15,0,0,0,0,'Arganoth spawn'); +INSERT INTO `creature_text` VALUES (90705,1,0,'La Légion... est... éternelle...',14,0,100,0,0,0,0,0,'Arganoth mort'); +INSERT INTO `creature_text` VALUES (90708,0,0,'Fils et filles de la Horde ! Montrez à la Légion c\'que vaut not\' sang ! LOK\'TAR OGAR !',14,0,100,5,0,53528,99315,0,'Voljin ralliement'); +INSERT INTO `creature_text` VALUES (90708,1,0,'Argh... la lame... empoisonnée... Sylvanas... sonne la retraite...',14,0,100,0,0,0,0,0,'Voljin blessé'); +INSERT INTO `creature_text` VALUES (90708,10,0,'Listen up! Dere\'s only one way offa dis beach, and it be t\'rough alla dose demons ahead of us. But dey don\'t know who dey be dealin\' wit. Let\'s show dem what it means ta be Horde!',14,0,100,0,0,53528,99315,0,'voix officielle -- son 53528'); +INSERT INTO `creature_text` VALUES (90708,11,0,'Die.',14,0,100,0,0,53536,99323,0,'voix officielle -- son 53536'); +INSERT INTO `creature_text` VALUES (90708,13,0,'',14,0,100,0,0,53590,143151,0,'voix officielle -- son 53590'); +INSERT INTO `creature_text` VALUES (90708,15,0,'Dis one\'s mine.',14,0,100,0,0,53537,99324,0,'voix officielle -- son 53537'); +INSERT INTO `creature_text` VALUES (90709,0,0,'La Horde ne mourra pas sur cette plage. Avancez, et que la Légion tombe !',14,0,100,25,0,53587,99374,0,'Sylvanas'); +INSERT INTO `creature_text` VALUES (90709,10,0,'',14,0,100,0,0,53590,99375,0,'voix officielle -- son 53590'); +INSERT INTO `creature_text` VALUES (90709,11,0,'',14,0,100,0,0,53587,99374,0,'voix officielle -- son 53587'); +INSERT INTO `creature_text` VALUES (90709,12,0,'',14,0,100,0,0,53465,99250,0,'voix officielle -- son 53465'); +INSERT INTO `creature_text` VALUES (90709,13,0,'',14,0,100,0,0,53585,99372,0,'voix officielle -- son 53585'); +INSERT INTO `creature_text` VALUES (90709,14,0,'',12,0,100,0,0,53610,99397,0,'voix officielle -- son 53610'); +INSERT INTO `creature_text` VALUES (90709,15,0,'',12,0,100,0,0,53612,99399,0,'voix officielle -- son 53612'); +INSERT INTO `creature_text` VALUES (90710,14,0,'By the Earthmother!',14,0,100,0,0,53591,109421,0,'voix officielle -- son 53591'); +INSERT INTO `creature_text` VALUES (90711,10,0,'The elements will destroy you!',14,0,100,0,0,53534,99321,0,'voix officielle -- son 53534'); +INSERT INTO `creature_text` VALUES (90711,11,0,'Back to the Nether!',14,0,100,0,0,53533,99320,0,'voix officielle -- son 53533'); +INSERT INTO `creature_text` VALUES (90711,12,0,'Spirits of earth, aid me!',12,0,100,0,0,53611,99398,0,'voix officielle -- son 53611'); +INSERT INTO `creature_text` VALUES (90711,20,0,'Fordring!',14,0,100,0,0,53456,99241,0,'mort de Tirion 6'); +INSERT INTO `creature_text` VALUES (90713,0,0,'Soldats de l\'Alliance ! La Légion s\'abat sur nos terres. Repoussez-la jusqu\'aux portes du tombeau de Sargeras !',14,0,100,5,0,53498,99285,0,'Varian ralliement'); +INSERT INTO `creature_text` VALUES (90713,1,0,'Partez, sauvez ce qui peut l\'être ! Dites à mon fils... que je suis mort en roi. Pour l\'Alliance !',14,0,100,5,0,53407,146212,0,'Varian sacrifice'); +INSERT INTO `creature_text` VALUES (90713,10,0,'Brace yourselves, Alliance, it\'s coming this way!',14,0,100,0,0,53464,99249,0,'voix officielle -- son 53464'); +INSERT INTO `creature_text` VALUES (90713,11,0,'',14,0,100,0,0,53407,146212,0,'voix officielle -- son 53407'); +INSERT INTO `creature_text` VALUES (90713,14,0,'We\'re pushing them back! Don\'t let up!',14,0,100,0,0,53405,99189,0,'voix officielle -- son 53405'); +INSERT INTO `creature_text` VALUES (90713,15,0,'There is nowhere to run, Gul\'dan. Give up now, and I will grant you a swift death.',14,0,100,0,0,53496,99283,0,'voix officielle -- son 53496'); +INSERT INTO `creature_text` VALUES (90713,16,0,'Hold steady, we\'ve broken their lines before, we will again. Charge!',14,0,100,0,0,53498,99285,0,'voix officielle -- son 53498'); +INSERT INTO `creature_text` VALUES (90713,17,0,'No matter how many demons you throw at us, we will cut you down, monster.',14,0,100,0,0,53513,99300,0,'voix officielle -- son 53513'); +INSERT INTO `creature_text` VALUES (90713,20,0,'We will never give in to hopelessness!',14,0,100,0,0,53459,99244,0,'mort de Tirion, riposte'); +INSERT INTO `creature_text` VALUES (90714,0,0,'Leurs portails déversent des renforts sans fin ! Détruisez les ancres dimensionnelles !',14,0,100,5,0,53345,94240,0,'Jaina portails'); +INSERT INTO `creature_text` VALUES (90714,10,0,'',14,0,100,0,0,53345,94240,0,'voix officielle -- son 53345'); +INSERT INTO `creature_text` VALUES (90714,11,0,'',14,0,100,0,0,53347,94242,0,'voix officielle -- son 53347'); +INSERT INTO `creature_text` VALUES (90714,12,0,'',14,0,100,0,0,53357,94594,0,'voix officielle -- son 53357'); +INSERT INTO `creature_text` VALUES (90714,13,0,'',12,0,100,0,0,53449,99234,0,'voix officielle -- son 53449'); +INSERT INTO `creature_text` VALUES (90714,14,0,'',14,0,100,0,0,53358,94595,0,'voix officielle -- son 53358'); +INSERT INTO `creature_text` VALUES (90716,10,0,'How are we going to get across?',12,0,100,1,0,53448,99233,0,'voix officielle -- son 53448'); +INSERT INTO `creature_text` VALUES (90716,11,0,'For Gnomeregan!',14,0,100,0,0,53409,99193,0,'voix officielle -- son 53409'); +INSERT INTO `creature_text` VALUES (90716,12,0,'',14,0,100,0,0,53408,127434,0,'voix officielle -- son 53408'); +INSERT INTO `creature_text` VALUES (90717,10,0,'Just in time. We haven\'t been able to break their line, now we may have a chance.',14,0,100,0,0,53346,94241,0,'voix officielle -- son 53346'); +INSERT INTO `creature_text` VALUES (90717,11,0,'There\'s only one way out of this, Alliance, and it\'s through that line of demons! Cannons, lay down covering fire! All forces, CHARGE!',14,0,100,0,0,53348,94585,0,'voix officielle -- son 53348'); +INSERT INTO `creature_text` VALUES (90717,12,0,'Go for the throat!',14,0,100,0,0,53354,94591,0,'voix officielle -- son 53354'); +INSERT INTO `creature_text` VALUES (90717,13,0,'This one\'s mine!',14,0,100,0,0,53355,117408,0,'voix officielle -- son 53355'); +INSERT INTO `creature_text` VALUES (90717,14,0,'Side by side, don\'t let them break through!',14,0,100,0,0,53353,94590,0,'voix officielle -- son 53353'); +INSERT INTO `creature_text` VALUES (91951,20,0,'Stay back... it\'s a trap... the Light will protect me...',14,0,100,0,0,53452,99237,0,'mort de Tirion 1'); +INSERT INTO `creature_text` VALUES (91951,21,0,'The Light... will... ahh! Aahhhh!!',14,0,100,0,0,53455,99240,0,'mort de Tirion 5'); +INSERT INTO `creature_text` VALUES (94276,0,0,'I have seen the end of your pitiful world, Wrynn. You will perish in felfire.',14,0,100,0,0,53506,99293,0,'finale Guldan 1'); +INSERT INTO `creature_text` VALUES (94276,2,0,'Destroy them!',14,0,100,0,0,53462,99247,0,'finale Guldan 2'); +INSERT INTO `creature_text` VALUES (94276,20,0,'Ha, you fool! You stand before the temple of a GOD. Your pitiful Light cannot reach you here.',14,0,100,0,0,53453,99238,0,'mort de Tirion 2'); +INSERT INTO `creature_text` VALUES (94276,21,0,'Destroy him.',14,0,100,0,0,53454,99239,0,'mort de Tirion 4'); +INSERT INTO `creature_text` VALUES (94276,22,0,'All you have worked for, all you have sacrificed, just to see your champions fall to ash one by one.',14,0,100,0,0,53458,99243,0,'mort de Tirion 7'); +INSERT INTO `creature_text` VALUES (94276,23,0,'Destroy them!',14,0,100,0,0,53462,99247,0,'mort de Tirion 8'); +/*!40000 ALTER TABLE `creature_text` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*M!100616 SET NOTE_VERBOSITY=@OLD_NOTE_VERBOSITY */; + +-- Dump completed on 2026-09-05 0:06:36 diff --git a/src/server/scripts/BrokenIsles/Scenario/scenario_broken_shore_intro.cpp b/src/server/scripts/BrokenIsles/Scenario/scenario_broken_shore_intro.cpp index f37b910..ef83cdb 100644 --- a/src/server/scripts/BrokenIsles/Scenario/scenario_broken_shore_intro.cpp +++ b/src/server/scripts/BrokenIsles/Scenario/scenario_broken_shore_intro.cpp @@ -167,6 +167,23 @@ enum BrokenShoreMisc GO_LEGION_CAGE_2 = 248819, DATA_CAGE_OPENED = 9002, + // ============================================================== + // SylvaniaCore : les protagonistes de la crevasse SONT POSES sur la + // carte, sous d'autres entrees que celles du script : + // 91951 Highlord Tirion Fordring (1495, 1751) + // 94276 Gul'dan (1530, 1742) + // 90544 Krosus (1481, 1716) + // 90705 Dread Commander Arganoth ( 613, 2085) + // + // SIGNALE EN JEU : « tu ne les as pas implementes au Tirion et + // Krosus qu'il y avait de base sur la map, tu en as ajoute ». + // Meme faute que pour Varian : le script invoquait des sosies aux + // entrees 90367 et 90413, qui ne figurent nulle part sur la carte. + // On emploie desormais ceux de la base, retenus a leur creation. + // ============================================================== + NPC_TIRION_POSE = 91951, + NPC_GULDAN_POSE = 94276, + EVENT_TIRION_REACHED = 50027, EVENT_KROSUS_SLAIN = 44669, EVENT_GULDAN_STOPPED = 44826, @@ -302,10 +319,16 @@ struct scenario_broken_shore_intro : public InstanceScript if (!creature || !creature->GetSpawnId()) return; - if (creature->GetEntry() == NPC_KING_VARIAN) - placedVarianGUID = creature->GetGUID(); - else if (creature->GetEntry() == NPC_VOLJIN) - placedVoljinGUID = creature->GetGUID(); + switch (creature->GetEntry()) + { + case NPC_KING_VARIAN: placedVarianGUID = creature->GetGUID(); break; + case NPC_VOLJIN: placedVoljinGUID = creature->GetGUID(); break; + case NPC_TIRION_POSE: tirionGUID = creature->GetGUID(); break; + case NPC_GULDAN_POSE: guldanGUID = creature->GetGUID(); break; + case NPC_KROSUS: krosusGUID = creature->GetGUID(); break; + case NPC_ARGANOTH: arganothGUID = creature->GetGUID(); break; + default: break; + } } // Le chef a rejoindre : celui de la carte s'il existe, sinon la @@ -567,8 +590,14 @@ struct scenario_broken_shore_intro : public InstanceScript // demon sur ma tronche ». Elles naissaient au point de // ralliement, c'est-a-dire au milieu du combat. Elles // arrivent desormais de la peripherie et chargent. - if ((cityKills % 6) == 0) - SummonWaveLoin(); + // VAGUES SUPPRIMEES. SIGNALE EN JEU : « ces invocations de + // demon, il faut arreter ca, a chaque fois que je me bats + // ils reviennent en vague, c'est affreux ». Elles etaient + // une addition de ma part pour permettre a la barre + // d'atteindre 300 points -- un pansement sur une deduction + // incertaine, qui rendait le combat interminable. Si la + // barre plafonne, c'est la correspondance des poids qu'il + // faudra revoir, pas le nombre d'ennemis. // FILET DE SECURITE, pas un mecanisme. Si la barre restait // bloquee pour une raison qui nous echappe, le joueur ne @@ -688,13 +717,9 @@ struct scenario_broken_shore_intro : public InstanceScript // le critere officiel 50027. Tirion reste en place : il agonise // dans la crevasse, il n'a aucune raison de s'evaporer. // ============================================================= - FactionAnchors const& a = Anchors(); - if (Creature* tirion = Summon(NPC_TIRION, a.crevasse)) - { - tirionGUID = tirion->GetGUID(); - tirion->AI()->Talk(0); + // Tirion est deja sur la carte, agonisant dans la crevasse. + if (Creature* tirion = instance->GetCreature(tirionGUID)) tirion->SetStandState(UNIT_STAND_STATE_KNEEL); - } scheduler.Schedule(Seconds(2), [this](TaskContext context) { @@ -751,9 +776,9 @@ struct scenario_broken_shore_intro : public InstanceScript { FactionAnchors const& a = Anchors(); - if (Creature* guldan = Summon(NPC_GULDAN, a.tomb)) + // Gul'dan surplombe deja la scene : rien a invoquer. + if (Creature* guldan = instance->GetCreature(guldanGUID)) { - guldanGUID = guldan->GetGUID(); guldan->SetReactState(REACT_PASSIVE); guldan->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC); } @@ -774,10 +799,10 @@ struct scenario_broken_shore_intro : public InstanceScript scheduler.Schedule(Seconds(11), [this](TaskContext /*c*/) { - // Krosus surgit de la lave, encore passif - if (Creature* krosus = Summon(NPC_KROSUS, Anchors().crevasse)) + // Krosus est deja dans la lave : on le rend seulement inerte + // le temps de la scene. + if (Creature* krosus = instance->GetCreature(krosusGUID)) { - krosusGUID = krosus->GetGUID(); krosus->SetReactState(REACT_PASSIVE); krosus->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC); } @@ -910,6 +935,7 @@ private: ObjectGuid placedVoljinGUID; ObjectGuid tirionGUID; ObjectGuid krosusGUID; + ObjectGuid arganothGUID; ObjectGuid guldanGUID; TaskScheduler scheduler; };