#ifndef PROGRAMCOMMON_WARMESSAGES_INTER_INL #error "can't direct include this file" #endif //================================================================================================== namespace nsSync { #pragma pack(push, 1) ; // NOTE: remove _NA_0_20100211_SD_EFFECT_MODIFY // REMOVE_ATTACK_MOVE // NOTE: // effect : composition of SKILL_EFFECT_~~ //================================================================================================== // base: CG_BATTLE_MONSTER_ATTACK_CMD WAR_MSG_DECL(BATTLE_MONSTER_ATTACK_BRD) { DWORD m_dwObjectKey; DWORD m_dwTargetObjectKey; BYTE m_byAttackType; WzVector m_wvCurPos; DAMAGETYPE m_wDamage; DWORD m_wTargetHP; WORD m_wTargetReserveHP; BYTE m_byEffect; // °ø°Ý °á°ú¿¡ ´ëÇÑ Æ¯¼ö ÀÌÆåÆ®(Å©¸®Æ¼ÄÃÀÌ ÅÍÁ³´Ù...) #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) void Clear() { ZeroMemory(this, sizeof(*this)); } }; // base: CG_SYNC_NPC_JUMPRESULT_BRD WAR_MSG_DECL(BATTLE_MONSTER_JUMP_ATTACK_BRD) { DWORD m_dwObjectKey; DWORD m_dwTargetObjectKey; BYTE m_byAttackType; WzVector m_wvCurPos; DAMAGETYPE m_wDamage; DWORD m_wTargetHP; BYTE m_byEffect; // °ø°Ý °á°ú¿¡ ´ëÇÑ Æ¯¼ö ÀÌÆåÆ®(Å©¸®Æ¼ÄÃÀÌ ÅÍÁ³´Ù...) void Clear() { ZeroMemory(this, sizeof(*this)); } }; //================================================================================================== // base: CG_BATTLE_PLAYER_ATTACK_BRD WAR_MSG_DECL(BATTLE_PLAYER_ATTACK_BRD) { DWORD dwAttackerKey; // °ø°ÝÀÚÀÇ ¿ÀºêÁ§Æ® Ű BYTE byAttackType; // °ø°Ý ŸÀÔ #ifdef _NA003109_STYLE_PRESENTATION_IMPROVEMENT uint8_t style_presentation; // default(0), client animation presentation, ref: CG_BATTLE_PLAYER_ATTACK_SYN::style_presentation #endif SLOTCODE StyleCode; // ½ºÅ¸ÀÏ ÄÚµå DWORD dwClientSerial; // Ŭ¶óÀÌ¾ðÆ®¿¡¼­ º¸³½ ½Ã¸®¾óÀ» ºê·Îµå ij½ºÆ® WzVector wvCurPos; // °ø°ÝÀÚÀÇ ÇöÀçÀ§Ä¡ DWORD dwTargetKey ; // °ø°Ý ´ë»óÀÇ ¿ÀºêÁ§Æ® Ű DAMAGETYPE wDamage; // °ø°Ý µ¥¹ÌÁö DWORD dwTargetHP; // °ø°Ý ÈÄ Å¸°ÙÀÇ HP BYTE byEffect; // °ø°Ý °á°ú¿¡ ´ëÇÑ Æ¯¼ö ÀÌÆåÆ®(Å©¸®Æ¼ÄÃÀÌ ÅÍÁ³´Ù...) BYTE byEtherComboCount; // ¿¡Å׸£ źȯ ÀåÂø ½Ã ÄÞº¸ // #ifdef _NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO DWORD target_sd; // °ø°Ý ÈÄ Å¸°ÙÀÇ SD #endif // _NA_006638_20120415_ADD_SHIELD_INFO_IN_TARGET_INFO void Clear() { ZeroMemory(this, sizeof(*this)); } }; // base: CG_BATTLE_PLAYER_AREA_ATTACK_BRD WAR_MSG_DECL(BATTLE_PLAYER_AREA_ATTACK_BRD) { DWORD m_dwClientSerial; // °ø°Ý À̺¥Æ®¿¡ ´ëÇÑ °íÀ¯ ¹øÈ£ DWORD m_dwAttackerKey; // °ø°ÝÀÚÀÇ ¿ÀºêÁ§Æ® Ű DWORD m_dwPrimaryTargetKey; // ÁÖ°ø°Ý ´ë»ó ¿ÀºêÁ§Æ® Ű WzVector m_wvCurPos; // °ø°ÝÀÚÀÇ ÇöÀç ÁÂÇ¥ SLOTCODE m_StyleCode; // ½ºÅ¸ÀÏ ÄÚµå BYTE m_byAttackType; // °ø°Ý ŸÀÔ BYTE m_byNumberOfTargets; // °ø°Ý ´ë»óÀÇ ¼ö·® AREA_ATTACK_RESULT_INFO AttackInfo[MAX_TARGET_NUM]; void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(AttackInfo); return static_cast(kMinSize + sizeof(AttackInfo[0]) * m_byNumberOfTargets); } }; //================================================================================================== // base: CG_STYLE_PLAYER_ATTACK_BRD WAR_MSG_DECL(STYLE_PLAYER_ATTACK_BRD) { DWORD dwAttackerKey; // °ø°ÝÀÚÀÇ ¿ÀºêÁ§Æ® Ű BYTE byAttackType; // °ø°Ý ŸÀÔ #ifdef _NA003109_STYLE_PRESENTATION_IMPROVEMENT uint8_t style_presentation; // ref:BATTLE_PLAYER_ATTACK_BRD::style_presentation #endif SLOTCODE StyleCode; // Style Code DWORD dwClientSerial; // °ø°Ý À̺¥Æ®¿¡ ´ëÇÑ °íÀ¯ ¹øÈ£ DWORD dwPrimaryTargetKey; // ÁÖ°ø°Ý ´ë»ó ¿ÀºêÁ§Æ® Ű WzVector wvCurPos; void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { return sizeof(*this); } }; // base: CG_STYLE_PLAYER_ATTACK_RESULT_BRD WAR_MSG_DECL(STYLE_PLAYER_ATTACK_RESULT_BRD) { DWORD dwClientSerial; // °ø°Ý À̺¥Æ®¿¡ ´ëÇÑ °íÀ¯ ¹øÈ£ DWORD dwAttackerKey; // °ø°ÝÀÚÀÇ ¿ÀºêÁ§Æ® Ű BYTE byNumberOfTargets; // °ø°Ý ´ë»óÀÇ ¼ö·® #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) STYLE_ATTACK_RESULT_INFO AttackInfo[MAX_TARGET_NUM]; void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(AttackInfo); return static_cast(kMinSize + sizeof(AttackInfo[0]) * byNumberOfTargets); } }; //================================================================================================== struct SkillActionBase { SLOTCODE m_SkillCode; // Skill ÄÚµå DWORD m_dwClientSerial; // °ø°Ý À̺¥Æ®¿¡ ´ëÇÑ °íÀ¯ ¹øÈ£ DWORD m_dwAttackerKey; // °ø°ÝÀÚÀÇ ¿ÀºêÁ§Æ® Ű DWORD m_dwPrimaryTargetKey; // ÁÖ°ø°Ý ´ë»ó ¿ÀºêÁ§Æ® Ű WzVector m_wvMainTargetPos; // ÁÖ°ø°Ý´ë»óÀÇ À§Ä¡ }; struct SkillActionInstantResult : public SkillActionBase { WzVector m_wvCurPos; // °ø°ÝÀÚÀÇ ÇöÀç ÁÂÇ¥ WzVector m_wvDestPos; // °ø°ÝÀÚÀÇ ¸ñÀûÁö ÁÂÇ¥ DWORD m_dwAttackerHP; // ½ºÅ³À» ¾²°í³­ ÈÄ °ø°ÝÀÚÀÇ HP DWORD m_dwAttackerMP; // ½ºÅ³À» ¾²°í³­ ÈÄ °ø°ÝÀÚÀÇ MP BYTE m_byNumberOfTargets : 6; // °ø°Ý ´ë»óÀÇ ¼ö·® BYTE m_byNumberOfFieldEffect : 2; // Çʵ忡 °É¸®´Â ÀÌÆåÆ®°¡ ÀÖÀ» °æ¿ì ±× ¼ö·® }; struct SkillActionDelayStart : public SkillActionBase { WzVector m_wvCurPos; // °ø°ÝÀÚÀÇ ÇöÀç ÁÂÇ¥ WzVector m_wvDestPos; // °ø°ÝÀÚÀÇ ¸ñÀûÁö ÁÂÇ¥ }; struct SkillActionDelayResult : public SkillActionBase { DWORD m_dwAttackerHP; // ½ºÅ³À» ¾²°í³­ ÈÄ °ø°ÝÀÚÀÇ HP DWORD m_dwAttackerMP; // ½ºÅ³À» ¾²°í³­ ÈÄ °ø°ÝÀÚÀÇ MP BYTE m_byNumberOfTargets : 6; // °ø°Ý ´ë»óÀÇ ¼ö·® BYTE m_byNumberOfFieldEffect : 2; // Çʵ忡 °É¸®´Â ÀÌÆåÆ®°¡ ÀÖÀ» °æ¿ì ±× ¼ö·® }; WAR_MSG_DECL(SKILL_ACTION_INSTANT_RESULT_BRD) { SkillActionInstantResult result; uint16 sizeof_additions; #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { return static_cast(sizeof(*this) + sizeof_additions); }; }; WAR_MSG_DECL(SKILL_ACTION_DELAY_START_BRD) { SkillActionDelayStart result; void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { return sizeof(*this); }; }; WAR_MSG_DECL(SKILL_ACTION_DELAY_RESULT_BRD) { SkillActionDelayResult result; uint16 sizeof_additions; #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { return static_cast(sizeof(*this) + sizeof_additions); }; }; //================================================================================================== WAR_MSG_DECL(SKILL_CASTING_CANCEL_BRD) { DWORD m_dwObjectKey; // ½ºÅ³ ¼ÒÀ¯ÀÚ ¿ÀºêÁ§Æ®Å° SLOTCODE m_SkillCode; // Skill ÄÚµå void Clear() { ZeroMemory(this, sizeof(*this)); } }; WAR_MSG_DECL(SKILL_PERIODIC_DAMAGE_BRD) { DWORD m_dwAttackerKey; // Áֱⵥ¹ÌÁö¸¦ ¹ß»ý½ÃŲ °ø°ÝÀÚ Å° SLOTCODE m_SkillCode; // Áֱⵥ¹ÌÁö¸¦ ¹ß»ý½ÃŰ´Â ½ºÅ³ÄÚµå BYTE m_byNumberOfTargets; // °ø°Ý ´ë»óÀÇ ¼ö·® #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) DAMAGE_INFO m_DamageInfo[MAX_TARGET_NUM]; // °ø°Ý ´ë»óÀÇ µ¥¹ÌÁö Á¤º¸ void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_DamageInfo); return static_cast(kMinSize + sizeof(m_DamageInfo[0]) * m_byNumberOfTargets); } }; WAR_MSG_DECL(SKILL_REFLECT_DAMAGE_BRD) { DWORD m_dwAttackerKey; // Áֱⵥ¹ÌÁö¸¦ ¹ß»ý½ÃŲ °ø°ÝÀÚ Å° DWORD m_dwTargetKey; // °ø°Ý ´çÇÏ´Â ¿ÀºêÁ§Æ® Ű SLOTCODE m_SkillCode; // ÇÇ°Ý ½ºÅ³ÄÚµå WORD m_wAbilityCode; // ÇÇ°Ý ¾îºô¸®Æ¼ ÄÚµå DAMAGETYPE m_wDamage; // °ø°Ý µ¥¹ÌÁö DWORD m_dwTargetHP; // °ø°Ý ÈÄ Å¸°ÙÀÇ HP DWORD m_dwTargetResrveHP; // °ø°ÝÈÄ Å¸°ÙÀÇ Àû¸³µÈ HP #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) void Clear() { ZeroMemory(this, sizeof(*this)); } }; WAR_MSG_DECL(SKILL_EFFECT_BOMB_BRD) { DWORD m_dwAttackerKey; SLOTCODE m_SkillCode; BYTE m_byNumberOfTargets; EFFECT_BOMB_INFO m_DamageInfo[MAX_TARGET_NUM]; void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_DamageInfo); return static_cast(kMinSize + sizeof(m_DamageInfo[0]) * m_byNumberOfTargets); } }; WAR_MSG_DECL(SKILL_SELF_DESTRUCTION_BRD) { DWORD m_dwAttackerKey; SLOTCODE m_SkillCode; BYTE m_byNumberOfTargets; DAMAGE_INFO m_DamageInfo[MAX_TARGET_NUM]; void Clear() { ZeroMemory(this, sizeof(*this)); } uint16_t GetSize() const { const size_t kMinSize = sizeof(*this) - sizeof(m_DamageInfo); return static_cast(kMinSize + sizeof(m_DamageInfo[0]) * m_byNumberOfTargets); } }; WAR_MSG_DECL(SKILL_TRANSPARENT_BRD) { DWORD m_dwObjectKey; void Clear() { ZeroMemory(this, sizeof(*this)); } }; WAR_MSG_DECL(SKILL_SUCTION_BRD) { DWORD m_dwAttackerKey; // Èí¼ö¸¦ ¹ß»ý½ÃŲ °ø°ÝÀÚ Å° SLOTCODE m_SkillCode; // Áֱⵥ¹ÌÁö¸¦ ¹ß»ý½ÃŰ´Â ½ºÅ³ÄÚµå DAMAGETYPE m_wTargetDamage; // Èí¼ö µ¥¹ÌÁö DWORD m_dwTargetHP; // Ÿ°ÙÀÇ ³²Àº HP DWORD m_dwTargetMP; // Ÿ°ÙÀÇ ³²Àº MP DWORD m_dwAttackerHP; // °ø°ÝÀÚÀÇ ³²Àº HP DWORD m_dwAttackerMP; // °ø°ÝÀÚÀÇ ³²Àº MP #ifdef _NA_008804_20160502_COMBAT_LOG time_t m_SvrTime; #endif //(_NA_008804_20160502_COMBAT_LOG) void Clear() { ZeroMemory(this, sizeof(*this)); } }; WAR_MSG_DECL(SKILL_VITAL_SUCTION_BRD) { DWORD m_dwAttackerKey; // Èí¼ö¸¦ ¹ß»ý½ÃŲ °ø°ÝÀÚ Å° DWORD m_dwTargetKey; // Ÿ°ÙÀÇ Å°. DWORD m_dwHP; // Ÿ°ÙÀÇ ³²Àº HP void Clear() { ZeroMemory(this, sizeof(*this)); } }; //================================================================================================== #pragma pack(pop) }; //end of namespace 'nsPacket' //==================================================================================================