Restructure repository to include all source folders

Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,268 @@
#ifndef _ENEMYCHECK_H_
#define _ENEMYCHECK_H_
#include <Pattern/Singleton.h>
#include "CreatureStructure.h"
// <20><><EFBFBD>Ʊ<EFBFBD> <20>ĺ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>, Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
namespace EnemyCheck
{
enum EnemyType
{
// <20><><EFBFBD><EFBFBD> Ÿ<><C5B8>
EC_ENEMY = 0, // <20><><EFBFBD><EFBFBD>
EC_NEUTRAL = 1, // <20>߸<EFBFBD>
EC_FRIEND = 2, // <20>Ʊ<EFBFBD>
EC_ERROR = 3 // <20><><EFBFBD><EFBFBD>
};
enum EnemyCheckType
{
// üũ Ÿ<><C5B8>
EC_CHECK_ENEMY = 0, // <20><><EFBFBD>ĺ<EFBFBD>
EC_CHECK_NEUTRAL_EXCETION = 1, // <20>߸<EFBFBD> <20><><EFBFBD><EFBFBD> ó<><C3B3>
EC_CHECK_FRIEND = 2, // <20>Ʊ<EFBFBD> <20>ĺ<EFBFBD>
EC_CHECK_FRIEND_2ND = 3, // 2<><32> <20>Ʊ<EFBFBD> <20>ĺ<EFBFBD>
MAX_CHECK_TYPE = 4 // <20>ĺ<EFBFBD><C4BA><EFBFBD> üũ <20><>ƾ <20><>
};
enum EnemyCheckRule
{
RULE_HUNTING = 0, // <20><><EFBFBD>÷<EFBFBD>
RULE_GUILD_WAR = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RULE_REALM_WAR = 2, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RULE_STATUE_WAR = 3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RULE_SIEGE_WAR = 4, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MAX_RULE_NUM = 5
};
// -------------------------------------------------------------------------
// Siege <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>
bool IsCamp(unsigned short wObjectType); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool IsCastleArms(unsigned short wObjectType); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool IsSiegeArms(unsigned short wObjectType); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool IsStruct(unsigned short wKind); // <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
bool IsGate(unsigned short wObjectType); // <20><><EFBFBD><EFBFBD>
bool IsEmblem(unsigned short wObjectType); // <20><> <20><>¡<EFBFBD><C2A1>
bool IsCastleNPC(unsigned short wObjectType); // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NPC
// -------------------------------------------------------------------------
// <20>籹 ü<><C3BC> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD>
typedef bool (*FnProcess)(BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo,
BattleInclination::RelationData& relationInfo, unsigned char& cResult);
typedef bool (*FnCheck)(BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo,
EnemyCheck::EnemyCheckRule eRule);
class CCheckTable : public CSingleton<CCheckTable>
{
public:
bool Initialize(void);
void SetEnemyCheckRule(EnemyCheckRule eRule) { m_eRule = eRule; }
EnemyCheckRule GetEnemyCheckRule(void) { return m_eRule; }
unsigned long IsEnemyFromStruct(BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo,
BattleInclination::RelationData& relationInfo, unsigned char& cResult);
private:
CCheckTable();
~CCheckTable();
unsigned long GetEnemyType(unsigned char cEnemyCheckType) const; // üũ Ÿ<>Կ<EFBFBD> <20>ش<EFBFBD><D8B4>ϴ<EFBFBD> <20><><EFBFBD>ĺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool m_bInit; // <20>ʱ<EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
EnemyCheckRule m_eRule; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ǿƽĺ<C6BD> <20><>
FnProcess m_fnIsEnemy[MAX_CHECK_TYPE][MAX_RULE_NUM]; // <20><> <20><>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20>Ǿƽĺ<C6BD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD>
FnCheck m_fnCheckSkip[MAX_CHECK_TYPE]; // <20><> <20><>Ȳ<EFBFBD><C8B2> <20><><EFBFBD><EFBFBD> <20>Ǿƽĺ<C6BD><C4BA><EFBFBD> <20><>ŵ<EFBFBD>ؾ<EFBFBD> <20>ϴ<EFBFBD><CFB4><EFBFBD> üũ<C3BC>ϴ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD>
static CCheckTable ms_this;
};
class CFunctions
{
private:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǹ̸<C7B9> <20>дٱ⺸<D9B1><E2BAB8>, <20><><EFBFBD>ڰ<EFBFBD> <20><>ġ<EFBFBD><C4A1> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> enum<75><6D><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
enum ResultType
{
// EC_CHECK_ENEMY <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EN_COMMON_PVP = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PvP<76><50> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> (<28><><EFBFBD><EFBFBD>)
EN_COMMON_STATELESS_MONSTER, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><>3<EFBFBD><33>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EN_HUNTING_VSPARTY_VSGUILD, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׷<EFBFBD> <20><><EFBFBD> (<28><>Ƽ/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
EN_GUILDWAR_HOSTILITY_GUILD, // <20>ڽŰ<DABD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>϶<EFBFBD>
EN_REALMWAR_ENEMY_PC_MONSTER_NPC, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, NPC
EN_STATUEWAR_ENEMY_PC_MONSTER_STRUCT, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><>Ʈ<EFBFBD><C6AE>ó
EN_STATUEWAR_STATELESS_STRUCT, // <20><> 3<><33><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE>ó
EN_SIEGE_ENEMY_PC_MONSTER, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EN_SIEGE_ENEMY_GATE_EMBLEM_CASTLE_ARMS, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><>¡<EFBFBD><C2A1>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
EN_SIEGE_ENEMY_SIEGE_ARMS, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
// EC_CHECK_NEUTRAL_EXCETION <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NE_COMMON_GMODE = 21, // <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴϸ<C6B4> G<><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>߸<EFBFBD> ó<><C3B3>
NE_COMMON_ENEMY_NPC, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NPC
NE_HUNTING_NON_BATTLER, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
NE_HUNTING_OTHER_BATTLER, // <20>ڽŰ<DABD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
NE_HUNTING_BATTLER, // <20><><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
NE_GUILDWAR_IN_SAFETYZONE, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
NE_GUILDWAR_NON_BATTLER, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
NE_GUILDWAR_OTHER_BATTLER, // <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><20>ƴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NE_GUILDWAR_BATTLER, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ο<EFBFBD>
NE_GUILDWAR_MYGUILD, // <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NE_REALMWAR_ENEMY_STRUCT, // <20>ڽŰ<DABD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
NE_REALMWAR_ENEMY_GATE_EMBLEM_SIEGEOBJECT, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>, <20><><EFBFBD><EFBFBD> <20>빮, <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NE_STATUEWAR_ENEMY_GATE_EMBLEM_SIEGEOBJECT, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>, <20><><EFBFBD><EFBFBD> <20>빮, <20><>ȯ<EFBFBD><C8AF> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
NE_SIEGE_ENEMY_STRUCT, // <20>ڽŰ<DABD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD>
// EC_CHECK_FRIEND <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FR_COMMON_MYPARTY = 41, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>Ƽ
FR_COMMON_MYGUILD, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
FR_COMMON_MYSELF, // <20>ڱ<EFBFBD> <20>ڽ<EFBFBD>
FR_GUILDWAR_MYGUILD, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>׷<EFBFBD>
FR_REALMWAR_MYNATION_PC_NPC_MONSTER_STRUCT, // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC, NPC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>
FR_REALMWAR_MYNATION_GATE_EMBLEM_SIEGEOBJECT, // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>, <20><><EFBFBD><EFBFBD> <20>빮, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
FR_STATUEWAR_MYNATION_PC_NPC_MONSTER_STRUCT, // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC, NPC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>
FR_STATUEWAR_MYNATION_GATE_EMBLEM_SIEGEOBJECT, // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>, <20><><EFBFBD><EFBFBD> <20>빮, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
FR_SIEGEWAR_MYNATION_PC_NPC_MONSTER_STRUCT, // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PC, NPC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>
FR_SIEGEWAR_MYNATION_SIEGEOBJECT, // <20>ڱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD><C8AF>, <20><><EFBFBD><EFBFBD> <20>빮, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
// EC_CHECK_FRIEND_2ND <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FR2_COMMON_MYNATION_PC_NPC = 61, // <20>ڱ<EFBFBD> PC, NPC
FR2_COMMON_STATELESS_NPC, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NPC
};
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ<C3BC><C5A9> <20><><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> Ÿ<><C5B8>
enum AttackableCreatureType
{
ACT_PC = 0, // PC
ACT_MONSTER = 1, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ACT_EMBLEM = 2, // <20><> <20><>¡<EFBFBD><C2A1>
ACT_GATE = 3, // <20><><EFBFBD><EFBFBD>
ACT_CAMP = 4, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ACT_GUARD = 5, // <20><><EFBFBD><EFBFBD>
ACT_SHORT_RANGE_CASTLE_ARMS = 6, // <20>ٰŸ<D9B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ACT_LONG_RANGE_CASTLE_ARMS = 7, // <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ACT_SHORT_RANGE_SIEGE_ARMS = 8, // <20>ٰŸ<D9B0> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ACT_LONG_RANGE_SIEGE_ARMS = 9, // <20><><EFBFBD>Ÿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ACT_AIRSHIP = 10, // <20><><EFBFBD>ۼ<EFBFBD>
ACT_NONE = 11, // <20>޹<EFBFBD>, NPC, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NPC
MAX_ATTACKABLE_CREATURE = 12, // <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> <20><> <20>Ϲ<EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
};
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ϰ<EFBFBD>
enum ReturnACT
{
RET_NONE = 0, // <20><><EFBFBD><EFBFBD> <20>Ұ<EFBFBD><D2B0><EFBFBD>
RET_ALLWAYS = 1, // <20>׻<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
RET_DEVELOPING = 2, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD>϶<EFBFBD><CFB6><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
};
const static unsigned char ms_AttackableTable[MAX_ATTACKABLE_CREATURE][MAX_ATTACKABLE_CREATURE]; // <20><> ũ<><C5A9><EFBFBD><EFBFBD> Ÿ<>Կ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD>
friend class CCheckTable;
// <20>Ǿƽĺ<C6BD> <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>
#define DECLARE_ENEMY_CKECK(CheckRule) \
static bool CheckRule(BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo, \
BattleInclination::RelationData& relationInfo, unsigned char& cResult)
#define DEFINE_ENEMY_CKECK(CheckRule) \
bool EnemyCheck::CFunctions::##CheckRule( \
BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo, \
BattleInclination::RelationData& relationInfo, unsigned char& cResult)
#define USE_ENEMY_CKECK(CheckRule) CheckRule(ownerInfo, targetInfo, relationInfo, cResult)
// <20>Ǿƽĺ<C6BD> <20><>ƾ <20><>ŵ üũ <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>
#define DECLARE_SKIP_CKECK(CheckType) \
static bool CheckType(BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo, \
EnemyCheck::EnemyCheckRule eRule)
#define DEFINE_SKIP_CHECK(CheckType) \
bool EnemyCheck::CFunctions::##CheckType( \
BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo, \
EnemyCheck::EnemyCheckRule eRule)
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9>
#define DECLARE_ATTACKABLE_CHECK(FuncName) \
static bool FuncName(BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo)
#define DEFINE_ATTACKABLE_CHECK(FuncName) \
bool EnemyCheck::CFunctions::##FuncName( \
BattleInclination::CharData& ownerInfo, BattleInclination::CharData& targetInfo)
// <20><><EFBFBD><EFBFBD>
DECLARE_ENEMY_CKECK(IsEnemyCommon);
DECLARE_ENEMY_CKECK(IsNeutralExceptionCommon);
DECLARE_ENEMY_CKECK(IsFriendCommon);
DECLARE_ENEMY_CKECK(IsFriend2ndCommon);
// <20><><EFBFBD>÷<EFBFBD>
DECLARE_ENEMY_CKECK(IsEnemyForHunting);
DECLARE_ENEMY_CKECK(IsNeutralExceptionForHunting);
DECLARE_ENEMY_CKECK(IsFriendForHunting);
DECLARE_ENEMY_CKECK(IsFriend2ndForHunting);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DECLARE_ENEMY_CKECK(IsEnemyForGuildWar);
DECLARE_ENEMY_CKECK(IsNeutralExceptionForGuildWar);
DECLARE_ENEMY_CKECK(IsFriendForGuildWar);
DECLARE_ENEMY_CKECK(IsFriend2ndForGuildWar);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DECLARE_ENEMY_CKECK(IsEnemyForRealmWar);
DECLARE_ENEMY_CKECK(IsNeutralExceptionForRealmWar);
DECLARE_ENEMY_CKECK(IsFriendForRealmWar);
DECLARE_ENEMY_CKECK(IsFriend2ndForRealmWar);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DECLARE_ENEMY_CKECK(IsEnemyForStatueWar);
DECLARE_ENEMY_CKECK(IsNeutralExceptionForStatueWar);
DECLARE_ENEMY_CKECK(IsFriendForStatueWar);
DECLARE_ENEMY_CKECK(IsFriend2ndForStatueWar);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DECLARE_ENEMY_CKECK(IsEnemyForSiegeWar);
DECLARE_ENEMY_CKECK(IsNeutralExceptionForSiegeWar);
DECLARE_ENEMY_CKECK(IsFriendForSiegeWar);
DECLARE_ENEMY_CKECK(IsFriend2ndForSiegeWar);
// <20>Ǿƽĺ<C6BD> <20><>ŵ üũ
DECLARE_SKIP_CKECK(IsEnemySkip);
DECLARE_SKIP_CKECK(IsNeutralExceptionSkip);
DECLARE_SKIP_CKECK(IsFriendSkip);
DECLARE_SKIP_CKECK(IsFriend2ndSkip);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> üũ <20>Լ<EFBFBD>
DECLARE_ATTACKABLE_CHECK(IsAttackable);
static unsigned char FindAttackableCreatureType(BattleInclination::CharData& charInfo);
};
}
#endif