mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 10:05:32 +01:00
Scripts/SFK: handle Alliance faction troup spawning when defeating Commander Springvale and when walking on the walls afterwards
* handle announcement message when a player triggers the gargoyle area trigger events
This commit is contained in:
43
sql/updates/world/custom/custom_2020_01_07_04_world.sql
Normal file
43
sql/updates/world/custom/custom_2020_01_07_04_world.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
DELETE FROM `spawn_group_template` WHERE `groupId` IN (425, 426);
|
||||
INSERT INTO `spawn_group_template` (`groupId`, `groupName`, `groupFlags`) VALUES
|
||||
(425, 'Shadowfang Keep - Commander Springvale Alliance Troups', 4),
|
||||
(426, 'Shadowfang Keep - Outside Alliance Troups', 4);
|
||||
|
||||
SET @CGUID := 395363;
|
||||
DELETE FROM `spawn_group` WHERE `groupId` IN (425, 426);
|
||||
INSERT INTO `spawn_group` (`groupId`, `spawnType`, `spawnId`) VALUES
|
||||
-- Commander Springvale Alliance Troups
|
||||
(425, 0, @CGUID+0),
|
||||
(425, 0, @CGUID+1),
|
||||
(425, 0, @CGUID+2),
|
||||
-- Outside Alliance Troups
|
||||
(426, 0, @CGUID+3),
|
||||
(426, 0, @CGUID+4),
|
||||
(426, 0, @CGUID+5),
|
||||
(426, 0, @CGUID+6);
|
||||
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+6;
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `PhaseId`, `PhaseGroup`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `VerifiedBuild`) VALUES
|
||||
-- Commander Springvale Alliance Troups
|
||||
(@CGUID+0, 47027, 33, 209, 209, 3, 169, 0, 0, 0, -263.906, 2269.6, 97.62373, 5.88176, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153), -- Bloodfang Berserker (Area: Shadowfang Keep - Difficulty: 2)
|
||||
(@CGUID+1, 47027, 33, 209, 209, 3, 169, 0, 0, 0, -262.012, 2268.67, 98.67534, 5.934119, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153), -- Bloodfang Berserker (Area: Shadowfang Keep - Difficulty: 2)
|
||||
(@CGUID+2, 47027, 33, 209, 209, 3, 169, 0, 0, 0, -259.929, 2267.86, 99.79284, 5.934119, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153), -- Bloodfang Berserker (Area: Shadowfang Keep - Difficulty: 2)
|
||||
-- Outside Alliance Troups
|
||||
(@CGUID+3, 47027, 33, 209, 209, 3, 169, 0, 0, 0, -220.9429, 2223.227, 105.8726, 4.528842, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153), -- Bloodfang Berserker (Area: Shadowfang Keep - Difficulty: 2)
|
||||
(@CGUID+4, 47027, 33, 209, 209, 3, 169, 0, 0, 0, -226.6541, 2222.231, 106.2409, 4.48631, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153), -- Bloodfang Berserker (Area: Shadowfang Keep - Difficulty: 2)
|
||||
(@CGUID+5, 47006, 33, 209, 209, 3, 169, 0, 0, 0, -241.7395, 2217.392, 106.464, 4.622139, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153), -- Packleader Ivar Bloodfang (Area: Shadowfang Keep - Difficulty: 2)
|
||||
(@CGUID+6, 47027, 33, 209, 209, 3, 169, 0, 0, 0, -234.9143, 2216.633, 106.979, 4.32102, 7200, 0, 0, 0, 0, 0, 0, 0, 0, 28153); -- Bloodfang Berserker (Area: Shadowfang Keep - Difficulty: 2)
|
||||
|
||||
DELETE FROM `areatrigger_scripts` WHERE `ScriptName` IN
|
||||
('at_sfk_pre_walden',
|
||||
'at_sfk_outside_troups',
|
||||
'at_sfk_gargoyle_event');
|
||||
|
||||
INSERT INTO `areatrigger_scripts` (`entry`,`ScriptName`) VALUES
|
||||
(6425, 'at_sfk_outside_troups'),
|
||||
(255, 'at_sfk_gargoyle_event'),
|
||||
(256, 'at_sfk_gargoyle_event');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`= 43679;
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `TextRange`, `BroadcastTextId`, `comment`) VALUES
|
||||
(43679, 0, 0, 'A nearby Gargoyle comes to life!', 41, 0, 100, 0, 0, 0, 3, 47423, 'DEBUG Announcer');
|
||||
@@ -30,6 +30,7 @@ ObjectData const creatureData[] =
|
||||
{ BOSS_COMMANDER_SPRINGVALE, DATA_COMMANDER_SPRINGVALE },
|
||||
{ BOSS_LORD_WALDEN, DATA_LORD_WALDEN },
|
||||
{ BOSS_LORD_GODFREY, DATA_LORD_GODFREY },
|
||||
{ NPC_DEBUG_ANNOUNCER, DATA_DEBUG_ANNOUNCER },
|
||||
{ 0, 0 } // END
|
||||
};
|
||||
|
||||
@@ -57,20 +58,21 @@ BossBoundaryData const boundaries =
|
||||
|
||||
enum SpawnGroups
|
||||
{
|
||||
SPAWN_GROUP_ENTRANCE_ALLIANCE = 412,
|
||||
SPAWN_GROUP_ENTRANCE_HORDE = 413,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_ENTRANCE = 414,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_BARON_ASHBURY = 415,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_BARON_SILVERLAINE = 416,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_COMMANDER_SPRINGVALE = 417,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_LORD_WALDEN = 418,
|
||||
SPAWN_GROUP_LORD_GODFREY_DEAD_TROUPS_ALLIANCE = 419,
|
||||
SPAWN_GROUP_LORD_GODFREY_DEAD_TROUPS_HORDE = 420,
|
||||
SPAWN_GROUP_BARON_ASHBURY_TROUPS_ALLIANCE = 421,
|
||||
SPAWN_GROUP_BARON_ASHBURY_TROUPS_HORDE = 422,
|
||||
SPAWN_GROUP_BARON_SILVERLAINE_TROUPS_ALLIANCE = 423,
|
||||
SPAWN_GROUP_BARON_SILVERLAINE_TROUPS_HORDE = 424
|
||||
|
||||
SPAWN_GROUP_ENTRANCE_ALLIANCE = 412,
|
||||
SPAWN_GROUP_ENTRANCE_HORDE = 413,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_ENTRANCE = 414,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_BARON_ASHBURY = 415,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_BARON_SILVERLAINE = 416,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_COMMANDER_SPRINGVALE = 417,
|
||||
SPAWN_GROUP_DISEASE_CLOUDS_LORD_WALDEN = 418,
|
||||
SPAWN_GROUP_LORD_GODFREY_DEAD_TROUPS_ALLIANCE = 419,
|
||||
SPAWN_GROUP_LORD_GODFREY_DEAD_TROUPS_HORDE = 420,
|
||||
SPAWN_GROUP_BARON_ASHBURY_TROUPS_ALLIANCE = 421,
|
||||
SPAWN_GROUP_BARON_ASHBURY_TROUPS_HORDE = 422,
|
||||
SPAWN_GROUP_BARON_SILVERLAINE_TROUPS_ALLIANCE = 423,
|
||||
SPAWN_GROUP_BARON_SILVERLAINE_TROUPS_HORDE = 424,
|
||||
SPAWN_GROUP_COMMANDER_SPRINGVALE_TROUPS_ALLIANCE = 425,
|
||||
SPAWN_GROUP_OUTSIDE_TROUPS_ALLIANCE = 426,
|
||||
};
|
||||
|
||||
class instance_shadowfang_keep : public InstanceMapScript
|
||||
@@ -152,6 +154,13 @@ public:
|
||||
_currentlyActiveTroupSpawnGroup = *_teamInInstance == ALLIANCE ? SPAWN_GROUP_BARON_SILVERLAINE_TROUPS_ALLIANCE : SPAWN_GROUP_BARON_SILVERLAINE_TROUPS_HORDE;
|
||||
instance->SpawnGroupSpawn(_currentlyActiveTroupSpawnGroup);
|
||||
break;
|
||||
case DATA_COMMANDER_SPRINGVALE:
|
||||
if (*_teamInInstance == ALLIANCE)
|
||||
{
|
||||
_currentlyActiveTroupSpawnGroup = 0;
|
||||
instance->SpawnGroupSpawn(SPAWN_GROUP_COMMANDER_SPRINGVALE_TROUPS_ALLIANCE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -180,7 +189,7 @@ public:
|
||||
instance->SpawnGroupSpawn(SPAWN_GROUP_DISEASE_CLOUDS_LORD_WALDEN);
|
||||
}
|
||||
|
||||
// Despawning previous troup
|
||||
// Despawning previous troups
|
||||
if (_currentlyActiveTroupSpawnGroup)
|
||||
instance->SpawnGroupDespawn(_currentlyActiveTroupSpawnGroup);
|
||||
|
||||
@@ -196,6 +205,24 @@ public:
|
||||
instance->SpawnGroupSpawn(*_teamInInstance == ALLIANCE ? SPAWN_GROUP_LORD_GODFREY_DEAD_TROUPS_ALLIANCE : SPAWN_GROUP_LORD_GODFREY_DEAD_TROUPS_HORDE);
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 value) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_OUTSIDE_TROUPS_SPAWN:
|
||||
if (*_teamInInstance == ALLIANCE)
|
||||
{
|
||||
if (_currentlyActiveTroupSpawnGroup)
|
||||
instance->SpawnGroupDespawn(_currentlyActiveTroupSpawnGroup);
|
||||
|
||||
instance->SpawnGroupSpawn(SPAWN_GROUP_OUTSIDE_TROUPS_ALLIANCE);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
|
||||
@@ -74,7 +74,10 @@ enum Texts
|
||||
SAY_IVAR_ROOM_OPEN = 13,
|
||||
|
||||
// Bloodfang Berserker
|
||||
SAY_SHOW_COMMANDER_SPRINGVALE = 1
|
||||
SAY_SHOW_COMMANDER_SPRINGVALE = 1,
|
||||
|
||||
// DEBUG Announcer
|
||||
SAY_ANNOUNCE_GARGOYLES = 0
|
||||
};
|
||||
|
||||
enum SKShieldOfBones
|
||||
@@ -119,13 +122,16 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class at_sfk_pre_walden : public OnlyOnceAreaTriggerScript
|
||||
class at_sfk_outside_troups : public OnlyOnceAreaTriggerScript
|
||||
{
|
||||
public:
|
||||
at_sfk_pre_walden() : OnlyOnceAreaTriggerScript("at_sfk_pre_walden") { }
|
||||
at_sfk_outside_troups() : OnlyOnceAreaTriggerScript("at_sfk_outside_troups") { }
|
||||
|
||||
bool _OnTrigger(Player* /*player*/, AreaTriggerEntry const* /*areaTrigger*/) override
|
||||
bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
instance->SetData(DATA_OUTSIDE_TROUPS_SPAWN, DONE);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@@ -141,10 +147,28 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class at_sfk_gargoyle_event : public OnlyOnceAreaTriggerScript
|
||||
{
|
||||
public:
|
||||
at_sfk_gargoyle_event() : OnlyOnceAreaTriggerScript("at_sfk_gargoyle_event") { }
|
||||
|
||||
bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
{
|
||||
if (Creature* announcer = instance->GetCreature(DATA_DEBUG_ANNOUNCER))
|
||||
if (announcer->IsAIEnabled)
|
||||
announcer->AI()->Talk(SAY_ANNOUNCE_GARGOYLES);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_shadowfang_keep()
|
||||
{
|
||||
RegisterAuraScript(spell_sfk_shield_of_bones);
|
||||
new at_sfk_pre_walden();
|
||||
new at_sfk_outside_troups();
|
||||
new at_sfk_godfrey_intro();
|
||||
new at_sfk_baron_silverlaine_post_floor();
|
||||
new at_sfk_gargoyle_event();
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ enum SKCreatures
|
||||
NPC_BLOODTHIRSTY_GHOUL = 50561,
|
||||
NPC_PISTOL_BARRAGE_DUMMY = 52065,
|
||||
|
||||
// Generic NPCs
|
||||
// Generic NPCs
|
||||
NPC_VETERAN_FORSAKEN_TROOPER = 47030,
|
||||
NPC_DEATHSTALKER_BELMONT = 47293,
|
||||
NPC_FORSAKEN_BLIGHTSPREADER = 47031,
|
||||
@@ -83,7 +83,8 @@ enum SKCreatures
|
||||
NPC_DISEASE_BUNNY = 23837,
|
||||
NPC_BLOODFANG_BERSERKER = 47027,
|
||||
NPC_PACKLEADER_IVAR = 47006,
|
||||
NPC_HIGH_MAGISTRATE_HENRY = 47862
|
||||
NPC_HIGH_MAGISTRATE_HENRY = 47862,
|
||||
NPC_DEBUG_ANNOUNCER = 43679,
|
||||
};
|
||||
|
||||
enum SKGameObjectIds
|
||||
@@ -104,6 +105,9 @@ enum SKDataTypes
|
||||
DATA_APOTHECARY_HUMMEL = 5,
|
||||
|
||||
DATA_TEAM_IN_INSTANCE,
|
||||
DATA_OUTSIDE_TROUPS_SPAWN,
|
||||
|
||||
DATA_DEBUG_ANNOUNCER,
|
||||
|
||||
DATA_ARUGAL_DOOR,
|
||||
DATA_SORCERER_GATE,
|
||||
|
||||
Reference in New Issue
Block a user