diff options
| author | Spp <spp@jorge.gr> | 2012-12-07 09:22:43 +0100 |
|---|---|---|
| committer | Spp <spp@jorge.gr> | 2012-12-07 09:22:43 +0100 |
| commit | fb2e5c3c5840a77452a2418805eabd01147a4346 (patch) | |
| tree | a4490008845509814826b09f17ada5b2d9c9b405 /src/server/scripts/Spells | |
| parent | 4c78f667de319a9690493fddb690b57f940c862e (diff) | |
| parent | 6ed36342a20d11657eda8473b59ee10cbe92a507 (diff) | |
Merge branch 'master' into 4.3.4
Conflicts:
src/server/game/Conditions/ConditionMgr.cpp
src/server/game/Conditions/ConditionMgr.h
src/server/game/Entities/Player/Player.cpp
src/server/game/Entities/Player/Player.h
src/server/game/Entities/Unit/Unit.cpp
src/server/game/Globals/ObjectMgr.cpp
src/server/game/Handlers/ItemHandler.cpp
src/server/game/Quests/QuestDef.cpp
src/server/game/Quests/QuestDef.h
src/server/game/Spells/Auras/SpellAuraEffects.cpp
src/server/game/World/World.h
src/server/scripts/Kalimdor/azshara.cpp
src/server/scripts/Kalimdor/azuremyst_isle.cpp
src/server/scripts/Kalimdor/darkshore.cpp
src/server/scripts/Kalimdor/durotar.cpp
src/server/scripts/Kalimdor/dustwallow_marsh.cpp
src/server/scripts/Kalimdor/feralas.cpp
src/server/scripts/Kalimdor/moonglade.cpp
src/server/scripts/Kalimdor/silithus.cpp
src/server/scripts/Kalimdor/stonetalon_mountains.cpp
src/server/scripts/Kalimdor/tanaris.cpp
src/server/scripts/Kalimdor/the_barrens.cpp
src/server/scripts/Kalimdor/thousand_needles.cpp
src/server/scripts/Spells/spell_generic.cpp
Diffstat (limited to 'src/server/scripts/Spells')
| -rw-r--r-- | src/server/scripts/Spells/spell_generic.cpp | 56 | ||||
| -rw-r--r-- | src/server/scripts/Spells/spell_hunter.cpp | 31 |
2 files changed, 87 insertions, 0 deletions
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 1f23d0a4d7a..b54cc3cdf55 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -3335,6 +3335,61 @@ class spell_gen_increase_stats_buff : public SpellScriptLoader } }; +enum Replenishment +{ + SPELL_REPLENISHMENT = 57669, + SPELL_INFINITE_REPLENISHMENT = 61782 +}; + +class spell_gen_replenishment : public SpellScriptLoader +{ + public: + spell_gen_replenishment() : SpellScriptLoader("spell_gen_replenishment") { } + + class spell_gen_replenishment_AuraScript : public AuraScript + { + PrepareAuraScript(spell_gen_replenishment_AuraScript); + + bool Validate(SpellInfo const* /*spell*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_REPLENISHMENT) || + !sSpellMgr->GetSpellInfo(SPELL_INFINITE_REPLENISHMENT)) + return false; + return true; + } + + bool Load() + { + return GetUnitOwner()->GetPower(POWER_MANA); + } + + void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/) + { + switch (GetSpellInfo()->Id) + { + case SPELL_REPLENISHMENT: + amount = GetUnitOwner()->GetMaxPower(POWER_MANA) * 0.002f; + break; + case SPELL_INFINITE_REPLENISHMENT: + amount = GetUnitOwner()->GetMaxPower(POWER_MANA) * 0.0025f; + break; + default: + break; + } + } + + void Register() + { + DoEffectCalcAmount += AuraEffectCalcAmountFn(spell_gen_replenishment_AuraScript::CalculateAmount, EFFECT_0, SPELL_AURA_PERIODIC_ENERGIZE); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_gen_replenishment_AuraScript(); + } +}; + void AddSC_generic_spell_scripts() { new spell_gen_absorb0_hitlimit1(); @@ -3418,4 +3473,5 @@ void AddSC_generic_spell_scripts() new spell_gen_increase_stats_buff("spell_pri_shadow_protection"); new spell_gen_increase_stats_buff("spell_mage_arcane_brilliance"); new spell_gen_increase_stats_buff("spell_mage_dalaran_brilliance"); + new spell_gen_replenishment(); } diff --git a/src/server/scripts/Spells/spell_hunter.cpp b/src/server/scripts/Spells/spell_hunter.cpp index a73af6892ca..e52034ed2d9 100644 --- a/src/server/scripts/Spells/spell_hunter.cpp +++ b/src/server/scripts/Spells/spell_hunter.cpp @@ -706,6 +706,36 @@ class spell_hun_tame_beast : public SpellScriptLoader } }; +class spell_hun_furious_howl : public SpellScriptLoader +{ + public: + spell_hun_furious_howl() : SpellScriptLoader("spell_hun_furious_howl") { } + + class spell_hun_furious_howl_SpellScript : public SpellScript + { + PrepareSpellScript(spell_hun_furious_howl_SpellScript); + + void FilterTargets(std::list<WorldObject*>& targets) + { + targets.clear(); + targets.push_back(GetCaster()); + if (Unit* owner = GetCaster()->GetOwner()) + targets.push_back(owner); + } + + void Register() + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_hun_furious_howl_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_PARTY); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_hun_furious_howl_SpellScript::FilterTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_PARTY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_hun_furious_howl_SpellScript(); + } +}; + void AddSC_hunter_spell_scripts() { new spell_hun_aspect_of_the_beast(); @@ -722,4 +752,5 @@ void AddSC_hunter_spell_scripts() new spell_hun_misdirection_proc(); new spell_hun_disengage(); new spell_hun_tame_beast(); + new spell_hun_furious_howl(); } |
