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,536 @@
#ifndef _CREATURE_STRUCTURE_H_
#define _CREATURE_STRUCTURE_H_
#include <winsock2.h>
#include <windows.h>
#include <cmath>
#include <DB/DBDefine.h>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
struct CreatureStatus;
struct CharacterStatus;
struct SKILL;
namespace Item
{
class CItem;
class CEquipment;
namespace EquipType
{
enum DoubleSwordType;
}
}
namespace BattleInclination
{
enum Const
{
IS_PEACEMODE = ( 1 << 0 ), // <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
IS_SAFETY_ZONE = ( 1 << 1 ), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƽ <20><> <20><><EFBFBD>ο<EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HAS_CAMP = ( 1 << 2 ), // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
HAS_DEVELOPING_CAMP = ( 1 << 3 ), // <20>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
IS_CASTLE_OBJECT = ( 1 << 4 ), // <20><><EFBFBD><EFBFBD> Object<63≯鼭 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD>
IS_CASTLE_NPC = ( 1 << 5 ), // <20><><EFBFBD><EFBFBD> Object<63≯鼭 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> NPC <20><> <20>޹<EFBFBD> NPC
IS_GOD_MODE = ( 1 << 6 ), // G<><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
IS_TEAM_BATTLE = ( 1 << 7 ), // <20><><EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
};
enum VSType
{
VS_CHARACTER = ( 1 << 0 ), // PvP
VS_PARTY = ( 1 << 1 ), // <20><>Ƽ<EFBFBD><C6BC> <20><>Ʋ
VS_GUILD = ( 1 << 2 ), // <20><><EFBFBD><20><>Ʋ
};
// <20>Ǿƽĺ<C6BD><C4BA><EFBFBD> <20><>ü<EFBFBD><C3BC> <20>Ǵ<EFBFBD> ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>ϰų<CFB0> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>,
// <20><><EFBFBD>ε<EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD> <20><>, ä<>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>κе<CEBA> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD>.
struct CharData
{
bool IsPeaceMode(void) const { return 0 != (m_cFlags & IS_PEACEMODE); } // <20><>ȭ<EFBFBD><C8AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool IsSafetyZone(void) const { return 0 != (m_cFlags & IS_SAFETY_ZONE); } // <20><><EFBFBD><EFBFBD> Safety<74><79> <20><><EFBFBD>ο<EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD>
bool HasCamp(void) const { return 0 != (m_cFlags & HAS_CAMP); } // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD>...
bool HasDevelopingCamp(void) const { return 0 != (m_cFlags & HAS_DEVELOPING_CAMP); } // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
bool IsCastleObject(void) const { return 0 != (m_cFlags & IS_CASTLE_OBJECT); } // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
bool IsCastleNPC(void) const { return 0 != (m_cFlags & IS_CASTLE_NPC); } // <20><><EFBFBD><EFBFBD> NPC <20><> <20><><EFBFBD><EFBFBD>
bool IsGODMode(void) const { return 0 != (m_cFlags & IS_GOD_MODE); } // G<><47><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bool IsTeamBattle(void) const { return 0 != (m_cFlags & IS_TEAM_BATTLE); } // <20><><EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
void SetPeaceMode(bool bPeaceMode) { m_cFlags |= bPeaceMode ? IS_PEACEMODE : 0; }
void SetSafetyZone(bool bInSafetyZone) { m_cFlags |= bInSafetyZone ? IS_SAFETY_ZONE : 0; }
void SetHasCamp(bool bHasCamp) { m_cFlags |= bHasCamp ? HAS_CAMP : 0; }
void SetHasDevelopingCamp(bool bHasDevelopingCamp) { m_cFlags |= bHasDevelopingCamp ? HAS_DEVELOPING_CAMP : 0; }
void SetCastleObject(bool bCastleObject) { m_cFlags |= bCastleObject ? IS_CASTLE_OBJECT : 0; }
void SetCastleNPC(bool bCastleNPC) { m_cFlags |= bCastleNPC ? IS_CASTLE_NPC : 0; }
void SetGODMode(bool bGODMode) { m_cFlags |= bGODMode ? IS_GOD_MODE : 0; }
void SetTeamBattle(bool bTeamBattle) { m_cFlags |= bTeamBattle ? IS_TEAM_BATTLE : 0; }
unsigned long m_dwCID; // ij<><C4B3><EFBFBD><EFBFBD> CID
unsigned long m_dwGID; // ij<><C4B3><EFBFBD><EFBFBD> GID
unsigned long m_dwCastleID; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ID<49><44> <20>ִ´<D6B4>.
unsigned char m_cSiegeState; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>¸<EFBFBD> <20>ִ´<D6B4>.
unsigned char m_cNation; // ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned char m_cAdminLevel; // <20><EFBFBD><EEBFB5> <20><><EFBFBD><EFBFBD>
unsigned char m_cFlags; // <20><>Ÿ <20><><EFBFBD><EFBFBD>
unsigned long m_dwPID; // ij<><C4B3><EFBFBD>Ϳ<EFBFBD> <20><>Ƽ <20><><EFBFBD><EFBFBD>
unsigned char m_cTacticsFlag; // ij<><C4B3><EFBFBD>Ϳ<EFBFBD> <20><20><><EFBFBD><EFBFBD>
unsigned char m_cRealmWarFlag;
unsigned char m_cGuildWarFlag;
unsigned char m_cCreatureType; // ũ<><C5A9><EFBFBD><EFBFBD> Ÿ<><C5B8>
unsigned short m_wObjectType; // <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned short m_wKind; // <20><>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned char m_cRide; // <20><><EFBFBD>⿡ ž<><C5BE> <20><><EFBFBD><EFBFBD>.
};
// <20>Ǿƽĺ<C6BD><C4BA><EFBFBD> <20><><EFBFBD>̴<EFBFBD> ij<><C4B3><EFBFBD>Ͱ<EFBFBD><CDB0><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ϴ<EFBFBD><CFB4><EFBFBD> ä<><C3A4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
struct RelationData
{
unsigned char m_cVSFlag; // PvP, <20><><EFBFBD><EFBFBD>Ʋ <20><><EFBFBD><EFBFBD>
bool m_bHostileGuild; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD>?
};
};
namespace Creature
{
enum Const
{
PC_MAX_LEVEL = 100, // ij<><C4B3><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
MONSTER_MAX_LEVEL = 150, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
// edith 2008.02.27 <20><><EFBFBD><EFBFBD><E5B0A1> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
LEVEL_ABLE_WAR = 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ּ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
};
enum IdentifyCIDBit
{
MONSTER_KIND_BIT = 0x0000FFFF,
MONSTER_BIT = 0x80000000,
NPC_BIT = 0x40000000,
SIEGE_OBJECT_BIT = 0x10000000,
SUMMON_MONSTER_BIT = 0xA0000000, // MONSTER_BIT (0x80000000) + 0x20000000
NPC_LINK_BIT = 0x50000000, // <20><>ȯ <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE> <20><>Ʈ<EFBFBD><C6AE> NPC<50><43> <20><>ũ<EFBFBD>Ǿ<EFBFBD> <20>޴޻<DEB4><DEBB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѵ<EFBFBD>.
// NPC_BIT (0x40000000) + 0x10000000
// <20><><EFBFBD><EFBFBD> KID (MonsterStructure.h <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ǵǾ<C7B5> <20><><EFBFBD><EFBFBD>)
MIN_STATUE_KID = 4001,
MAX_STATUE_KID = 4070
};
enum CreatureType
{
CT_PC = 0,
CT_NPC = 1,
CT_MONSTER = 2,
CT_SUMMON = 3,
CT_STRUCT = 4,
CT_SIEGE_OBJECT = 5,
CT_NONE_TYPE = 99
};
enum Nation
{
STATELESS = 0, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, NPC)
KARTERANT = 1, // ī<><C4AB><EFBFBD>׶<EFBFBD>Ʈ
MERKADIA = 2, // <20>޸<EFBFBD>ī<EFBFBD><C4AB><EFBFBD><EFBFBD>
ALMIGHTY_PIRATE = 3, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MAX_NATION = 4
};
enum WarFlag
{
WAR_OFF = 0, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
WAR_ON = 1, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
WAR_INSTANCE = 2 // <20>ν<EFBFBD><CEBD>Ͻ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
};
enum StatusType
{
RIGHT_PASSIVE_TYPE = 0, // <20>нú<D0BD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><EFBFBD><E2BABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CreatureStatus<75><73> <20>ٷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>.)
LEFT_PASSIVE_TYPE = 1, // <20>нú<D0BD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޼<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>̵<EFBFBD><CCB5><EFBFBD>)
RIGHT_NON_PASSIVE_TYPE = 2, // <20>нú<D0BD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>ų)
LEFT_NON_PASSIVE_TYPE = 3, // <20>нú<D0BD> <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>޼<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>޼<EFBFBD> <20><><EFBFBD><EFBFBD>(<28><>ų<EFBFBD><C5B3>)<29><> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><>ų)
MAX_STATUS_TYPE = 4
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Creature <20>Ǻ<EFBFBD> <20>Լ<EFBFBD><D4BC><EFBFBD>
// Ŭ<><C5AC><EFBFBD>̾<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CRYLGameData::GetClientIdentity() <20>Լ<EFBFBD> <20><><EFBFBD><EFBFBD>!!
static bool IsSummonMonster(unsigned long dwCID)
{
return (Creature::SUMMON_MONSTER_BIT == (dwCID & Creature::SUMMON_MONSTER_BIT));
}
static bool IsStruct(unsigned long dwCID)
{
unsigned short wKID = static_cast<unsigned short>(dwCID & Creature::MONSTER_KIND_BIT);
return (wKID >= MIN_STATUE_KID && wKID <= MAX_STATUE_KID);
}
static bool IsLinkedNPC(unsigned long dwCID)
{
return (Creature::NPC_LINK_BIT == (dwCID & Creature::NPC_LINK_BIT));
}
static CreatureType GetCreatureType(unsigned long dwCID)
{
if (dwCID & Creature::MONSTER_BIT)
{
if (IsSummonMonster(dwCID)) return Creature::CT_SUMMON;
else if (IsStruct(dwCID)) return Creature::CT_STRUCT;
return Creature::CT_MONSTER;
}
else if (dwCID & Creature::NPC_BIT) return Creature::CT_NPC;
else if (dwCID & Creature::SIEGE_OBJECT_BIT) return Creature::CT_SIEGE_OBJECT;
return Creature::CT_PC;
}
inline static const char* GetNationName(unsigned char cNation)
{
switch(cNation)
{
case KARTERANT: return "KARTERANT";
case MERKADIA: return "MERKADIA";
case ALMIGHTY_PIRATE: return "ALMIGHTY_PIRATE";
}
return "STATELESS";
}
inline static const char* GetShortNationName(unsigned char cNation)
{
switch(cNation)
{
case KARTERANT: return "KR";
case MERKADIA: return "ME";
case ALMIGHTY_PIRATE: return "AP";
}
return "ST";
}
};
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ʽ<EFBFBD> <20><><EFBFBD><EFBFBD>
namespace EliteBonus
{
enum Const
{
MAX_BONUS_LEVEL = 10,
MAX_BONUS_DROP_ITEM = 3
};
// <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD> <20><><EFBFBD>ŵǾ<C5B5><C7BE><EFBFBD><EFBFBD>ϴ<EFBFBD>. (2004-09-17 by <20>ε<EFBFBD>)
static short usBonusExp[MAX_BONUS_LEVEL] = {
100 + 0,
100 + 0,
100 + 0,
100 + 0,
100 + 0,
100 + 0,
100 + 0,
100 + 0,
100 + 0,
100 + 0
};
static unsigned char usBonusItemDropRate[MAX_BONUS_LEVEL][MAX_BONUS_DROP_ITEM] = {
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 },
{ 0, 0, 0 }
};
struct EliteBonusData
{
char m_cNation;
unsigned char m_cLevel;
EliteBonusData();
EliteBonusData(char cNation, unsigned char cLevel);
};
}
// <20><> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
struct Position
{
float m_fPointX; // Point X <20><>ǥ
float m_fPointY; // Point Y <20><>ǥ
float m_fPointZ; // Point Z <20><>ǥ
inline Position();
inline Position(const POS& Pos);
inline Position(const Position& Pos);
inline Position(float fPointX, float fPointY, float fPointZ);
inline POS PositionToPOS() const;
inline unsigned long GetDistance(const Position& rhs) const
{
return static_cast<unsigned long>(sqrt(
(m_fPointX - rhs.m_fPointX) * (m_fPointX - rhs.m_fPointX) +
(m_fPointY - rhs.m_fPointY) * (m_fPointY - rhs.m_fPointY) +
(m_fPointZ - rhs.m_fPointZ) * (m_fPointZ - rhs.m_fPointZ)));
}
inline unsigned long GetSquaredDistance(const Position& rhs) const
{
return static_cast<unsigned long>(
(m_fPointX - rhs.m_fPointX) * (m_fPointX - rhs.m_fPointX) +
(m_fPointY - rhs.m_fPointY) * (m_fPointY - rhs.m_fPointY) +
(m_fPointZ - rhs.m_fPointZ) * (m_fPointZ - rhs.m_fPointZ));
}
inline bool operator == (const Position& rhs) const
{
if ( m_fPointX == rhs.m_fPointX && m_fPointY == rhs.m_fPointY && m_fPointZ == rhs.m_fPointZ )
{
return true;
}
return false;
}
inline bool operator != (const Position& rhs) const
{
if ( m_fPointX != rhs.m_fPointX || m_fPointY != rhs.m_fPointY || m_fPointZ != rhs.m_fPointZ )
{
return true;
}
return false;
}
inline void operator () (const Position& rhs)
{
m_fPointX = rhs.m_fPointX;
m_fPointY = rhs.m_fPointY;
m_fPointZ = rhs.m_fPointZ;
}
};
inline Position::Position()
: m_fPointX(0.0f), m_fPointY(0.0f), m_fPointZ(0.0f) { }
inline Position::Position(const POS& Pos)
: m_fPointX(Pos.fPointX), m_fPointY(Pos.fPointY), m_fPointZ(Pos.fPointZ) { }
inline Position::Position(const Position& Pos)
: m_fPointX(Pos.m_fPointX), m_fPointY(Pos.m_fPointY), m_fPointZ(Pos.m_fPointZ) { }
inline Position::Position(float fPointX, float fPointY, float fPointZ)
: m_fPointX(fPointX), m_fPointY(fPointY), m_fPointZ(fPointZ) { }
inline POS Position::PositionToPOS() const
{
POS stPos;
stPos.fPointX = m_fPointX;
stPos.fPointY = m_fPointY;
stPos.fPointZ = m_fPointZ;
return stPos;
}
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
struct MotionInfo
{
float m_fDirection; // <20>ٶ󺸴<D9B6> <20><><EFBFBD><EFBFBD>
float m_fVelocity; // <20>ӵ<EFBFBD>
unsigned short m_wAction; // <20><><EFBFBD>ϴ<EFBFBD> <20>ൿ
unsigned long m_dwFrame; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ( <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, NPC<50><43> <20><><EFBFBD><EFBFBD> )
MotionInfo();
};
// <20><>æƮ <20><><EFBFBD><EFBFBD>
struct EnchantInfo
{
enum
{
ULONG_BIT = 32, // unsigned long (32<33><32><EFBFBD><EFBFBD>Ʈ)
MAX_ARRAY = 4 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UCHAR_BIT * MAX_ARRAY
};
unsigned long m_dwStatusFlag[MAX_ARRAY]; // æƮ/<2F><>æƮ <20>÷<EFBFBD><C3B7><EFBFBD>
EnchantInfo();
EnchantInfo( const EnchantInfo& Info ) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
for( int i = 0 ; i < MAX_ARRAY ; ++i )
{
m_dwStatusFlag[ i ] = Info.m_dwStatusFlag[ i ];
}
}
void SetFlag(unsigned char cSpellKind);
void ResetFlag(unsigned char cSpellKind);
void ClearFlag(void);
bool GetFlag(unsigned char cSpellKind) const;
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD> ȿ<><C8BF> <20><><EFBFBD><EFBFBD>
struct CalculateDamageInfo
{
bool m_bForceDRC; // '<27><>'<27≯<EFBFBD> <20>⺻ DRC<52><43> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20>߰<EFBFBD> DRC<52><43> <20><>ü
float m_fDRC; // <20>߰<EFBFBD> DRC
short m_nOffenceRevision; // <20>߰<EFBFBD> <20><><EFBFBD>ݺ<EFBFBD><DDBA><EFBFBD>
short m_nMinDamage; // <20>߰<EFBFBD> <20>ּҵ<D6BC><D2B5><EFBFBD><EFBFBD><EFBFBD>
short m_nMaxDamage; // <20>߰<EFBFBD> <20>ִ뵥<D6B4><EBB5A5><EFBFBD><EFBFBD>
CalculateDamageInfo()
: m_bForceDRC(false), m_fDRC(0.0f), m_nOffenceRevision(0), m_nMinDamage(0), m_nMaxDamage(0)
{ }
CalculateDamageInfo(bool bForceDRC, float fDRC, short nOffenceRevision, short nMinDamage, short nMaxDamage)
: m_bForceDRC(bForceDRC), m_fDRC(fDRC),
m_nOffenceRevision(nOffenceRevision), m_nMinDamage(nMinDamage), m_nMaxDamage(nMaxDamage)
{ }
};
typedef CalculateDamageInfo* LPCalculateDamageInfo;
// ij<><C4B3><EFBFBD>Ϳ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD>
struct CharacterStatus
{
short m_nSTR; // ij<><C4B3><EFBFBD><EFBFBD> STR
short m_nDEX; // ij<><C4B3><EFBFBD><EFBFBD> DEX
short m_nCON; // ij<><C4B3><EFBFBD><EFBFBD> CON
short m_nINT; // ij<><C4B3><EFBFBD><EFBFBD> INT
short m_nWIS; // ij<><C4B3><EFBFBD><EFBFBD> WIS
CharacterStatus();
CharacterStatus(CHAR_INFOST& characterDBData);
void Init(CHAR_INFOST& characterDBData);
};
typedef CharacterStatus* LPCharacterStatus;
struct FightStatus
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>ߺ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
enum CalculateState
{
CS_NONE = 0, // <20>ʱ<EFBFBD>ȭ
CS_BASE_INFO = 1, // <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20><><EFBFBD><EFBFBD>
CS_EQUIP_INFO = 2, // <20><><EFBFBD><EFBFBD> ȿ<><C8BF><EFBFBD><EFBFBD> <20>߰<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
CS_ENCHANT_INFO = 3 // <20><>æƮ ȿ<><C8BF><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
};
enum Const
{
MAX_INCHANT_HP = 15000,
MAX_INCHANT_MP = 15000
};
long m_lMinDamage; // <20>ּҵ<D6BC><D2B5><EFBFBD><EFBFBD><EFBFBD>
long m_lMaxDamage; // <20>ִ뵥<D6B4><EBB5A5><EFBFBD><EFBFBD>
short m_wArmor; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
short m_wHitRate; // <20><><EFBFBD><EFBFBD>
short m_wEvade; // ȸ<><C8B8>
unsigned short m_nMaxHP; // HP <20>ִ밪
short m_wHPRegen; // HP ȸ<><C8B8>
unsigned short m_nMaxMP; // MP <20>ִ밪
short m_wMPRegen; // MP ȸ<><C8B8>
short m_wCritical; // ũ<><C5A9>Ƽ<EFBFBD><C6BC>
short m_wBlock; // <20><><EFBFBD><EFBFBD>
short m_wSpeed; // <20>ӵ<EFBFBD>
short m_wCoolDownRevision; // <20><><EFBFBD>ٿ<D9BF><EEBAB8>
short m_wSkillPoint; // <20><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD>Ʈ
short m_wMagicPower; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
short m_wMagicResist; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_wLuck; // <20><><EFBFBD>
//--// start..
short m_wFrost; // <20>ñ<EFBFBD>/<2F><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD>
short m_wFire; // <20><>/<2F><> <20>Ӽ<EFBFBD>
short m_wElectro; // <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD>
short m_wDarkness; // <20><><EFBFBD><EFBFBD>/<2F><> <20>Ӽ<EFBFBD>
//--// end..
float m_fDefenceRate; // <20><><EFBFBD><EFBFBD>%
float m_fCriticalMagnification; // ũ<><C5A9>Ƽ<EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
float m_fCriticalRate; // ũ<><C5A9>Ƽ<EFBFBD><C6BC>%
float m_fBlockRate; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%
float m_fSpeedRate; // <20>ӵ<EFBFBD>%
float m_fCoolDownRevisionRate; // <20><><EFBFBD>ٿ<D9BF><EEBAB8>%
float m_fMagicResistRate; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%
float m_fLuckResistRate; // <20><>Ű<EFBFBD><C5B0><EFBFBD><EFBFBD>%
float m_fLevelExplosion; // <20><><EFBFBD><EFBFBD> <20>ͽ<EFBFBD><CDBD>÷<EFBFBD><C3B7><EFBFBD>
unsigned char m_cCriticalType; // ũ<><C5A9>Ƽ<EFBFBD><C6BC> Ÿ<><C5B8>
unsigned char m_cComboCount; // <20><><EFBFBD><EFBFBD> <20>޺<EFBFBD> Ƚ<><C8BD>
unsigned char m_cCalculateState; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
FightStatus();
bool CalculateBaseInfo(const CharacterStatus& characterStatus, const unsigned short wLevel, const unsigned char cClass);
bool CalculateEquipInfo(const Item::CEquipment** ppEquip, const bool bFirstWeaponSlot, const bool bRightHand, const bool bRideFlag,
const SKILL& skill, const unsigned char cLevel, const unsigned short wRiderAbility, const unsigned short wLuckAbility, const unsigned short wLevelAbility,
const CharacterStatus& characterStatus, const unsigned char cClass, FightStatus& resultStatus) const;
bool CalculateEnchantInfo(const unsigned short* aryEnchantLevel, FightStatus& resultStatus) const;
void CalculateSubStatus(void);
static bool CheckEquipable(const Item::CEquipment* lpEquip, const CharacterStatus& characterStatus,
const unsigned char cClass, const unsigned char cLevel, const unsigned short wLevelAbility); //--//
};
#pragma pack(8)
//------------------------------------------------------------------------------------
// TODO : memory alignment <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
// : 4byte<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD> alignment <20><> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><> <20><>.
// : <20>޸<EFBFBD><DEB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> ũ<><20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> short<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>.
// <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ɷ<EFBFBD>ġ<EFBFBD><C4A1> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD>ӻ󿡼<D3BB> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD> <20><>)
struct CreatureStatus
{
__int64 m_nExp; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int m_nLevel; // <20><><EFBFBD><EFBFBD>
unsigned short m_nNowHP; // <20><><EFBFBD><EFBFBD> HP
unsigned short m_nNowMP; // <20><><EFBFBD><EFBFBD> MP (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ밪<D6B4><EBB0AA><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ)
FightStatus m_StatusInfo; // <20><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̰<EFBFBD><CCB0><EFBFBD> <20><><EFBFBD><EFBFBD>
CreatureStatus();
CreatureStatus(CHAR_INFOST& characterDBData);
void Init(CHAR_INFOST& characterDBData);
};
typedef CreatureStatus* LPCreatureStatus;
#pragma pack()
#endif