aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-09-23 17:56:50 +0200
committerShauren <shauren.trinity@gmail.com>2022-09-30 20:23:41 +0200
commit57c56a3ae7c212d9c5215d492bbe0df73b855139 (patch)
treec5fdc29f0c59ea43f68abd8074f06dd69e9454bd
parent88060425b562927b9cf2277bae8b2087978bb4cc (diff)
DB/The Sunwell: Migrate linked_respawn to spawn groups
* Also fixed Felmyst not spawning after server reset if Brutallus was killed Closes #27904 (cherry picked from commit 46560070ae610e4c85dfbbe37b24d2b4b4071405)
-rw-r--r--sql/updates/world/master/2022_09_30_20_world_2022_09_23_01_world.sql43
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp27
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp1
3 files changed, 66 insertions, 5 deletions
diff --git a/sql/updates/world/master/2022_09_30_20_world_2022_09_23_01_world.sql b/sql/updates/world/master/2022_09_30_20_world_2022_09_23_01_world.sql
new file mode 100644
index 00000000000..1c9ffaf80f6
--- /dev/null
+++ b/sql/updates/world/master/2022_09_30_20_world_2022_09_23_01_world.sql
@@ -0,0 +1,43 @@
+DELETE FROM `spawn_group_template` WHERE `groupId` BETWEEN 232 AND 237;
+INSERT INTO `spawn_group_template` (`groupId`,`groupName`,`groupFlags`) VALUES
+(232,'The Sunwell - Kalecgos',4),
+(233,'The Sunwell - Brutallus',4),
+(234,'The Sunwell - Felmyst',4),
+(235,'The Sunwell - Eredar Twins',4),
+(236,'The Sunwell - M''uru',4),
+(237,'The Sunwell - Kil''jaeden',4);
+
+DELETE FROM `instance_spawn_groups` WHERE `spawnGroupId` BETWEEN 232 AND 237;
+INSERT INTO `instance_spawn_groups` (`instanceMapId`,`bossStateId`,`bossStates`,`spawnGroupId`,`flags`) VALUES
+(580,0,23,232,1),
+(580,1,23,233,1),
+(580,1,23,234,2), -- dont spawn felmyst before brutallus is dead
+(580,2,23,234,1),
+(580,3,23,235,1),
+(580,4,23,236,1),
+(580,5,23,237,1);
+
+DELETE FROM `creature` WHERE `guid`=55421 AND `id`=25038;
+INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnDifficulties`, `phaseId`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES
+(55421, 25038, 580, 4075, 4140, '4', 0, 0, 0, 1460.2911376953125, 628.89984130859375, 46.09189605712890625, 5.281038284301757812, 604800, 0, 0, 0, 0, 0, 0, 0, 0, 45745); -- Felmyst (Area: The Dead Scar - Difficulty: 4) (Auras: 45068 - Felblaze Visual)
+
+DELETE FROM `spawn_group` WHERE `groupId` BETWEEN 232 AND 237;
+INSERT INTO `spawn_group` SELECT 232, 0, `guid` FROM `linked_respawn` WHERE `linkedGuid`=54810 AND `linkType` IN (0,3);
+INSERT INTO `spawn_group` SELECT 233, 0, `guid` FROM `linked_respawn` WHERE `linkedGuid`=54811 AND `linkType` IN (0,3);
+INSERT INTO `spawn_group` SELECT 235, 0, `guid` FROM `linked_respawn` WHERE `linkedGuid`=53668 AND `linkType` IN (0,3);
+INSERT INTO `spawn_group` SELECT 236, 0, `guid` FROM `linked_respawn` WHERE `linkedGuid`=53705 AND `linkType` IN (0,3);
+INSERT INTO `spawn_group` SELECT 237, 0, `guid` FROM `linked_respawn` WHERE `linkedGuid`=56332 AND `linkType` IN (0,3);
+INSERT INTO `spawn_group` (`groupId`,`spawnType`,`spawnId`) VALUES
+(232,0,54810),
+(232,0,53645),
+(233,0,54811),
+(233,0,54812),
+(234,0,55421),
+(235,0,53668),
+(235,0,53687),
+(236,0,53705),
+(237,0,56332);
+
+UPDATE `creature_template` SET `flags_extra`=`flags_extra` & ~0x80 WHERE `entry`=25038; -- remove trigger flag from felmyst
+
+DELETE FROM `linked_respawn` WHERE `linkedGuid` IN (54810,54811,55421,53668,53705,56332);
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
index 90f959b4667..90f93a137e4 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_felmyst.cpp
@@ -131,6 +131,17 @@ struct boss_felmyst : public BossAI
float breathX, breathY;
+ void InitializeAI() override
+ {
+ // for intro sequence
+ if (instance->GetBossState(DATA_FELMYST) == SPECIAL)
+ if (Creature* madrigosa = instance->GetCreature(DATA_MADRIGOSA))
+ me->Relocate(madrigosa);
+
+ me->SetDisplayFromModel(0);
+ me->SetNativeDisplayId(me->GetDisplayId());
+ }
+
void Reset() override
{
Initialize();
@@ -182,6 +193,12 @@ struct boss_felmyst : public BossAI
BossAI::JustDied(killer);
}
+ void EnterEvadeMode(EvadeReason /*why*/) override
+ {
+ Reset();
+ _DespawnAtEvade();
+ }
+
void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
{
Unit* unitCaster = caster->ToUnit();
@@ -284,7 +301,7 @@ struct boss_felmyst : public BossAI
if (!target)
{
- EnterEvadeMode();
+ EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
return;
}
@@ -310,7 +327,7 @@ struct boss_felmyst : public BossAI
if (!target)
{
- EnterEvadeMode();
+ EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
return;
}
@@ -339,7 +356,7 @@ struct boss_felmyst : public BossAI
if (!target)
{
- EnterEvadeMode();
+ EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
return;
}
@@ -379,7 +396,7 @@ struct boss_felmyst : public BossAI
DoStartMovement(target);
else
{
- EnterEvadeMode();
+ EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
return;
}
break;
@@ -398,7 +415,7 @@ struct boss_felmyst : public BossAI
if (!UpdateVictim())
{
if (phase == PHASE_FLIGHT && !me->IsInEvadeMode())
- EnterEvadeMode();
+ EnterEvadeMode(EVADE_REASON_NO_HOSTILES);
return;
}
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
index 523eab4522e..92d3547ccc8 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_muru.cpp
@@ -294,6 +294,7 @@ struct boss_muru : public BossAI
{
me->SetVisible(false);
_entropiusGUID = summon->GetGUID();
+ DoZoneInCombat(summon);
if (_hasEnraged)
summon->CastSpell(summon, SPELL_ENRAGE, true);
return;