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,121 @@
#ifndef _CTHREAT_H_
#define _CTHREAT_H_
#pragma once
#pragma warning(disable:4800)
#include <list>
class CAggresiveCreature;
class CParty;
class CThreat
{
public:
enum Const
{
MAX_THREAT_TARGET = 10, // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>ִ<EFBFBD> <20><>ü <20><>
MAX_THREAT_REWARD = 3, // <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>޴<EFBFBD> <20>ִ<EFBFBD> <20>׷<EFBFBD> <20><>
FAME_CONSENT_GAP = 5, // <20><><EFBFBD><EFBFBD> <20>й<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
EXP_CONSENT_GAP = 14, // <20><><EFBFBD><EFBFBD>ġ <20>й<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>
EXP_BALANCE_HANDLE = 14, // <20><>Ƽ <20><><EFBFBD><EFBFBD>ġ <20>й<EFBFBD><D0B9><EFBFBD> <20><EFBFBD><EBB7B1> <20>ڵ<EFBFBD>
MOVING_ATTACK_TAUNT_RATE = 3, // <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> Ÿ<>ٿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>ġ
ATTACK_TAUNT_RATE = 6 // <20>Ϲ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ÿ<EFBFBD><C5B8><EFBFBD> Ÿ<>ٿ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>ġ
};
enum AffectThreatType
{
TAUNT = 1,
DETAUNT = 2
};
struct ThreatInfo
{
CAggresiveCreature* m_pCreature;
long m_lThreatAmount;
ThreatInfo() : m_pCreature(NULL), m_lThreatAmount(0) { }
ThreatInfo(CAggresiveCreature* pCreature, long lThreatAmount)
: m_pCreature(pCreature), m_lThreatAmount(lThreatAmount) { }
};
struct AwardInfo
{
CAggresiveCreature* m_pCreature;
CParty* m_pParty;
long m_lAward;
AwardInfo() : m_pCreature(NULL), m_pParty(NULL), m_lAward(0) { }
AwardInfo(CAggresiveCreature* pCreature, CParty* pParty, long lAward)
: m_pCreature(pCreature), m_pParty(pParty), m_lAward(lAward) { }
};
struct SaveEnemyInfo
{
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>¡ <20><><EFBFBD><EFBFBD> <20><>ġ (<28>ֱٿ<D6B1> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>͸<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>صд<D8B5>.)
enum
{
MAX_SAVING_ENEMY = 5, // <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ִ<EFBFBD> <20><>ü <20><>
MAX_SAVING_TICKCOUNT = 300000, // <20><> <20><>ü<EFBFBD><C3BC> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (5<><35>)
MAX_SAVING_TICKCOUNT_FOR_US = 900000 // <20>̱<EFBFBD> <20><><EFBFBD>ʸ<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>ü<EFBFBD><C3BC> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD> (15<31><35>)
};
unsigned long m_dwCID;
unsigned long m_dwTickCount;
SaveEnemyInfo() : m_dwCID(0), m_dwTickCount(0) { }
};
CThreat(void);
~CThreat(void);
void ClearAll(void);
void ClearThreatList(void);
void ClearThreatenedList(void);
void SetOwner(CAggresiveCreature* pCreature) { m_pOwner = pCreature; }
void AddToThreatList(CAggresiveCreature* pAttackCreature, long lThreatAmount);
void AddToThreatenedList(CAggresiveCreature* pDefendCreature);
void HealThreat(CAggresiveCreature* pHealCreature, long lThreatAmount);
void AffectThreat(CAggresiveCreature* pTauntCreature, long lDamage, AffectThreatType eType);
bool DeleteThreat(CAggresiveCreature* pAttackCreature);
bool DeleteThreatened(CAggresiveCreature* pDefendCreature);
CAggresiveCreature* GetTarget(void);
CAggresiveCreature* GetMaxThreatCreature(void) { return m_ThreatList.empty() ? NULL : m_ThreatList.back().m_pCreature; }
long GetMaxThreatAmount(void) { return m_ThreatList.empty() ? 0 : m_ThreatList.back().m_lThreatAmount; }
inline float GetAggravation(CAggresiveCreature *pCreature);
unsigned char GetAward(unsigned long* aryItemID, Item::CItem** aryItem, unsigned long* dwOwnerID);
void DivisionExp(void); // <20><><EFBFBD><EFBFBD>ġ <20>й<EFBFBD>
bool SaveEnemy(unsigned long dwCID); // <20>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20>о<EFBFBD><D0BE>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
SaveEnemyInfo* GetSaveEnemyInfo(void) { return m_LatestEnemy; }
protected:
typedef std::list<ThreatInfo> ThreatList;
typedef std::list<CAggresiveCreature*> ThreatenedList;
ThreatList m_ThreatList; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ
ThreatenedList m_ThreatenedList; // Ÿ ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD> <20><>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
CAggresiveCreature* m_pOwner; // <20><> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD> ũ<><C5A9>ó
unsigned char m_cMaxLevel; // <20><><EFBFBD><EFBFBD>Ʈ <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
Creature::CreatureType m_eMaxLevelCreatureType; // <20>ְ<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ÿ<><C5B8>
SaveEnemyInfo m_LatestEnemy[SaveEnemyInfo::MAX_SAVING_ENEMY]; // <20>ֱٿ<D6B1> <20>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ũ<><C5A9><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (PvP<76><50> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
};
#endif