mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
[11550] Add and use VICTIMSTATE_UNAFFECTED, in relation with HITINFO_MISS
Some code cleanup in addition and add comments for unknown fields in SMSG_ATTACKERSTATEUPDATE packet Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
parent
4bb5fdb53b
commit
f533813047
3 changed files with 14 additions and 13 deletions
|
|
@ -1403,8 +1403,8 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
|
||||||
damageInfo->resist = 0;
|
damageInfo->resist = 0;
|
||||||
damageInfo->blocked_amount = 0;
|
damageInfo->blocked_amount = 0;
|
||||||
|
|
||||||
damageInfo->TargetState = 0;
|
damageInfo->TargetState = VICTIMSTATE_UNAFFECTED;
|
||||||
damageInfo->HitInfo = 0;
|
damageInfo->HitInfo = HITINFO_NORMALSWING;
|
||||||
damageInfo->procAttacker = PROC_FLAG_NONE;
|
damageInfo->procAttacker = PROC_FLAG_NONE;
|
||||||
damageInfo->procVictim = PROC_FLAG_NONE;
|
damageInfo->procVictim = PROC_FLAG_NONE;
|
||||||
damageInfo->procEx = PROC_EX_NONE;
|
damageInfo->procEx = PROC_EX_NONE;
|
||||||
|
|
@ -1431,7 +1431,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
|
||||||
case RANGED_ATTACK:
|
case RANGED_ATTACK:
|
||||||
damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT;
|
damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_RANGED_HIT;
|
||||||
damageInfo->procVictim = PROC_FLAG_TAKEN_RANGED_HIT;
|
damageInfo->procVictim = PROC_FLAG_TAKEN_RANGED_HIT;
|
||||||
damageInfo->HitInfo = 0x08;// test
|
damageInfo->HitInfo = HITINFO_UNK2; // test (dev note: test what? HitInfo flag possibly not confirmed.)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
@ -1482,7 +1482,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
|
||||||
case MELEE_HIT_MISS:
|
case MELEE_HIT_MISS:
|
||||||
{
|
{
|
||||||
damageInfo->HitInfo |= HITINFO_MISS;
|
damageInfo->HitInfo |= HITINFO_MISS;
|
||||||
damageInfo->TargetState = VICTIMSTATE_NORMAL;
|
damageInfo->TargetState = VICTIMSTATE_UNAFFECTED;
|
||||||
|
|
||||||
damageInfo->procEx|=PROC_EX_MISS;
|
damageInfo->procEx|=PROC_EX_MISS;
|
||||||
damageInfo->damage = 0;
|
damageInfo->damage = 0;
|
||||||
|
|
@ -1531,22 +1531,22 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
|
||||||
}
|
}
|
||||||
case MELEE_HIT_PARRY:
|
case MELEE_HIT_PARRY:
|
||||||
damageInfo->TargetState = VICTIMSTATE_PARRY;
|
damageInfo->TargetState = VICTIMSTATE_PARRY;
|
||||||
damageInfo->procEx |= PROC_EX_PARRY;
|
damageInfo->procEx |= PROC_EX_PARRY;
|
||||||
damageInfo->cleanDamage += damageInfo->damage;
|
damageInfo->cleanDamage += damageInfo->damage;
|
||||||
damageInfo->damage = 0;
|
damageInfo->damage = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MELEE_HIT_DODGE:
|
case MELEE_HIT_DODGE:
|
||||||
damageInfo->TargetState = VICTIMSTATE_DODGE;
|
damageInfo->TargetState = VICTIMSTATE_DODGE;
|
||||||
damageInfo->procEx|=PROC_EX_DODGE;
|
damageInfo->procEx |= PROC_EX_DODGE;
|
||||||
damageInfo->cleanDamage += damageInfo->damage;
|
damageInfo->cleanDamage += damageInfo->damage;
|
||||||
damageInfo->damage = 0;
|
damageInfo->damage = 0;
|
||||||
break;
|
break;
|
||||||
case MELEE_HIT_BLOCK:
|
case MELEE_HIT_BLOCK:
|
||||||
{
|
{
|
||||||
damageInfo->TargetState = VICTIMSTATE_NORMAL;
|
damageInfo->TargetState = VICTIMSTATE_NORMAL;
|
||||||
damageInfo->HitInfo |= HITINFO_BLOCK;
|
damageInfo->HitInfo |= HITINFO_BLOCK;
|
||||||
damageInfo->procEx |= PROC_EX_BLOCK;
|
damageInfo->procEx |= PROC_EX_BLOCK;
|
||||||
damageInfo->blocked_amount = damageInfo->target->GetShieldBlockValue();
|
damageInfo->blocked_amount = damageInfo->target->GetShieldBlockValue();
|
||||||
|
|
||||||
// Target has a chance to double the blocked amount if it has SPELL_AURA_MOD_BLOCK_CRIT_CHANCE
|
// Target has a chance to double the blocked amount if it has SPELL_AURA_MOD_BLOCK_CRIT_CHANCE
|
||||||
|
|
@ -5252,14 +5252,15 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo *damageInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
data << uint8(damageInfo->TargetState);
|
data << uint8(damageInfo->TargetState);
|
||||||
data << uint32(0);
|
data << uint32(0); // unknown, usually seen with -1, 0 and 1000
|
||||||
data << uint32(0);
|
data << uint32(0); // spell id, seen with heroic strike and disarm as examples.
|
||||||
|
// HITINFO_NOACTION normally set if spell
|
||||||
|
|
||||||
if(damageInfo->HitInfo & HITINFO_BLOCK)
|
if(damageInfo->HitInfo & HITINFO_BLOCK)
|
||||||
data << uint32(damageInfo->blocked_amount);
|
data << uint32(damageInfo->blocked_amount);
|
||||||
|
|
||||||
if(damageInfo->HitInfo & HITINFO_UNK3)
|
if(damageInfo->HitInfo & HITINFO_UNK3)
|
||||||
data << uint32(0);
|
data << uint32(0); // count of some sort?
|
||||||
|
|
||||||
if(damageInfo->HitInfo & HITINFO_UNK1)
|
if(damageInfo->HitInfo & HITINFO_UNK1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -206,7 +206,7 @@ enum Swing
|
||||||
|
|
||||||
enum VictimState
|
enum VictimState
|
||||||
{
|
{
|
||||||
VICTIMSTATE_UNKNOWN1 = 0,
|
VICTIMSTATE_UNAFFECTED = 0, // seen in relation with HITINFO_MISS
|
||||||
VICTIMSTATE_NORMAL = 1,
|
VICTIMSTATE_NORMAL = 1,
|
||||||
VICTIMSTATE_DODGE = 2,
|
VICTIMSTATE_DODGE = 2,
|
||||||
VICTIMSTATE_PARRY = 3,
|
VICTIMSTATE_PARRY = 3,
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11549"
|
#define REVISION_NR "11550"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue