Script/Spell: remove cosmetic effect for Water Bucket item at login if it expired after the player logged out.

(cherry picked from commit 16cfd59f5b)

Add forgotten override.
(cherry picked from commit c6f94ba42e)

Fix non-PCH build.
(cherry picked from commit 02cea9c0ba)
This commit is contained in:
SnapperRy
2016-10-21 15:55:42 +02:00
committed by joschiwald
parent 1283e21726
commit 25c7849262
3 changed files with 75 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
--
DELETE FROM `spell_script_names` WHERE `spell_id`=42336;
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(42336, "spell_hallows_end_has_water_bucket");

View File

@@ -17,10 +17,12 @@
// This is where scripts' loading functions should be declared:
void AddSC_event_childrens_week();
void AddSC_event_hallows_end();
// The name of this function should match:
// void Add${NameOfDirectory}Scripts()
void AddEventsScripts()
{
AddSC_event_childrens_week();
AddSC_event_hallows_end();
}

View File

@@ -0,0 +1,69 @@
/*
* Copyright (C) 2008-2016 TrinityCore <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Player.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
enum HallowsEnd
{
ITEM_WATER_BUCKET = 32971,
SPELL_HAS_WATER_BUCKET = 42336,
};
class spell_hallows_end_has_water_bucket : public SpellScriptLoader
{
public:
spell_hallows_end_has_water_bucket() : SpellScriptLoader("spell_hallows_end_has_water_bucket") {}
class spell_hallows_end_has_water_bucket_AuraScript : public AuraScript
{
PrepareAuraScript(spell_hallows_end_has_water_bucket_AuraScript);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
if (!sSpellMgr->GetSpellInfo(SPELL_HAS_WATER_BUCKET))
return false;
return true;
}
void HandleEffectApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
if (caster->GetTypeId() == TYPEID_PLAYER)
if (!caster->ToPlayer()->HasItemCount(ITEM_WATER_BUCKET, 1, false))
caster->RemoveAurasDueToSpell(SPELL_HAS_WATER_BUCKET);
}
void Register() override
{
AfterEffectApply += AuraEffectApplyFn(spell_hallows_end_has_water_bucket_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const
{
return new spell_hallows_end_has_water_bucket_AuraScript();
}
};
void AddSC_event_hallows_end()
{
new spell_hallows_end_has_water_bucket();
}