casucristy

hwerywer

Jul 14th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.02 KB | None | 0 0
  1. From ddb41b1afe3ea930f17d973ccdd44367920c5432 Mon Sep 17 00:00:00 2001
  2. From: unknown <cristi@cristis-PC.(none)>
  3. Date: Sat, 14 Jul 2012 19:30:47 +0300
  4. Subject: [PATCH] Mine Sweeper Achievement Fix
  5.  
  6. ---
  7.  src/server/scripts/Northrend/storm_peaks.cpp |  100 ++++++++++++++++++++++++++
  8.  1 file changed, 100 insertions(+)
  9.  
  10. diff --git a/src/server/scripts/Northrend/storm_peaks.cpp b/src/server/scripts/Northrend/storm_peaks.cpp
  11. index 15239e9..1e702a5 100644
  12. --- a/src/server/scripts/Northrend/storm_peaks.cpp
  13. +++ b/src/server/scripts/Northrend/storm_peaks.cpp
  14. @@ -746,6 +746,103 @@ class npc_hyldsmeet_protodrake : public CreatureScript
  15.          }
  16.  };
  17.  
  18. +/*################
  19. +### Support for achievement Mine Sweeper
  20. +#########################*/
  21. +
  22. +enum MineSweeperEntries
  23. +{
  24. +   SPELL_KNOCK_BACK                            = 54402,
  25. +   NPC_LAND_MINE_BUNNY                         = 29397,
  26. +   SPELL_LANDMINE_KNOCKBACK_ACHIEVEMENT        = 57064,
  27. +   SPELL_LANDMINE_KNOCKBACK_ACHIEVEMENT_AURA   = 57099
  28. +};
  29. +
  30. +class mob_land_mine_bunny : public CreatureScript
  31. +{
  32. +public:
  33. +    mob_land_mine_bunny() : CreatureScript("mob_land_mine_bunny") { }
  34. +
  35. +    CreatureAI* GetAI(Creature* creature) const
  36. +    {
  37. +        return new mob_land_mine_bunnyAI (creature);
  38. +    }
  39. +
  40. +    struct mob_land_mine_bunnyAI : public ScriptedAI
  41. +    {
  42. +        mob_land_mine_bunnyAI(Creature* creature) : ScriptedAI(creature)
  43. +       {
  44. +        }
  45. +      
  46. +        void AttackStart(Unit* /*who*/) {}
  47. +        void MoveInLineOfSight(Unit* who)
  48. +       {
  49. +           Player* player = who->ToPlayer();
  50. +           me->CastSpell(me,SPELL_KNOCK_BACK);
  51. +           if(player)
  52. +               player->CastSpell(player,SPELL_LANDMINE_KNOCKBACK_ACHIEVEMENT_AURA);
  53. +       }
  54. +        void UpdateAI(const uint32 /*diff*/) {}
  55. +    };
  56. +
  57. +};
  58. +
  59. +class spell_gen_landmine_knockback_achievement_aura : public SpellScriptLoader
  60. +{
  61. +    public:
  62. +        spell_gen_landmine_knockback_achievement_aura() : SpellScriptLoader("spell_gen_landmine_knockback_achievement_aura") { }
  63. +
  64. +        class spell_gen_landmine_knockback_achievement_aura_SpellScript : public SpellScript
  65. +        {
  66. +            PrepareSpellScript(spell_gen_landmine_knockback_achievement_aura_SpellScript);
  67. +
  68. +            bool Validate(SpellInfo const* /*spell*/)
  69. +            {
  70. +                if (!sSpellMgr->GetSpellInfo(SPELL_LANDMINE_KNOCKBACK_ACHIEVEMENT))
  71. +                    return false;
  72. +                return true;
  73. +            }
  74. +
  75. +            void HandleScript(SpellEffIndex /*effIndex*/)
  76. +            {
  77. +                if (Player* target = GetHitPlayer())
  78. +                {
  79. +                    Aura const* aura = target->GetAura(GetSpellInfo()->Id);
  80. +                    if (!(aura && aura->GetStackAmount() == 10))
  81. +                        return;
  82. +
  83. +                    target->CastSpell(target, SPELL_LANDMINE_KNOCKBACK_ACHIEVEMENT, true);
  84. +                }
  85. +            }
  86. +
  87. +            void Register()
  88. +            {
  89. +                OnEffectHitTarget += SpellEffectFn(spell_gen_landmine_knockback_achievement_aura_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_APPLY_AURA);
  90. +            }
  91. +        };
  92. +
  93. +        SpellScript* GetSpellScript() const
  94. +        {
  95. +            return new spell_gen_landmine_knockback_achievement_aura_SpellScript();
  96. +        }
  97. +};
  98. +
  99. +
  100. +class achievement_mine_sweeper : public AchievementCriteriaScript
  101. +{
  102. +    public:
  103. +        achievement_mine_sweeper() : AchievementCriteriaScript("achievement_mine_sweeper") { }
  104. +
  105. +        bool OnCheck(Player* source, Unit* /* target */)
  106. +        {
  107. +           Aura const* aura = source->GetAura(SPELL_LANDMINE_KNOCKBACK_ACHIEVEMENT_AURA);
  108. +            if (!(aura && aura->GetStackAmount() == 10))
  109. +               return false;
  110. +
  111. +           return true;
  112. +        }
  113. +};
  114. +
  115.  void AddSC_storm_peaks()
  116.  {
  117.      new npc_agnetta_tyrsdottar();
  118. @@ -758,4 +855,7 @@ void AddSC_storm_peaks()
  119.      new npc_brunnhildar_prisoner();
  120.      new npc_icefang();
  121.      new npc_hyldsmeet_protodrake();
  122. +   new mob_land_mine_bunny();
  123. +   new spell_gen_landmine_knockback_achievement_aura();
  124. +   new achievement_mine_sweeper();
  125.  }
  126. --
  127. 1.7.10.msysgit.1
Advertisement
Add Comment
Please, Sign In to add comment