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>
313 lines
11 KiB
C++
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_
|