diff options
| author | avarishd <46330494+avarishd@users.noreply.github.com> | 2025-06-21 21:44:01 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-21 20:44:01 +0200 |
| commit | 7c171ae4dcad80e1c4b43bcfe412fe517cf3aae4 (patch) | |
| tree | bf2cf6089bc54a7cc280664cc26800eed147010b /src/server/scripts | |
| parent | 5a582370077632e8e0cffa3aad025ea9491c7875 (diff) | |
fix(Scripts/ScarletEnclave): City guards should throw stuff at new DKs (#22317)
Diffstat (limited to 'src/server/scripts')
| -rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 31233da0a8..f16b774ac6 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1215,9 +1215,106 @@ class spell_chapter5_rebuke : public SpellScript } }; +// 58552 - Return to Orgrimmar +// 58533 - Return to Stormwind +enum ReturnToCapital +{ + SPELL_RETURN_TO_ORGRIMMAR_APPLE = 58509, + SPELL_RETURN_TO_ORGRIMMAR_BANANA = 58513, + SPELL_RETURN_TO_ORGRIMMAR_SPIT = 58520, + + EMOTE_THROW_APPLE = 2, + EMOTE_THROW_BANANA = 3, + EMOTE_THROW_SPIT = 4, + SAY_INSULT_TO_DK = 5, + + NPC_SW_GUARD = 68, + NPC_ROYAL_GUARD = 1756, + NPC_CITY_PATROLLER = 1976, + NPC_OG_GUARD = 3296, + NPC_KOR_ELITE = 14304, + + TEXT_BROADCAST_COWER = 31670 // "%s cowers in fear." +}; + +uint32 ReturnToCapitalSpells[3] = +{ + 58509, // Apple + 58513, // Banana + 58520 // Spit +}; + +class spell_chapter5_return_to_capital : public SpellScript +{ + PrepareSpellScript(spell_chapter5_return_to_capital); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_RETURN_TO_ORGRIMMAR_APPLE, SPELL_RETURN_TO_ORGRIMMAR_BANANA, SPELL_RETURN_TO_ORGRIMMAR_SPIT}); + } + + void HandleHit(SpellEffIndex /*effIndex*/) + { + Creature* creature = GetHitUnit()->ToCreature(); + Player* player = GetCaster()->ToPlayer(); + uint32 spellId = GetSpellInfo()->Id; + + if (!spellId || !creature || !player || player->IsGameMaster() || !player->IsAlive() || !creature->IsAlive() || creature->IsInCombat()) + return; + + if (creature->HasSpellCooldown(spellId)) + return; + + if (creature->GetEntry() == NPC_SW_GUARD || creature->GetEntry() == NPC_ROYAL_GUARD || creature->GetEntry() == NPC_CITY_PATROLLER || creature->GetEntry() == NPC_OG_GUARD || creature->GetEntry() == NPC_KOR_ELITE) + { + _emote = urand(2,4); + if (creature) + { + creature->PauseMovement(5000); + creature->SetTimedFacingToObject(player, 30000); + + if (roll_chance_i(30)) + { + creature->AI()->Talk(_emote, player); + creature->CastSpell(player, ReturnToCapitalSpells[_emote - 2]); + } + else + { + creature->AI()->Talk(SAY_INSULT_TO_DK, player); + creature->HandleEmoteCommand(RAND(EMOTE_ONESHOT_POINT,EMOTE_ONESHOT_RUDE)); + } + } + } + /*/// @todo: This needs to be further investigated as there are some "guard" npcs, that have civilian flags and non guard npcs should also insult the dk. + else + if (creature->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_CIVILIAN) + { + creature->HandleEmoteCommand(EMOTE_STATE_COWER); // from sniff, emote 431 for a while, then reset (with "%s cowers in fear." text) + creature->PlayDirectSound(14556); // from sniff + if (player) + { + LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex(); + if (BroadcastText const* bct = sObjectMgr->GetBroadcastText(TEXT_BROADCAST_COWER)) + creature->TextEmote(bct->GetText(loc_idx, creature->getGender()), creature); + } + } + */ + + creature->AddSpellCooldown(spellId, 0, 30000); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_chapter5_return_to_capital::HandleHit, EFFECT_0, SPELL_EFFECT_DUMMY); + } +private: + uint8 _emote; +}; + void AddSC_the_scarlet_enclave_c5() { new npc_highlord_darion_mograine(); RegisterSpellScript(spell_chapter5_light_of_dawn_aura); RegisterSpellScript(spell_chapter5_rebuke); + RegisterSpellScript(spell_chapter5_return_to_capital); } |
