Files
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

313 lines
11 KiB
C++

#ifndef _SIEGE_CONSTANTS_H_
#define _SIEGE_CONSTANTS_H_
namespace Siege
{
enum SiegeObjectType
{
// 몬스터 Kind ID 를 사용한다.
EMBLEM = 5000, // 성 상징물 ( DESTORYING, CHANGING, DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
GATE = 5324, // 성문 ( DESTORYING, CHANGING, DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
BACKDOOR = 5378, // 뒷문 ( Only COMPLETE 상태만 존재 )
CAMP = 5379, // 길드 요새 (캠프) ( DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
CASTLE_ARMS_NPC = 5433, // 병기 관리 NPC ( Only COMPLETE 상태만 존재 )
GUARD = 5434, // 가드 ( DESTORYING, CHANGING, DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
SHORT_RANGE_CASTLE_ARMS = 5488, // 근거리 수성 병기 ( DESTORYING, CHANGING, DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
LONG_RANGE_CASTLE_ARMS = 5542, // 원거리 수성 병기 ( DESTORYING, CHANGING, DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
SHORT_RANGE_SIEGE_ARMS = 5596, // 근거릭 공성 병기 ( CHANGING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
LONG_RANGE_SIEGE_ARMS = 5650, // 원거리 공성 병기 ( CHANGING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
AIRSHIP = 5704, // 비공정 ( CHANGING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
MINING_CAMP = 5758, // 채굴기 (캠프) ( DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
CAMP_SHOP = 5812, // 상점타입요새 (캠프) ( DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
KARTERANT_WEAPON = 5866, // 카르테란트 월드 웨폰 (캠프) ( DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
MERKADIA_WEAPON = 5920, // 메르카디아 월드 웨폰 (캠프) ( DEVELOPING, CANCELING, RESTORING, DESTROYED 1개만 존재 )
DEFAULT_TYPE = 0 // 디폴트 전달인자용
};
enum State
{
// KID => SiegeObjectType
// + (State * UPGRADE_KIND_NUM)
// + UpgradeStep
// KID (성 상징물) => SiegeObjectType
// + (State * JEWEL_TYPE_NUM * UPGRADE_KIND_NUM)
// + (JewelType * UPGRADE_KIND_NUM)
// + UpgradeStep
COMPLETE = 0, // 성 상징물 소환 완료, 길드 요새 구축 완료, 가드, 경비병, 근거리, 원거리, 비공정 개발 완료
UPGRADING = 1, // 성 상징물, 길드 요새, 성문, 가드, 근거리/원거리 수성병기 업그레이드 중인 상태
REPARING = 2, // 길드 요새, 성문, 근거리/원거리, 비공정 수리 상태
DESTROYING = 3, // 길드 요새, 근거리/원거리, 비공정 파괴해서 스타트 킷으로 돌리는 상태
CHANGING = 4, // 길드 요새 변형중
DEVELOPING = 5, // 성 상징물 소환중, 길드 요새 구축중, 가드, 경비병, 근거리, 원거리, 비공정 개발중
CANCELING = 6, // 길드 요새, 근거리/원거리, 비공정 개발을 취소중인 상태 (스타트킷 아이템으로 돌아간다.)
RESTORING = 7, // 성문 복구 상태
DESTROYED = 8, // 성문 파괴 상태
// SubState
NONE = 0,
MINE = 1, // 아군 성 상징물
ENEMY = 2, // 적군 성 상징물
OPENED = 1, // 성문 열린 상태
CLOSED = 2, // 성문 닫힌 상태
MINING_OFF = 0, // 채굴기 정지 상태
MINING_ON = 1, // 채굴기 가동 상태
MINING_READY = 2, // 채굴기 가동 준비 상태
WEAPON_EMPTY = 0, // 월드웨폰 무기 비장전 상태
WEAPON_CHARGE = 1, // 무기 장전중
WEAPON_READY = 2, // 무기 장전된 상태
WEAPON_FIRE = 3, // 무기 발사중
};
enum JewelType
{
// 보석 순서가 바뀌면 안됨!!
// 아이템 스크립트의 순서대로이다.
NO_JEWEL = 0, // 보석 없음
RUBY = 1, // 루비
EMERALD = 2, // 에메랄드
SAPPHIRE = 3, // 사파이어
DIAMOND = 4, // 다이아몬드
BLACKMOON = 5, // 블랙문
JEWEL_PROTOTYPE_ID = 1900,
JEWEL_KIND = 5,
JEWEL_TYPE_NUM = 6, // 상징물 업그레이트 보석 타입 종류수 (없음 포함)
};
enum CampConst
{
CAMP_BUILDING_RADIUS = 315, // 캠프 구축 반경 (m)
CAMP_REPAIR_GOLD_PER_HP = 10, // HP 단위당 10 골드
CAMP_UPGRADE_MATERIAL_NUM = 30, // 길드 요새 한단계 업그레이드시 필요한 자재수
MINING_CAMP_UPGRADE_MATERIAL_NUM = 50, // 채굴기 한단계 업그레이드시 필요한 자재수
CAMP_SHOP_UPGRADE_MATERIAL_NUM = 40, // 길드 요새 상점 한단계 업그레이드시 필요한 자재수
WEAPON_CHARGE_MATERIAL_NUM = 50, // 월드 웨폰 무기 장전에 필요한 자재수
CAMP_REPAIR_HP_PER_MATERIAL = 5000, // 자재 하나당 수리되는 HP
FAME_FOR_CAMP_BUILDING_TEST = 0,//1000, // 길드 요새 구축시 길드의 필요 명성치 (테섭용)
FAME_FOR_CAMP_BUILDING = 0,//2000, // 길드 요새 구축시 길드의 필요 명성치 (정섭용)
FAME_FOR_WEAPON_BUILDING_TEST = 1000, // 월드 웨폰 구축시 길드의 필요 명성치 (테섭용)
FAME_FOR_WEAPON_BUILDING = 2000, // 월드 웨폰 구축시 길드의 필요 명성치 (정섭용)
FAME_FOR_SELF_DESTROY_CAMP = -50, // 길드 요새 파괴시 깍이는 명성치 (자신이 파괴)
FAME_FOR_DESTROYED_CAMP = -100, // 길드 요새 파괴시 깍이는 명성치 (다른 사람이 파괴)
GOLD_FOR_SELF_DESTROY_CAMP = 500000, // 길드 요새 파괴시 돌려주는 돈 (자신이 파괴)
GOLD_FOR_CANCEL_CAMP = 1000000, // 길드 요새 구축 해제시 돌려주는 돈
CAMP_ATTACK_RANGE = 45, // 요새 공격 범위 (반경 45m)
// 시간 업데이트 타입
TYPE_REMAIN_TIME = 0, // 시간 변수 업데이트
TYPE_LAST_USE_TIME = 1, // 마지막 사용 시간 업데이트
// 채굴 아이템 타입 종류
ACCUMULATED_MINERAL = 1, // 누적된 광물 아이템
TEMPORARY_MINERAL = 2, // 임시 보관된 광물 아이템
MAX_MINERAL_NUM = 1000, // 광물 최고 스택 갯수
// 상점 타입 관련
MAX_TAX = 100, // 최대 세율
// 월드 웨폰 관련
WEAPON_FIRE_WARNING_COUNT = 10, // 월드 웨폰 발사 경고 표시 횟수 (10번 : 10초)
WEAPON_REBUILD_SIEGE_TIME_COUNT = 3, // 공성 시간이 3번 지나야 다시 지을수 있음 (부서진 국가일 경우)
WEAPON_DAMAGE_RANGE = 256, // 월드 웨폰 데미지 반경 (256m)
WEAPON_DAMAGE = 10000 // 월드 웨폰 절대 데미지
};
enum EmblemConst
{
MAX_EMBLEM_UPGRADE = 3, // 성 상징물 업그레이드 최대치
// TODO : 상위 보석 2종류가 추가되면 Const::MAX_UPGRADE_NUM 를 사용한다.
EMBLEM_ATTACK_HEIGHT_ERROR = 5, // 높이차가 최소 5m 안에 있는 적만 공격이 가능
};
enum GateConst
{
GATE_REPAIR_MIN_PER_HP = 1, // HP 1당 1분의 수리 시간
};
enum CastleArmsConst
{
CASTLE_ARMS_REPAIR_TIME = 1, // 수성 병기 수리 시간 (1분)
CASTLE_ARMS_REPAIR_GOLD_PER_UNIT = 10000, // 수리 비용 단위당 10000 골드 ( 단위는 10%당 )
FAME_FOR_DESTROY_CASTLE_ARMS = -500, // 수성 병기를 NPC 로 변형할때 깍이는 명성치
};
enum SiegeArmsConst
{
SIEGE_ARMS_REPAIR_TIME = 1, // 공성 병기 수리 시간 (1분).
SIEGE_ARMS_UPGRADE_MATERIAL_NUM = 10, // 공성 병기 한단계 업그레이드시 필요한 자재수
SIEGE_ARMS_REPAIR_HP_PER_MATERIAL = 10, // 자재 하나당 10% 의 HP 수리
AIRSHIP_RIDER_NUM = 10, // 수송선 최대 탑승 인원
AIRSHIP_PASSENGER_NUM = 9, // 수송선 승객 최대 인원
};
enum Const
{
INSIDE = 0, // 뒷문 사용( 안으로 )
OUTSIDE = 1, // 뒷문 사용( 밖으로 )
MAX_UPGRADE_NUM = 5, // 공성 오브젝트 업그레이드 최대치
UPGRADE_KIND_NUM = 6, // 업그레이트 종류 수 (0 ~ 5)
VIRTUAL_CID_START_NUM = 1000, // 길드 요새, 공성 병기의 가상 CID 인덱스 시작 번호
BROADCAST_CELL_SIZE = 5, // 브로드캐스트 반경 (5셀)
BROADCAST_RADIUS = 150, // 브로드캐스트 반경 (150m)
BROADCAST_SQUARED_RADIUS = 22500, // 브로드캐스트 반경 제곱값 (150 x 150)
MAX_HP_UPDATE_COUNT = 5, // 5 번에 한번은 DB 중계서버로 HP 정보 갱신
MAX_REPAIR_GOLD = 99999999, // 수리를 할수 없는 객체를 수리할때 드는 디폴트 비용 (에러나게 하기위해)
MAX_SIEGE_OBJECT = 5,
CREATE_LEVEL_LIMIT = 80
};
enum RiderValue
{
NOT_RIDER = 0, // 탑승하지 않았음
RIDER_FOR_OWNER = 1, // 주인으로 탑승한 상태
RIDER_FOR_PASSENGER = 2 // 승객으로 탑승한 상태
};
enum TimeValue
{
/*
// Test : 길드 요새 테스트용 시간
DEFAULT_TIME_VALUE = 1, // 1 분
DEFAULT_REPAIR_TIME = 30, // 30 초
CAMP_ENCAMPING_TIME = 1, // 1 분
CAMP_CANCELING_TIME = 1, // 1 분
CAMP_REPAIR_TIME = 30, // 30 초
CAMP_TO_STARTKIT_TIME = 1, // 1 분
CAMP_CHANGING_TIME = 1, // 1 분
CAMP_LEAST_USE_TIME = 7, // 7 일
CAMP_ENCAMPING_INTERVAL = 10, // 10 분 간격으로 구축중 메세지 보냄
CAMP_ATTACKED_INTERVAL = 60000, // 60000 ms (1분)
MINING_CAMP_GAIN_COUNT = 1, // 1 회
CAMP_SHOP_TRANSFER_COUNT = 1, // 1 회
WEAPON_CHARGE_TIME = 1, // 1 분
*/
DEFAULT_TIME_VALUE = 10, // 10 분
DEFAULT_REPAIR_TIME = 30, // 30 초
CAMP_ENCAMPING_TIME = 30, // 30 분
CAMP_CANCELING_TIME = 20, // 20 분
CAMP_REPAIR_TIME = 30, // 30 초
CAMP_TO_STARTKIT_TIME = 10, // 10 분
CAMP_CHANGING_TIME = 10, // 10 분
CAMP_LEAST_USE_TIME = 7, // 7 일
CAMP_ENCAMPING_INTERVAL = 10, // 10 분 간격으로 구축중 메세지 보냄
CAMP_ATTACKED_INTERVAL = 60000, // 60000 ms (1분)
MINING_CAMP_GAIN_COUNT = 1, // 1 회
CAMP_SHOP_TRANSFER_COUNT = 1, // 1 회
WEAPON_CHARGE_TIME = 10, // 10 분
EMBLEM_SUMMON_TIME = 1, // 1 분
EMBLEM_ATTACKED_INTERVAL = 60000, // 60000 ms (1분)
SIEGE_ARMS_BUILDING_TIME = 3, // 3 분
SIEGE_ARMS_TO_STARTKIT_TIME = 3, // 1 분
SIEGE_ARMS_LEAST_USE_TIME = 10, // 10 분
CASTLE_ARMS_LEAST_USE_TIME = 10, // 10 분
};
enum eReturn
{
RET_OK = 0,
RET_DESTROY_CAMP = 1, // 길드 요새 객체 삭제
RET_DESTROY_SIEGE_ARMS = 2, // 공성 병기 객체 삭제
RET_CHANGE_TYPE = 3, // 길드 요새 타입 변형
};
enum eUpdateHPType
{
NOW_HP = 0, // 현재 HP 그대로
UPGRADE_HP = 1, // 업그레이드된 HP 로
REPAIR_HP = 2, // 수리된 HP 로
FULL_HP = 3, // Full HP 로
};
static int GetKID(unsigned short wObjectType, unsigned char cState, unsigned char cUpgradeType, unsigned char cUpgradeStep)
{
int nKID = 0;
if (Siege::EMBLEM == wObjectType)
{
nKID = wObjectType
+ (cState * Siege::JEWEL_TYPE_NUM * Siege::UPGRADE_KIND_NUM)
+ (cUpgradeType * Siege::UPGRADE_KIND_NUM)
+ cUpgradeStep;
}
else
{
nKID = wObjectType
+ (cState * Siege::UPGRADE_KIND_NUM)
+ cUpgradeStep;
}
return nKID;
}
static int GetUpgradeMaterialNum(unsigned short wObjectType)
{
int nNum = 0;
switch (wObjectType)
{
case Siege::MINING_CAMP:
nNum = Siege::MINING_CAMP_UPGRADE_MATERIAL_NUM;
break;
case Siege::CAMP_SHOP:
nNum = Siege::CAMP_SHOP_UPGRADE_MATERIAL_NUM;
break;
case Siege::CAMP:
case Siege::KARTERANT_WEAPON:
case Siege::MERKADIA_WEAPON:
nNum = Siege::CAMP_UPGRADE_MATERIAL_NUM;
break;
}
return nNum;
}
static int GetChangingTypeMaterialNum(unsigned short wBeforeType, unsigned short wAfterType, unsigned char cUpgradeStep)
{
int nBeforeNum = GetUpgradeMaterialNum(wBeforeType);
int nAfterNum = GetUpgradeMaterialNum(wAfterType);
if (nBeforeNum < nAfterNum)
{
return ( (nAfterNum - nBeforeNum) * cUpgradeStep );
}
return 0;
}
}
#endif // _SIEGE_CONSTANTS_H_