From f533813047e37f6789d58861c722104fea2b005c Mon Sep 17 00:00:00 2001 From: NoFantasy Date: Fri, 27 May 2011 13:23:02 +0200 Subject: [PATCH] [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 --- src/game/Unit.cpp | 23 ++++++++++++----------- src/game/Unit.h | 2 +- src/shared/revision_nr.h | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 9ea37603f..846f146c6 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -1403,8 +1403,8 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da damageInfo->resist = 0; damageInfo->blocked_amount = 0; - damageInfo->TargetState = 0; - damageInfo->HitInfo = 0; + damageInfo->TargetState = VICTIMSTATE_UNAFFECTED; + damageInfo->HitInfo = HITINFO_NORMALSWING; damageInfo->procAttacker = PROC_FLAG_NONE; damageInfo->procVictim = PROC_FLAG_NONE; damageInfo->procEx = PROC_EX_NONE; @@ -1431,7 +1431,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da case RANGED_ATTACK: damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_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; default: break; @@ -1482,7 +1482,7 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da case MELEE_HIT_MISS: { damageInfo->HitInfo |= HITINFO_MISS; - damageInfo->TargetState = VICTIMSTATE_NORMAL; + damageInfo->TargetState = VICTIMSTATE_UNAFFECTED; damageInfo->procEx|=PROC_EX_MISS; damageInfo->damage = 0; @@ -1531,22 +1531,22 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da } case MELEE_HIT_PARRY: damageInfo->TargetState = VICTIMSTATE_PARRY; - damageInfo->procEx |= PROC_EX_PARRY; + damageInfo->procEx |= PROC_EX_PARRY; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; case MELEE_HIT_DODGE: damageInfo->TargetState = VICTIMSTATE_DODGE; - damageInfo->procEx|=PROC_EX_DODGE; + damageInfo->procEx |= PROC_EX_DODGE; damageInfo->cleanDamage += damageInfo->damage; damageInfo->damage = 0; break; case MELEE_HIT_BLOCK: { damageInfo->TargetState = VICTIMSTATE_NORMAL; - damageInfo->HitInfo |= HITINFO_BLOCK; - damageInfo->procEx |= PROC_EX_BLOCK; + damageInfo->HitInfo |= HITINFO_BLOCK; + damageInfo->procEx |= PROC_EX_BLOCK; damageInfo->blocked_amount = damageInfo->target->GetShieldBlockValue(); // 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 << uint32(0); - data << uint32(0); + data << uint32(0); // unknown, usually seen with -1, 0 and 1000 + data << uint32(0); // spell id, seen with heroic strike and disarm as examples. + // HITINFO_NOACTION normally set if spell if(damageInfo->HitInfo & HITINFO_BLOCK) data << uint32(damageInfo->blocked_amount); if(damageInfo->HitInfo & HITINFO_UNK3) - data << uint32(0); + data << uint32(0); // count of some sort? if(damageInfo->HitInfo & HITINFO_UNK1) { diff --git a/src/game/Unit.h b/src/game/Unit.h index 3f67c3269..9bef00816 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -206,7 +206,7 @@ enum Swing enum VictimState { - VICTIMSTATE_UNKNOWN1 = 0, + VICTIMSTATE_UNAFFECTED = 0, // seen in relation with HITINFO_MISS VICTIMSTATE_NORMAL = 1, VICTIMSTATE_DODGE = 2, VICTIMSTATE_PARRY = 3, diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index d2a37afdd..1ab717941 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11549" + #define REVISION_NR "11550" #endif // __REVISION_NR_H__