[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:
NoFantasy 2011-05-27 13:23:02 +02:00
parent 4bb5fdb53b
commit f533813047
3 changed files with 14 additions and 13 deletions

View file

@ -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)
{ {

View file

@ -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,

View file

@ -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__