Core/Spells: Fix SPELL_AURA_FORCE_WEATHER

This commit is contained in:
Shocker
2012-09-21 02:24:02 +03:00
parent 5a9d3e90f2
commit 6d2a74a201
3 changed files with 37 additions and 2 deletions

View File

@@ -390,7 +390,7 @@ enum AuraType
SPELL_AURA_PROC_ON_POWER_AMOUNT = 328,
SPELL_AURA_MOD_RUNE_REGEN_SPEED = 329, // NYI
SPELL_AURA_CAST_WHILE_WALKING = 330,
SPELL_AURA_FORCE_WEATHER = 331, // NYI
SPELL_AURA_FORCE_WEATHER = 331,
SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS = 332,
SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_2 = 333,
SPELL_AURA_MOD_BLIND = 334, // NYI

View File

@@ -38,6 +38,7 @@
#include "Vehicle.h"
#include "Battlefield.h"
#include "BattlefieldMgr.h"
#include "WeatherMgr.h"
class Aura;
//
@@ -386,7 +387,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNoImmediateEffect, //328 SPELL_AURA_PROC_ON_POWER_AMOUNT implemented in Unit::HandleAuraProcOnPowerAmount
&AuraEffect::HandleNULL, //329 SPELL_AURA_MOD_RUNE_REGEN_SPEED
&AuraEffect::HandleNoImmediateEffect, //330 SPELL_AURA_CAST_WHILE_WALKING
&AuraEffect::HandleNULL, //331 SPELL_AURA_331
&AuraEffect::HandleAuraForceWeather, //331 SPELL_AURA_FORCE_WEATHER
&AuraEffect::HandleNoImmediateEffect, //332 SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS implemented in WorldSession::HandleCastSpellOpcode
&AuraEffect::HandleNoImmediateEffect, //333 SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_2 implemented in WorldSession::HandleCastSpellOpcode
&AuraEffect::HandleNULL, //334 SPELL_AURA_334
@@ -6714,3 +6715,36 @@ void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurA
sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "AuraEffect::HandleRaidProcFromChargeWithValueAuraProc: Triggering spell %u from aura %u proc", triggerSpellId, GetId());
target->CastCustomSpell(target, triggerSpellId, &value, NULL, NULL, true, NULL, this, GetCasterGUID());
}
void AuraEffect::HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const
{
if (!(mode & AURA_EFFECT_HANDLE_REAL))
return;
Player* target = aurApp->GetTarget()->ToPlayer();
if (!target)
return;
if (apply)
{
WorldPacket data(SMSG_WEATHER, (4 + 4 + 1));
data << uint32(GetMiscValue()) << 1.0f << uint8(0);
target->GetSession()->SendPacket(&data);
}
else
{
// send weather for current zone
if (Weather* weather = WeatherMgr::FindWeather(target->GetZoneId()))
weather->SendWeatherUpdateToPlayer(target);
else
{
if (!WeatherMgr::AddWeather(target->GetZoneId()))
{
// send fine weather packet to remove old weather
WeatherMgr::SendFineWeatherUpdateToPlayer(target);
}
}
}
}

View File

@@ -277,6 +277,7 @@ class AuraEffect
void HandleAuraOverrideSpells(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraSetVehicle(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandlePreventResurrection(AuraApplication const* aurApp, uint8 mode, bool apply) const;
void HandleAuraForceWeather(AuraApplication const* aurApp, uint8 mode, bool apply) const;
// aura effect periodic tick handlers
void HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const;