#pragma once

#include "Protocol_Category.h"

/// 치트 프로토콜
enum NM_CHEAT_PROTOCOL
{
	///--------------------------///
	/// 1 단계: 정보, 이동, 소환 ///
	///--------------------------///

	/// 입장
	NM_CHEAT_IN_REQ,
	NM_CHEAT_IN_RES,
	NM_CHEAT_IN_SYN,

	/// 속도 증가
	NM_CHEAT_SPEEDUP_REQ,

	/// 귓말
	NM_CHEAT_EAR_REQ,
	NM_CHEAT_EAR_RES,

	/// 투명: 다른 플레이어에게 보이지 않음, 공격불가, 아이템 습득 불가
	NM_CHEAT_HIDE_REQ,
	NM_CHEAT_HIDE_RES,

	/// 무적: 죽지 않음
	NM_CHEAT_UNDEAD_REQ,
	NM_CHEAT_UNDEAD_RES,

	/// 정보: 대상 캐릭터의 정보를 채팅창에 출력
	NM_CHEAT_INFO_REQ,
	NM_CHEAT_INFO_RES,

	/// 감시: 대상 캐릭터를 자동으로 따라감
	NM_CHEAT_WATCH_REQ,
	NM_CHEAT_WATCH_RES,
    
	/// 접속 종료: 대상 캐릭터를 로그아웃 시킴
	NM_CHEAT_KICK_REQ,
	NM_CHEAT_KICK_RES,
	NM_CHEAT_KICK_RES_GM,

	/// 회복: HP, MP를 모두 회복
	NM_CHEAT_RECOVER_REQ,
	NM_CHEAT_RECOVER_RES,
	NM_CHEAT_RECOVER_SYN,

	/// 부활: HP, MP를 모두 회복
	NM_CHEAT_REBIRTH_REQ,
	NM_CHEAT_REBIRTH_RES,
	NM_CHEAT_REBIRTH_SYN,

	/// 순간이동: 특정위치로 순간이동
	NM_CHEAT_TELEPORT_REQ,
	NM_CHEAT_TELEPORT_SYN,

	/// 가기: 해당 맵으로 이동
	NM_CHEAT_GO_REQ,

	/// 추적: 대상 캐릭터의 위치(맵, 좌표)로 이동
	NM_CHEAT_CHASE_REQ,
	NM_CHEAT_CHASE_RES_GM,

	/// 이동: 대상 캐릭터를 지정한 맵으로 이동시킴
	NM_CHEAT_MOVE_REQ,
	NM_CHEAT_MOVE_RES_GM,

	/// 소환: 대상 캐릭터를 소환
	NM_CHEAT_CALL_REQ,
	NM_CHEAT_CALL_RES_GM,

	/// 채팅 금지: 지정 시간동안 대상 캐릭터의 파티 채팅을 제외한 모든 채팅을 금지
	NM_CHEAT_NO_CHAT_REQ,
	NM_CHEAT_NO_CHAT_RES,
	NM_CHEAT_NO_CHAT_RES_GM, 
	NM_CHEAT_NO_CHAT_SYN,

	/// 채팅 허용: 대상 캐릭터의 채팅을 허용
	NM_CHEAT_ALLOW_CHAT_REQ,
	NM_CHEAT_ALLOW_CHAT_RES,
	NM_CHEAT_ALLOW_CHAT_RES_GM,
	NM_CHEAT_ALLOW_CHAT_SYN,

	///-------------------------///
	/// 2단계: 공지, 경고, 편집 ///
	///-------------------------///

	/// 정지: 지정 시간동안 대상 캐릭터의 이동, 스킬 사용, 공격, 거래, 아이템 습득 및 드랍, 창고 이용을 불허
	NM_CHEAT_STOP_REQ,
	NM_CHEAT_STOP_RES,
	NM_CHEAT_STOP_RES_GM,
	NM_CHEAT_STOP_SYN,

	/// 정지 해제: 대상 캐릭터의 정지를 해제
	NM_CHEAT_CANCEL_STOP_REQ,
	NM_CHEAT_CANCEL_STOP_RES,
	NM_CHEAT_CANCEL_STOP_RES_GM,
	NM_CHEAT_CANCEL_STOP_SYN,

	/// 서버 공지: 접속한 서버의 모든 채널에 공지
	NM_CHEAT_NOTICE_SERVER_REQ,
	NM_CHEAT_NOTICE_SERVER_SYN,

	/// 채널 공지: 접속한 해당 채널에만 공지
	NM_CHEAT_NOTICE_CHANNEL_REQ,
	NM_CHEAT_NOTICE_CHANNEL_SYN,

	/// 지역 공지: 접속한 해당 맵에만 공지
	NM_CHEAT_NOTICE_AREA_REQ,
	NM_CHEAT_NOTICE_AREA_SYN,

	/// 아이템 제거: 일정 반경 내의 모든 아이템을 제거
	NM_CHEAT_REMOVE_ITEM_REQ,

	/// 몬스터 제거: 일정 반경 내의 모든 몬스터를 제거
	NM_CHEAT_REMOVE_MONSTER_REQ,

	/// 레벨업: 수치만큼 레벨을 올림
	NM_CHEAT_LEVELUP_REQ,

	/// 스킬업: 수치만큼 스킬을 올림
	NM_CHEAT_SKILLUP_REQ,

	///---------------------///
	/// 3단계: 생성 및 기타 ///
	///---------------------///

	/// 아이템 생성: 지정한 아이템을 개수만큼 생성
	NM_CHEAT_MAKE_REQ,
	NM_CHEAT_MAKE_RES,

	/// 돈 생성: 지정한 액수만큼 돈을 생성
	NM_CHEAT_GOLD_REQ,

	/// 몬스터를 소환
	NM_CHEAT_SUMMON_REQ,

	/// 아이템 드랍 및 경험치 습득없이 몬스터를 제거
	NM_CHEAT_REMOVE_REQ,

	/// 아이템 드랍 및 경험치 습득하고 몬스터를 제거
	NM_CHEAT_KILL_REQ,

	/// 아이템 드랍율 증가
	NM_CHEAT_DROP_REQ,
	NM_CHEAT_DROP_RES_GM,

	/// 경험치 획득율 증가
	NM_CHEAT_EXP_REQ,
	NM_CHEAT_EXP_RES_GM,

	/// 경험치 획득율 증가
	NM_CHEAT_SXP_REQ,
	NM_CHEAT_SXP_RES_GM,

	///
	NM_CHEAT_MAX,
};
