casucristy

ss

Jul 23rd, 2012
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | None | 0 0
  1. From 3804c68795a61947d4844d6834950cdb75cf6740 Mon Sep 17 00:00:00 2001
  2. From: unknown <cristi@cristis-PC.(none)>
  3. Date: Mon, 23 Jul 2012 19:51:18 +0300
  4. Subject: [PATCH] Fix quest Loose Stones
  5.  
  6. ---
  7.  src/server/scripts/Maelstrom/deepholm.cpp |   81 +++++++++++++++++++++++++++++
  8.  1 file changed, 81 insertions(+)
  9.  
  10. diff --git a/src/server/scripts/Maelstrom/deepholm.cpp b/src/server/scripts/Maelstrom/deepholm.cpp
  11. index 09af097..e3da6b2 100644
  12. --- a/src/server/scripts/Maelstrom/deepholm.cpp
  13. +++ b/src/server/scripts/Maelstrom/deepholm.cpp
  14. @@ -957,6 +957,86 @@ public:
  15.      }
  16.  };
  17.  
  18. +/*###
  19. +## Support for quest Loose Stones
  20. +#########*/
  21. +
  22. +enum LooseStonesEntries
  23. +{
  24. +   SPELL_SMASH_CHAINS                      =   80351,
  25. +    QUEST_LOOSE_STONES                     =   26375,
  26. +   NPC_QUARTZ_ROCKLING                     =   42900
  27. +};
  28. +
  29. +class spell_smash_chains : public SpellScriptLoader
  30. +{
  31. +public:
  32. +    spell_smash_chains() : SpellScriptLoader("spell_smash_chains") { }
  33. +
  34. +    class spell_smash_chains_SpellScript : public SpellScript
  35. +    {
  36. +        PrepareSpellScript(spell_smash_chains_SpellScript);
  37. +
  38. +        bool Validate(SpellInfo const* /*spellEntry*/)
  39. +        {
  40. +            if (!sSpellMgr->GetSpellInfo(SPELL_STONEFATHER_BANNER_COVER))
  41. +                return false;
  42. +            return true;
  43. +        }
  44. +
  45. +        SpellCastResult CheckTarget()
  46. +        {
  47. +           bool result = false;
  48. +           Unit*   target = NULL;
  49. +           Player*     pCaster = NULL;
  50. +
  51. +            if(Unit* caster = GetCaster())
  52. +               if(pCaster = caster->ToPlayer())
  53. +               {
  54. +                   target = pCaster->GetSelectedUnit();
  55. +                   target &&
  56. +                   target->GetEntry() == NPC_QUARTZ_ROCKLING &&
  57. +                   target->GetDistance(pCaster) < 10.0f ? result = true : result = false;
  58. +               }
  59. +
  60. +            if (!result)
  61. +               return SPELL_FAILED_OUT_OF_RANGE;
  62. +            return SPELL_CAST_OK;
  63. +        }
  64. +
  65. +        void HandleDummy(SpellEffIndex /*effIndex*/)
  66. +        {
  67. +           Player* player = NULL;
  68. +           Unit* creature = NULL;
  69. +
  70. +            if(Unit* caster = GetCaster())
  71. +               player = caster->ToPlayer();
  72. +
  73. +           if(player && player->GetQuestStatus(QUEST_LOOSE_STONES)==QUEST_STATUS_INCOMPLETE)
  74. +           {
  75. +               creature = player->GetSelectedUnit();
  76. +
  77. +               if(creature && creature->GetEntry() == NPC_QUARTZ_ROCKLING)
  78. +               {
  79. +                   player->KilledMonsterCredit(NPC_QUARTZ_ROCKLING,0);
  80. +                   creature->RemoveFromWorld();
  81. +               }
  82. +           }  
  83. +        }
  84. +
  85. +        void Register()
  86. +       {
  87. +            OnEffectHit += SpellEffectFn(spell_smash_chains_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
  88. +            OnCheckCast += SpellCheckCastFn(spell_smash_chains_SpellScript::CheckTarget);
  89. +        }
  90. +    };
  91. +
  92. +   SpellScript* GetSpellScript() const
  93. +    {
  94. +        return new spell_smash_chains_SpellScript();
  95. +    }
  96. +};
  97. +
  98.  void AddSC_deepholm()
  99.  {
  100.      new npc_lodestone();
  101. @@ -977,4 +1057,5 @@ void AddSC_deepholm()
  102.     new npc_fly_over_bunny();
  103.     new npc_bound_elemental();
  104.     new go_rod_of_subjugations();
  105. +   new spell_smash_chains();
  106.  }
  107. --
  108. 1.7.10.msysgit.1
Advertisement
Add Comment
Please, Sign In to add comment