mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 10:26:28 +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:
@@ -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