Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From 3804c68795a61947d4844d6834950cdb75cf6740 Mon Sep 17 00:00:00 2001
- From: unknown <cristi@cristis-PC.(none)>
- Date: Mon, 23 Jul 2012 19:51:18 +0300
- Subject: [PATCH] Fix quest Loose Stones
- ---
- src/server/scripts/Maelstrom/deepholm.cpp | 81 +++++++++++++++++++++++++++++
- 1 file changed, 81 insertions(+)
- diff --git a/src/server/scripts/Maelstrom/deepholm.cpp b/src/server/scripts/Maelstrom/deepholm.cpp
- index 09af097..e3da6b2 100644
- --- a/src/server/scripts/Maelstrom/deepholm.cpp
- +++ b/src/server/scripts/Maelstrom/deepholm.cpp
- @@ -957,6 +957,86 @@ public:
- }
- };
- +/*###
- +## Support for quest Loose Stones
- +#########*/
- +
- +enum LooseStonesEntries
- +{
- + SPELL_SMASH_CHAINS = 80351,
- + QUEST_LOOSE_STONES = 26375,
- + NPC_QUARTZ_ROCKLING = 42900
- +};
- +
- +class spell_smash_chains : public SpellScriptLoader
- +{
- +public:
- + spell_smash_chains() : SpellScriptLoader("spell_smash_chains") { }
- +
- + class spell_smash_chains_SpellScript : public SpellScript
- + {
- + PrepareSpellScript(spell_smash_chains_SpellScript);
- +
- + bool Validate(SpellInfo const* /*spellEntry*/)
- + {
- + if (!sSpellMgr->GetSpellInfo(SPELL_STONEFATHER_BANNER_COVER))
- + return false;
- + return true;
- + }
- +
- + SpellCastResult CheckTarget()
- + {
- + bool result = false;
- + Unit* target = NULL;
- + Player* pCaster = NULL;
- +
- + if(Unit* caster = GetCaster())
- + if(pCaster = caster->ToPlayer())
- + {
- + target = pCaster->GetSelectedUnit();
- + target &&
- + target->GetEntry() == NPC_QUARTZ_ROCKLING &&
- + target->GetDistance(pCaster) < 10.0f ? result = true : result = false;
- + }
- +
- + if (!result)
- + return SPELL_FAILED_OUT_OF_RANGE;
- + return SPELL_CAST_OK;
- + }
- +
- + void HandleDummy(SpellEffIndex /*effIndex*/)
- + {
- + Player* player = NULL;
- + Unit* creature = NULL;
- +
- + if(Unit* caster = GetCaster())
- + player = caster->ToPlayer();
- +
- + if(player && player->GetQuestStatus(QUEST_LOOSE_STONES)==QUEST_STATUS_INCOMPLETE)
- + {
- + creature = player->GetSelectedUnit();
- +
- + if(creature && creature->GetEntry() == NPC_QUARTZ_ROCKLING)
- + {
- + player->KilledMonsterCredit(NPC_QUARTZ_ROCKLING,0);
- + creature->RemoveFromWorld();
- + }
- + }
- + }
- +
- + void Register()
- + {
- + OnEffectHit += SpellEffectFn(spell_smash_chains_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
- + OnCheckCast += SpellCheckCastFn(spell_smash_chains_SpellScript::CheckTarget);
- + }
- + };
- +
- + SpellScript* GetSpellScript() const
- + {
- + return new spell_smash_chains_SpellScript();
- + }
- +};
- +
- void AddSC_deepholm()
- {
- new npc_lodestone();
- @@ -977,4 +1057,5 @@ void AddSC_deepholm()
- new npc_fly_over_bunny();
- new npc_bound_elemental();
- new go_rod_of_subjugations();
- + new spell_smash_chains();
- }
- --
- 1.7.10.msysgit.1
Advertisement
Add Comment
Please, Sign In to add comment