aboutsummaryrefslogtreecommitdiff
path: root/src/game/Spell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r--src/game/Spell.cpp53
1 files changed, 27 insertions, 26 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 78809841e3a..96cf260adc5 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -288,6 +288,7 @@ Spell::Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 origi
m_triggeringContainer = triggeringContainer;
m_referencedFromCurrentSpell = false;
m_executedCurrently = false;
+ m_delayStart = 0;
m_delayAtDamageCount = 0;
m_applyMultiplierMask = 0;
@@ -3049,17 +3050,13 @@ void Spell::SendSpellStart()
if(!IsNeedSendToClient())
return;
- sLog.outDebug("Sending SMSG_SPELL_START id=%u",m_spellInfo->Id);
+ sLog.outDebug("Sending SMSG_SPELL_START id=%u", m_spellInfo->Id);
- uint16 castFlags = CAST_FLAG_UNKNOWN1;
+ uint32 castFlags = CAST_FLAG_UNKNOWN1;
if(IsRangedSpell())
castFlags |= CAST_FLAG_AMMO;
- Unit * target;
- if(!m_targets.getUnitTarget())
- target = m_caster;
- else
- target = m_targets.getUnitTarget();
+ Unit *target = m_targets.getUnitTarget() ? m_targets.getUnitTarget() : m_caster;
WorldPacket data(SMSG_SPELL_START, (8+8+4+4+2));
if(m_CastItem)
@@ -3087,17 +3084,13 @@ void Spell::SendSpellGo()
if(!IsNeedSendToClient())
return;
- sLog.outDebug("Sending SMSG_SPELL_GO id=%u",m_spellInfo->Id);
+ sLog.outDebug("Sending SMSG_SPELL_GO id=%u", m_spellInfo->Id);
- Unit * target;
- if(!m_targets.getUnitTarget())
- target = m_caster;
- else
- target = m_targets.getUnitTarget();
+ Unit *target = m_targets.getUnitTarget() ? m_targets.getUnitTarget() : m_caster;
- uint16 castFlags = CAST_FLAG_UNKNOWN3;
+ uint32 castFlags = CAST_FLAG_UNKNOWN3;
if(IsRangedSpell())
- castFlags |= CAST_FLAG_AMMO;
+ castFlags |= CAST_FLAG_AMMO; // arrows/bullets visual
WorldPacket data(SMSG_SPELL_GO, 50); // guess size
if(m_CastItem)
@@ -3198,7 +3191,7 @@ void Spell::SendLogExecute()
data << uint32(count1); // count1 (effect count?)
for(uint32 i = 0; i < count1; ++i)
{
- data << uint32(m_spellInfo->Effect[0]); // spell effect?
+ data << uint32(m_spellInfo->Effect[0]); // spell effect
uint32 count2 = 1;
data << uint32(count2); // count2 (target count?)
for(uint32 j = 0; j < count2; ++j)
@@ -3322,7 +3315,7 @@ void Spell::SendChannelUpdate(uint32 time)
WorldPacket data( MSG_CHANNEL_UPDATE, 8+4 );
data.append(m_caster->GetPackGUID());
- data << time;
+ data << uint32(time);
((Player*)m_caster)->GetSession()->SendPacket( &data );
}
@@ -3359,8 +3352,8 @@ void Spell::SendChannelStart(uint32 duration)
{
WorldPacket data( MSG_CHANNEL_START, (8+4+4) );
data.append(m_caster->GetPackGUID());
- data << m_spellInfo->Id;
- data << duration;
+ data << uint32(m_spellInfo->Id);
+ data << uint32(duration);
((Player*)m_caster)->GetSession()->SendPacket( &data );
}
@@ -3386,8 +3379,8 @@ void Spell::SendPlaySpellVisual(uint32 SpellID)
return;
WorldPacket data(SMSG_PLAY_SPELL_VISUAL, 12);
- data << m_caster->GetGUID();
- data << SpellID;
+ data << uint64(m_caster->GetGUID());
+ data << uint32(SpellID); // spell visual id?
((Player*)m_caster)->GetSession()->SendPacket(&data);
}
@@ -4392,7 +4385,9 @@ uint8 Spell::CanCast(bool strict)
if(int32(m_targets.getUnitTarget()->getLevel()) > CalculateDamage(i,m_targets.getUnitTarget()))
return SPELL_FAILED_HIGHLEVEL;
- };break;
+
+ break;
+ }
case SPELL_AURA_MOUNTED:
{
if (m_caster->IsInWater())
@@ -4425,7 +4420,9 @@ uint8 Spell::CanCast(bool strict)
// can be casted at non-friendly unit or own pet/charm
if(m_caster->IsFriendlyTo(m_targets.getUnitTarget()))
return SPELL_FAILED_TARGET_FRIENDLY;
- };break;
+
+ break;
+ }
case SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED:
case SPELL_AURA_FLY:
{
@@ -4436,7 +4433,9 @@ uint8 Spell::CanCast(bool strict)
GetVirtualMapForMapAndZone(m_caster->GetMapId(),m_caster->GetZoneId()) != 530)
return SPELL_FAILED_NOT_HERE;
}
- };break;
+
+ break;
+ }
case SPELL_AURA_PERIODIC_MANA_LEECH:
{
if (!m_targets.getUnitTarget())
@@ -4447,9 +4446,11 @@ uint8 Spell::CanCast(bool strict)
if(m_targets.getUnitTarget()->getPowerType()!=POWER_MANA)
return SPELL_FAILED_BAD_TARGETS;
+
break;
}
- default:break;
+ default:
+ break;
}
}
@@ -4556,7 +4557,7 @@ uint8 Spell::CheckCasterAuras() const
else if(m_caster->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED) && m_spellInfo->PreventionType==SPELL_PREVENTION_TYPE_PACIFY)
prevented_reason = SPELL_FAILED_PACIFIED;
- // Attr must make flag drop spell totally immuned from all effects
+ // Attr must make flag drop spell totally immune from all effects
if(prevented_reason)
{
if(school_immune || mechanic_immune || dispel_immune)