diff options
Diffstat (limited to 'src')
2 files changed, 34 insertions, 2 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h index 446cc48d2f7..2c0f16c4ff2 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h @@ -48,7 +48,8 @@ enum DataTypes DATA_HALL_RUNE_4 = 19, DATA_HALL_RUNE_5 = 20, DATA_HALL_RUNE_6 = 21, - DATA_HALL_RUNE_7 = 22 + DATA_HALL_RUNE_7 = 22, + DATA_SCARSHIELD_INFILTRATOR = 23 }; enum CreaturesIds @@ -71,7 +72,8 @@ enum CreaturesIds NPC_BLACKHAND_SUMMONER = 9818, NPC_BLACKHAND_VETERAN = 9819, NPC_BLACKHAND_INCARCERATOR = 10316, - NPC_LORD_VICTOR_NEFARIUS = 10162 + NPC_LORD_VICTOR_NEFARIUS = 10162, + NPC_SCARSHIELD_INFILTRATOR = 10299 }; enum AdditionalData diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index bbe8fda37eb..a43e2ee37dd 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -109,6 +109,9 @@ public: if (GetBossState(DATA_GYTH) == DONE) creature->DisappearAndDie(); break; + case NPC_SCARSHIELD_INFILTRATOR: + ScarshieldInfiltrator = creature->GetGUID(); + break; } } @@ -318,6 +321,8 @@ public: return TheBeast; case DATA_GENERAL_DRAKKISATH: return GeneralDrakkisath; + case DATA_SCARSHIELD_INFILTRATOR: + return ScarshieldInfiltrator; case GO_EMBERSEER_IN: return go_emberseerin; case GO_DOORS: @@ -496,6 +501,7 @@ public: ObjectGuid LordVictorNefarius; ObjectGuid TheBeast; ObjectGuid GeneralDrakkisath; + ObjectGuid ScarshieldInfiltrator; ObjectGuid go_emberseerin; ObjectGuid go_doors; ObjectGuid go_emberseerout; @@ -565,9 +571,33 @@ public: } }; +class at_nearby_scarshield_infiltrator : public AreaTriggerScript +{ +public: + at_nearby_scarshield_infiltrator() : AreaTriggerScript("at_nearby_scarshield_infiltrator") { } + + bool OnTrigger(Player* player, const AreaTriggerEntry* /*at*/) override + { + if (player && player->IsAlive()) + if (InstanceScript* instance = player->GetInstanceScript()) + if (Creature* infiltrator = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_SCARSHIELD_INFILTRATOR))) + { + if (player->getLevel() >= 57) + infiltrator->AI()->SetData(1, 1); + else if (infiltrator->GetEntry() == NPC_SCARSHIELD_INFILTRATOR) + infiltrator->AI()->Talk(0, player); + + return true; + } + + return false; + } +}; + void AddSC_instance_blackrock_spire() { new instance_blackrock_spire(); new at_dragonspire_hall(); new at_blackrock_stadium(); + new at_nearby_scarshield_infiltrator(); } |