diff options
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; |