[Guerrier] Renvoie de sort
Fix renvoie de sort

[code=diff]
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index e1254de..ee31833 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2591,8 +2591,6 @@ SpellMissInfo Unit::SpellHitResult(Unit *pVictim, SpellEntry const *spell, bool
reflectchance += (*i)->GetAmount();
if (reflectchance > 0 && roll_chance_i(reflectchance))
{
- // Start triggers for remove charges if need (trigger only for victim, and mark as active spell)
- ProcDamageAndSpell(pVictim, PROC_FLAG_NONE, PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG, PROC_EX_REFLECT, 1, BASE_ATTACK, spell);
return SPELL_MISS_REFLECT;
}
}
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 13425cc..2e1a996 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -1186,6 +1186,8 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
if (target->reflectResult == SPELL_MISS_NONE) // If reflected spell hit caster -> do all effect on him
{
spellHitTarget = m_caster;
+ // Start triggers for remove charges if need (trigger only for victim, and mark as active spell)
+ m_caster->ProcDamageAndSpell(unit, PROC_FLAG_NONE, PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG, PROC_EX_REFLECT, 1, BASE_ATTACK, m_spellInfo);
if (m_caster->GetTypeId() == TYPEID_UNIT)
m_caster->ToCreature()->LowerPlayerDamageReq(target->damage);
}[/code]

Les sorts peuvent être renvoyer si l'effet est négatif

[code=diff]diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 2e1a996..677c540 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -526,11 +526,10 @@ m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo))
if (!IsPositiveTarget(m_spellInfo->EffectImplicitTargetA[j], m_spellInfo->EffectImplicitTargetB[j]))
m_canReflect = true;
else
- m_canReflect = (m_spellInfo->AttributesEx & SPELL_ATTR1_NEGATIVE) ? true : false;
+ if (m_spellInfo->AttributesEx & SPELL_ATTR1_NEGATIVE)
+ m_canReflect = true;

if (m_canReflect)
- continue;
- else
break;
}
}
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index befd4dd..9d4cbe2 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -4133,13 +4133,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->AuraInterruptFlags |= AURA_INTERRUPT_FLAG_SPELL_ATTACK;
count++;
break;
- case 30451: // Arcane Blast
- case 42894:
- case 42896:
- case 42897:
- spellInfo->AttributesEx |= SPELL_ATTR1_NEGATIVE;
- count++;
- break;
default:
break;
}[/code]

Affiche le renvoie dans le combat log.

[code=diff]
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 6427420..13425cc 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -1295,6 +1295,9 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
caster->DealDamageMods(damageInfo.target,damageInfo.damage,&damageInfo.absorb);

// Send log damage message to client
+ if (missInfo == SPELL_MISS_REFLECT)
+ damageInfo.attacker = unit;
+
caster->SendSpellNonMeleeDamageLog(&damageInfo);

procEx |= createProcExtendMask(&damageInfo, missInfo);
[/code]

Les sorts de mêlée(magie) ne peuvent être renvoyez ou redirigés. Exemple : charge,interception...

[code=diff]
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 4188841..54b365a 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2565,6 +2565,10 @@ SpellMissInfo Unit::SpellHitResult(Unit *pVictim, SpellEntry const *spell, bool

if (this == pVictim)
return SPELL_MISS_NONE;
+
+ // Magic melee spells cannot be reflected
+ if (spell->DmgClass == SPELL_DAMAGE_CLASS_MAGIC && (spell->AttributesEx & SPELL_ATTR1_UNK9))
+ CanReflect = false;

// Try victim reflect spell
if (CanReflect)
@@ -9835,7 +9839,8 @@ Unit* Unit::SelectMagnetTarget(Unit *victim, SpellEntry const *spellInfo)
return NULL;

// Magic case
- if (spellInfo && (spellInfo->DmgClass == SPELL_DAMAGE_CLASS_NONE || spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MAGIC))
+ if (spellInfo && (spellInfo->DmgClass == SPELL_DAMAGE_CLASS_NONE || (spellInfo->DmgClass == SPELL_DAMAGE_CLASS_MAGIC &&
+ !(spellInfo->AttributesEx & SPELL_ATTR1_UNK9)))) // exception for magic melee spells
{
//I am not sure if this should be redirected.
if (spellInfo->DmgClass == SPELL_DAMAGE_CLASS_NONE)[/code]


Par AMD

Retourner en haut Accueil