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:
Ovahlord
2020-01-07 20:25:27 +01:00
parent 0c04267e52
commit 4ac44f388e
4 changed files with 120 additions and 22 deletions

View File

@@ -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)

View File

@@ -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();
}

View File

@@ -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,