#ifndef _BattleArenaBase_h_ #define _BattleArenaBase_h_ #include #pragma pack(push, 1) // 배틀 아레나 경기장 정보 보관용 enum _BATTLE_ARENA_TYPE { BAT_CLASSIC = 0, BAT_BINGO = 1, BAT_SLAUGHTER = 2, }; // 아레나 유저 등급 구분 enum _BATTLE_GRADE { BG_INVALID = -1, BG_ROOKIE = 0, BG_GROW = 1, BG_MAJOR = 2, MAX_BATTLE_GRADE, }; // 아레나 이탈 유형 코드(BattleArenaBase에서 사용하지 않고 BattleArenaManager나 패킷 방송 시 사용하지만 include 문제를 피하기 위해 여기에 둠) enum _ARENA_LEAVE_TYPE { ALT_UNKNOWN = 0, ALT_USER_REQUEST = 1, // 대기열/경기 이탈 두 경우 모두 사용됨 ALT_GAME_OVER = 2, // 경기 이탈 시에만 사용됨 ALT_PARTICIPATING_SPECIAL_PARTY = 3, // 대기열 이탈 시에만 사용됨 ALT_FAILED_TO_JOIN_BATTLE = 4, // 대기열 이탈 시에만 사용됨 ALT_FAILED_TO_START_BATTLE = 5, // 대기열 이탈 시에만 사용됨(경기 시작 실패) ALT_DISCONNECT = 6, // 대기열/경기 이탈 두 경우 모두 사용됨(대기열에 있다가 접속 끊긴 경우, 경기 중에 오프라인 된 후에 제한 시간 경과로 이탈되는 경우) ALT_ABSENT = 7, // 경기 중에 잠수 신고를 통해 경기에서 이탈된 경우 ALT_LEAVE_ARENA = 8, // 아레나에서 워프를 통해 다른 지역으로 이탈함으로 인해 경기에서 이탈된 경우(워프 자체가 근본적으로 차단되어야 함) ALT_ENTER_INSTANCE_DUNGEON = 9, // 인스턴스 던전에 입장하기 위해 대기열에서 이탈되는 경우 ALT_ENTER_DEATHMATCH = 10, // 데스매치 존에 입장하기 위해 대기열에서 이탈되는 경우 ALT_ENTER_HUNTAHOLIC = 11, // 헌터홀릭 로비(?)에 입장하기 위해 대기열에서 이탈되는 경우 ALT_EXERCISE_PARTY_KICK = 12, // 연습 경기 파티 구성 중 추방에 의해 이탈되는 경우 }; // 아레나 경기 종료 타입 enum _ARENA_END_TYPE { AET_UNKNOWN = 0, AET_ONE_TEAM_NO_MEMBER = 1, // 한 팀의 멤버가 모두 이탈하여 경기 종료(종료 유형이지만 보상이 없다는 내용도 포함) AET_MAX_SCORE_REACHED = 2, // 목표 점수 도달로 경기 종료 AET_TIME_OVER = 3, // 시간 초과로 경기 종료 }; // 아레나 경기 보상 타입 enum _ARENA_REWARD_TYPE { ART_UNKNOWN = 0, ART_FULL_REWARD = 1, // 값 없음(지정 안하면 이거) ART_HALF_REWARD_BY_FEW_MEMBER = 2, // 한 팀의 멤버 수가 팀 최대 인원의 50% 미만이어서 보상이 절반으로 감소 ART_NO_REWARD_BY_NO_MEMBER = 3, // 한 팀의 멤버가 모두 이탈해서 경기가 중단되어 보상 없음 ART_NO_REWARD_BY_MIN_TIME = 4, // 최소 경기 시간 미달로 인해 보상 없음 ART_NO_REWARD_BY_EXERCISE = 5, // 연습 경기는 보상 없음 }; // 아레나 경기 내부의 프랍의 상태(슬래터 프랍 또는 빙고 프랍 9개) enum _PROP_STATE { PS_NOT_EXIST = 0, PS_NEUTRAL = 1, PS_OWNED_BY_TEAM_0 = 2, PS_OWNED_BY_TEAM_1 = 3, }; // 서버/클라 공용 BattleArenaBase struct BattleArenaBase { int nID; _ARENA_LEAVE_TYPE eType; /// _BATTLE_ARENA_TYPE char nTeamCount; char nMinMember; // 경기를 시작하기 위한 최소 인원 char nMaxMember; // 경기에 참여할 수 있는 최대 인원 int nObjectivePoint; // 경기 승리를 위해 먼저 도달해야할 목표 점수 AR_TIME nMinPlayDurationForReward; // 경기 종료 시 보상을 정상적으로 받기 위해 최소한으로 플레이해야 하는 시간 unsigned int nArenaRegionLeft; unsigned int nArenaRegionTop; unsigned int nArenaRegionRight; unsigned int nArenaRegionBottom; AR_TIME nCountDown; AR_TIME nBattleDuration; }; #pragma pack(pop) #endif