From 82317e6c4d02b873a8311b3467b0de06948c4e8d Mon Sep 17 00:00:00 2001 From: sdgmt2 Date: Mon, 1 Apr 2024 12:39:34 +0200 Subject: [PATCH 01/21] fix game header encoding --- src/game/src/DragonSoul.h | 20 +- src/game/src/MarkImage.h | 14 +- src/game/src/MarkManager.h | 8 +- src/game/src/OXEvent.h | 8 +- src/game/src/PetSystem.h | 32 +- src/game/src/SpeedServer.h | 10 +- src/game/src/TrafficProfiler.h | 58 ++-- src/game/src/affect.h | 80 ++--- src/game/src/auction_manager.h | 10 +- src/game/src/battle.h | 4 +- src/game/src/belt_inventory_helper.h | 18 +- src/game/src/buff_on_attributes.h | 20 +- src/game/src/castle.h | 30 +- src/game/src/char.h | 434 +++++++++++++-------------- src/game/src/char_manager.h | 12 +- src/game/src/cmd.h | 10 +- src/game/src/config.h | 6 +- src/game/src/constants.h | 4 +- src/game/src/cube.h | 4 +- src/game/src/db.h | 6 +- src/game/src/desc.h | 14 +- src/game/src/dungeon.h | 14 +- src/game/src/entity.h | 2 +- src/game/src/event.h | 12 +- src/game/src/exchange.h | 2 +- src/game/src/group_text_parse_tree.h | 10 +- src/game/src/guild.h | 56 ++-- src/game/src/horse_rider.h | 6 +- src/game/src/input.h | 10 +- src/game/src/item.h | 60 ++-- src/game/src/item_manager.h | 62 ++-- src/game/src/messenger_manager.h | 4 +- src/game/src/mob_manager.h | 8 +- src/game/src/monarch.h | 8 +- src/game/src/motion.h | 68 ++--- src/game/src/p2p.h | 8 +- src/game/src/packet.h | 82 ++--- src/game/src/party.h | 16 +- src/game/src/priv_manager.h | 22 +- src/game/src/pvp.h | 10 +- src/game/src/questmanager.h | 6 +- src/game/src/questnpc.h | 6 +- src/game/src/questpc.h | 12 +- src/game/src/refine.h | 4 +- src/game/src/sectree.h | 8 +- src/game/src/sectree_manager.h | 66 ++-- src/game/src/shop.h | 20 +- src/game/src/shopEx.h | 10 +- src/game/src/skill.h | 228 +++++++------- src/game/src/skill_power.h | 10 +- src/game/src/target.h | 4 +- src/game/src/unique_item.h | 18 +- src/game/src/war_map.h | 6 +- src/game/src/xmas_event.h | 4 +- 54 files changed, 832 insertions(+), 832 deletions(-) diff --git a/src/game/src/DragonSoul.h b/src/game/src/DragonSoul.h index b7e5e35..44db655 100644 --- a/src/game/src/DragonSoul.h +++ b/src/game/src/DragonSoul.h @@ -16,23 +16,23 @@ public: bool ReadDragonSoulTableFile(const char * c_pszFileName); void GetDragonSoulInfo(DWORD dwVnum, OUT BYTE& bType, OUT BYTE& bGrade, OUT BYTE& bStep, OUT BYTE& bRefine) const; - // fixme : titempos + // fixme : titempos로 WORD GetBasePosition(const LPITEM pItem) const; bool IsValidCellForThisItem(const LPITEM pItem, const TItemPos& Cell) const; int GetDuration(const LPITEM pItem) const; - // ȥ ޾Ƽ Ư ϴ Լ + // 용혼석을 받아서 특정 용심을 추출하는 함수 bool ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtractor = NULL); - // Ư ȥ(pItem) â θ ϰ, - // н λ깰 ִ Լ.(λ깰 dragon_soul_table.txt ) - // DestCell invalid , ȥ ڵ ߰. - // , ȥ(pItem) delete. - // ִٸ Ȯ pExtractor->GetValue(0)%ŭ . - // λ깰 ڵ ߰. + // 특정 용혼석(pItem)을 장비창에서 제거할 때에 성공 여부를 결정하고, + // 실패시 부산물을 주는 함수.(부산물은 dragon_soul_table.txt에 정의) + // DestCell에 invalid한 값을 넣으면 성공 시, 용혼석을 빈 공간에 자동 추가. + // 실패 시, 용혼석(pItem)은 delete됨. + // 추출아이템이 있다면 추출 성공 확률이 pExtractor->GetValue(0)%만큼 증가함. + // 부산물은 언제나 자동 추가. bool PullOut(LPCHARACTER ch, TItemPos DestCell, IN OUT LPITEM& pItem, LPITEM pExtractor = NULL); - // ȥ ׷̵ Լ + // 용혼석 업그레이드 함수 bool DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_REFINE_GRID_SIZE]); bool DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_REFINE_GRID_SIZE]); bool DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_REFINE_GRID_SIZE]); @@ -47,7 +47,7 @@ public: private: void SendRefineResultPacket(LPCHARACTER ch, BYTE bSubHeader, const TItemPos& pos); - // ij ȥ 캸, Ȱȭ ȥ ٸ, ij ȥ Ȱ ¸ off Ű Լ. + // 캐릭터의 용혼석 덱을 살펴보고, 활성화 된 용혼석이 없다면, 캐릭터의 용혼석 활성 상태를 off 시키는 함수. void RefreshDragonSoulState(LPCHARACTER ch); DWORD MakeDragonSoulVnum(BYTE bType, BYTE grade, BYTE step, BYTE refine); diff --git a/src/game/src/MarkImage.h b/src/game/src/MarkImage.h index c12b591..bb32da6 100644 --- a/src/game/src/MarkImage.h +++ b/src/game/src/MarkImage.h @@ -16,7 +16,7 @@ struct SGuildMark }; /////////////////////////////////////////////////////////////////////////////// - Pixel m_apxBuf[SIZE]; // ̹ + Pixel m_apxBuf[SIZE]; // 실제 이미지 /////////////////////////////////////////////////////////////////////////////// void Clear(); @@ -38,11 +38,11 @@ struct SGuildMarkBlock }; /////////////////////////////////////////////////////////////////////////////// - Pixel m_apxBuf[SIZE]; // ̹ + Pixel m_apxBuf[SIZE]; // 실제 이미지 - BYTE m_abCompBuf[MAX_COMP_SIZE]; // - lzo_uint m_sizeCompBuf; // ũ - DWORD m_crc; // CRC + BYTE m_abCompBuf[MAX_COMP_SIZE]; // 압축된 데이터 + lzo_uint m_sizeCompBuf; // 압축된 크기 + DWORD m_crc; // 압축된 데이터의 CRC /////////////////////////////////////////////////////////////////////////////// DWORD GetCRC() const; @@ -87,9 +87,9 @@ class CGuildMarkImage bool SaveMark(DWORD posMark, BYTE * pbMarkImage); bool DeleteMark(DWORD posMark); - bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // -> Ŭ̾Ʈ + bool SaveBlockFromCompressedData(DWORD posBlock, const BYTE * pbComp, DWORD dwCompSize); // 서버 -> 클라이언트 - DWORD GetEmptyPosition(); // ũ ġ ´. + DWORD GetEmptyPosition(); // 빈 마크 위치를 얻는다. void GetBlockCRCList(DWORD * crcList); void GetDiffBlocks(const DWORD * crcList, std::map & mapDiffBlocks); diff --git a/src/game/src/MarkManager.h b/src/game/src/MarkManager.h index f8fa142..90df057 100644 --- a/src/game/src/MarkManager.h +++ b/src/game/src/MarkManager.h @@ -32,11 +32,11 @@ class CGuildMarkManager : public singleton // void SetMarkPathPrefix(const char * prefix); - bool LoadMarkIndex(); // ũ ε ҷ ( ) - bool SaveMarkIndex(); // ũ ε ϱ + bool LoadMarkIndex(); // 마크 인덱스 불러오기 (서버에서만 사용) + bool SaveMarkIndex(); // 마크 인덱스 저장하기 - void LoadMarkImages(); // ũ ̹ ҷ - void SaveMarkImage(DWORD imgIdx); // ũ ̹ + void LoadMarkImages(); // 모든 마크 이미지를 불러오기 + void SaveMarkImage(DWORD imgIdx); // 마크 이미지 저장 bool GetMarkImageFilename(DWORD imgIdx, std::string & path) const; bool AddMarkIDByGuildID(DWORD guildID, DWORD markID); diff --git a/src/game/src/OXEvent.h b/src/game/src/OXEvent.h index c6d716e..a23b28f 100644 --- a/src/game/src/OXEvent.h +++ b/src/game/src/OXEvent.h @@ -10,10 +10,10 @@ struct tag_Quiz enum OXEventStatus { - OXEVENT_FINISH = 0, // OX̺Ʈ - OXEVENT_OPEN = 1, // OX̺Ʈ ۵. (20012) ؼ 尡 - OXEVENT_CLOSE = 2, // OX̺Ʈ . (20012) ܵ - OXEVENT_QUIZ = 3, //  . + OXEVENT_FINISH = 0, // OX이벤트가 완전히 끝난 상태 + OXEVENT_OPEN = 1, // OX이벤트가 시작됨. 을두지(20012)를 통해서 입장가능 + OXEVENT_CLOSE = 2, // OX이벤트의 참가가 끝남. 을두지(20012)를 통한 입장이 차단됨 + OXEVENT_QUIZ = 3, // 퀴즈를 출제함. OXEVENT_ERR = 0xff }; diff --git a/src/game/src/PetSystem.h b/src/game/src/PetSystem.h index 6348403..eda5bdd 100644 --- a/src/game/src/PetSystem.h +++ b/src/game/src/PetSystem.h @@ -4,7 +4,7 @@ class CHARACTER; -// TODO: μ ɷġ? ģе, Ÿ... ġ +// TODO: 펫으로서의 능력치? 라던가 친밀도, 배고픔 기타등등... 수치 struct SPetAbility { }; @@ -34,8 +34,8 @@ protected: virtual bool Update(DWORD deltaTime); protected: - virtual bool _UpdateFollowAI(); ///< ٴϴ AI ó - virtual bool _UpdatAloneActionAI(float fMinDist, float fMaxDist); ///< ó ȥ AI ó + virtual bool _UpdateFollowAI(); ///< 주인을 따라다니는 AI 처리 + virtual bool _UpdatAloneActionAI(float fMinDist, float fMaxDist); ///< 주인 근처에서 혼자 노는 AI 처리 /// @TODO //virtual bool _UpdateCombatAI(); @@ -62,13 +62,13 @@ public: bool IsSummoned() const { return 0 != m_pkChar; } void SetSummonItem (LPITEM pItem); DWORD GetSummonItemVID () { return m_dwSummonItemVID; } - // ִ Լ ŵδ Լ. - // ̰ Ѱ, , - // POINT_MOV_SPEED, POINT_ATT_SPEED, POINT_CAST_SPEED PointChange() Լ Ἥ ҿ °, - // PointChange() Ŀ 𼱰 ComputePoints() ϸ ϴ ʱȭǰ, - // , ComputePoints() θ Ŭ POINT ʴ´ٴ Ŵ. - // ׷ ִ ComputePoints() ο petsystem->RefreshBuff() θ Ͽ, - // ClearBuff() θ, ComputePoints ϴ Ѵ. + // 버프 주는 함수와 거두는 함수. + // 이게 좀 괴랄한게, 서버가 ㅄ라서, + // POINT_MOV_SPEED, POINT_ATT_SPEED, POINT_CAST_SPEED는 PointChange()란 함수만 써서 변경해 봐야 소용이 없는게, + // PointChange() 이후에 어디선가 ComputePoints()를 하면 싹다 초기화되고, + // 더 웃긴건, ComputePoints()를 부르지 않으면 클라의 POINT는 전혀 변하지 않는다는 거다. + // 그래서 버프를 주는 것은 ComputePoints() 내부에서 petsystem->RefreshBuff()를 부르도록 하였고, + // 버프를 빼는 것은 ClearBuff()를 부르고, ComputePoints를 하는 것으로 한다. void GiveBuff(); void ClearBuff(); @@ -87,7 +87,7 @@ private: LPCHARACTER m_pkChar; // Instance of pet(CHARACTER) LPCHARACTER m_pkOwner; -// SPetAbility m_petAbility; // ɷġ +// SPetAbility m_petAbility; // 능력치 }; /** @@ -95,7 +95,7 @@ private: class CPetSystem { public: - typedef std::unordered_map TPetActorMap; /// map. ( ijͰ vnum ..??) + typedef std::unordered_map TPetActorMap; /// map. (한 캐릭터가 같은 vnum의 펫을 여러개 가질 일이 있을까..??) public: CPetSystem(LPCHARACTER owner); @@ -107,7 +107,7 @@ public: bool Update(DWORD deltaTime); void Destroy(); - size_t CountSummoned() const; ///< ȯ(üȭ ijͰ ִ) + size_t CountSummoned() const; ///< 현재 소환된(실체화 된 캐릭터가 있는) 펫의 개수 public: void SetUpdatePeriod(DWORD ms); @@ -117,7 +117,7 @@ public: void Unsummon(DWORD mobVnum, bool bDeleteFromList = false); void Unsummon(CPetActor* petActor, bool bDeleteFromList = false); - // TODO: ¥ ý  . (ijͰ ߰ ...) + // TODO: 진짜 펫 시스템이 들어갈 때 구현. (캐릭터가 보유한 펫의 정보를 추가할 때 라던가...) CPetActor* AddPet(DWORD mobVnum, const char* petName, const SPetAbility& ability, DWORD options = CPetActor::EPetOption_Followable | CPetActor::EPetOption_Summonable | CPetActor::EPetOption_Combatable); void DeletePet(DWORD mobVnum); @@ -126,8 +126,8 @@ public: private: TPetActorMap m_petActorMap; - LPCHARACTER m_pkOwner; ///< ý Owner - DWORD m_dwUpdatePeriod; ///< Ʈ ֱ (ms) + LPCHARACTER m_pkOwner; ///< 펫 시스템의 Owner + DWORD m_dwUpdatePeriod; ///< 업데이트 주기 (ms단위) DWORD m_dwLastUpdateTime; LPEVENT m_pkPetSystemUpdateEvent; }; diff --git a/src/game/src/SpeedServer.h b/src/game/src/SpeedServer.h index f4f61e6..eee5a90 100644 --- a/src/game/src/SpeedServer.h +++ b/src/game/src/SpeedServer.h @@ -4,11 +4,11 @@ #include #include -// castle.cpp ִ Ͽ -#define EMPIRE_NONE 0 // ƹ ƴ -#define EMPIRE_RED 1 // ż -#define EMPIRE_YELLOW 2 // õ -#define EMPIRE_BLUE 3 // +// castle.cpp 에 있는 것을 복붙 하였다 +#define EMPIRE_NONE 0 // 아무국가 아님 +#define EMPIRE_RED 1 // 신수 +#define EMPIRE_YELLOW 2 // 천조 +#define EMPIRE_BLUE 3 // 진노 class HME { diff --git a/src/game/src/TrafficProfiler.h b/src/game/src/TrafficProfiler.h index 50aaf20..80aa37b 100644 --- a/src/game/src/TrafficProfiler.h +++ b/src/game/src/TrafficProfiler.h @@ -12,17 +12,17 @@ /** * @class TrafficProfiler - * @brief Network I/O traffic Ŷ ϴ profiler. + * @brief Network I/O traffic 을 패킷 단위로 측정하는 profiler. * @author Bang2ni * @version 05/07/07 Bang2ni - First release. * - * ð Network I/O traffic Ŷ ϰ, Text file · ۼѴ. + * 시간대 별로 Network I/O 의 traffic 을 패킷 단위로 측정하고, Text file 형태로 보고서를 작성한다. */ class TrafficProfiler : public singleton< TrafficProfiler > { public: - /// I/O + /// I/O 방향 enum IODirection { IODIR_INPUT = 0, ///< Input IODIR_OUTPUT, ///< Output @@ -37,25 +37,25 @@ class TrafficProfiler : public singleton< TrafficProfiler > /// Destructor ~TrafficProfiler( void ); - /// Profiling ʿ ʱȭ Ѵ. + /// Profiling 에 필요한 초기화를 한다. /** - * @param [in] dwFlushCycle Flush ֱ. ̴. - * @param [in] pszLogFileName Profiling log file ̸ - * @return false profiling log file open ߴ. + * @param [in] dwFlushCycle Flush 주기. 초 단위이다. + * @param [in] pszLogFileName Profiling log file 의 이름 + * @return false 일 경우 profiling log file 을 open 하지 못했다. * - * profiling log file open() Ѵ. + * profiling log file 을 open(생성) 한다. */ bool Initialize( DWORD dwFlushCycle, const char* pszLogFileName ); - /// Profiling ۵ưų Packet Report Ѵ. + /// Profiling 을 위해 전송됐거나 전송 할 Packet 을 Report 한다. /** - * @param [in] dir Profiling Packet - * @param [in] byHeader Packet - * @param [in] dwSize Packet size - * @return Initialize ʾҴٸ false ȯѴ. + * @param [in] dir Profiling 할 Packet 의 방향 + * @param [in] byHeader Packet 헤더 + * @param [in] dwSize Packet 의 총 size + * @return Initialize 되지 않았다면 false 를 반환한다. * - * Packet شϴ size Ų. - * Initialize ij ֱ Flush Ŀ Flush ֱ ŭ ð 帥 ȣȴٸ Report Flush Ѵ. + * Packet 에 해당하는 size 를 누적시킨다. + * Initialize 이후나 최근 Flush 된 이후에 Flush 주기 만큼 시간이 흐른 후 호출된다면 Report 이후 Flush 한다. */ bool Report( IODirection dir, BYTE byHeader, DWORD dwSize ) { @@ -65,22 +65,22 @@ class TrafficProfiler : public singleton< TrafficProfiler > return true; } - /// Report Ͽ . + /// 현재까지 Report 된 내용을 파일에 쓴다. /** - * @return Initialize ʾҴ. + * @return Initialize 되지 않았다. */ bool Flush( void ); private: - /// Profling õ variables ʱȭ Ѵ. + /// Profling 에 관련된 variables 를 초기화 한다. void InitializeProfiling( void ); - /// Report Packet traffic Ѵ. + /// Report 된 Packet 의 traffic 를 계산한다. /** - * @param [in] dir Profiling Packet - * @param [in] byHeader Packet - * @param [in] dwSize Packet size + * @param [in] dir Profiling 할 Packet 의 방향 + * @param [in] byHeader Packet 헤더 + * @param [in] dwSize Packet 의 총 size */ void ComputeTraffic( IODirection dir, BYTE byHeader, DWORD dwSize ) { @@ -96,8 +96,8 @@ class TrafficProfiler : public singleton< TrafficProfiler > /// Traffic info type. /** - * first: size - * second: packet ۵ Ƚ + * first: 누적된 총 size + * second: 이 packet 이 전송된 횟수 */ typedef std::pair< DWORD, DWORD > TrafficInfo; @@ -105,11 +105,11 @@ class TrafficProfiler : public singleton< TrafficProfiler > typedef std::vector< TrafficInfo > TrafficVec; FILE* m_pfProfileLogFile; ///< Profile log file pointer - DWORD m_dwFlushCycle; ///< Flush ֱ - time_t m_tmProfileStartTime; ///< ð. Flush Update ȴ. - DWORD m_dwTotalTraffic; ///< Report Traffic 뷮 - DWORD m_dwTotalPacket; ///< Report Packet - TrafficVec m_aTrafficVec[ IODIR_MAX ]; ///< Report Traffic vector 迭. ⸶ vector . + DWORD m_dwFlushCycle; ///< Flush 주기 + time_t m_tmProfileStartTime; ///< 프로파일을 시작한 시간. Flush 될 때마다 Update 된다. + DWORD m_dwTotalTraffic; ///< Report 된 총 Traffic 용량 + DWORD m_dwTotalPacket; ///< Report 된 총 Packet 수 + TrafficVec m_aTrafficVec[ IODIR_MAX ]; ///< Report 된 Traffic 을 저장할 vector의 배열. 각 방향마다 vector 를 가진다. }; #endif // _METIN_II_TRAFFICPROFILER_H_ diff --git a/src/game/src/affect.h b/src/game/src/affect.h index 90e610b..69cbefa 100644 --- a/src/game/src/affect.h +++ b/src/game/src/affect.h @@ -54,23 +54,23 @@ enum EAffectTypes AFFECT_DEF_GRADE, // 226 AFFECT_PREMIUM_START = 500, - AFFECT_EXP_BONUS = 500, // - AFFECT_ITEM_BONUS = 501, // 尩 + AFFECT_EXP_BONUS = 500, // 경험의 반지 + AFFECT_ITEM_BONUS = 501, // 도둑의 장갑 AFFECT_SAFEBOX = 502, // PREMIUM_SAFEBOX, AFFECT_AUTOLOOT = 503, // PREMIUM_AUTOLOOT, AFFECT_FISH_MIND = 504, // PREMIUM_FISH_MIND, - AFFECT_MARRIAGE_FAST = 505, // - AFFECT_GOLD_BONUS = 506, // Ȯ 50% + AFFECT_MARRIAGE_FAST = 505, // 원앙의 깃털 + AFFECT_GOLD_BONUS = 506, // 돈 드롭확률 50%증가 AFFECT_PREMIUM_END = 509, - AFFECT_MALL = 510, // Ʈ - AFFECT_NO_DEATH_PENALTY = 511, // ȣ (ġ гƼ ѹ ش) - AFFECT_SKILL_BOOK_BONUS = 512, // (å Ȯ 50% ) - AFFECT_SKILL_NO_BOOK_DELAY = 513, // ־ȼ + AFFECT_MALL = 510, // 몰 아이템 에펙트 + AFFECT_NO_DEATH_PENALTY = 511, // 용신의 가호 (경험치가 패널티를 한번 막아준다) + AFFECT_SKILL_BOOK_BONUS = 512, // 선인의 교훈 (책 수련 성공 확률이 50% 증가) + AFFECT_SKILL_NO_BOOK_DELAY = 513, // 주안술서 - AFFECT_HAIR = 514, // ȿ - AFFECT_COLLECT = 515, //Ʈ - AFFECT_EXP_BONUS_EURO_FREE = 516, // ( 14 ⺻ ȿ) + AFFECT_HAIR = 514, // 헤어 효과 + AFFECT_COLLECT = 515, //수집퀘스트 + AFFECT_EXP_BONUS_EURO_FREE = 516, // 경험의 반지 (유럽 버전 14 레벨 이하 기본 효과) AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 = 517, AFFECT_UNIQUE_ABILITY = 518, @@ -121,8 +121,8 @@ enum EAffectBits AFF_SLOW, AFF_STUN, - AFF_DUNGEON_READY, // غ - AFF_DUNGEON_UNIQUE, // ũ (Ŭ̾Ʈ ø) + AFF_DUNGEON_READY, // 던전에서 준비 상태 + AFF_DUNGEON_UNIQUE, // 던전 유니크 (클라이언트에서 컬링되지않음) AFF_BUILDING_CONSTRUCTION_SMALL, AFF_BUILDING_CONSTRUCTION_LARGE, @@ -133,34 +133,34 @@ enum EAffectBits AFF_FISH_MIND, - AFF_JEONGWIHON, // ȥ - AFF_GEOMGYEONG, // ˰ - AFF_CHEONGEUN, // õ - AFF_GYEONGGONG, // - AFF_EUNHYUNG, // - AFF_GWIGUM, // Ͱ - AFF_TERROR, // - AFF_JUMAGAP, // ָ - AFF_HOSIN, // ȣ - AFF_BOHO, // ȣ - AFF_KWAESOK, // - AFF_MANASHIELD, // - AFF_MUYEONG, // affect - AFF_REVIVE_INVISIBLE, // Ȱ õ - AFF_FIRE, // - AFF_GICHEON, // õ - AFF_JEUNGRYEOK, // ¼ - AFF_TANHWAN_DASH, // źȯݿ ޸Ʈ - AFF_PABEOP, // Ĺ - AFF_CHEONGEUN_WITH_FALL, // õ + AFF_JEONGWIHON, // 전귀혼 + AFF_GEOMGYEONG, // 검경 + AFF_CHEONGEUN, // 천근추 + AFF_GYEONGGONG, // 경공술 + AFF_EUNHYUNG, // 은형법 + AFF_GWIGUM, // 귀검 + AFF_TERROR, // 공포 + AFF_JUMAGAP, // 주마갑 + AFF_HOSIN, // 호신 + AFF_BOHO, // 보호 + AFF_KWAESOK, // 쾌속 + AFF_MANASHIELD, // 마나쉴드 + AFF_MUYEONG, // 무영진 affect + AFF_REVIVE_INVISIBLE, // 부활시 잠시동안 무적 + AFF_FIRE, // 지속 불 데미지 + AFF_GICHEON, // 기천대공 + AFF_JEUNGRYEOK, // 증력술 + AFF_TANHWAN_DASH, // 탄환격용 달리기어펙트 + AFF_PABEOP, // 파법술 + AFF_CHEONGEUN_WITH_FALL, // 천근추 AFF_POLYMORPH, AFF_WAR_FLAG1, AFF_WAR_FLAG2, AFF_WAR_FLAG3, AFF_CHINA_FIREWORK, - AFF_HAIR, // - AFF_GERMANY, // + AFF_HAIR, // 헤어 + AFF_GERMANY, // 독일 AFF_BITS_MAX }; @@ -170,11 +170,11 @@ extern void SendAffectAddPacket(LPDESC d, CAffect * pkAff); // AFFECT_DURATION_BUG_FIX enum AffectVariable { - // Affect Ѵ  ־ . - // ð ̱ ſ ū Ѵ븦 ķ̼. - //// 24Ʈ Ƿ 25Ʈ . - // ... 25Ʈ Ѵٰ س 29bit ϰ ִ û ̶ּ... - // collect quest ð 60 ϰ Ƿ, ⵵ 60 . + // Affect가 무한대로 들어가 있어야 할 경우 사용. + // 시간을 계속 줄이기 때문에 매우 큰값으로 무한대를 에뮬레이션함. + //// 24비트는 적으므로 25비트를 사용. + // ... 25비트 사용한다고 해놓고선 29bit 사용하고 있는 엄청난 주석이란... + // collect quest에서 무한 시간을 60년으로 사용하고 있으므로, 여기도 60년으로 하자. INFINITE_AFFECT_DURATION = 60 * 365 * 24 * 60 * 60 }; diff --git a/src/game/src/auction_manager.h b/src/game/src/auction_manager.h index 598f3a8..73f710e 100644 --- a/src/game/src/auction_manager.h +++ b/src/game/src/auction_manager.h @@ -63,7 +63,7 @@ private: TPCMap offer_map; - // sorting members + // sorting을 위한 members public: typedef std::vector TItemInfoVec; private: @@ -76,7 +76,7 @@ private: public: void SortedItemInfos (TItemInfoVec& vec, BYTE grade, BYTE category, int start_idx, BYTE size, BYTE order[5]); - // Լ. + // 나의 경매장을 위한 함수. void YourItemInfoList (TItemInfoVec& vec, DWORD player_id, int start_idx, BYTE size); }; @@ -131,7 +131,7 @@ private: typedef std::pair BidInfo; typedef std::map TItemMap; typedef std::unordered_map TMyBidBoard; - // bidder_id key + // bidder_id가 key TMyBidBoard pc_map; public: @@ -144,7 +144,7 @@ public: BidInfo GetMoney (DWORD player_id, DWORD item_id); bool Delete (DWORD player_id, DWORD item_id); - // ̹ . + // 이미 있으면 덮어 씌운다. void Insert (DWORD player_id, DWORD item_id, int money); void Lock (DWORD player_id, DWORD item_id); void UnLock (DWORD player_id, DWORD item_id); @@ -156,7 +156,7 @@ private : typedef std::unordered_map TItemMap; TItemMap auction_item_map; - // auction ϵ , ̺ Ե ʴ ϴ ͵ + // auction에 등록된 정보 중 가격, 등등 아이템 테이블에 포함되지 않는 정보들을 관리하는 것들 AuctionBoard Auction; SaleBoard Sale; WishBoard Wish; diff --git a/src/game/src/battle.h b/src/game/src/battle.h index abba2af..f265d39 100644 --- a/src/game/src/battle.h +++ b/src/game/src/battle.h @@ -3,7 +3,7 @@ #include "char.h" -enum EBattleTypes // +enum EBattleTypes // 상대방 기준 { BATTLE_NONE, BATTLE_DAMAGE, @@ -30,7 +30,7 @@ extern void NormalAttackAffect(LPCHARACTER pkAttacker, LPCHARACTER pkVictim); extern int battle_hit(LPCHARACTER ch, LPCHARACTER victim); -// Ư +// 특성 공격 inline void AttackAffect(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, BYTE att_point, diff --git a/src/game/src/belt_inventory_helper.h b/src/game/src/belt_inventory_helper.h index b3d8e20..5cacc58 100644 --- a/src/game/src/belt_inventory_helper.h +++ b/src/game/src/belt_inventory_helper.h @@ -13,7 +13,7 @@ public: { static TGradeUnit beltGradeByLevelTable[] = { - 0, // Ʈ+0 + 0, // 벨트+0 1, // +1 1, // +2 2, // +3 @@ -34,20 +34,20 @@ public: return beltGradeByLevelTable[level]; } - // Ʈ ,  ̿ ִ + // 현재 벨트 레벨을 기준으로, 어떤 셀들을 이용할 수 있는지 리턴 static const TGradeUnit* GetAvailableRuleTableByGrade() { /** - Ʈ +0 ~ +9 , 7ܰ еǾ κ丮 Ȱ ȭ ȴ. - Ʈ Ʒ ׸ . >= Ȱ ̸ . - (, 0̸ Ұ, ȣ ڴ ) + 벨트는 총 +0 ~ +9 레벨을 가질 수 있으며, 레벨에 따라 7단계 등급으로 구분되어 인벤토리가 활성 화 된다. + 벨트 레벨에 따른 사용 가능한 셀은 아래 그림과 같음. 현재 등급 >= 활성가능 등급이면 사용 가능. + (단, 현재 레벨이 0이면 무조건 사용 불가, 괄호 안의 숫자는 등급) 2(1) 4(2) 6(4) 8(6) 5(3) 5(3) 6(4) 8(6) 7(5) 7(5) 7(5) 8(6) 9(7) 9(7) 9(7) 9(7) - Ʈ κ丮 ũ 4x4 (16ĭ) + 벨트 인벤토리의 크기는 4x4 (16칸) */ static TGradeUnit availableRuleByGrade[BELT_INVENTORY_SLOT_COUNT] = { @@ -62,14 +62,14 @@ public: static bool IsAvailableCell(WORD cell, int beltGrade /*int beltLevel*/) { - // ȹ ٲ.. Ƴ... + // 기획 또 바뀜.. 아놔... //const TGradeUnit beltGrade = GetBeltGradeByRefineLevel(beltLevel); const TGradeUnit* ruleTable = GetAvailableRuleTableByGrade(); return ruleTable[cell] <= beltGrade; } - /// pc Ʈ κ丮 ϳ ϴ ˻ϴ Լ. + /// pc의 벨트 인벤토리에 아이템이 하나라도 존재하는 지 검사하는 함수. static bool IsExistItemInBeltInventory(LPCHARACTER pc) { for (WORD i = BELT_INVENTORY_SLOT_START; i < BELT_INVENTORY_SLOT_END; ++i) @@ -83,7 +83,7 @@ public: return false; } - /// item Ʈ κ丮  ִ Ÿ ˻ϴ Լ. ( Ģ ȹڰ ) + /// item이 벨트 인벤토리에 들어갈 수 있는 타입인지 검사하는 함수. (이 규칙은 기획자가 결정함) static bool CanMoveIntoBeltInventory(LPITEM item) { bool canMove = false; diff --git a/src/game/src/buff_on_attributes.h b/src/game/src/buff_on_attributes.h index ab88060..7e1ddef 100644 --- a/src/game/src/buff_on_attributes.h +++ b/src/game/src/buff_on_attributes.h @@ -9,20 +9,20 @@ public: CBuffOnAttributes(LPCHARACTER pOwner, BYTE m_point_type, std::vector * vec_buff_targets); ~CBuffOnAttributes(); - // ̸鼭, m_p_vec_buff_wear_targets شϴ , ش ȿ . + // 장착 중 이면서, m_p_vec_buff_wear_targets에 해당하는 아이템인 경우, 해당 아이템으로 인해 붙은 효과를 제거. void RemoveBuffFromItem(LPITEM pItem); - // m_p_vec_buff_wear_targets شϴ , ش attribute ȿ ߰. + // m_p_vec_buff_wear_targets에 해당하는 아이템인 경우, 해당 아이템의 attribute에 대한 효과 추가. void AddBuffFromItem(LPITEM pItem); - // m_bBuffValue ٲٰ, ٲ. + // m_bBuffValue를 바꾸고, 버프의 값도 바꿈. void ChangeBuffValue(BYTE bNewValue); - // CHRACTRE::ComputePoints Ӽġ ʱȭϰ ٽ ϹǷ, - // Ӽġ owner . + // CHRACTRE::ComputePoints에서 속성치를 초기화하고 다시 계산하므로, + // 버프 속성치들을 강제적으로 owner에게 줌. void GiveAllAttributes(); - // m_p_vec_buff_wear_targets شϴ attribute type ջϰ, - // attribute (m_bBuffValue)% ŭ . + // m_p_vec_buff_wear_targets에 해당하는 모든 아이템의 attribute를 type별로 합산하고, + // 그 attribute들의 (m_bBuffValue)% 만큼을 버프로 줌. bool On(BYTE bValue); - // , ʱȭ + // 버프 제거 후, 초기화 void Off(); void Initialize(); @@ -32,9 +32,9 @@ private: BYTE m_bBuffValue; std::vector * m_p_vec_buff_wear_targets; - // apply_type, apply_value + // apply_type, apply_value 페어의 맵 typedef std::map TMapAttr; - // m_p_vec_buff_wear_targets شϴ attribute type ջϿ . + // m_p_vec_buff_wear_targets에 해당하는 모든 아이템의 attribute를 type별로 합산하여 가지고 있음. TMapAttr m_map_additional_attrs; }; diff --git a/src/game/src/castle.h b/src/game/src/castle.h index b1439fd..58f2d82 100644 --- a/src/game/src/castle.h +++ b/src/game/src/castle.h @@ -9,36 +9,36 @@ #define _castle_h_ -#define MAX_CASTLE_GUARD_REGION 4 // ġ -#define MAX_CASTLE_GUARD_PER_REGION 10 // ġҼִ 񺴱׷ -#define MAX_CASTLE_FROG 20 // Ȳ β -#define MAX_CASTLE_TOWER 10 // ȭ ִ ȯ -#define MIN_CASTLE_TOWER 5 // ȭ ּ ȯ +#define MAX_CASTLE_GUARD_REGION 4 // 경비병 배치 구역 +#define MAX_CASTLE_GUARD_PER_REGION 10 // 한지역에 배치할수있는 경비병그룹 +#define MAX_CASTLE_FROG 20 // 황금 두꺼비 +#define MAX_CASTLE_TOWER 10 // 봉화 최대 소환 개수 +#define MIN_CASTLE_TOWER 5 // 봉화 최소 소환 개수 -#define CASTLE_FROG_PRICE 100000000 // Ȳݵβ (1) -#define CASTLE_FROG_VNUM 11505 // Ȳݵβ ȣ -//#define CASTLE_TOWER_VNUM 11506 // ȭ ȣ +#define CASTLE_FROG_PRICE 100000000 // 황금두꺼비 가격 (1억) +#define CASTLE_FROG_VNUM 11505 // 황금두꺼비 번호 +//#define CASTLE_TOWER_VNUM 11506 // 봉화 번호 #define IS_CASTLE_MAP(map) (181==(map)||182==(map)||(183)==(map)) //#define IS_CASTLE_TOWER(vnum) (11506==(vnum)||11507==(vnum)||11508==(vnum)||11509==(vnum) || 11510==(vnum)) enum CASTLE_STATE { - CASTLE_SIEGE_NONE, // ȭ - CASTLE_SIEGE_STRUGGLE, // - CASTLE_SIEGE_END // ߴٸ 1ð ȭ ִ. + CASTLE_SIEGE_NONE, // 평화모드 + CASTLE_SIEGE_STRUGGLE, // 공성중 + CASTLE_SIEGE_END // 수성에 성공했다면 1시간동안 봉화를 깰 수 있다. }; struct CASTLE_DATA { - LPCHARACTER frog[MAX_CASTLE_FROG]; // Ȳݵβ + LPCHARACTER frog[MAX_CASTLE_FROG]; // 황금두꺼비 - LPCHARACTER guard[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // - DWORD guard_group[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // + LPCHARACTER guard[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // 경비병 리더 + DWORD guard_group[MAX_CASTLE_GUARD_REGION][MAX_CASTLE_GUARD_PER_REGION]; // 경비병 리더 - LPCHARACTER tower[MAX_CASTLE_TOWER]; // ȭ + LPCHARACTER tower[MAX_CASTLE_TOWER]; // 봉화 LPEVENT siege_event; LPEVENT stone_event; diff --git a/src/game/src/char.h b/src/game/src/char.h index 4fe039f..a4e810a 100644 --- a/src/game/src/char.h +++ b/src/game/src/char.h @@ -83,7 +83,7 @@ enum EDamageType DAMAGE_TYPE_NONE, DAMAGE_TYPE_NORMAL, DAMAGE_TYPE_NORMAL_RANGE, - //ų + //스킬 DAMAGE_TYPE_MELEE, DAMAGE_TYPE_RANGE, DAMAGE_TYPE_FIRE, @@ -105,103 +105,103 @@ enum EPointTypes POINT_MAX_HP, // 6 POINT_SP, // 7 POINT_MAX_SP, // 8 - POINT_STAMINA, // 9 ׹̳ - POINT_MAX_STAMINA, // 10 ִ ׹̳ + POINT_STAMINA, // 9 스테미너 + POINT_MAX_STAMINA, // 10 최대 스테미너 POINT_GOLD, // 11 - POINT_ST, // 12 ٷ - POINT_HT, // 13 ü - POINT_DX, // 14 ø - POINT_IQ, // 15 ŷ + POINT_ST, // 12 근력 + POINT_HT, // 13 체력 + POINT_DX, // 14 민첩성 + POINT_IQ, // 15 정신력 POINT_DEF_GRADE, // 16 ... - POINT_ATT_SPEED, // 17 ݼӵ - POINT_ATT_GRADE, // 18 ݷ MAX - POINT_MOV_SPEED, // 19 ̵ӵ - POINT_CLIENT_DEF_GRADE, // 20 - POINT_CASTING_SPEED, // 21 ֹӵ (ٿŸ*100) / (100 + ̰) = ٿ Ÿ - POINT_MAGIC_ATT_GRADE, // 22 ݷ - POINT_MAGIC_DEF_GRADE, // 23 - POINT_EMPIRE_POINT, // 24 - POINT_LEVEL_STEP, // 25 ܰ.. (1 2 3 , 4 Ǹ ) - POINT_STAT, // 26 ɷġ ø ִ - POINT_SUB_SKILL, // 27 ų Ʈ - POINT_SKILL, // 28 Ƽ ų Ʈ - POINT_WEAPON_MIN, // 29 ּ - POINT_WEAPON_MAX, // 30 ִ - POINT_PLAYTIME, // 31 ÷̽ð - POINT_HP_REGEN, // 32 HP ȸ - POINT_SP_REGEN, // 33 SP ȸ + POINT_ATT_SPEED, // 17 공격속도 + POINT_ATT_GRADE, // 18 공격력 MAX + POINT_MOV_SPEED, // 19 이동속도 + POINT_CLIENT_DEF_GRADE, // 20 방어등급 + POINT_CASTING_SPEED, // 21 주문속도 (쿨다운타임*100) / (100 + 이값) = 최종 쿨다운 타임 + POINT_MAGIC_ATT_GRADE, // 22 마법공격력 + POINT_MAGIC_DEF_GRADE, // 23 마법방어력 + POINT_EMPIRE_POINT, // 24 제국점수 + POINT_LEVEL_STEP, // 25 한 레벨에서의 단계.. (1 2 3 될 때 보상, 4 되면 레벨 업) + POINT_STAT, // 26 능력치 올릴 수 있는 개수 + POINT_SUB_SKILL, // 27 보조 스킬 포인트 + POINT_SKILL, // 28 액티브 스킬 포인트 + POINT_WEAPON_MIN, // 29 무기 최소 데미지 + POINT_WEAPON_MAX, // 30 무기 최대 데미지 + POINT_PLAYTIME, // 31 플레이시간 + POINT_HP_REGEN, // 32 HP 회복률 + POINT_SP_REGEN, // 33 SP 회복률 - POINT_BOW_DISTANCE, // 34 Ȱ Ÿ ġ (meter) + POINT_BOW_DISTANCE, // 34 활 사정거리 증가치 (meter) - POINT_HP_RECOVERY, // 35 ü ȸ - POINT_SP_RECOVERY, // 36 ŷ ȸ + POINT_HP_RECOVERY, // 35 체력 회복 증가량 + POINT_SP_RECOVERY, // 36 정신력 회복 증가량 - POINT_POISON_PCT, // 37 Ȯ - POINT_STUN_PCT, // 38 Ȯ - POINT_SLOW_PCT, // 39 ο Ȯ - POINT_CRITICAL_PCT, // 40 ũƼ Ȯ - POINT_PENETRATE_PCT, // 41 Ÿ Ȯ - POINT_CURSE_PCT, // 42 Ȯ + POINT_POISON_PCT, // 37 독 확률 + POINT_STUN_PCT, // 38 기절 확률 + POINT_SLOW_PCT, // 39 슬로우 확률 + POINT_CRITICAL_PCT, // 40 크리티컬 확률 + POINT_PENETRATE_PCT, // 41 관통타격 확률 + POINT_CURSE_PCT, // 42 저주 확률 - POINT_ATTBONUS_HUMAN, // 43 ΰ - POINT_ATTBONUS_ANIMAL, // 44 % - POINT_ATTBONUS_ORC, // 45 Ϳ % - POINT_ATTBONUS_MILGYO, // 46 б % - POINT_ATTBONUS_UNDEAD, // 47 ü % - POINT_ATTBONUS_DEVIL, // 48 (Ǹ) % - POINT_ATTBONUS_INSECT, // 49 - POINT_ATTBONUS_FIRE, // 50 ȭ - POINT_ATTBONUS_ICE, // 51 - POINT_ATTBONUS_DESERT, // 52 縷 - POINT_ATTBONUS_MONSTER, // 53 Ϳ - POINT_ATTBONUS_WARRIOR, // 54 翡 - POINT_ATTBONUS_ASSASSIN, // 55 ڰ - POINT_ATTBONUS_SURA, // 56 󿡰 - POINT_ATTBONUS_SHAMAN, // 57 翡 - POINT_ATTBONUS_TREE, // 58 20050729.myevan UNUSED5 + POINT_ATTBONUS_HUMAN, // 43 인간에게 강함 + POINT_ATTBONUS_ANIMAL, // 44 동물에게 데미지 % 증가 + POINT_ATTBONUS_ORC, // 45 웅귀에게 데미지 % 증가 + POINT_ATTBONUS_MILGYO, // 46 밀교에게 데미지 % 증가 + POINT_ATTBONUS_UNDEAD, // 47 시체에게 데미지 % 증가 + POINT_ATTBONUS_DEVIL, // 48 마귀(악마)에게 데미지 % 증가 + POINT_ATTBONUS_INSECT, // 49 벌레족 + POINT_ATTBONUS_FIRE, // 50 화염족 + POINT_ATTBONUS_ICE, // 51 빙설족 + POINT_ATTBONUS_DESERT, // 52 사막족 + POINT_ATTBONUS_MONSTER, // 53 모든 몬스터에게 강함 + POINT_ATTBONUS_WARRIOR, // 54 무사에게 강함 + POINT_ATTBONUS_ASSASSIN, // 55 자객에게 강함 + POINT_ATTBONUS_SURA, // 56 수라에게 강함 + POINT_ATTBONUS_SHAMAN, // 57 무당에게 강함 + POINT_ATTBONUS_TREE, // 58 나무에게 강함 20050729.myevan UNUSED5 - POINT_RESIST_WARRIOR, // 59 翡 - POINT_RESIST_ASSASSIN, // 60 ڰ - POINT_RESIST_SURA, // 61 󿡰 - POINT_RESIST_SHAMAN, // 62 翡 + POINT_RESIST_WARRIOR, // 59 무사에게 저항 + POINT_RESIST_ASSASSIN, // 60 자객에게 저항 + POINT_RESIST_SURA, // 61 수라에게 저항 + POINT_RESIST_SHAMAN, // 62 무당에게 저항 - POINT_STEAL_HP, // 63 - POINT_STEAL_SP, // 64 ŷ + POINT_STEAL_HP, // 63 생명력 흡수 + POINT_STEAL_SP, // 64 정신력 흡수 - POINT_MANA_BURN_PCT, // 65 + POINT_MANA_BURN_PCT, // 65 마나 번 - /// ؽ ʽ /// + /// 피해시 보너스 /// - POINT_DAMAGE_SP_RECOVER, // 66 ݴ ŷ ȸ Ȯ + POINT_DAMAGE_SP_RECOVER, // 66 공격당할 시 정신력 회복 확률 - POINT_BLOCK, // 67 - POINT_DODGE, // 68 ȸ + POINT_BLOCK, // 67 블럭율 + POINT_DODGE, // 68 회피율 POINT_RESIST_SWORD, // 69 POINT_RESIST_TWOHAND, // 70 POINT_RESIST_DAGGER, // 71 POINT_RESIST_BELL, // 72 POINT_RESIST_FAN, // 73 - POINT_RESIST_BOW, // 74 ȭ : - POINT_RESIST_FIRE, // 75 ȭ : ȭݿ - POINT_RESIST_ELEC, // 76 : ݿ - POINT_RESIST_MAGIC, // 77 : - POINT_RESIST_WIND, // 78 ٶ : ٶݿ + POINT_RESIST_BOW, // 74 화살 저항 : 대미지 감소 + POINT_RESIST_FIRE, // 75 화염 저항 : 화염공격에 대한 대미지 감소 + POINT_RESIST_ELEC, // 76 전기 저항 : 전기공격에 대한 대미지 감소 + POINT_RESIST_MAGIC, // 77 술법 저항 : 모든술법에 대한 대미지 감소 + POINT_RESIST_WIND, // 78 바람 저항 : 바람공격에 대한 대미지 감소 - POINT_REFLECT_MELEE, // 79 ݻ + POINT_REFLECT_MELEE, // 79 공격 반사 - /// Ư ؽ /// - POINT_REFLECT_CURSE, // 80 ݻ - POINT_POISON_REDUCE, // 81 + /// 특수 피해시 /// + POINT_REFLECT_CURSE, // 80 저주 반사 + POINT_POISON_REDUCE, // 81 독데미지 감소 - /// Ҹ /// - POINT_KILL_SP_RECOVER, // 82 Ҹ MP ȸ + /// 적 소멸시 /// + POINT_KILL_SP_RECOVER, // 82 적 소멸시 MP 회복 POINT_EXP_DOUBLE_BONUS, // 83 POINT_GOLD_DOUBLE_BONUS, // 84 POINT_ITEM_DROP_BONUS, // 85 - /// ȸ /// + /// 회복 관련 /// POINT_POTION_BONUS, // 86 POINT_KILL_HP_RECOVERY, // 87 @@ -225,7 +225,7 @@ enum EPointTypes POINT_HIT_HP_RECOVERY, // 100 POINT_HIT_SP_RECOVERY, // 101 - POINT_MANASHIELD, // 102 żȣ ų ȿ + POINT_MANASHIELD, // 102 흑신수호 스킬에 의한 마나쉴드 효과 정도 POINT_PARTY_BUFFER_BONUS, // 103 POINT_PARTY_SKILL_MASTER_BONUS, // 104 @@ -234,56 +234,56 @@ enum EPointTypes POINT_SP_RECOVER_CONTINUE, // 106 POINT_STEAL_GOLD, // 107 - POINT_POLYMORPH, // 108 ȣ - POINT_MOUNT, // 109 Ÿִ ȣ + POINT_POLYMORPH, // 108 변신한 몬스터 번호 + POINT_MOUNT, // 109 타고있는 몬스터 번호 POINT_PARTY_HASTE_BONUS, // 110 POINT_PARTY_DEFENDER_BONUS, // 111 - POINT_STAT_RESET_COUNT, // 112 ܾ Ʈ (1 1Ʈ °) + POINT_STAT_RESET_COUNT, // 112 피의 단약 사용을 통한 스텟 리셋 포인트 (1당 1포인트 리셋가능) POINT_HORSE_SKILL, // 113 - POINT_MALL_ATTBONUS, // 114 ݷ +x% - POINT_MALL_DEFBONUS, // 115 +x% - POINT_MALL_EXPBONUS, // 116 ġ +x% - POINT_MALL_ITEMBONUS, // 117 x/10 - POINT_MALL_GOLDBONUS, // 118 x/10 + POINT_MALL_ATTBONUS, // 114 공격력 +x% + POINT_MALL_DEFBONUS, // 115 방어력 +x% + POINT_MALL_EXPBONUS, // 116 경험치 +x% + POINT_MALL_ITEMBONUS, // 117 아이템 드롭율 x/10배 + POINT_MALL_GOLDBONUS, // 118 돈 드롭율 x/10배 - POINT_MAX_HP_PCT, // 119 ִ +x% - POINT_MAX_SP_PCT, // 120 ִŷ +x% + POINT_MAX_HP_PCT, // 119 최대생명력 +x% + POINT_MAX_SP_PCT, // 120 최대정신력 +x% - POINT_SKILL_DAMAGE_BONUS, // 121 ų *(100+x)% - POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 Ÿ *(100+x)% + POINT_SKILL_DAMAGE_BONUS, // 121 스킬 데미지 *(100+x)% + POINT_NORMAL_HIT_DAMAGE_BONUS, // 122 평타 데미지 *(100+x)% // DEFEND_BONUS_ATTRIBUTES - POINT_SKILL_DEFEND_BONUS, // 123 ų - POINT_NORMAL_HIT_DEFEND_BONUS, // 124 Ÿ + POINT_SKILL_DEFEND_BONUS, // 123 스킬 방어 데미지 + POINT_NORMAL_HIT_DEFEND_BONUS, // 124 평타 방어 데미지 // END_OF_DEFEND_BONUS_ATTRIBUTES // PC_BANG_ITEM_ADD - POINT_PC_BANG_EXP_BONUS, // 125 PC ġ ʽ - POINT_PC_BANG_DROP_BONUS, // 126 PC ӷ ʽ + POINT_PC_BANG_EXP_BONUS, // 125 PC방 전용 경험치 보너스 + POINT_PC_BANG_DROP_BONUS, // 126 PC방 전용 드롭률 보너스 // END_PC_BANG_ITEM_ADD - POINT_RAMADAN_CANDY_BONUS_EXP, // 󸶴 ġ + POINT_RAMADAN_CANDY_BONUS_EXP, // 라마단 사탕 경험치 증가용 - POINT_ENERGY = 128, // 128 + POINT_ENERGY = 128, // 128 기력 - // ui . - // ʱ⸸, Ŭ̾Ʈ ð POINT ϱ ̷ Ѵ. - // β - POINT_ENERGY_END_TIME = 129, // 129 ð + // 기력 ui 용. + // 서버에서 쓰지 않기만, 클라이언트에서 기력의 끝 시간을 POINT로 관리하기 때문에 이렇게 한다. + // 아 부끄럽다 + POINT_ENERGY_END_TIME = 129, // 129 기력 종료 시간 POINT_COSTUME_ATTR_BONUS = 130, POINT_MAGIC_ATT_BONUS_PER = 131, POINT_MELEE_MAGIC_ATT_BONUS_PER = 132, - // ߰ Ӽ - POINT_RESIST_ICE = 133, // ñ : ݿ - POINT_RESIST_EARTH = 134, // : ݿ - POINT_RESIST_DARK = 135, // : ݿ + // 추가 속성 저항 + POINT_RESIST_ICE = 133, // 냉기 저항 : 얼음공격에 대한 대미지 감소 + POINT_RESIST_EARTH = 134, // 대지 저항 : 얼음공격에 대한 대미지 감소 + POINT_RESIST_DARK = 135, // 어둠 저항 : 얼음공격에 대한 대미지 감소 - POINT_RESIST_CRITICAL = 136, // ũƼ : ũƼ Ȯ - POINT_RESIST_PENETRATE = 137, // Ÿ : Ÿ Ȯ + POINT_RESIST_CRITICAL = 136, // 크리티컬 저항 : 상대의 크리티컬 확률을 감소 + POINT_RESIST_PENETRATE = 137, // 관통타격 저항 : 상대의 관통타격 확률을 감소 //POINT_MAX_NUM = 129 common/length.h }; @@ -352,7 +352,7 @@ struct DynamicCharacterPtr { uint32_t id; }; -/* ϴ */ +/* 저장하는 데이터 */ typedef struct character_point { int points[POINT_MAX_NUM]; @@ -375,7 +375,7 @@ typedef struct character_point BYTE skill_group; } CHARACTER_POINT; -/* ʴ ij */ +/* 저장되지 않는 캐릭터 데이터 */ typedef struct character_point_instant { int points[POINT_MAX_NUM]; @@ -397,7 +397,7 @@ typedef struct character_point_instant LPITEM pItems[INVENTORY_AND_EQUIP_SLOT_MAX]; BYTE bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX]; - // ȥ κ丮. + // 용혼석 인벤토리. LPITEM pDSItems[DRAGON_SOUL_INVENTORY_MAX_NUM]; WORD wDSItemGrid[DRAGON_SOUL_INVENTORY_MAX_NUM]; @@ -409,7 +409,7 @@ typedef struct character_point_instant BYTE gm_level; - BYTE bBasePart; // ȣ + BYTE bBasePart; // 평상복 번호 int iMaxStamina; @@ -507,7 +507,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider { protected: ////////////////////////////////////////////////////////////////////////////////// - // Entity + // Entity 관련 virtual void EncodeInsertPacket(LPENTITY entity); virtual void EncodeRemovePacket(LPENTITY entity); ////////////////////////////////////////////////////////////////////////////////// @@ -517,7 +517,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void UpdatePacket(); ////////////////////////////////////////////////////////////////////////////////// - // FSM (Finite State Machine) + // FSM (Finite State Machine) 관련 protected: CStateTemplate m_stateMove; CStateTemplate m_stateBattle; @@ -587,13 +587,13 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetPlayerID() const { return m_dwPlayerID; } void SetPlayerProto(const TPlayerTable * table); - void CreatePlayerProto(TPlayerTable & tab); // + void CreatePlayerProto(TPlayerTable & tab); // 저장 시 사용 void SetProto(const CMob * c_pkMob); WORD GetRaceNum() const; void Save(); // DelayedSave - void SaveReal(); // + void SaveReal(); // 실제 저장 void FlushDelayedSaveItem(); const char * GetName() const; @@ -634,7 +634,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetExp() const { return m_points.exp; } void SetExp(DWORD exp) { m_points.exp = exp; } DWORD GetNextExp() const; - LPCHARACTER DistributeExp(); // Ѵ. + LPCHARACTER DistributeExp(); // 제일 많이 때린 사람을 리턴한다. void DistributeHP(LPCHARACTER pkKiller); void DistributeSP(LPCHARACTER pkKiller, int iMethod=0); @@ -717,14 +717,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetPolymorphItemVnum() const; DWORD GetMonsterDrainSPPoint() const; - void MainCharacterPacket(); // ijͶ ش. + void MainCharacterPacket(); // 내가 메인캐릭터라고 보내준다. void ComputePoints(); void ComputeBattlePoints(); void PointChange(BYTE type, int amount, bool bAmount = false, bool bBroadcast = false); void PointsPacket(); void ApplyPoint(BYTE bApplyType, int iVal); - void CheckMaximumPoints(); // HP, SP ִ밪 ˻ϰ ٸ . + void CheckMaximumPoints(); // HP, SP 등의 현재 값이 최대값 보다 높은지 검사하고 높다면 낮춘다. bool Show(int lMapIndex, int x, int y, int z = INT_MAX, bool bShowSpawnMotion = false); @@ -749,7 +749,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool IsBlockMode(BYTE bFlag) const { return (m_pointsInstant.bBlockMode & bFlag)?true:false; } bool IsPolymorphed() const { return m_dwPolymorphRace>0; } - bool IsPolyMaintainStat() const { return m_bPolyMaintainStat; } // ϴ . + bool IsPolyMaintainStat() const { return m_bPolyMaintainStat; } // 이전 스텟을 유지하는 폴리모프. void SetPolymorph(DWORD dwRaceNum, bool bMaintainStat = false); DWORD GetPolymorphVnum() const { return m_dwPolymorphRace; } int GetPolymorphPower() const; @@ -806,15 +806,15 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void SetNowWalking(bool bWalkFlag); void ResetWalking() { SetNowWalking(m_bWalking); } - bool Goto(int x, int y); // ٷ ̵ Ű ʰ ǥ ġ BLENDING Ų. + bool Goto(int x, int y); // 바로 이동 시키지 않고 목표 위치로 BLENDING 시킨다. void Stop(); - bool CanMove() const; // ̵ ִ°? + bool CanMove() const; // 이동할 수 있는가? void SyncPacket(); - bool Sync(int x, int y); // ޼ҵ ̵ Ѵ ( ǿ ̵ Ұ ) - bool Move(int x, int y); // ˻ϰ Sync ޼ҵ带 ̵ Ѵ. - void OnMove(bool bIsAttack = false); // ϶ Ҹ. Move() ޼ҵ ̿ܿ Ҹ ִ. + bool Sync(int x, int y); // 실제 이 메소드로 이동 한다 (각 종 조건에 의한 이동 불가가 없음) + bool Move(int x, int y); // 조건을 검사하고 Sync 메소드를 통해 이동 한다. + void OnMove(bool bIsAttack = false); // 움직일때 불린다. Move() 메소드 이외에서도 불릴 수 있다. DWORD GetMotionMode() const; float GetMoveMotionSpeed() const; float GetMoveSpeed() const; @@ -825,7 +825,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD GetLastMoveTime() const { return m_dwLastMoveTime; } DWORD GetLastAttackTime() const { return m_dwLastAttackTime; } - void SetLastAttacked(DWORD time); // ݹ ð ġ + void SetLastAttacked(DWORD time); // 마지막으로 공격받은 시간 및 위치를 저장함 bool SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList = true); bool IsSyncOwner(LPCHARACTER ch) const; @@ -852,7 +852,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider float m_fSyncTime; LPCHARACTER m_pkChrSyncOwner; - CHARACTER_LIST m_kLst_pkChrSyncOwned; // SyncOwner ڵ + CHARACTER_LIST m_kLst_pkChrSyncOwned; // 내가 SyncOwner인 자들 PIXEL_POSITION m_posDest; PIXEL_POSITION m_posStart; @@ -875,7 +875,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool m_bStaminaConsume; // End - // Quickslot + // Quickslot 관련 public: void SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos); bool GetQuickslot(BYTE pos, TQuickslot ** ppSlot); @@ -904,7 +904,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void LoadAffect(DWORD dwCount, TPacketAffectElement * pElements); void SaveAffect(); - // Affect loading ΰ? + // Affect loading이 끝난 상태인가? bool IsLoadedAffect() const { return m_bIsLoadedAffect; } bool IsGoodAffect(BYTE bAffectType) const; @@ -930,25 +930,25 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void DenyToParty(LPCHARACTER member); void AcceptToParty(LPCHARACTER member); - /// ڽ Ƽ ٸ character ʴѴ. + /// 자신의 파티에 다른 character 를 초대한다. /** - * @param pchInvitee ʴ character. Ƽ ̾ Ѵ. + * @param pchInvitee 초대할 대상 character. 파티에 참여 가능한 상태이어야 한다. * - * character ° Ƽ ʴϰ ʴ ִ ° ƴ϶ ʴϴ ijͿ شϴ ä ޼ Ѵ. + * 양측 character 의 상태가 파티에 초대하고 초대받을 수 있는 상태가 아니라면 초대하는 캐릭터에게 해당하는 채팅 메세지를 전송한다. */ void PartyInvite(LPCHARACTER pchInvitee); - /// ʴߴ character óѴ. + /// 초대했던 character 의 수락을 처리한다. /** - * @param pchInvitee Ƽ character. Ƽ ̾ Ѵ. + * @param pchInvitee 파티에 참여할 character. 파티에 참여가능한 상태이어야 한다. * - * pchInvitee Ƽ ִ Ȳ ƴ϶ شϴ ä ޼ Ѵ. + * pchInvitee 가 파티에 가입할 수 있는 상황이 아니라면 해당하는 채팅 메세지를 전송한다. */ void PartyInviteAccept(LPCHARACTER pchInvitee); - /// ʴߴ character ʴ źθ óѴ. + /// 초대했던 character 의 초대 거부를 처리한다. /** - * @param [in] dwPID ʴ ߴ character PID + * @param [in] dwPID 초대 했던 character 의 PID */ void PartyInviteDeny(DWORD dwPID); @@ -961,45 +961,45 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider protected: - /// Ƽ Ѵ. + /// 파티에 가입한다. /** - * @param pkLeader Ƽ + * @param pkLeader 가입할 파티의 리더 */ void PartyJoin(LPCHARACTER pkLeader); /** - * Ƽ ڵ. - * Error code ð ΰ 氡(mutable) type (static) type . - * Error code PERR_SEPARATOR 氡 type ̰ type ̴. + * 파티 가입을 할 수 없을 경우의 에러코드. + * Error code 는 시간에 의존적인가에 따라 변경가능한(mutable) type 과 정적(static) type 으로 나뉜다. + * Error code 의 값이 PERR_SEPARATOR 보다 낮으면 변경가능한 type 이고 높으면 정적 type 이다. */ enum PartyJoinErrCode { - PERR_NONE = 0, ///< ó - PERR_SERVER, ///< Ƽ ó Ұ - PERR_DUNGEON, ///< ijͰ - PERR_OBSERVER, ///< - PERR_LVBOUNDARY, ///< ijͿ ̰ - PERR_LOWLEVEL, ///< Ƽ ְ 30 - PERR_HILEVEL, ///< Ƽ 30 - PERR_ALREADYJOIN, ///< Ƽ ijͰ ̹ Ƽ - PERR_PARTYISFULL, ///< Ƽο ʰ + PERR_NONE = 0, ///< 처리성공 + PERR_SERVER, ///< 서버문제로 파티관련 처리 불가 + PERR_DUNGEON, ///< 캐릭터가 던전에 있음 + PERR_OBSERVER, ///< 관전모드임 + PERR_LVBOUNDARY, ///< 상대 캐릭터와 레벨차이가 남 + PERR_LOWLEVEL, ///< 상대파티의 최고레벨보다 30레벨 낮음 + PERR_HILEVEL, ///< 상대파티의 최저레벨보다 30레벨 높음 + PERR_ALREADYJOIN, ///< 파티가입 대상 캐릭터가 이미 파티중 + PERR_PARTYISFULL, ///< 파티인원 제한 초과 PERR_SEPARATOR, ///< Error type separator. - PERR_DIFFEMPIRE, ///< ijͿ ٸ - PERR_MAX ///< Error code ְġ. տ Error code ߰Ѵ. + PERR_DIFFEMPIRE, ///< 상대 캐릭터와 다른 제국임 + PERR_MAX ///< Error code 최고치. 이 앞에 Error code 를 추가한다. }; - /// Ƽ ̳ Ἲ ˻Ѵ. + /// 파티 가입이나 결성 가능한 조건을 검사한다. /** - * @param pchLeader Ƽ leader ̰ų ʴ character - * @param pchGuest ʴ޴ character - * @return PartyJoinErrCode ȯ ִ. + * @param pchLeader 파티의 leader 이거나 초대한 character + * @param pchGuest 초대받는 character + * @return 모든 PartyJoinErrCode 가 반환될 수 있다. */ static PartyJoinErrCode IsPartyJoinableCondition(const LPCHARACTER pchLeader, const LPCHARACTER pchGuest); - /// Ƽ ̳ Ἲ ˻Ѵ. + /// 파티 가입이나 결성 가능한 동적인 조건을 검사한다. /** - * @param pchLeader Ƽ leader ̰ų ʴ character - * @param pchGuest ʴ޴ character - * @return mutable type code ȯѴ. + * @param pchLeader 파티의 leader 이거나 초대한 character + * @param pchGuest 초대받는 character + * @return mutable type 의 code 만 반환한다. */ static PartyJoinErrCode IsPartyJoinableMutableCondition(const LPCHARACTER pchLeader, const LPCHARACTER pchGuest); @@ -1008,11 +1008,11 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider LPEVENT m_pkPartyRequestEvent; /** - * Ƽû Event map. - * key: ʴ ij PID - * value: event pointer + * 파티초청 Event map. + * key: 초대받은 캐릭터의 PID + * value: event의 pointer * - * ʴ ij͵鿡 event map. + * 초대한 캐릭터들에 대한 event map. */ typedef std::map< DWORD, LPEVENT > EventMap; EventMap m_PartyInviteEventMap; @@ -1046,7 +1046,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //////////////////////////////////////////////////////////////////////////////////////// // Item related public: - bool CanHandleItem(bool bSkipRefineCheck = false, bool bSkipObserver = false); // ִ°? + bool CanHandleItem(bool bSkipRefineCheck = false, bool bSkipObserver = false); // 아이템 관련 행위를 할 수 있는가? bool IsItemLoaded() const { return m_bItemLoaded; } void SetItemLoaded() { m_bItemLoaded = true; } @@ -1061,14 +1061,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider LPITEM GetWear(BYTE bCell) const; // MYSHOP_PRICE_LIST - void UseSilkBotary(void); /// + void UseSilkBotary(void); /// 비단 보따리 아이템의 사용 - /// DB ij÷ ޾ƿ Ʈ ϰ óѴ. + /// DB 캐시로 부터 받아온 가격정보 리스트를 유저에게 전송하고 보따리 아이템 사용을 처리한다. /** - * @param [in] p Ʈ Ŷ + * @param [in] p 가격정보 리스트 패킷 * - * ó UseSilkBotary DB ij÷ Ʈ ûϰ - * Լ ܺ óѴ. + * 접속한 후 처음 비단 보따리 아이템 사용 시 UseSilkBotary 에서 DB 캐시로 가격정보 리스트를 요청하고 + * 응답받은 시점에 이 함수에서 실제 비단보따리 사용을 처리한다. */ void UseSilkBotaryReal(const TPacketMyshopPricelistHeader* p); // END_OF_MYSHOP_PRICE_LIST @@ -1114,10 +1114,10 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool EquipItem(LPITEM item, int iCandidateCell = -1); bool UnequipItem(LPITEM item); - // item ִ Ȯϰ, Ұ ϴٸ ijͿ ˷ִ Լ + // 현재 item을 착용할 수 있는 지 확인하고, 불가능 하다면 캐릭터에게 이유를 알려주는 함수 bool CanEquipNow(const LPITEM item, const TItemPos& srcCell = NPOS, const TItemPos& destCell = NPOS); - // item ִ Ȯϰ, Ұ ϴٸ ijͿ ˷ִ Լ + // 착용중인 item을 벗을 수 있는 지 확인하고, 불가능 하다면 캐릭터에게 이유를 알려주는 함수 bool CanUnequipNow(const LPITEM item, const TItemPos& srcCell = NPOS, const TItemPos& destCell = NPOS); bool SwapItem(BYTE bCell, BYTE bDestCell); @@ -1149,14 +1149,14 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider protected: - /// ۿ Ѵ. + /// 한 아이템에 대한 가격정보를 전송한다. /** - * @param [in] dwItemVnum vnum - * @param [in] dwItemPrice + * @param [in] dwItemVnum 아이템 vnum + * @param [in] dwItemPrice 아이템 가격 */ void SendMyShopPriceListCmd(DWORD dwItemVnum, DWORD dwItemPrice); - bool m_bNoOpenedShop; ///< ̹ λ ִ ( ٸ true) + bool m_bNoOpenedShop; ///< 이번 접속 후 개인상점을 연 적이 있는지의 여부(열었던 적이 없다면 true) bool m_bItemLoaded; int m_iRefineAdditionalCell; @@ -1170,7 +1170,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void SetGold(INT gold) { m_points.gold = gold; } bool DropGold(INT gold); INT GetAllowedGold() const; - void GiveGold(INT iAmount); // Ƽ Ƽ й, α ó + void GiveGold(INT iAmount); // 파티가 있으면 파티 분배, 로그 등의 처리 // End of Money //////////////////////////////////////////////////////////////////////////////////////// @@ -1236,9 +1236,9 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool CanFight() const; bool CanBeginFight() const; - void BeginFight(LPCHARACTER pkVictim); // pkVictimr ο Ѵ. (, ֳ üũϷ CanBeginFight ) + void BeginFight(LPCHARACTER pkVictim); // pkVictimr과 싸우기 시작한다. (강제적임, 시작할 수 있나 체크하려면 CanBeginFight을 사용) - bool CounterAttack(LPCHARACTER pkChr); // ݰϱ (͸ ) + bool CounterAttack(LPCHARACTER pkChr); // 반격하기 (몬스터만 사용) bool IsStun() const; void Stun(); @@ -1268,7 +1268,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void UpdateAlignment(int iAmount); int GetAlignment() const; - //ġ + //선악치 얻기 int GetRealAlignment() const; void ShowAlignment(bool bShow); @@ -1317,7 +1317,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider DWORD m_dwFlyTargetID; std::vector m_vec_dwFlyTargets; - TDamageMap m_map_kDamage; //  ijͰ 󸶸ŭ ־°? + TDamageMap m_map_kDamage; // 어떤 캐릭터가 나에게 얼마만큼의 데미지를 주었는가? // AttackLog m_kAttackLog; DWORD m_dwKillerPID; @@ -1340,8 +1340,8 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider BYTE GetDropMetinStonePct() const { return m_bDropMetinStonePct; } protected: - LPCHARACTER m_pkChrStone; // - CHARACTER_SET m_set_pkChrSpawnedBy; // + LPCHARACTER m_pkChrStone; // 나를 스폰한 돌 + CHARACTER_SET m_set_pkChrSpawnedBy; // 내가 스폰한 놈들 DWORD m_dwDropMetinStone; BYTE m_bDropMetinStonePct; // End of Stone @@ -1399,7 +1399,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider private: bool m_bDisableCooltime; - DWORD m_dwLastSkillTime; ///< skill ð(millisecond). + DWORD m_dwLastSkillTime; ///< 마지막으로 skill 을 쓴 시간(millisecond). // End of Skill // MOB_SKILL @@ -1456,10 +1456,10 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider // AI related public: void AssignTriggers(const TMobTable * table); - LPCHARACTER GetVictim() const; // + LPCHARACTER GetVictim() const; // 공격할 대상 리턴 void SetVictim(LPCHARACTER pkVictim); LPCHARACTER GetNearestVictim(LPCHARACTER pkChr); - LPCHARACTER GetProtege() const; // ȣؾ + LPCHARACTER GetProtege() const; // 보호해야 할 대상 리턴 bool Follow(LPCHARACTER pkChr, float fMinimumDistance = 150.0f); bool Return(); @@ -1483,8 +1483,8 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //////////////////////////////////////////////////////////////////////////////////////// // Target protected: - LPCHARACTER m_pkChrTarget; // Ÿ - CHARACTER_SET m_set_pkChrTargetedBy; // Ÿ ִ + LPCHARACTER m_pkChrTarget; // 내 타겟 + CHARACTER_SET m_set_pkChrTargetedBy; // 나를 타겟으로 가지고 있는 사람들 public: void SetTarget(LPCHARACTER pkChrTarget); @@ -1505,19 +1505,19 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void ChangeSafeboxSize(BYTE bSize); void CloseSafebox(); - /// â û + /// 창고 열기 요청 /** - * @param [in] pszPassword 1 ̻ 6 â йȣ + * @param [in] pszPassword 1자 이상 6자 이하의 창고 비밀번호 * - * DB â⸦ ûѴ. - * â ߺ ϸ, ֱ â ð 10 ̳ Ѵ. + * DB 에 창고열기를 요청한다. + * 창고는 중복으로 열지 못하며, 최근 창고를 닫은 시간으로 부터 10초 이내에는 열 지 못한다. */ void ReqSafeboxLoad(const char* pszPassword); - /// â û + /// 창고 열기 요청의 취소 /** - * ReqSafeboxLoad ȣϰ CloseSafebox ʾ Լ ȣϸ â ִ. - * â û DB ޾ Լ ؼ û ְ ش. + * ReqSafeboxLoad 를 호출하고 CloseSafebox 하지 않았을 때 이 함수를 호출하면 창고를 열 수 있다. + * 창고열기의 요청이 DB 서버에서 실패응답을 받았을 경우 이 함수를 사용해서 요청을 할 수 있게 해준다. */ void CancelSafeboxLoad( void ) { m_bOpeningSafebox = false; } @@ -1535,7 +1535,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider CSafebox * m_pkSafebox; int m_iSafeboxSize; int m_iSafeboxLoadTime; - bool m_bOpeningSafebox; ///< â û ̰ų ִ° , true ṵ̂ų . + bool m_bOpeningSafebox; ///< 창고가 열기 요청 중이거나 열려있는가 여부, true 일 경우 열기요청이거나 열려있음. CSafebox * m_pkMall; int m_iMallLoadTime; @@ -1569,7 +1569,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void HorseSummon(bool bSummon, bool bFromFar = false, DWORD dwVnum = 0, const char* name = 0); - LPCHARACTER GetHorse() const { return m_chHorse; } // ȯ + LPCHARACTER GetHorse() const { return m_chHorse; } // 현재 소환중인 말 LPCHARACTER GetRider() const; // rider on horse void SetRider(LPCHARACTER ch); @@ -1631,7 +1631,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //////////////////////////////////////////////////////////////////////////////////////// // Resists & Proofs public: - bool CannotMoveByAffect() const; // Ư ȿ ΰ? + bool CannotMoveByAffect() const; // 특정 효과에 의해 움직일 수 없는 상태인가? bool IsImmune(DWORD dwImmuneFlag); void SetImmuneFlag(DWORD dw) { m_pointsInstant.dwImmuneFlag = dw; } @@ -1671,7 +1671,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider void UpdateStateMachine(DWORD dwPulse); void SetNextStatePulse(int iPulseNext); - // ij νϽ Ʈ Լ. ̻ ӱ CFSM::Update Լ ȣϰų UpdateStateMachine Լ ߴµ, Ʈ Լ ߰. + // 캐릭터 인스턴스 업데이트 함수. 기존엔 이상한 상속구조로 CFSM::Update 함수를 호출하거나 UpdateStateMachine 함수를 사용했는데, 별개의 업데이트 함수 추가함. void UpdateCharacter(DWORD dwPulse); protected: @@ -1741,9 +1741,9 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider int m_aiPremiumTimes[PREMIUM_MAX_NUM]; // CHANGE_ITEM_ATTRIBUTES - static const DWORD msc_dwDefaultChangeItemAttrCycle; ///< Ʈ Ӽ ֱ - static const char msc_szLastChangeItemAttrFlag[]; ///< ֱ Ӽ ð Quest Flag ̸ - static const char msc_szChangeItemAttrCycleFlag[]; ///< Ӽ ֱ Quest Flag ̸ + static const DWORD msc_dwDefaultChangeItemAttrCycle; ///< 디폴트 아이템 속성변경 가능 주기 + static const char msc_szLastChangeItemAttrFlag[]; ///< 최근 아이템 속성을 변경한 시간의 Quest Flag 이름 + static const char msc_szChangeItemAttrCycleFlag[]; ///< 아이템 속성병경 가능 주기의 Quest Flag 이름 // END_OF_CHANGE_ITEM_ATTRIBUTES // PC_BANG_ITEM_ADD @@ -1824,7 +1824,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider int GetMyShopTime() const { return m_iMyShopTime; } void SetMyShopTime() { m_iMyShopTime = thecore_pulse(); } - // Hack üũ. + // Hack 방지를 위한 체크. bool IsHack(bool bSendMsg = true, bool bCheckShopOwner = true, int limittime = g_nPortalLimitTime); // MONARCH @@ -1874,9 +1874,9 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool IsSiegeNPC() const; private: - //߱ - //18 ̸ - //3ð : 50 % 5 ð 0% + //중국 전용 + //18세 미만 전용 + //3시간 : 50 % 5 시간 0% e_overtime m_eOverTime; public: @@ -1952,7 +1952,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider typedef std::map TMapBuffOnAttrs; TMapBuffOnAttrs m_map_buff_on_attrs; - // : Ȱ ׽Ʈ Ͽ. + // 무적 : 원활한 테스트를 위하여. public: void SetArmada() { cannot_dead = true; } void ResetArmada() { cannot_dead = false; } @@ -1967,7 +1967,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool IsPet() { return m_bIsPet; } #endif - // . + //최종 데미지 보정. private: float m_fAttMul; float m_fDamMul; @@ -1980,7 +1980,7 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider private: bool IsValidItemPosition(TItemPos Pos) const; - // Ŷ ӽ + //독일 선물 기능 패킷 임시 저장 private: unsigned int itemAward_vnum = 0; char itemAward_cmd[20] = ""; @@ -1994,10 +1994,10 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider //void SetItemAward_flag(bool flag) { itemAward_flag = flag; } public: - //ȥ + //용혼석 - // ij affect, quest load DZ DragonSoul_Initialize ȣϸ ȵȴ. - // affect εǾ LoadAffect ȣ. + // 캐릭터의 affect, quest가 load 되기 전에 DragonSoul_Initialize를 호출하면 안된다. + // affect가 가장 마지막에 로드되어 LoadAffect에서 호출함. void DragonSoul_Initialize(); bool DragonSoul_IsQualified() const; @@ -2008,17 +2008,17 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool DragonSoul_ActivateDeck(int deck_idx); void DragonSoul_DeactivateAll(); - // ݵ ClearItem ҷ Ѵ. - // ֳϸ.... - // ȥ ϳ ϳ deactivate active ȥ ִ Ȯϰ, - // active ȥ ϳ ٸ, ij ȥ affect, Ȱ ¸ Ѵ. + // 반드시 ClearItem 전에 불러야 한다. + // 왜냐하면.... + // 용혼석 하나 하나를 deactivate할 때마다 덱에 active인 용혼석이 있는지 확인하고, + // active인 용혼석이 하나도 없다면, 캐릭터의 용혼석 affect와, 활성 상태를 제거한다. // - // ClearItem , ijͰ ϰ ִ unequipϴ ٶ, - // ȥ Affect ŵǰ, ᱹ α , ȥ Ȱȭ ʴ´. - // (Unequip α׾ƿ , ƴ .) - // ȥ deactivateŰ ij ȥ Ȱ ´ ǵ帮 ʴ´. + // 하지만 ClearItem 시, 캐릭터가 착용하고 있는 모든 아이템을 unequip하는 바람에, + // 용혼석 Affect가 제거되고, 결국 로그인 시, 용혼석이 활성화되지 않는다. + // (Unequip할 때에는 로그아웃 상태인지, 아닌지 알 수 없다.) + // 용혼석만 deactivate시키고 캐릭터의 용혼석 덱 활성 상태는 건드리지 않는다. void DragonSoul_CleanUp(); - // ȥ ȭâ + // 용혼석 강화창 public: bool DragonSoul_RefineWindow_Open(LPENTITY pEntity); bool DragonSoul_RefineWindow_Close(); @@ -2026,8 +2026,8 @@ class CHARACTER : public CEntity, public CFSM, public CHorseRider bool DragonSoul_RefineWindow_CanRefine(); private: - // SyncPosition ǿϿ Ÿ ̻ ϱ Ͽ, - // SyncPosition Ͼ . + // SyncPosition을 악용하여 타유저를 이상한 곳으로 보내는 핵 방어하기 위하여, + // SyncPosition이 일어날 때를 기록. timeval m_tvLastSyncTime; int m_iSyncHackCount; public: diff --git a/src/game/src/char_manager.h b/src/game/src/char_manager.h index 7b1fc0b..517ad28 100644 --- a/src/game/src/char_manager.h +++ b/src/game/src/char_manager.h @@ -24,7 +24,7 @@ class CHARACTER_MANAGER : public singleton void Destroy(); - void GracefulShutdown(); // ˴ٿ . PC Ű Destroy Ѵ. + void GracefulShutdown(); // 정상적 셧다운할 때 사용. PC를 모두 저장시키고 Destroy 한다. DWORD AllocVID(); @@ -56,11 +56,11 @@ class CHARACTER_MANAGER : public singleton bool AddToStateList(LPCHARACTER ch); void RemoveFromStateList(LPCHARACTER ch); - // DelayedSave:  ƾ ؾ ϸ - // ʹ Ƿ " Ѵ" ǥø صΰ - // (: 1 frame) Ŀ Ų. + // DelayedSave: 어떠한 루틴 내에서 저장을 해야 할 짓을 많이 하면 저장 + // 쿼리가 너무 많아지므로 "저장을 한다" 라고 표시만 해두고 잠깐 + // (예: 1 frame) 후에 저장시킨다. void DelayedSave(LPCHARACTER ch); - bool FlushDelayedSave(LPCHARACTER ch); // Delayed Ʈ ִٸ Ѵ. ó . + bool FlushDelayedSave(LPCHARACTER ch); // Delayed 리스트에 있다면 지우고 저장한다. 끊김 처리시 사용 됨. void ProcessDelayedSave(); template Func for_each_pc(Func f); @@ -124,7 +124,7 @@ class CHARACTER_MANAGER : public singleton NAME_MAP m_map_pkPCChr; char dummy1[1024]; // memory barrier - CHARACTER_SET m_set_pkChrState; // FSM ư ִ + CHARACTER_SET m_set_pkChrState; // FSM이 돌아가고 있는 놈들 CHARACTER_SET m_set_pkChrForDelayedSave; CHARACTER_SET m_set_pkChrMonsterLog; diff --git a/src/game/src/cmd.h b/src/game/src/cmd.h index 562c35e..0305ebc 100644 --- a/src/game/src/cmd.h +++ b/src/game/src/cmd.h @@ -51,11 +51,11 @@ enum SCMD_XMAS }; extern void Shutdown(int iSec); -extern void SendNotice(const char * c_pszBuf); // Ӽ -extern void SendLog(const char * c_pszBuf); // ڿԸ -extern void BroadcastNotice(const char * c_pszBuf); // -extern void SendNoticeMap(const char* c_pszBuf, int nMapIndex, bool bBigFont); // ʿ -extern void SendMonarchNotice(BYTE bEmpire, const char * c_pszBuf); // +extern void SendNotice(const char * c_pszBuf); // 이 게임서버에만 공지 +extern void SendLog(const char * c_pszBuf); // 운영자에게만 공지 +extern void BroadcastNotice(const char * c_pszBuf); // 전 서버에 공지 +extern void SendNoticeMap(const char* c_pszBuf, int nMapIndex, bool bBigFont); // 지정 맵에만 공지 +extern void SendMonarchNotice(BYTE bEmpire, const char * c_pszBuf); // 같은 제국에게 공지 // LUA_ADD_BGM_INFO void CHARACTER_SetBGMVolumeEnable(); diff --git a/src/game/src/config.h b/src/game/src/config.h index 685b95a..b610fe7 100644 --- a/src/game/src/config.h +++ b/src/game/src/config.h @@ -35,7 +35,7 @@ extern bool china_event_server; extern bool g_bNoMoreClient; extern bool g_bNoRegen; -extern bool g_bTrafficProfileOn; ///< true ̸ TrafficProfiler Ҵ. +extern bool g_bTrafficProfileOn; ///< true 이면 TrafficProfiler 를 켠다. extern BYTE g_bChannel; @@ -99,8 +99,8 @@ extern int VIEW_RANGE; extern int VIEW_BONUS_RANGE; extern bool g_bCheckMultiHack; -extern bool g_protectNormalPlayer; // ڰ "ȭ" Ϲ -extern bool g_noticeBattleZone; // ߸뿡 ϸ ȳ޼ ˷ +extern bool g_protectNormalPlayer; // 범법자가 "평화모드" 인 일반유저를 공격하지 못함 +extern bool g_noticeBattleZone; // 중립지대에 입장하면 안내메세지를 알려줌 extern DWORD g_GoldDropTimeLimitValue; diff --git a/src/game/src/constants.h b/src/game/src/constants.h index 0cb11d2..d3bf88f 100644 --- a/src/game/src/constants.h +++ b/src/game/src/constants.h @@ -13,7 +13,7 @@ enum EMonsterChatState typedef struct SMobRankStat { - int iGoldPercent; // Ȯ + int iGoldPercent; // 돈이 나올 확률 } TMobRankStat; typedef struct SMobStat @@ -124,7 +124,7 @@ extern const int aiMobResistsApplyIdx[MOB_RESISTS_MAX_NUM]; extern const int aSkillAttackAffectProbByRank[MOB_RANK_MAX_NUM]; -extern const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL]; // 1 +extern const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL]; // 1개까지 extern const int aiItemMagicAttributePercentLow[ITEM_ATTRIBUTE_MAX_LEVEL]; extern const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM]; diff --git a/src/game/src/cube.h b/src/game/src/cube.h index dffa9c4..c2db176 100644 --- a/src/game/src/cube.h +++ b/src/game/src/cube.h @@ -2,7 +2,7 @@ * date : 2006.11.20 * file : cube.h * author : mhh - * description : ťý + * description : 큐브시스템 */ #ifndef _cube_h_ @@ -30,7 +30,7 @@ struct CUBE_DATA std::vector item; std::vector reward; int percent; - unsigned int gold; // ʿ ݾ + unsigned int gold; // 제조시 필요한 금액 CUBE_DATA(); diff --git a/src/game/src/db.h b/src/game/src/db.h index 21db8fc..4c3ea8f 100644 --- a/src/game/src/db.h +++ b/src/game/src/db.h @@ -105,7 +105,7 @@ class DBManager : public singleton void FlushBilling(bool bForce=false); void CheckBilling(); - void StopAllBilling(); // 20050503.ipkn.DB-AUTH ̺ (翬 ) + void StopAllBilling(); // 20050503.ipkn.DB-AUTH 접속 종료시 빌링 테이블 모두 지우기 (재연결시 복구함) DWORD CountQuery() { return m_sql.CountQuery(); } DWORD CountQueryResult() { return m_sql.CountResult(); } @@ -119,8 +119,8 @@ class DBManager : public singleton const std::string & GetDBString(const std::string& key); const std::vector & GetGreetMessage(); - template void FuncQuery(Functor f, const char * c_pszFormat, ...); // fڷ ȣ (SQLMsg *) ˾Ƽ - template void FuncAfterQuery(Functor f, const char * c_pszFormat, ...); // f ȣ void f(void) + template void FuncQuery(Functor f, const char * c_pszFormat, ...); // 결과를 f인자로 호출함 (SQLMsg *) 알아서 해제됨 + template void FuncAfterQuery(Functor f, const char * c_pszFormat, ...); // 끝나고 나면 f가 호출됨 void f(void) 형태 size_t EscapeString(char* dst, size_t dstSize, const char *src, size_t srcSize); diff --git a/src/game/src/desc.h b/src/game/src/desc.h index b2f4a1d..b7e31ef 100644 --- a/src/game/src/desc.h +++ b/src/game/src/desc.h @@ -47,14 +47,14 @@ class CLoginKey }; -// sequence ã Ÿ +// sequence 버그 찾기용 데이타 struct seq_t { BYTE hdr; BYTE seq; }; typedef std::vector seq_vector_t; -// sequence ã Ÿ +// sequence 버그 찾기용 데이타 extern void DescReadHandler(bufferevent *bev, void *ctx); extern void DescWriteHandler(bufferevent *bev, void *ctx); @@ -109,7 +109,7 @@ class DESC bool IsPhase(int phase) const { return m_iPhase == phase ? true : false; } - // ڵ彦ũ (ð ȭ) + // 핸드쉐이크 (시간 동기화) void StartHandshake(DWORD _dw); void SendHandshake(DWORD dwCurTime, LONG lNewDelta); bool HandshakeProcess(DWORD dwTime, LONG lDelta, bool bInfiniteRetry=false); @@ -118,7 +118,7 @@ class DESC DWORD GetHandshake() const { return m_dwHandshake; } DWORD GetClientTime(); - // + // 제국 BYTE GetEmpire(); // for p2p @@ -127,7 +127,7 @@ class DESC void DisconnectOfSameLogin(); void SetAdminMode(); - bool IsAdminMode(); // Handshake ֳ? + bool IsAdminMode(); // Handshake 에서 어드민 명령을 쓸수있나? void SetPong(bool b); bool IsPong(); @@ -200,7 +200,7 @@ class DESC WORD m_wP2PPort; BYTE m_bP2PChannel; - bool m_bAdminMode; // Handshake ֳ? + bool m_bAdminMode; // Handshake 에서 어드민 명령을 쓸수있나? bool m_bPong; int m_iCurrentSequence; @@ -252,7 +252,7 @@ class DESC void ChatPacket(BYTE type, const char * format, ...); - /* ã ڵ */ + /* 시퀀스 버그 찾기용 코드 */ public: seq_vector_t m_seq_vector; void push_seq (BYTE hdr, BYTE seq); diff --git a/src/game/src/dungeon.h b/src/game/src/dungeon.h index 4743c6a..6bf90cd 100644 --- a/src/game/src/dungeon.h +++ b/src/game/src/dungeon.h @@ -38,8 +38,8 @@ class CDungeon void IncMonster() { m_iMonsterCount++; SPDLOG_DEBUG("MonsterCount {}", m_iMonsterCount); } void DecMonster() { m_iMonsterCount--; CheckEliminated(); } - int CountMonster() { return m_iMonsterCount; } // ͷ - int CountRealMonster(); // ʻ ִ + int CountMonster() { return m_iMonsterCount; } // 데이터로 리젠한 몬스터의 수 + int CountRealMonster(); // 실제로 맵상에 있는 몬스터 void IncPartyMember(LPPARTY pParty, LPCHARACTER ch); void DecPartyMember(LPPARTY pParty, LPCHARACTER ch); @@ -103,7 +103,7 @@ class CDungeon void SetFlag(std::string name, int value); void SetWarpLocation (int map_index, int x, int y); - // item group item_vnum item_count . + // item group은 item_vnum과 item_count로 구성. typedef std::vector > ItemGroup; void CreateItemGroup (std::string& group_name, ItemGroup& item_group); const ItemGroup* GetItemGroup (std::string& group_name); @@ -142,7 +142,7 @@ class CDungeon bool m_bExitAllAtEliminate; bool m_bWarpAtEliminate; - // ϴ ġ + // 적 전멸시 워프하는 위치 int m_iWarpDelay; int m_lWarpMapIndex; int m_lWarpX; @@ -163,9 +163,9 @@ class CDungeon friend EVENTFUNC(dungeon_exit_all_event); friend EVENTFUNC(dungeon_jump_to_event); - // Ƽ ӽ . - // m_map_pkParty νϿ ٰ ǴϿ, - // ӽ÷ Ƽ ϴ . + // 파티 단위 던전 입장을 위한 임시 변수. + // m_map_pkParty는 관리가 부실하여 사용할 수 없다고 판단하여, + // 임시로 한 파티에 대한 관리를 하는 변수 생성. LPPARTY m_pParty; public : diff --git a/src/game/src/entity.h b/src/game/src/entity.h index a314f1e..eca7644 100644 --- a/src/game/src/entity.h +++ b/src/game/src/entity.h @@ -28,7 +28,7 @@ class CEntity void ViewCleanup(); void ViewInsert(LPENTITY entity, bool recursive = true); void ViewRemove(LPENTITY entity, bool recursive = true); - void ViewReencode(); // Entity Ŷ ٽ . + void ViewReencode(); // 주위 Entity에 패킷을 다시 보낸다. int GetViewAge() const { return m_iViewAge; } diff --git a/src/game/src/event.h b/src/game/src/event.h index ee1abcf..32b8025 100644 --- a/src/game/src/event.h +++ b/src/game/src/event.h @@ -1,8 +1,8 @@ /* * Filename: event.h - * Description: ̺Ʈ (timed event) + * Description: 이벤트 관련 (timed event) * - * Author: (aka. , Cronan), ۿ (aka. myevan, ڷ) + * Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루) */ #ifndef __INC_LIBTHECORE_EVENT_H__ #define __INC_LIBTHECORE_EVENT_H__ @@ -81,10 +81,10 @@ extern int event_count(); #define event_create(func, info, when) event_create_ex(func, info, when) extern LPEVENT event_create_ex(TEVENTFUNC func, event_info_data* info, int when); -extern void event_cancel(LPEVENT * event); // ̺Ʈ -extern int event_processing_time(LPEVENT event); // ð -extern int event_time(LPEVENT event); // ð -extern void event_reset_time(LPEVENT event, int when); // ð +extern void event_cancel(LPEVENT * event); // 이벤트 취소 +extern int event_processing_time(LPEVENT event); // 수행 시간 리턴 +extern int event_time(LPEVENT event); // 남은 시간 리턴 +extern void event_reset_time(LPEVENT event, int when); // 실행 시간 재 설정 extern void event_set_verbose(int level); extern event_info_data* FindEventInfo(DWORD dwID); diff --git a/src/game/src/exchange.h b/src/game/src/exchange.h index 9f6e02b..bf9c13c 100644 --- a/src/game/src/exchange.h +++ b/src/game/src/exchange.h @@ -35,7 +35,7 @@ class CExchange bool CheckSpace(); private: - CExchange * m_pCompany; // CExchange + CExchange * m_pCompany; // 상대방의 CExchange 포인터 LPCHARACTER m_pOwner; diff --git a/src/game/src/group_text_parse_tree.h b/src/game/src/group_text_parse_tree.h index f12413b..206a8be 100644 --- a/src/game/src/group_text_parse_tree.h +++ b/src/game/src/group_text_parse_tree.h @@ -45,15 +45,15 @@ public: int GetRowCount(); template - bool GetValue(size_t i, const std::string & c_rstrColKey, T& tValue) const; // n°(map ִ , txt ʹ ) row Ư ÷ ȯϴ Լ. - // ̱ , Ǹ Լ. + bool GetValue(size_t i, const std::string & c_rstrColKey, T& tValue) const; // n번째(map에 들어있는 순서일 뿐, txt의 순서와는 관계 없음) row의 특정 컬럼의 값을 반환하는 함수. + // 이질적이긴 하지만, 편의를 위한 함수. template bool GetValue(const std::string & c_rstrRowKey, const std::string & c_rstrColKey, T& tValue) const; template bool GetValue(const std::string & c_rstrRowKey, int index, T& tValue) const; bool GetRow(const std::string & c_rstrKey, OUT const CGroupNodeRow ** ppRow) const; - // , idx txt . + // 참고로, idx랑 txt에 쓰여진 순서랑 관계 없음. bool GetRow(int idx, OUT const CGroupNodeRow ** ppRow) const; bool GetGroupRow(const std::string& stGroupName, const std::string& stRow, OUT const CGroupNode::CGroupNodeRow ** ppRow) const; @@ -184,7 +184,7 @@ bool CGroupNode::GetGroupValue(const std::string& stGroupName, const std::string if (pChildGroup->GetValue(stRow, iCol, tValue)) return true; } - // default group 캽. + // default group을 살펴봄. pChildGroup = GetChildNode("default"); if (NULL != pChildGroup) { @@ -203,7 +203,7 @@ bool CGroupNode::GetGroupValue(const std::string& stGroupName, const std::string if (pChildGroup->GetValue(stRow, stCol, tValue)) return true; } - // default group 캽. + // default group을 살펴봄. pChildGroup = GetChildNode("default"); if (NULL != pChildGroup) { diff --git a/src/game/src/guild.h b/src/game/src/guild.h index b9e0aa9..7f17d81 100644 --- a/src/game/src/guild.h +++ b/src/game/src/guild.h @@ -29,12 +29,12 @@ struct SGuildMaster typedef struct SGuildMember { - DWORD pid; // player ̺ id; primary key - BYTE grade; // ÷̾ 1 to 15 (1 ¯) + DWORD pid; // player 테이블의 id; primary key + BYTE grade; // 길드상의 플레이어의 계급 1 to 15 (1이 짱) BYTE is_general; BYTE job; BYTE level; - DWORD offer_exp; // ġ + DWORD offer_exp; // 공헌한 경험치 BYTE _dummy; std::string name; @@ -72,7 +72,7 @@ typedef struct packet_guild_sub_info typedef struct SGuildGrade { - char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 , ̸ + char grade_name[GUILD_GRADE_NAME_MAX_LEN+1]; // 8+1 길드장, 길드원 등의 이름 BYTE auth_flag; } TGuildGrade; @@ -256,7 +256,7 @@ class CGuild bool ChargeSP(LPCHARACTER ch, int iSP); void Chat(const char* c_pszText); - void P2PChat(const char* c_pszText); // ä + void P2PChat(const char* c_pszText); // 길드 채팅 void SkillUsableChange(DWORD dwSkillVnum, bool bUsable); void AdvanceLevel(int iLevel); @@ -266,7 +266,7 @@ class CGuild void RequestWithdrawMoney(LPCHARACTER ch, int iGold); void RecvMoneyChange(int iGold); - void RecvWithdrawMoneyGive(int iChangeGold); // bGive==1 ̸ 忡 ִ õϰ и 񿡰 + void RecvWithdrawMoneyGive(int iChangeGold); // bGive==1 이면 길드장에게 주는 걸 시도하고 성공실패를 디비에게 보낸다 int GetGuildMoney() const { return m_data.gold; } @@ -277,7 +277,7 @@ class CGuild int GetGuildWarState(DWORD guild_id); bool CanStartWar(BYTE bGuildWarType); DWORD GetWarStartTime(DWORD guild_id); - bool UnderWar(DWORD guild_id); // ΰ? + bool UnderWar(DWORD guild_id); // 전쟁중인가? DWORD UnderAnyWar(BYTE bType = GUILD_WAR_TYPE_MAX_NUM); // War map relative @@ -320,26 +320,26 @@ class CGuild bool HasLand(); // GUILD_JOIN_BUG_FIX - /// character 尡 ʴ븦 Ѵ. + /// character 에게 길드가입 초대를 한다. /** - * @param pchInviter ʴ character. - * @param pchInvitee ʴ character. + * @param pchInviter 초대한 character. + * @param pchInvitee 초대할 character. * - * ʴϰų ¶ شϴ ä ޼ Ѵ. + * 초대하거나 받을수 없는 상태라면 해당하는 채팅 메세지를 전송한다. */ void Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee ); - /// ʴ뿡 character óѴ. + /// 길드초대에 대한 상대 character 의 수락을 처리한다. /** - * @param pchInvitee ʴ character + * @param pchInvitee 초대받은 character * - * 忡 ԰ ° ƴ϶ شϴ ä ޼ Ѵ. + * 길드에 가입가능한 상태가 아니라면 해당하는 채팅 메세지를 전송한다. */ void InviteAccept( LPCHARACTER pchInvitee ); - /// ʴ뿡 character źθ óѴ. + /// 길드초대에 대한 상대 character 의 거부를 처리한다. /** - * @param dwPID ʴ character PID + * @param dwPID 초대받은 character 의 PID */ void InviteDeny( DWORD dwPID ); // END_OF_GUILD_JOIN_BUG_FIX @@ -377,27 +377,27 @@ class CGuild bool abSkillUsable[GUILD_SKILL_COUNT]; // GUILD_JOIN_BUG_FIX - /// ڵ. + /// 길드 가입을 할 수 없을 경우의 에러코드. enum GuildJoinErrCode { - GERR_NONE = 0, ///< ó - GERR_WITHDRAWPENALTY, ///< Ż ԰ ð - GERR_COMMISSIONPENALTY, ///< ػ ԰ ð - GERR_ALREADYJOIN, ///< 尡 ijͰ ̹ 忡 - GERR_GUILDISFULL, ///< ο ʰ - GERR_GUILD_IS_IN_WAR, ///< 尡 - GERR_INVITE_LIMIT, ///< - GERR_MAX ///< Error code ְġ. տ Error code ߰Ѵ. + GERR_NONE = 0, ///< 처리성공 + GERR_WITHDRAWPENALTY, ///< 탈퇴후 가입가능한 시간이 지나지 않음 + GERR_COMMISSIONPENALTY, ///< 해산후 가입가능한 시간이 지나지 않음 + GERR_ALREADYJOIN, ///< 길드가입 대상 캐릭터가 이미 길드에 가입해 있음 + GERR_GUILDISFULL, ///< 길드인원 제한 초과 + GERR_GUILD_IS_IN_WAR, ///< 길드가 현재 전쟁중 + GERR_INVITE_LIMIT, ///< 길드원 가입 제한 상태 + GERR_MAX ///< Error code 최고치. 이 앞에 Error code 를 추가한다. }; - /// 忡 ˻Ѵ. + /// 길드에 가입 가능한 조건을 검사한다. /** - * @param [in] pchInvitee ʴ޴ character + * @param [in] pchInvitee 초대받는 character * @return GuildJoinErrCode */ GuildJoinErrCode VerifyGuildJoinableCondition( const LPCHARACTER pchInvitee ); typedef std::map< DWORD, LPEVENT > EventMap; - EventMap m_GuildInviteEventMap; ///< û Event map. key: ʴ ij PID + EventMap m_GuildInviteEventMap; ///< 길드 초청 Event map. key: 초대받은 캐릭터의 PID // END_OF_GUILD_JOIN_BUG_FIX }; diff --git a/src/game/src/horse_rider.h b/src/game/src/horse_rider.h index da29bb7..5f0f67f 100644 --- a/src/game/src/horse_rider.h +++ b/src/game/src/horse_rider.h @@ -8,10 +8,10 @@ const int HORSE_MAX_LEVEL = 30; struct THorseStat { - int iMinLevel; // ž ִ ּ + int iMinLevel; // 탑승할 수 있는 최소 레벨 int iNPCRace; - int iMaxHealth; // ִ ü - int iMaxStamina; // ִ ׹̳ + int iMaxHealth; // 말의 최대 체력 + int iMaxStamina; // 말의 최대 스테미너 int iST; int iDX; int iHT; diff --git a/src/game/src/input.h b/src/game/src/input.h index e90d256..79bb075 100644 --- a/src/game/src/input.h +++ b/src/game/src/input.h @@ -177,7 +177,7 @@ protected: protected: void MapLocations(const char * c_pData); void LoginSuccess(DWORD dwHandle, const char *data); - void PlayerCreateFailure(LPDESC d, BYTE bType); // 0 = Ϲ 1 = ̹ + void PlayerCreateFailure(LPDESC d, BYTE bType); // 0 = 일반 실패 1 = 이미 있음 void PlayerDeleteSuccess(LPDESC d, const char * data); void PlayerDeleteFail(LPDESC d); void PlayerLoad(LPDESC d, const char* data); @@ -272,10 +272,10 @@ protected: void BlockException(TPacketBlockException * data); // MYSHOP_PRICE_LIST - /// Ʈ û Ŷ(HEADER_DG_MYSHOP_PRICELIST_RES) óԼ + /// 아이템 가격정보 리스트 요청에 대한 응답 패킷(HEADER_DG_MYSHOP_PRICELIST_RES) 처리함수 /** - * @param d Ʈ û ÷̾ descriptor - * @param p Ŷ + * @param d 아이템 가격정보 리스트를 요청한 플레이어의 descriptor + * @param p 패킷데이터의 포인터 */ void MyshopPricelistRes( LPDESC d, const TPacketMyshopPricelistHeader* p ); // END_OF_MYSHOP_PRICE_LIST @@ -285,7 +285,7 @@ protected: //END_RELOAD_ADMIN void DetailLog(const TPacketNeedLoginLogInfo* info); - // ׽Ʈ + // 독일 선물 기능 테스트 void ItemAwardInformer(TPacketItemAwardInfromer* data); void RespondChannelStatus(LPDESC desc, const char* pcData); diff --git a/src/game/src/item.h b/src/game/src/item.h index 063ef4c..0599f1b 100644 --- a/src/game/src/item.h +++ b/src/game/src/item.h @@ -60,10 +60,10 @@ class CItem : public CEntity bool SetCount(DWORD count); DWORD GetCount(); - // GetVnum GetOriginalVnum comment - // GetVnum Masking Vnum̴. ̸ ν, Vnum 10, Vnum 20 ó ִ ̴. - // Masking ori_to_new.txt ǵ ̴. - // GetOriginalVnum Vnum, α , Ŭ̾Ʈ , Vnum Ͽ Ѵ. + // GetVnum과 GetOriginalVnum에 대한 comment + // GetVnum은 Masking 된 Vnum이다. 이를 사용함으로써, 아이템의 실제 Vnum은 10이지만, Vnum이 20인 것처럼 동작할 수 있는 것이다. + // Masking 값은 ori_to_new.txt에서 정의된 값이다. + // GetOriginalVnum은 아이템 고유의 Vnum으로, 로그 남길 때, 클라이언트에 아이템 정보 보낼 때, 저장할 때는 이 Vnum을 사용하여야 한다. // DWORD GetVnum() const { return m_dwMaskVnum ? m_dwMaskVnum : m_dwVnum; } DWORD GetOriginalVnum() const { return m_dwVnum; } @@ -103,7 +103,7 @@ class CItem : public CEntity bool IsPolymorphItem(); - void ModifyPoints(bool bAdd); // ȿ ijͿ ο Ѵ. bAdd false̸ + void ModifyPoints(bool bAdd); // 아이템의 효과를 캐릭터에 부여 한다. bAdd가 false이면 제거함 bool CreateSocket(BYTE bSlot, BYTE bGold); const int * GetSockets() { return &m_alSockets[0]; } @@ -146,7 +146,7 @@ class CItem : public CEntity DWORD GetLastOwnerPID() { return m_dwLastOwnerPID; } - int GetAttributeSetIndex(); // Ӽ ٴ° 迭 ε ϴ ش. + int GetAttributeSetIndex(); // 속성 붙는것을 지정한 배열의 어느 인덱스를 사용하는지 돌려준다. void AlterToMagicItem(); void AlterToSocketItem(int iSocketCount); @@ -165,7 +165,7 @@ class CItem : public CEntity void StopTimerBasedOnWearExpireEvent(); void StopAccessorySocketExpireEvent(); - // ϴ REAL_TIME TIMER_BASED_ON_WEAR ۿ ؼ . + // 일단 REAL_TIME과 TIMER_BASED_ON_WEAR 아이템에 대해서만 제대로 동작함. int GetDuration(); int GetAttributeCount(); @@ -180,7 +180,7 @@ class CItem : public CEntity bool IsSameSpecialGroup(const LPITEM item) const; // ACCESSORY_REFINE - // ׼ ߰ + // 액세서리에 광산을 통해 소켓을 추가 bool IsAccessoryForSocket(); int GetAccessorySocketGrade(); @@ -193,7 +193,7 @@ class CItem : public CEntity void AccessorySocketDegrade(); - // Ǽ縮 ۿ ۾ Ÿ̸ ư°( , ) + // 악세사리 를 아이템에 밖았을때 타이머 돌아가는것( 구리, 등 ) void StartAccessorySocketExpireEvent(); void SetAccessorySocketExpireEvent(LPEVENT pkEvent); @@ -227,7 +227,7 @@ class CItem : public CEntity protected: friend class CInputDB; - bool OnAfterCreatedItem(); // Բ (ε) Ҹ Լ. + bool OnAfterCreatedItem(); // 서버상에 아이템이 모든 정보와 함께 완전히 생성(로드)된 후 불리우는 함수. public: bool IsRideItem(); @@ -237,46 +237,46 @@ class CItem : public CEntity bool IsNewMountItem(); #ifdef __AUCTION__ - // + // 경매장 bool MoveToAuction (); void CopyToRawData (TPlayerItem* item); #endif - // Ͽ ij ۰ , ȯ ij ٰ Ͽ, - // ۿ, ȯ ÷׸ ο ۵ ο 뿪 ҴϿ. - // ο ۵ ۰ ȿ ϴµ, - // , Ŭ, vnum Ǿ־ - // ο vnum ˴ ھƾϴ Ÿ Ȳ ´Ҵ. - // ׷ vnum ̸, ư vnum ٲ㼭 ϰ, - // vnum ٲֵ Ѵ. + // 독일에서 기존 캐시 아이템과 같지만, 교환 가능한 캐시 아이템을 만든다고 하여, + // 오리지널 아이템에, 교환 금지 플래그만 삭제한 새로운 아이템들을 새로운 아이템 대역에 할당하였다. + // 문제는 새로운 아이템도 오리지널 아이템과 같은 효과를 내야하는데, + // 서버건, 클라건, vnum 기반으로 되어있어 + // 새로운 vnum을 죄다 서버에 새로 다 박아야하는 안타까운 상황에 맞닿았다. + // 그래서 새 vnum의 아이템이면, 서버에서 돌아갈 때는 오리지널 아이템 vnum으로 바꿔서 돌고 하고, + // 저장할 때에 본래 vnum으로 바꿔주도록 한다. - // Mask vnum  (ex. Ȳ) vnum ٲ ư ִ. + // Mask vnum은 어떤 이유(ex. 위의 상황)로 인해 vnum이 바뀌어 돌아가는 아이템을 위해 있다. void SetMaskVnum(DWORD vnum) { m_dwMaskVnum = vnum; } DWORD GetMaskVnum() { return m_dwMaskVnum; } bool IsMaskedItem() { return m_dwMaskVnum != 0; } - // ȥ + // 용혼석 bool IsDragonSoul(); int GiveMoreTime_Per(float fPercent); int GiveMoreTime_Fix(DWORD dwTime); private: - TItemTable const * m_pProto; // Ÿ + TItemTable const * m_pProto; // 프로토 타잎 DWORD m_dwVnum; LPCHARACTER m_pOwner; - BYTE m_bWindow; // ġ - DWORD m_dwID; // ȣ - bool m_bEquipped; // Ǿ°? + BYTE m_bWindow; // 현재 아이템이 위치한 윈도우 + DWORD m_dwID; // 고유번호 + bool m_bEquipped; // 장착 되었는가? DWORD m_dwVID; // VID - WORD m_wCell; // ġ - DWORD m_dwCount; // - int m_lFlag; // ߰ flag - DWORD m_dwLastOwnerPID; // ־ PID + WORD m_wCell; // 위치 + DWORD m_dwCount; // 개수 + int m_lFlag; // 추가 flag + DWORD m_dwLastOwnerPID; // 마지막 가지고 있었던 사람의 PID - bool m_bExchanging; ///< ȯ + bool m_bExchanging; ///< 현재 교환중 상태 - int m_alSockets[ITEM_SOCKET_MAX_NUM]; // Ĺ + int m_alSockets[ITEM_SOCKET_MAX_NUM]; // 아이템 소캣 TPlayerItemAttribute m_aAttr[ITEM_ATTRIBUTE_MAX_NUM]; LPEVENT m_pkDestroyEvent; diff --git a/src/game/src/item_manager.h b/src/game/src/item_manager.h index 6ca4e9b..8beb832 100644 --- a/src/game/src/item_manager.h +++ b/src/game/src/item_manager.h @@ -5,9 +5,9 @@ #include "pool.h" #endif -// special_item_group.txt ϴ Ӽ ׷ -// type attr ִ. -// Ӽ ׷ ̿ ִ special_item_group.txt Special type ǵ ׷쿡 UNIQUE ITEM̴. +// special_item_group.txt에서 정의하는 속성 그룹 +// type attr로 선언할 수 있다. +// 이 속성 그룹을 이용할 수 있는 것은 special_item_group.txt에서 Special type으로 정의된 그룹에 속한 UNIQUE ITEM이다. class CSpecialAttrGroup { public: @@ -43,10 +43,10 @@ class CSpecialItemGroup MOB_GROUP, }; - // QUEST Ÿ Ʈ ũƮ vnum.sig_use ִ ׷̴. - // , ׷쿡  ؼ ITEM ü TYPE QUEST Ѵ. - // SPECIAL Ÿ idx, item_vnum, attr_vnum ԷѴ. attr_vnum CSpecialAttrGroup Vnum̴. - // ׷쿡 ִ . + // QUEST 타입은 퀘스트 스크립트에서 vnum.sig_use를 사용할 수 있는 그룹이다. + // 단, 이 그룹에 들어가기 위해서는 ITEM 자체의 TYPE이 QUEST여야 한다. + // SPECIAL 타입은 idx, item_vnum, attr_vnum을 입력한다. attr_vnum은 위에 CSpecialAttrGroup의 Vnum이다. + // 이 그룹에 들어있는 아이템은 같이 착용할 수 없다. enum ESIGType { NORMAL, PCT, QUEST, SPECIAL }; struct CSpecialItemInfo @@ -79,9 +79,9 @@ class CSpecialItemGroup return m_vecProbs.empty(); } - // Type Multi, m_bType == PCT , - // Ȯ ذ ʰ, Ͽ Ѵ. - // ִ. + // Type Multi, 즉 m_bType == PCT 인 경우, + // 확률을 더해가지 않고, 독립적으로 계산하여 아이템을 생성한다. + // 따라서 여러 개의 아이템이 생성될 수 있다. // by rtsummit int GetMultiIndex(std::vector &idx_vec) const { @@ -143,8 +143,8 @@ class CSpecialItemGroup return false; } - // Group Type Special 쿡 - // dwVnum ĪǴ AttrVnum returnش. + // Group의 Type이 Special인 경우에 + // dwVnum에 매칭되는 AttrVnum을 return해준다. DWORD GetAttrVnum(DWORD dwVnum) const { if (CSpecialItemGroup::SPECIAL != m_bType) @@ -354,18 +354,18 @@ class ITEM_MANAGER : public singleton bool Initialize(TItemTable * table, int size); void Destroy(); - void Update(); // θ. + void Update(); // 매 루프마다 부른다. void GracefulShutdown(); DWORD GetNewID(); - bool SetMaxItemID(TItemIDRangeTable range); // ִ ̵ + bool SetMaxItemID(TItemIDRangeTable range); // 최대 고유 아이디를 지정 bool SetMaxSpareItemID(TItemIDRangeTable range); - // DelayedSave:  ƾ ؾ ϸ - // ʹ Ƿ " Ѵ" ǥø صΰ - // (: 1 frame) Ŀ Ų. + // DelayedSave: 어떠한 루틴 내에서 저장을 해야 할 짓을 많이 하면 저장 + // 쿼리가 너무 많아지므로 "저장을 한다" 라고 표시만 해두고 잠깐 + // (예: 1 frame) 후에 저장시킨다. void DelayedSave(LPITEM item); - void FlushDelayedSave(LPITEM item); // Delayed Ʈ ִٸ Ѵ. ó . + void FlushDelayedSave(LPITEM item); // Delayed 리스트에 있다면 지우고 저장한다. 끊김 처리시 사용 됨. void SaveSingleItem(LPITEM item); LPITEM CreateItem(DWORD vnum, DWORD count = 1, DWORD dwID = 0, bool bTryMagic = false, int iRarePct = -1, bool bSkipSave = false); @@ -374,7 +374,7 @@ class ITEM_MANAGER : public singleton #else void DestroyItem(LPITEM item, const char* file, size_t line); #endif - void RemoveItem(LPITEM item, const char * c_pszReason=NULL); // ڷ + void RemoveItem(LPITEM item, const char * c_pszReason=NULL); // 사용자로 부터 아이템을 제거 LPITEM Find(DWORD id); LPITEM FindByVID(DWORD vid); @@ -397,7 +397,7 @@ class ITEM_MANAGER : public singleton DWORD GetRefineFromVnum(DWORD dwVnum); - static void CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem); // pkNewItem Ӽ ϴ Լ. + static void CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem); // pkNewItem으로 모든 속성과 소켓 값들을 목사하는 함수. const CSpecialItemGroup* GetSpecialItemGroup(DWORD dwVnum); @@ -421,8 +421,8 @@ class ITEM_MANAGER : public singleton std::map m_map_ItemRefineFrom; int m_iTopOfTable; - ITEM_VID_MAP m_VIDMap; ///< m_dwVIDCount Ѵ. - DWORD m_dwVIDCount; ///< ̳༮ VID ƴ϶ ׳ μ ũ ȣ. + ITEM_VID_MAP m_VIDMap; ///< m_dwVIDCount 의 값단위로 아이템을 저장한다. + DWORD m_dwVIDCount; ///< 이녀석 VID가 아니라 그냥 프로세스 단위 유니크 번호다. DWORD m_dwCurrentID; TItemIDRangeTable m_ItemIDRange; TItemIDRangeTable m_ItemIDSpareRange; @@ -443,15 +443,15 @@ class ITEM_MANAGER : public singleton // END_OF_CHECK_UNIQUE_GROUP private: - // Ͽ ij ۰ , ȯ ij ٰ Ͽ, - // ۿ ȯ ÷׸ ο ۵ , - // ο 뿪 ҴϿ. - // ο ۵ ۰ ȿ ϴµ, - // , Ŭ, vnum Ǿ־ - // ο vnum ˴ ھƾϴ Ÿ Ȳ ´Ҵ. - // ׷ vnum ̸, ư vnum ٲ㼭 ϰ, - // vnum ٲֵ Ѵ. - // ̸ vnum ο vnum ִ . + // 독일에서 기존 캐시 아이템과 같지만, 교환 가능한 캐시 아이템을 만든다고 하여, + // 오리지널 아이템에 교환 금지 플래그만 삭제한 새로운 아이템들을 만들어, + // 새로운 아이템 대역을 할당하였다. + // 문제는 새로운 아이템도 오리지널 아이템과 같은 효과를 내야하는데, + // 서버건, 클라건, vnum 기반으로 되어있어 + // 새로운 vnum을 죄다 서버에 새로 다 박아야하는 안타까운 상황에 맞닿았다. + // 그래서 새 vnum의 아이템이면, 서버에서 돌아갈 때는 오리지널 아이템 vnum으로 바꿔서 돌고 하고, + // 저장할 때에 본래 vnum으로 바꿔주도록 한다. + // 이를 위해 오리지널 vnum과 새로운 vnum을 연결시켜주는 맵을 만듦. typedef std::map TMapDW2DW; TMapDW2DW m_map_new_to_ori; diff --git a/src/game/src/messenger_manager.h b/src/game/src/messenger_manager.h index f04c880..3aa8fbb 100644 --- a/src/game/src/messenger_manager.h +++ b/src/game/src/messenger_manager.h @@ -22,10 +22,10 @@ class MessengerManager : public singleton void RequestToAdd(LPCHARACTER ch, LPCHARACTER target); void AuthToAdd(keyA account, keyA companion, bool bDeny); - void __AddToList(keyA account, keyA companion); // m_Relation, m_InverseRelation ϴ ޼ҵ + void __AddToList(keyA account, keyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드 void AddToList(keyA account, keyA companion); - void __RemoveFromList(keyA account, keyA companion); // m_Relation, m_InverseRelation ϴ ޼ҵ + void __RemoveFromList(keyA account, keyA companion); // 실제 m_Relation, m_InverseRelation 수정하는 메소드 void RemoveFromList(keyA account, keyA companion); void RemoveAllList(keyA account); diff --git a/src/game/src/mob_manager.h b/src/game/src/mob_manager.h index 1ac67a9..fe86391 100644 --- a/src/game/src/mob_manager.h +++ b/src/game/src/mob_manager.h @@ -3,8 +3,8 @@ typedef struct SMobSplashAttackInfo { - DWORD dwTiming; // ų ٸ ð (ms) - DWORD dwHitDistance; // ų ų Ǵ Ÿ ( cm) + DWORD dwTiming; // 스킬 사용 후 실제로 데미지 먹힐때까지 기다리는 시간 (ms) + DWORD dwHitDistance; // 스킬 사용시 실제로 스킬 계산이 되는 거리 (전방 몇cm) SMobSplashAttackInfo(DWORD dwTiming, DWORD dwHitDistance) : dwTiming(dwTiming) @@ -37,8 +37,8 @@ class CMobInstance public: CMobInstance(); - PIXEL_POSITION m_posLastAttacked; // ġ - DWORD m_dwLastAttackedTime; // ð + PIXEL_POSITION m_posLastAttacked; // 마지막 맞은 위치 + DWORD m_dwLastAttackedTime; // 마지막 맞은 시간 DWORD m_dwLastWarpTime; bool m_IsBerserk; diff --git a/src/game/src/monarch.h b/src/game/src/monarch.h index 411dec9..8821563 100644 --- a/src/game/src/monarch.h +++ b/src/game/src/monarch.h @@ -49,11 +49,11 @@ class CMonarch : public singleton private: TMonarchInfo m_MonarchInfo; - int m_PowerUp[4]; ///< - int m_DefenseUp[4]; ///< ݰ + int m_PowerUp[4]; ///< 군주의 사자후 + int m_DefenseUp[4]; ///< 군주의 금강권 - int m_PowerUpCT[4]; ///< - int m_DefenseUpCT[4]; ///< ݰ + int m_PowerUpCT[4]; ///< 군주의 사자후 + int m_DefenseUpCT[4]; ///< 군주의 금강권 }; bool IsMonarchWarpZone (int map_idx); diff --git a/src/game/src/motion.h b/src/game/src/motion.h index e13c3c8..336db47 100644 --- a/src/game/src/motion.h +++ b/src/game/src/motion.h @@ -18,40 +18,40 @@ enum EMotionMode enum EPublicMotion { - MOTION_NONE, // 0 - MOTION_WAIT, // 1 (00.msa) - MOTION_WALK, // 2 ȱ (02.msa) - MOTION_RUN, // 3 ٱ (03.msa) - MOTION_CHANGE_WEAPON, // 4 ٲٱ - MOTION_DAMAGE, // 5 ± (30.msa) - MOTION_DAMAGE_FLYING, // 6 鳯ư (32.msa) - MOTION_STAND_UP, // 7 Ͼ (33.msa) - MOTION_DAMAGE_BACK, // 8 ĸ± (34.msa) - MOTION_DAMAGE_FLYING_BACK, // 9 ĸ鳯ư (35.msa) - MOTION_STAND_UP_BACK, // 10 ĸϾ (26.msa) - MOTION_DEAD, // 11 ױ (31.msa) - MOTION_DEAD_BACK, // 12 ĸױ (37.msa) - MOTION_NORMAL_ATTACK, // 13 ⺻ - MOTION_COMBO_ATTACK_1, // 14 ޺ - MOTION_COMBO_ATTACK_2, // 15 ޺ - MOTION_COMBO_ATTACK_3, // 16 ޺ - MOTION_COMBO_ATTACK_4, // 17 ޺ - MOTION_COMBO_ATTACK_5, // 18 ޺ - MOTION_COMBO_ATTACK_6, // 19 ޺ - MOTION_COMBO_ATTACK_7, // 20 ޺ - MOTION_COMBO_ATTACK_8, // 21 ޺ - MOTION_INTRO_WAIT, // 22 ȭ - MOTION_INTRO_SELECTED, // 23 ȭ - MOTION_INTRO_NOT_SELECTED, // 24 ȭ - MOTION_SPAWN, // 25 ȯ - MOTION_FISHING_THROW, // 26 - MOTION_FISHING_WAIT, // 27 - MOTION_FISHING_STOP, // 28 ׸α - MOTION_FISHING_REACT, // 29 - MOTION_FISHING_CATCH, // 30 - MOTION_FISHING_FAIL, // 31 - MOTION_STOP, // 32 ߱ - MOTION_SPECIAL_1, // 33 ų + MOTION_NONE, // 0 없음 + MOTION_WAIT, // 1 대기 (00.msa) + MOTION_WALK, // 2 걷기 (02.msa) + MOTION_RUN, // 3 뛰기 (03.msa) + MOTION_CHANGE_WEAPON, // 4 무기바꾸기 + MOTION_DAMAGE, // 5 정면맞기 (30.msa) + MOTION_DAMAGE_FLYING, // 6 정면날아가기 (32.msa) + MOTION_STAND_UP, // 7 정면일어나기 (33.msa) + MOTION_DAMAGE_BACK, // 8 후면맞기 (34.msa) + MOTION_DAMAGE_FLYING_BACK, // 9 후면날아가기 (35.msa) + MOTION_STAND_UP_BACK, // 10 후면일어나기 (26.msa) + MOTION_DEAD, // 11 죽기 (31.msa) + MOTION_DEAD_BACK, // 12 후면죽기 (37.msa) + MOTION_NORMAL_ATTACK, // 13 기본 공격 + MOTION_COMBO_ATTACK_1, // 14 콤보 공격 + MOTION_COMBO_ATTACK_2, // 15 콤보 공격 + MOTION_COMBO_ATTACK_3, // 16 콤보 공격 + MOTION_COMBO_ATTACK_4, // 17 콤보 공격 + MOTION_COMBO_ATTACK_5, // 18 콤보 공격 + MOTION_COMBO_ATTACK_6, // 19 콤보 공격 + MOTION_COMBO_ATTACK_7, // 20 콤보 공격 + MOTION_COMBO_ATTACK_8, // 21 콤보 공격 + MOTION_INTRO_WAIT, // 22 선택화면 대기 + MOTION_INTRO_SELECTED, // 23 선택화면 선택 + MOTION_INTRO_NOT_SELECTED, // 24 선택화면 비선택 + MOTION_SPAWN, // 25 소환 + MOTION_FISHING_THROW, // 26 낚시 던지기 + MOTION_FISHING_WAIT, // 27 낚시 대기 + MOTION_FISHING_STOP, // 28 낚시 그만두기 + MOTION_FISHING_REACT, // 29 낚시 반응 + MOTION_FISHING_CATCH, // 30 낚시 잡기 + MOTION_FISHING_FAIL, // 31 낚시 실패 + MOTION_STOP, // 32 말 멈추기 + MOTION_SPECIAL_1, // 33 몬스터 스킬 MOTION_SPECIAL_2, // 34 MOTION_SPECIAL_3, // 35 MOTION_SPECIAL_4, // 36 diff --git a/src/game/src/p2p.h b/src/game/src/p2p.h index 0db231c..ffb301a 100644 --- a/src/game/src/p2p.h +++ b/src/game/src/p2p.h @@ -24,19 +24,19 @@ class P2P_MANAGER : public singleton P2P_MANAGER(); ~P2P_MANAGER(); - // Ʒ Register* Unregister* pair ƾ Ѵ. - // ǥϱ + // 아래 Register* Unregister* pair들은 내부적으로 사실 같은 루틴을 사용한다. + // 단지 명시적으로 표시하기 위한 것 void RegisterAcceptor(LPDESC d); void UnregisterAcceptor(LPDESC d); void RegisterConnector(LPDESC d); void UnregisterConnector(LPDESC d); - void EraseUserByDesc(LPDESC d); // ش desc ִ . + void EraseUserByDesc(LPDESC d); // 해당 desc에 있는 유저들을 지운다. void FlushOutput(); - void Boot(LPDESC d); // p2p ó ʿ ش. ( ij α ) + void Boot(LPDESC d); // p2p 처리에 필요한 정보를 보내준다. (전 캐릭터의 로그인 정보 등) void Send(const void * c_pvData, int iSize, LPDESC except = NULL); diff --git a/src/game/src/packet.h b/src/game/src/packet.h index 8b1eb1e..8766082 100644 --- a/src/game/src/packet.h +++ b/src/game/src/packet.h @@ -45,14 +45,14 @@ enum HEADER_CG_ITEM_USE_TO_ITEM = 60, HEADER_CG_TARGET = 61, - HEADER_CG_TEXT = 64, // @ ۵Ǹ ؽƮ ĽѴ. + HEADER_CG_TEXT = 64, // @ 로 시작되면 텍스트를 파싱한다. HEADER_CG_WARP = 65, HEADER_CG_SCRIPT_BUTTON = 66, HEADER_CG_MESSENGER = 67, HEADER_CG_MALL_CHECKOUT = 69, - HEADER_CG_SAFEBOX_CHECKIN = 70, // â ??´. - HEADER_CG_SAFEBOX_CHECKOUT = 71, // â ´. + HEADER_CG_SAFEBOX_CHECKIN = 70, // 아이템을 창고에 넣??는다. + HEADER_CG_SAFEBOX_CHECKOUT = 71, // 아이템을 창고로 부터 빼온다. HEADER_CG_PARTY_INVITE = 72, HEADER_CG_PARTY_INVITE_ANSWER = 73, @@ -93,10 +93,10 @@ enum // HEADER_CG_ROULETTE = 200, // HEADER_CG_RUNUP_MATRIX_ANSWER = 201, - //NOTE : ̷ XXX ̰ Packet . ̷ ڵϰ Ѿ. - //enum ϴ. ƴ namepsace ϴ.. - // packet generator ٶ ʴ´. ̷ XX - //̷ٰ ġ åµ??? + //NOTE : 이런 개XXX 정말 이거 Packet설계한 사람은 누구냐. 이렇게 코딩하고 밥이 넘어가나. + //enum을 별도로 구별을 하던가. 아님 namepsace로 구별을 하던가.. + //정말 packet generator까지는 바라지도 않는다. 이런 씨XX + //이러다가 숫자 겹치면 누가 책임지는데??? HEADER_CG_DRAGON_SOUL_REFINE = 205, HEADER_CG_STATE_CHECKER = 206, @@ -286,7 +286,7 @@ enum HEADER_GG_NOTICE = 4, HEADER_GG_SHUTDOWN = 5, HEADER_GG_GUILD = 6, - HEADER_GG_DISCONNECT = 7, // + HEADER_GG_DISCONNECT = 7, // 누군가의 접속을 강제로 끊을 때 HEADER_GG_SHOUT = 8, HEADER_GG_SETUP = 9, HEADER_GG_MESSENGER_ADD = 10, @@ -454,8 +454,8 @@ typedef struct SPacketGGMessengerMobile typedef struct SPacketGGFindPosition { BYTE header; - DWORD dwFromPID; // ġ Ϸ - DWORD dwTargetPID; // ã + DWORD dwFromPID; // 저 위치로 워프하려는 사람 + DWORD dwTargetPID; // 찾는 사람 } TPacketGGFindPosition; typedef struct SPacketGGWarpCharacter @@ -496,14 +496,14 @@ typedef struct SPacketGGBlockChat LONG lBlockDuration; } TPacketGGBlockChat; -/* Ŭ̾Ʈ Ŷ */ +/* 클라이언트 측에서 보내는 패킷 */ typedef struct command_text { BYTE bHeader; } TPacketCGText; -/* α (1) */ +/* 로그인 (1) */ typedef struct command_handshake { BYTE bHeader; @@ -587,7 +587,7 @@ typedef struct command_player_create_success TSimplePlayer player; } TPacketGCPlayerCreateSuccess; -// +// 공격 typedef struct command_attack { BYTE bHeader; @@ -609,7 +609,7 @@ enum EMoveFuncType FUNC_SKILL = 0x80, }; -// ̵ +// 이동 typedef struct command_move { BYTE bHeader; @@ -628,22 +628,22 @@ typedef struct command_sync_position_element LONG lY; } TPacketCGSyncPositionElement; -// ġ ȭ -typedef struct command_sync_position // Ŷ +// 위치 동기화 +typedef struct command_sync_position // 가변 패킷 { BYTE bHeader; WORD wSize; } TPacketCGSyncPosition; -/* ä (3) */ -typedef struct command_chat // Ŷ +/* 채팅 (3) */ +typedef struct command_chat // 가변 패킷 { BYTE header; WORD size; BYTE type; } TPacketCGChat; -/* ӼӸ */ +/* 귓속말 */ typedef struct command_whisper { BYTE bHeader; @@ -803,7 +803,7 @@ typedef struct command_quest_confirm } TPacketCGQuestConfirm; /* - * Ŷ + * 서버 측에서 보내는 패킷 */ typedef struct packet_quest_confirm { @@ -919,7 +919,7 @@ typedef struct packet_add_char BYTE bAttackSpeed; BYTE bStateFlag; - DWORD dwAffectFlag[2]; // ȿ + DWORD dwAffectFlag[2]; // 효과 } TPacketGCCharacterAdd; typedef struct packet_char_additional_info @@ -981,7 +981,7 @@ typedef struct packet_del_char DWORD id; } TPacketGCCharacterDelete; -typedef struct packet_chat // Ŷ +typedef struct packet_chat // 가변 패킷 { BYTE header; WORD size; @@ -990,7 +990,7 @@ typedef struct packet_chat // BYTE bEmpire; } TPacketGCChat; -typedef struct packet_whisper // Ŷ +typedef struct packet_whisper // 가변 패킷 { BYTE bHeader; WORD wSize; @@ -1214,7 +1214,7 @@ typedef struct packet_shop_start struct packet_shop_item items[SHOP_HOST_ITEM_MAX_NUM]; } TPacketGCShopStart; -typedef struct packet_shop_start_ex // TSubPacketShopTab* shop_tabs . +typedef struct packet_shop_start_ex // 다음에 TSubPacketShopTab* shop_tabs 이 따라옴. { typedef struct sub_packet_shop_tab { @@ -1237,7 +1237,7 @@ typedef struct packet_shop_update_price INT iPrice; } TPacketGCShopUpdatePrice; -typedef struct packet_shop // Ŷ +typedef struct packet_shop // 가변 패킷 { BYTE header; WORD size; @@ -1317,7 +1317,7 @@ typedef struct packet_move DWORD dwDuration; } TPacketGCMove; -// +// 소유권 typedef struct packet_ownership { BYTE bHeader; @@ -1325,7 +1325,7 @@ typedef struct packet_ownership DWORD dwVictimVID; } TPacketGCOwnership; -// ġ ȭ Ŷ bCount ŭ ٴ +// 위치 동기화 패킷의 bCount 만큼 붙는 단위 typedef struct packet_sync_position_element { DWORD dwVID; @@ -1333,11 +1333,11 @@ typedef struct packet_sync_position_element LONG lY; } TPacketGCSyncPositionElement; -// ġ ȭ -typedef struct packet_sync_position // Ŷ +// 위치 동기화 +typedef struct packet_sync_position // 가변 패킷 { BYTE bHeader; - WORD wSize; // = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement) + WORD wSize; // 개수 = (wSize - sizeof(TPacketGCSyncPosition)) / sizeof(TPacketGCSyncPositionElement) } TPacketGCSyncPosition; typedef struct packet_fly @@ -1372,7 +1372,7 @@ typedef struct packet_shoot typedef struct packet_duel_start { BYTE header; - WORD wSize; // DWORD ? = (wSize - sizeof(TPacketGCPVPList)) / 4 + WORD wSize; // DWORD가 몇개? 개수 = (wSize - sizeof(TPacketGCPVPList)) / 4 } TPacketGCDuelStart; enum EPVPModes @@ -1388,7 +1388,7 @@ typedef struct packet_pvp BYTE bHeader; DWORD dwVIDSrc; DWORD dwVIDDst; - BYTE bMode; // 0 ̸ , 1̸ + BYTE bMode; // 0 이면 끔, 1이면 켬 } TPacketGCPVP; typedef struct command_use_skill @@ -1785,7 +1785,7 @@ typedef struct packet_mark_idxlist BYTE header; DWORD bufSize; WORD count; - //ڿ size * (WORD + WORD)ŭ + //뒤에 size * (WORD + WORD)만큼 데이터 붙음 } TPacketGCMarkIDXList; typedef struct packet_mark_block @@ -1794,7 +1794,7 @@ typedef struct packet_mark_block DWORD bufSize; BYTE imgIdx; DWORD count; - // ڿ 64 x 48 x ȼũ(4Ʈ) = 12288ŭ + // 뒤에 64 x 48 x 픽셀크기(4바이트) = 12288만큼 데이터 붙음 } TPacketGCMarkBlock; typedef struct command_symbol_upload @@ -1933,8 +1933,8 @@ typedef struct SPacketGCRefineInformaion DWORD src_vnum; DWORD result_vnum; BYTE material_count; - INT cost; // ҿ - INT prob; // Ȯ + INT cost; // 소요 비용 + INT prob; // 확률 TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM]; } TPacketGCRefineInformation; @@ -2149,13 +2149,13 @@ typedef struct SPacketGCPanamaPack BYTE abIV[32]; } TPacketGCPanamaPack; -//TODO : ƿ ¯..Ŷ ޾Ƶϼ ְ Ŷ ڵ鷯 Refactoring . +//TODO : 아우 짱나..가변패킷 사이즈 받아들일수 있게 패킷 핸들러 Refactoring 하자. typedef struct SPacketGCHybridCryptKeys { SPacketGCHybridCryptKeys() : m_pStream(NULL) {} ~SPacketGCHybridCryptKeys() { - //GCC NULL delete ص ? ϴ ϰ NULL üũ . ( ٵ ̰ C++ ǥؾƴϾ --a ) + //GCC 에선 NULL delete 해도 괜찮나? 일단 안전하게 NULL 체크 하자. ( 근데 이거 C++ 표준아니었나 --a ) if( m_pStream ) { delete[] m_pStream; @@ -2188,7 +2188,7 @@ typedef struct SPacketGCHybridCryptKeys } BYTE bHeader; - WORD uDynamicPacketSize; // Ŭ DynamicPacketHeader Ѵ -_-; + WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-; INT KeyStreamLen; BYTE* pDataKeyStream; @@ -2236,7 +2236,7 @@ typedef struct SPacketGCPackageSDB } BYTE bHeader; - WORD uDynamicPacketSize; // Ŭ DynamicPacketHeader Ѵ -_-; + WORD uDynamicPacketSize; // 빌어먹을 클라 DynamicPacketHeader 구조때문에 맞춰줘야한다 -_-; INT iStreamLen; BYTE* m_pDataSDBStream; @@ -2254,7 +2254,7 @@ typedef struct SPacketGCSpecificEffect char effect_file[MAX_EFFECT_FILE_NAME]; } TPacketGCSpecificEffect; -// ȥ +// 용혼석 enum EDragonSoulRefineWindowRefineType { DragonSoulRefineWindow_UPGRADE, diff --git a/src/game/src/party.h b/src/game/src/party.h index 116c3b2..7222803 100644 --- a/src/game/src/party.h +++ b/src/game/src/party.h @@ -5,7 +5,7 @@ enum // unit : minute { - PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS = 60, // Ƽ Ἲ 60 ߰ ġ ʽ + PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS = 60, // 파티 결성 후 60분 후 부터 추가 경험치 보너스 PARTY_HEAL_COOLTIME_LONG = 60, PARTY_HEAL_COOLTIME_SHORT = 30, PARTY_MAX_MEMBER = 8, @@ -69,12 +69,12 @@ class CPartyManager : public singleton void P2PQuitParty(DWORD pid); private: - TPartyMap m_map_pkParty; // PID Ƽ ֳ ˻ϱ ̳ - TPartyMap m_map_pkMobParty; // Mob Ƽ PID VID Ѵ. + TPartyMap m_map_pkParty; // PID로 어느 파티에 있나 검색하기 위한 컨테이너 + TPartyMap m_map_pkMobParty; // Mob 파티는 PID 대신 VID 로 따로 관리한다. - TPCPartySet m_set_pkPCParty; // Ƽ ü + TPCPartySet m_set_pkPCParty; // 사람들의 파티 전체 집합 - bool m_bEnablePCParty; // Ƽ ° Ұ + bool m_bEnablePCParty; // 디비가 켜져있지 않으면 사람들의 파티 상태가 변경불가 }; enum EPartyMessages @@ -246,9 +246,9 @@ class CParty TFlagMap m_map_iFlag; LPDUNGEON m_pkDungeon; - // Ʊ dungeon . - // ̷Ա ϰ ʾҴµ, party ̶ - // װ ġ ̷ ӽ÷ س´. + // 아귀 동굴용 dungeon 멤버 변수. + // 정말 이렇게까지 하고 싶진 않았는데, 던전에서 party 관리가 정말로 개판이라 + // 그거 고치기 전까지는 이렇게 임시로 해놓는다. LPDUNGEON m_pkDungeon_for_Only_party; public: void SetDungeon_for_Only_party(LPDUNGEON pDungeon); diff --git a/src/game/src/priv_manager.h b/src/game/src/priv_manager.h index 58b011d..a5e837b 100644 --- a/src/game/src/priv_manager.h +++ b/src/game/src/priv_manager.h @@ -2,10 +2,10 @@ #define __PRIV_MANAGER_H /** - * @version 05/06/08 Bang2ni - Guild privilege Լ ð ߰ - * RequestGiveGuildPriv, GiveGuildPriv Լ Ÿ - * m_aPrivGuild Ÿ - * ü SPrivGuildData, Լ GetPrivByGuildEx ߰ + * @version 05/06/08 Bang2ni - Guild privilege 관련 함수 지속 시간 추가 + * RequestGiveGuildPriv, GiveGuildPriv 함수 프로토타잎 수정 + * m_aPrivGuild 타잎 수정 + * 구조체 SPrivGuildData, 멤버 함수 GetPrivByGuildEx 추가 */ class CPrivManager : public singleton { @@ -38,18 +38,18 @@ class CPrivManager : public singleton SPrivEmpireData* GetPrivByEmpireEx(BYTE bEmpire, BYTE type); - /// ʽ + /// 길드 보너스 데이터 struct SPrivGuildData { - int value; ///< ʽ ġ - time_t end_time_sec; ///< ð + int value; ///< 보너스 수치 + time_t end_time_sec; ///< 지속 시간 }; - /// ʽ ͸ ´. + /// 길드 보너스 데이터를 얻어온다. /** - * @param [in] dwGuildID ID - * @param [in] byType ʽ Ÿ - * @return ʽ , شϴ ʽ Ÿٰ ID ʽ Ͱ NULL + * @param [in] dwGuildID 얻어올 길드의 ID + * @param [in] byType 보너스 타잎 + * @return 대상 길드의 길드 보너스 데이터의 포인터, 해당하는 보너스 타잎과 길드의 ID 에 대해 보너스 데이터가 없을 경우 NULL */ const SPrivGuildData* GetPrivByGuildEx( DWORD dwGuildID, BYTE byType ) const; diff --git a/src/game/src/pvp.h b/src/game/src/pvp.h index 116c632..fadedc1 100644 --- a/src/game/src/pvp.h +++ b/src/game/src/pvp.h @@ -3,8 +3,8 @@ class CHARACTER; -// CPVP DWORD ̵ ΰ ޾Ƽ m_dwCRC  ִ´. -// CPVPManager ̷ CRC ˻Ѵ. +// CPVP에는 DWORD 아이디 두개를 받아서 m_dwCRC를 만들어서 가지고 있는다. +// CPVPManager에서 이렇게 만든 CRC를 통해 검색한다. class CPVP { public: @@ -26,8 +26,8 @@ class CPVP CPVP(CPVP & v); ~CPVP(); - void Win(DWORD dwPID); // dwPID ̰! - bool CanRevenge(DWORD dwPID); // dwPID ־? + void Win(DWORD dwPID); // dwPID가 이겼다! + bool CanRevenge(DWORD dwPID); // dwPID가 복수할 수 있어? bool IsFight(); bool Agree(DWORD dwPID); @@ -57,7 +57,7 @@ class CPVPManager : public singleton void Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim); bool CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim); - bool Dead(LPCHARACTER pkChr, DWORD dwKillerPID); // PVP ־ + bool Dead(LPCHARACTER pkChr, DWORD dwKillerPID); // PVP에 있었나 없었나를 리턴 void GiveUp(LPCHARACTER pkChr, DWORD dwKillerPID); void Connect(LPCHARACTER pkChr); void Disconnect(LPCHARACTER pkChr); diff --git a/src/game/src/questmanager.h b/src/game/src/questmanager.h index efac155..7f505f4 100644 --- a/src/game/src/questmanager.h +++ b/src/game/src/questmanager.h @@ -56,7 +56,7 @@ namespace quest bool RunState(QuestState& qs); PC * GetPC(unsigned int pc); - PC * GetPCForce(unsigned int pc); // PC ٲ ʰ PC ͸ ´. + PC * GetPCForce(unsigned int pc); // 현재 PC를 바꾸지 않고 PC 포인터를 가져온다. unsigned int GetCurrentNPCRace(); const string & GetCurrentQuestName(); @@ -106,7 +106,7 @@ namespace quest void Letter(DWORD pc); void Letter(DWORD pc, DWORD quest_index, int state); - void ItemInformer(unsigned int pc, unsigned int vnum); //ϼ + void ItemInformer(unsigned int pc, unsigned int vnum); //독일선물기능 // @@ -254,7 +254,7 @@ namespace quest static bool ExecuteQuestScript(PC& pc, DWORD quest_index, const int state, const char* code, const int code_size, vector* pChatScripts = NULL, bool bUseCache = true); - // begin_other_pc_blcok, end_other_pc_block ü. + // begin_other_pc_blcok, end_other_pc_block을 위한 객체들. public: void BeginOtherPCBlock(DWORD pid); void EndOtherPCBlock(); diff --git a/src/game/src/questnpc.h b/src/game/src/questnpc.h index c28515c..8b355c0 100644 --- a/src/game/src/questnpc.h +++ b/src/game/src/questnpc.h @@ -21,13 +21,13 @@ namespace quest class NPC { public: - // ڰ ũƮ + // 인자가 없는 스크립트들 // first: state number typedef map AQuestScriptType; // first: quest number typedef map QuestMapType; - // ڰ ִ ũƮ + // 인자가 있는 스크립트들 // first: state number typedef map > AArgQuestScriptType; // first: quest number @@ -69,7 +69,7 @@ namespace quest bool OnChat(PC& pc); bool HasChat(); - bool OnItemInformer(PC& pc,unsigned int vnum); // ׽Ʈ + bool OnItemInformer(PC& pc,unsigned int vnum); // 독일 선물 기능 테스트 bool OnTarget(PC& pc, DWORD dwQuestIndex, const char * c_pszTargetName, const char * c_pszVerb, bool & bRet); bool OnUnmount(PC& pc); diff --git a/src/game/src/questpc.h b/src/game/src/questpc.h index 9a95080..1fd64fe 100644 --- a/src/game/src/questpc.h +++ b/src/game/src/questpc.h @@ -35,12 +35,12 @@ namespace quest enum { QUEST_SEND_ISBEGIN = (1 << 0), - QUEST_SEND_TITLE = (1 << 1), // 30 - QUEST_SEND_CLOCK_NAME = (1 << 2), // 16 + QUEST_SEND_TITLE = (1 << 1), // 30자 까지 + QUEST_SEND_CLOCK_NAME = (1 << 2), // 16자 까지 QUEST_SEND_CLOCK_VALUE = (1 << 3), - QUEST_SEND_COUNTER_NAME = (1 << 4), // 16 + QUEST_SEND_COUNTER_NAME = (1 << 4), // 16자 까지 QUEST_SEND_COUNTER_VALUE = (1 << 5), - QUEST_SEND_ICON_FILE = (1 << 6), // 24 + QUEST_SEND_ICON_FILE = (1 << 6), // 24자 까지 }; typedef map QuestInfo; @@ -122,7 +122,7 @@ namespace quest bool IsLoaded() const { return m_bLoaded; } void SetLoaded() { m_bLoaded = true; } void Build(); - // DB + // DB에 저장 void Save(); bool HasReward() { return !m_vRewardData.empty() || m_bIsGivenReward; } @@ -176,7 +176,7 @@ namespace quest TTimerMap m_TimerMap; int m_iSendToClient; - bool m_bLoaded; // ε ѹ Ѵ. + bool m_bLoaded; // 로드는 한번만 한다. int m_iLastState; diff --git a/src/game/src/refine.h b/src/game/src/refine.h index 77a1e05..a567406 100644 --- a/src/game/src/refine.h +++ b/src/game/src/refine.h @@ -5,8 +5,8 @@ enum { - BLACKSMITH_MOB = 20016, // Ȯ - ALCHEMIST_MOB = 20001, // 100% + BLACKSMITH_MOB = 20016, // 확률 개량 + ALCHEMIST_MOB = 20001, // 100% 개량 성공 BLACKSMITH_WEAPON_MOB = 20044, BLACKSMITH_ARMOR_MOB = 20045, diff --git a/src/game/src/sectree.h b/src/game/src/sectree.h index eb67503..3a5df0b 100644 --- a/src/game/src/sectree.h +++ b/src/game/src/sectree.h @@ -132,7 +132,7 @@ class SECTREE while (it_tree != m_neighbor_list.end()) { - //ù° ã ٷ + //첫번째를 찾으면 바로 리턴 if ( (*(it_tree++))->for_each_entity_for_find_victim(func) ) return; } @@ -143,7 +143,7 @@ class SECTREE while (it != m_set_entity.end()) { - // ã ٷ + //정상적으로 찾으면 바로 리턴 if ( func(*it++) ) return true; } @@ -176,9 +176,9 @@ class SECTREE DWORD GetAttribute(int x, int y); bool IsAttr(int x, int y, DWORD dwFlag); - void CloneAttribute(LPSECTREE tree); // private map ó + void CloneAttribute(LPSECTREE tree); // private map 처리시 사용 - int GetEventAttribute(int x, int y); // 20050313 + int GetEventAttribute(int x, int y); // 20050313 현재는 사용하지 않음 void SetAttribute(DWORD x, DWORD y, DWORD dwAttr); void RemoveAttribute(DWORD x, DWORD y, DWORD dwAttr); diff --git a/src/game/src/sectree_manager.h b/src/game/src/sectree_manager.h index 7b6b99e..8a4fada 100644 --- a/src/game/src/sectree_manager.h +++ b/src/game/src/sectree_manager.h @@ -165,16 +165,16 @@ class SECTREE_MANAGER : public singleton size_t GetMonsterCountInMap(int lMapIndex); size_t GetMonsterCountInMap(int lMpaIndex, DWORD dwVnum); - /// Sectree Attribute Ư ó Ѵ. + /// 영역에 대해 Sectree 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lStartX 簢 ǥ - * @param [in] lStartY 簢 ǥ - * @param [in] lEndX 簢 ǥ - * @param [in] lEndY 簢 Ʒ ǥ - * @param [in] lRotate ȸ - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lStartX 사각형 영역의 가장 왼쪽 좌표 + * @param [in] lStartY 사각형 영역의 가장 위쪽 좌표 + * @param [in] lEndX 사각형 영역의 가장 오른쪽 좌표 + * @param [in] lEndY 사각형 영역의 가장 아랫쪽 좌표 + * @param [in] lRotate 영역에 대해 회전할 각 + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegion(int lMapIndex, int lStartX, int lStartY, int lEndX, int lEndY, int lRotate, DWORD dwAttr, EAttrRegionMode mode); @@ -182,39 +182,39 @@ class SECTREE_MANAGER : public singleton private: - /// 簢 Sectree Attribute Ư ó Ѵ. + /// 직각의 사각형 영역에 대해 Sectree 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lCX 簢 Cell ǥ - * @param [in] lCY 簢 Cell ǥ - * @param [in] lCW 簢 Cell - * @param [in] lCH 簢 Cell - * @param [in] lRotate ȸ () - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lCX 사각형 영역의 가장 왼쪽 Cell 의 좌표 + * @param [in] lCY 사각형 영역의 가장 위쪽 Cell 의 좌표 + * @param [in] lCW 사각형 영역의 Cell 단위 폭 + * @param [in] lCH 사각형 영역의 Cell 단위 높이 + * @param [in] lRotate 회전할 각(직각) + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegionRightAngle( int lMapIndex, int lCX, int lCY, int lCW, int lCH, int lRotate, DWORD dwAttr, EAttrRegionMode mode ); - /// ̿ 簢 Sectree Attribute Ư ó Ѵ. + /// 직각 이외의 사각형 영역에 대해 Sectree 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lCX 簢 Cell ǥ - * @param [in] lCY 簢 Cell ǥ - * @param [in] lCW 簢 Cell - * @param [in] lCH 簢 Cell - * @param [in] lRotate ȸ ( ̿ ) - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lCX 사각형 영역의 가장 왼쪽 Cell 의 좌표 + * @param [in] lCY 사각형 영역의 가장 위쪽 Cell 의 좌표 + * @param [in] lCW 사각형 영역의 Cell 단위 폭 + * @param [in] lCH 사각형 영역의 Cell 단위 높이 + * @param [in] lRotate 회전할 각(직각 이외의 각) + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegionFreeAngle( int lMapIndex, int lCX, int lCY, int lCW, int lCH, int lRotate, DWORD dwAttr, EAttrRegionMode mode ); - /// Cell Attribute Ư ó Ѵ. + /// 한 Cell 의 Attribute 에 대해 특정한 처리를 수행한다. /** - * @param [in] lMapIndex Map index - * @param [in] lCX Cell X ǥ - * @param [in] lCY Cell Y ǥ - * @param [in] dwAttr Attribute - * @param [in] mode Attribute ó type + * @param [in] lMapIndex 적용할 Map index + * @param [in] lCX 적용할 Cell 의 X 좌표 + * @param [in] lCY 적용할 Cell 의 Y 좌표 + * @param [in] dwAttr 적용할 Attribute + * @param [in] mode Attribute 에 대해 처리할 type */ bool ForAttrRegionCell( int lMapIndex, int lCX, int lCY, DWORD dwAttr, EAttrRegionMode mode ); diff --git a/src/game/src/shop.h b/src/game/src/shop.h index adde8b3..8e7f913 100644 --- a/src/game/src/shop.h +++ b/src/game/src/shop.h @@ -14,12 +14,12 @@ class CShop public: typedef struct shop_item { - DWORD vnum; // ȣ - int price; // - BYTE count; // + DWORD vnum; // 아이템 번호 + int price; // 가격 + BYTE count; // 아이템 개수 LPITEM pkItem; - int itemid; // ̵ + int itemid; // 아이템 고유아이디 shop_item() { @@ -40,20 +40,20 @@ class CShop virtual void SetPCShop(LPCHARACTER ch); virtual bool IsPCShop() { return m_pkPC ? true : false; } - // ԽƮ ߰/ + // 게스트 추가/삭제 virtual bool AddGuest(LPCHARACTER ch,DWORD owner_vid, bool bOtherEmpire); void RemoveGuest(LPCHARACTER ch); - // + // 물건 구입 virtual int Buy(LPCHARACTER ch, BYTE pos); - // ԽƮ Ŷ + // 게스트에게 패킷을 보냄 void BroadcastUpdateItem(BYTE pos); - // Ǹ ˷ش. + // 판매중인 아이템의 갯수를 알려준다. int GetNumberByVnum(DWORD dwVnum); - // ϵǾ ִ ˷ش. + // 아이템이 상점에 등록되어 있는지 알려준다. virtual bool IsSellingItem(DWORD itemID); DWORD GetVnum() { return m_dwVnum; } @@ -70,7 +70,7 @@ class CShop typedef std::unordered_map GuestMapType; GuestMapType m_map_guest; - std::vector m_itemVector; // ϴ ǵ + std::vector m_itemVector; // 이 상점에서 취급하는 물건들 LPCHARACTER m_pkPC; }; diff --git a/src/game/src/shopEx.h b/src/game/src/shopEx.h index d688181..000192b 100644 --- a/src/game/src/shopEx.h +++ b/src/game/src/shopEx.h @@ -12,11 +12,11 @@ typedef struct SShopTableEx : SShopTable class CGroupNode; -// Ȯ shop. -// ȭ ְ, ǿ ġ ִ. -// , pc . -// Ŭ pos 45 . -// m_itemVector ʴ´. +// 확장 shop. +// 명도전을 화폐로 쓸 수 있고, 아이템을 여러 탭에 나눠 배치할 수 있다. +// 단, pc 샵은 구현하지 않음. +// 클라와 통신할 때에 탭은 pos 45 단위로 구분. +// 기존 샵의 m_itemVector은 사용하지 않는다. class CShopEx: public CShop { public: diff --git a/src/game/src/skill.h b/src/game/src/skill.h index 824890e..2977246 100644 --- a/src/game/src/skill.h +++ b/src/game/src/skill.h @@ -5,33 +5,33 @@ enum ESkillFlags { - SKILL_FLAG_ATTACK = (1 << 0), // - SKILL_FLAG_USE_MELEE_DAMAGE = (1 << 1), // ⺻ и Ÿġ b - SKILL_FLAG_COMPUTE_ATTGRADE = (1 << 2), // ݵ Ѵ - SKILL_FLAG_SELFONLY = (1 << 3), // ڽſԸ - SKILL_FLAG_USE_MAGIC_DAMAGE = (1 << 4), // ⺻ Ÿġ b - SKILL_FLAG_USE_HP_AS_COST = (1 << 5), // HP SP + SKILL_FLAG_ATTACK = (1 << 0), // 공격 기술 + SKILL_FLAG_USE_MELEE_DAMAGE = (1 << 1), // 기본 밀리 타격치를 b 값으로 사용 + SKILL_FLAG_COMPUTE_ATTGRADE = (1 << 2), // 공격등급을 계산한다 + SKILL_FLAG_SELFONLY = (1 << 3), // 자신에게만 쓸 수 있음 + SKILL_FLAG_USE_MAGIC_DAMAGE = (1 << 4), // 기본 마법 타격치를 b 값으로 사용 + SKILL_FLAG_USE_HP_AS_COST = (1 << 5), // HP를 SP대신 쓴다 SKILL_FLAG_COMPUTE_MAGIC_DAMAGE = (1 << 6), SKILL_FLAG_SPLASH = (1 << 7), - SKILL_FLAG_GIVE_PENALTY = (1 << 8), // õ(3) 2 ޴´. - SKILL_FLAG_USE_ARROW_DAMAGE = (1 << 9), // ⺻ ȭ Ÿġ b - SKILL_FLAG_PENETRATE = (1 << 10), //  - SKILL_FLAG_IGNORE_TARGET_RATING = (1 << 11), // - SKILL_FLAG_SLOW = (1 << 12), // ο - SKILL_FLAG_STUN = (1 << 13), // - SKILL_FLAG_HP_ABSORB = (1 << 14), // HP - SKILL_FLAG_SP_ABSORB = (1 << 15), // SP - SKILL_FLAG_FIRE_CONT = (1 << 16), // FIRE - SKILL_FLAG_REMOVE_BAD_AFFECT = (1 << 17), // ȿ - SKILL_FLAG_REMOVE_GOOD_AFFECT = (1 << 18), // ȿ - SKILL_FLAG_CRUSH = (1 << 19), // - SKILL_FLAG_POISON = (1 << 20), // - SKILL_FLAG_TOGGLE = (1 << 21), // - SKILL_FLAG_DISABLE_BY_POINT_UP = (1 << 22), //  ø . - SKILL_FLAG_CRUSH_LONG = (1 << 23), // ָ - SKILL_FLAG_WIND = (1 << 24), // ٶ Ӽ - SKILL_FLAG_ELEC = (1 << 25), // Ӽ - SKILL_FLAG_FIRE = (1 << 26), // Ӽ + SKILL_FLAG_GIVE_PENALTY = (1 << 8), // 쓰고나면 잠시동안(3초) 2배 데미지를 받는다. + SKILL_FLAG_USE_ARROW_DAMAGE = (1 << 9), // 기본 화살 타격치를 b 값으로 사용 + SKILL_FLAG_PENETRATE = (1 << 10), // 방어무시 + SKILL_FLAG_IGNORE_TARGET_RATING = (1 << 11), // 상대 레이팅 무시 + SKILL_FLAG_SLOW = (1 << 12), // 슬로우 공격 + SKILL_FLAG_STUN = (1 << 13), // 스턴 공격 + SKILL_FLAG_HP_ABSORB = (1 << 14), // HP 흡수 + SKILL_FLAG_SP_ABSORB = (1 << 15), // SP 흡수 + SKILL_FLAG_FIRE_CONT = (1 << 16), // FIRE 지속 데미지 + SKILL_FLAG_REMOVE_BAD_AFFECT = (1 << 17), // 나쁜효과 제거 + SKILL_FLAG_REMOVE_GOOD_AFFECT = (1 << 18), // 나쁜효과 제거 + SKILL_FLAG_CRUSH = (1 << 19), // 상대방을 날림 + SKILL_FLAG_POISON = (1 << 20), // 독 공격 + SKILL_FLAG_TOGGLE = (1 << 21), // 토글 + SKILL_FLAG_DISABLE_BY_POINT_UP = (1 << 22), // 찍어서 올릴 수 없다. + SKILL_FLAG_CRUSH_LONG = (1 << 23), // 상대방을 멀리 날림 + SKILL_FLAG_WIND = (1 << 24), // 바람 속성 + SKILL_FLAG_ELEC = (1 << 25), // 전기 속성 + SKILL_FLAG_FIRE = (1 << 26), // 불 속성 }; enum @@ -44,84 +44,84 @@ enum ESkillIndexes { SKILL_RESERVED = 0, - // 迭 + // 무사 전사 계열 // A - SKILL_SAMYEON = 1, // ↓() - SKILL_PALBANG, // ȹdz + SKILL_SAMYEON = 1, // 삼연참(세번베기) + SKILL_PALBANG, // 팔방풍우 // S - SKILL_JEONGWI, // ȥ - SKILL_GEOMKYUNG, // ˰ - SKILL_TANHWAN, // źȯ + SKILL_JEONGWI, // 전귀혼 + SKILL_GEOMKYUNG, // 검경 + SKILL_TANHWAN, // 탄환격 - // 迭 + // 무사 기공 계열 // A - SKILL_GIGONGCHAM = 16, // - SKILL_GYOKSAN, // ݻŸ - SKILL_DAEJINGAK, // + SKILL_GIGONGCHAM = 16, // 기공참 + SKILL_GYOKSAN, // 격산타우 + SKILL_DAEJINGAK, // 대진각 // S - SKILL_CHUNKEON, // õ - SKILL_GEOMPUNG, // dz + SKILL_CHUNKEON, // 천근추 + SKILL_GEOMPUNG, // 검풍 - // ڰ ϻ 迭 + // 자객 암살 계열 // A - SKILL_AMSEOP = 31, // Ͻ - SKILL_GUNGSIN, // ýź - SKILL_CHARYUN, // + SKILL_AMSEOP = 31, // 암습 + SKILL_GUNGSIN, // 궁신탄영 + SKILL_CHARYUN, // 차륜살 // S - SKILL_EUNHYUNG, // - SKILL_SANGONG, // + SKILL_EUNHYUNG, // 은형법 + SKILL_SANGONG, // 산공분 - // ڰ ü 迭 + // 자객 궁수 계열 // A - SKILL_YEONSA = 46, // - SKILL_KWANKYEOK, // ݼ - SKILL_HWAJO, // ȭ + SKILL_YEONSA = 46, // 연사 + SKILL_KWANKYEOK, // 관격술 + SKILL_HWAJO, // 화조파 // S - SKILL_GYEONGGONG, // - SKILL_GIGUNG, // + SKILL_GYEONGGONG, // 경공술 + SKILL_GIGUNG, // 기궁 - // + // 수라 검 // A - SKILL_SWAERYUNG = 61, // - SKILL_YONGKWON, // + SKILL_SWAERYUNG = 61, // 쇄령지 + SKILL_YONGKWON, // 용권파 // S - SKILL_GWIGEOM, // Ͱ - SKILL_TERROR, // - SKILL_JUMAGAP, // ָ - SKILL_PABEOB, // Ĺ + SKILL_GWIGEOM, // 귀검 + SKILL_TERROR, // 공포 + SKILL_JUMAGAP, // 주마갑 + SKILL_PABEOB, // 파법술 - // + // 수라 마법 // A - SKILL_MARYUNG = 76, // - SKILL_HWAYEOMPOK, // ȭ - SKILL_MUYEONG, // + SKILL_MARYUNG = 76, // 마령 + SKILL_HWAYEOMPOK, // 화염폭 + SKILL_MUYEONG, // 무영진 // S - SKILL_MANASHILED, // żȣ - SKILL_TUSOK, // Ӹ - SKILL_MAHWAN, // ȯ + SKILL_MANASHILED, // 흑신수호 + SKILL_TUSOK, // 투속마령 + SKILL_MAHWAN, // 마환격 - // + // 무당 용신 // A SKILL_BIPABU = 91, - SKILL_YONGBI, // 񱤻 - SKILL_PAERYONG, // з泪ѹ + SKILL_YONGBI, // 용비광사파 + SKILL_PAERYONG, // 패룡나한무 // S - //SKILL_BUDONG, // εں - SKILL_HOSIN, // ȣ - SKILL_REFLECT, // ȣ - SKILL_GICHEON, // õ + //SKILL_BUDONG, // 부동박부 + SKILL_HOSIN, // 호신 + SKILL_REFLECT, // 보호 + SKILL_GICHEON, // 기천대공 - // + // 무당 뇌신 // A - SKILL_NOEJEON = 106, // - SKILL_BYEURAK, // - SKILL_CHAIN, // üζƮ + SKILL_NOEJEON = 106, // 뇌전령 + SKILL_BYEURAK, // 벼락 + SKILL_CHAIN, // 체인라이트닝 // S - SKILL_JEONGEOP, // - SKILL_KWAESOK, // ̵ӵ - SKILL_JEUNGRYEOK, // ¼ + SKILL_JEONGEOP, // 정업인 + SKILL_KWAESOK, // 이동속도업 + SKILL_JEUNGRYEOK, // 증력술 - // ų + // 공통 스킬 // 7 SKILL_7_A_ANTI_TANHWAN = 112, SKILL_7_B_ANTI_AMSEOP, @@ -134,27 +134,27 @@ enum ESkillIndexes SKILL_8_C_ANTI_MAHWAN, SKILL_8_D_ANTI_BYEURAK, - // ų + // 보조 스킬 - SKILL_LEADERSHIP = 121, // ַ - SKILL_COMBO = 122, // - SKILL_CREATE = 123, // + SKILL_LEADERSHIP = 121, // 통솔력 + SKILL_COMBO = 122, // 연계기 + SKILL_CREATE = 123, // 제조 SKILL_MINING = 124, - SKILL_LANGUAGE1 = 126, // ż ɷ - SKILL_LANGUAGE2 = 127, // õ ɷ - SKILL_LANGUAGE3 = 128, // ɷ - SKILL_POLYMORPH = 129, // а + SKILL_LANGUAGE1 = 126, // 신수어 능력 + SKILL_LANGUAGE2 = 127, // 천조어 능력 + SKILL_LANGUAGE3 = 128, // 진노어 능력 + SKILL_POLYMORPH = 129, // 둔갑 - SKILL_HORSE = 130, // ¸ ų - SKILL_HORSE_SUMMON = 131, // ȯ ų - SKILL_HORSE_WILDATTACK = 137, // - SKILL_HORSE_CHARGE = 138, // - SKILL_HORSE_ESCAPE = 139, // Ż - SKILL_HORSE_WILDATTACK_RANGE = 140, // (Ȱ) + SKILL_HORSE = 130, // 승마 스킬 + SKILL_HORSE_SUMMON = 131, // 말 소환 스킬 + SKILL_HORSE_WILDATTACK = 137, // 난무 + SKILL_HORSE_CHARGE = 138, // 돌격 + SKILL_HORSE_ESCAPE = 139, // 탈출 + SKILL_HORSE_WILDATTACK_RANGE = 140, // 난무(활) - SKILL_ADD_HP = 141, // - SKILL_RESIST_PENETRATE = 142, // ö + SKILL_ADD_HP = 141, // 증혈 + SKILL_RESIST_PENETRATE = 142, // 철통 GUILD_SKILL_START = 151, GUILD_SKILL_EYE = 151, @@ -176,35 +176,35 @@ class CSkillProto { public: char szName[64]; - DWORD dwVnum; // ȣ + DWORD dwVnum; // 번호 - DWORD dwType; // 0: , 1: , 2: ڰ, 3: , 4: - BYTE bMaxLevel; // ִ õ - BYTE bLevelLimit; // - int iSplashRange; // ÷ Ÿ + DWORD dwType; // 0: 전직업, 1: 무사, 2: 자객, 3: 수라, 4: 무당 + BYTE bMaxLevel; // 최대 수련도 + BYTE bLevelLimit; // 레벨제한 + int iSplashRange; // 스플래쉬 거리 제한 - BYTE bPointOn; // Ű°? (Ÿġ, MAX HP, HP REGEN ) - CPoly kPointPoly; // + BYTE bPointOn; // 어디에 결과값을 적용 시키는가? (타격치, MAX HP, HP REGEN 등등등) + CPoly kPointPoly; // 결과값 만드는 공식 - CPoly kSPCostPoly; // SP - CPoly kDurationPoly; // ð - CPoly kDurationSPCostPoly; // SP - CPoly kCooldownPoly; // ٿ ð - CPoly kMasterBonusPoly; // ʽ - CPoly kSplashAroundDamageAdjustPoly; // ÷ + CPoly kSPCostPoly; // 사용 SP 공식 + CPoly kDurationPoly; // 지속 시간 공식 + CPoly kDurationSPCostPoly; // 지속 SP 공식 + CPoly kCooldownPoly; // 쿨다운 시간 공식 + CPoly kMasterBonusPoly; // 마스터일 때 보너스 공식 + CPoly kSplashAroundDamageAdjustPoly; // 스플래쉬 공격일 경우 주위 적에게 입히는 데미지 감소 비율 - DWORD dwFlag; // ųɼ - DWORD dwAffectFlag; // ų Ǵ Affect + DWORD dwFlag; // 스킬옵션 + DWORD dwAffectFlag; // 스킬에 맞은 경우 적용되는 Affect - BYTE bLevelStep; // ѹ øµ ʿ ų Ʈ - DWORD preSkillVnum; // µ ʿ ų - BYTE preSkillLevel; // ų + BYTE bLevelStep; // 한번에 올리는데 필요한 스킬 포인트 수 + DWORD preSkillVnum; // 배우는데 필요한 이전에 배워야할 스킬 + BYTE preSkillLevel; // 이전에 배워야할 스킬의 레벨 int lMaxHit; BYTE bSkillAttrType; - // 2 + // 2차 적용 BYTE bPointOn2; CPoly kPointPoly2; CPoly kDurationPoly2; @@ -218,7 +218,7 @@ class CSkillProto return dwVnum == SKILL_TANHWAN || dwVnum == SKILL_HORSE_CHARGE; } - // 3 + // 3차 적용 BYTE bPointOn3; CPoly kPointPoly3; CPoly kDurationPoly3; diff --git a/src/game/src/skill_power.h b/src/game/src/skill_power.h index a82afae..8fa96ff 100644 --- a/src/game/src/skill_power.h +++ b/src/game/src/skill_power.h @@ -8,7 +8,7 @@ class CTableBySkill : public singleton CTableBySkill() : m_aiSkillDamageByLevel(NULL) { - //ų ߰ ʱȭ + //스킬 레벨당 추가데미지 초기화 for ( int job = 0; job < JOB_MAX_NUM * 2; ++job ) m_aiSkillPowerByLevelFromType[job] = NULL; } @@ -18,18 +18,18 @@ class CTableBySkill : public singleton DeleteAll(); } - //̺ üũ + //테이블 세팅 체크 bool Check() const; - // + //삭제 void DeleteAll(); - //ų ųĿ ̺ + //스킬레벨단위 스킬파워 테이블 int GetSkillPowerByLevelFromType( int job, int skillgroup, int skilllevel, bool bMob ) const; void SetSkillPowerByLevelFromType( int idx, const int* aTable ); void DeleteSkillPowerByLevelFromType( int idx ); - // ߰ ų ̺ + //레벨당 추가 스킬데미지 테이블 int GetSkillDamageByLevel( int Level ) const; void SetSkillDamageByLevelTable( const int* aTable ); void DeleteSkillDamageByLevelTable(); diff --git a/src/game/src/target.h b/src/game/src/target.h index abc1f62..babc230 100644 --- a/src/game/src/target.h +++ b/src/game/src/target.h @@ -17,8 +17,8 @@ EVENTINFO(TargetInfo) DWORD dwPID; DWORD dwQuestIndex; - char szTargetName[32+1]; // Ʈ ϴ ̸ - char szTargetDesc[32+1]; // Ŭ̾Ʈ ۵Ǵ ̸ + char szTargetName[32+1]; // 퀘스트에서 사용하는 이름 + char szTargetDesc[32+1]; // 실제 클라이언트에 전송되는 이름 int iType; int iArg1; diff --git a/src/game/src/unique_item.h b/src/game/src/unique_item.h index f3b0990..9f10e65 100644 --- a/src/game/src/unique_item.h +++ b/src/game/src/unique_item.h @@ -40,13 +40,13 @@ enum ITEM_GIVE_STAT_RESET_COUNT_VNUM = 70014, ITEM_SKILLFORGET_VNUM = 70037, - ITEM_SKILLFORGET2_VNUM = 70055, // 7, 8 ų + ITEM_SKILLFORGET2_VNUM = 70055, // 7, 8 스킬 망각서 - UNIQUE_ITEM_FISH_MIND = 71008, // - UNIQUE_ITEM_SAFEBOX_EXPAND = 71009, // âȮ - UNIQUE_ITEM_AUTOLOOT_GOLD = 71010, // 3 - UNIQUE_ITEM_EMOTION_MASK = 71011, // - UNIQUE_ITEM_EMOTION_MASK2 = 71033, // + UNIQUE_ITEM_FISH_MIND = 71008, // 월간어심 + UNIQUE_ITEM_SAFEBOX_EXPAND = 71009, // 창고확장권 + UNIQUE_ITEM_AUTOLOOT_GOLD = 71010, // 제3의 손 + UNIQUE_ITEM_EMOTION_MASK = 71011, // 열정의 가면 + UNIQUE_ITEM_EMOTION_MASK2 = 71033, // 열정의 가면 ITEM_NEW_YEAR_GREETING_VNUM = 50023, @@ -106,11 +106,11 @@ enum REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE = 76007, - // ȥ Ȯ ִ + // 용혼석 추출 확률을 높여주는 아이템 DRAGON_SOUL_EXTRACTOR_GROUP = 10600, - // ִ + // 용심 추출해주는 아이템 DRAGON_HEART_EXTRACTOR_GROUP = 10601, - // ȥ ִ . + // 용혼석에서 추출할 때 주는 용심. DRAGON_HEART_VNUM = 100000, }; diff --git a/src/game/src/war_map.h b/src/game/src/war_map.h index d57950c..4d9a4d2 100644 --- a/src/game/src/war_map.h +++ b/src/game/src/war_map.h @@ -68,7 +68,7 @@ class CWarMap DWORD GetWinnerGuild(); void UsePotion(LPCHARACTER ch, LPITEM item); - void Draw(); // º ó + void Draw(); // 강제 무승부 처리 void Timeout(); void CheckWarEnd(); bool SetEnded(); @@ -125,8 +125,8 @@ class CWarMap void Initialize(); - int GetAccumulatedJoinerCount(); // - int GetCurJointerCount(); // + int GetAccumulatedJoinerCount(); // 누적된 참가자 수 + int GetCurJointerCount(); // 현재 참가자 수 void AppendMember(LPCHARACTER ch); void RemoveMember(LPCHARACTER ch); diff --git a/src/game/src/xmas_event.h b/src/game/src/xmas_event.h index 1fb568e..97d7bf9 100644 --- a/src/game/src/xmas_event.h +++ b/src/game/src/xmas_event.h @@ -5,8 +5,8 @@ namespace xmas { enum { - MOB_SANTA_VNUM = 20031, //Ÿ - // MOB_SANTA_VNUM = 20095, // + MOB_SANTA_VNUM = 20031, //산타 + // MOB_SANTA_VNUM = 20095, //노해 MOB_XMAS_TREE_VNUM = 20032, MOB_XMAS_FIRWORK_SELLER_VNUM = 9004, }; From 248205ae01140656c174b146c160d3d1319f370c Mon Sep 17 00:00:00 2001 From: sdgmt2 Date: Mon, 1 Apr 2024 12:43:31 +0200 Subject: [PATCH 02/21] fix db header encoding --- src/db/src/AuctionManager.h | 8 +- src/db/src/Cache.h | 14 ++-- src/db/src/ClientManager.h | 76 +++++++++--------- src/db/src/CsvReader.h | 152 ++++++++++++++++++------------------ src/db/src/DBManager.h | 6 +- src/db/src/GuildManager.h | 4 +- src/db/src/Marriage.h | 2 +- src/db/src/Peer.h | 6 +- src/db/src/PrivManager.h | 6 +- src/db/src/ProtoReader.h | 6 +- src/db/src/QID.h | 10 +-- 11 files changed, 145 insertions(+), 145 deletions(-) diff --git a/src/db/src/AuctionManager.h b/src/db/src/AuctionManager.h index bb6c2c8..8155c63 100644 --- a/src/db/src/AuctionManager.h +++ b/src/db/src/AuctionManager.h @@ -243,7 +243,7 @@ private: TItemInfoCacheMap item_cache_map; }; -// pc ߴ Ÿ . +// pc가 입찰에 참여했던 경매를 관리. class MyBidBoard { public: @@ -255,7 +255,7 @@ public: int GetMoney (DWORD player_id, DWORD item_id); bool Delete (DWORD player_id, DWORD item_id); - // ̹ . + // 이미 있으면 덮어 씌운다. void Insert (DWORD player_id, DWORD item_id, int money); private: @@ -267,11 +267,11 @@ private: class AuctionManager : public singleton { private: - // auction ϵ ۵. + // auction에 등록된 아이템들. typedef std::unordered_map TItemCacheMap; TItemCacheMap auction_item_cache_map; - // auction ϵ , ̺ Ե ʴ ϴ ͵ + // auction에 등록된 정보 중 가격, 등등 아이템 테이블에 포함되지 않는 정보들을 관리하는 것들 AuctionBoard Auction; SaleBoard Sale; WishBoard Wish; diff --git a/src/db/src/Cache.h b/src/db/src/Cache.h index 5347937..f2ba3bf 100644 --- a/src/db/src/Cache.h +++ b/src/db/src/Cache.h @@ -29,7 +29,7 @@ class CPlayerTableCache : public cache // MYSHOP_PRICE_LIST /** * @class CItemPriceListTableCache - * @brief λ Ʈ ij class + * @brief 개인상점의 아이템 가격정보 리스트에 대한 캐시 class * @version 05/06/10 Bang2ni - First release. */ class CItemPriceListTableCache : public cache< TItemPriceListTable > @@ -38,20 +38,20 @@ class CItemPriceListTableCache : public cache< TItemPriceListTable > /// Constructor /** - * ij ð Ѵ. + * 캐시 만료 시간을 설정한다. */ CItemPriceListTableCache(void); - /// Ʈ + /// 리스트 갱신 /** - * @param [in] pUpdateList Ʈ + * @param [in] pUpdateList 갱신할 리스트 * - * ijõ Ѵ. - * Ʈ á ij̵ ڿ Ѵ. + * 캐시된 가격정보를 갱신한다. + * 가격정보 리스트가 가득 찼을 경우 기존에 캐싱된 정보들을 뒤에서 부터 삭제한다. */ void UpdateList(const TItemPriceListTable* pUpdateList); - /// DB Ѵ. + /// 가격정보를 DB 에 기록한다. virtual void OnFlush(void); private: diff --git a/src/db/src/ClientManager.h b/src/db/src/ClientManager.h index 251cd2a..5491e3e 100644 --- a/src/db/src/ClientManager.h +++ b/src/db/src/ClientManager.h @@ -48,10 +48,10 @@ class CClientManager : public singleton typedef std::unordered_map TChannelStatusMap; // MYSHOP_PRICE_LIST - /// Ʈ û + /// 아이템 가격정보 리스트 요청 정보 /** * first: Peer handle - * second: û ÷̾ ID + * second: 요청한 플레이어의 ID */ typedef std::pair< DWORD, DWORD > TItemPricelistReqInfo; // END_OF_MYSHOP_PRICE_LIST @@ -77,7 +77,7 @@ class CClientManager : public singleton pAccountTable = NULL; player_id = dwPID; }; - //ϼɿ + //독일선물기능용 생성자 ClientHandleInfo(DWORD argHandle, DWORD dwPID, DWORD accountId) { dwHandle = argHandle; @@ -116,7 +116,7 @@ class CClientManager : public singleton void SetChinaEventServer(bool flag) { m_bChinaEventServer = flag; } bool IsChinaEventServer() { return m_bChinaEventServer; } - DWORD GetUserCount(); // ӵ Ѵ. + DWORD GetUserCount(); // 접속된 사용자 수를 리턴 한다. void SendAllGuildSkillRechargePacket(); void SendTime(); @@ -136,23 +136,23 @@ class CClientManager : public singleton void UpdateItemCache(); // MYSHOP_PRICE_LIST - /// Ʈ ijø ´. + /// 가격정보 리스트 캐시를 가져온다. /** - * @param [in] dwID Ʈ .(÷̾ ID) - * @return Ʈ ij + * @param [in] dwID 가격정보 리스트의 소유자.(플레이어 ID) + * @return 가격정보 리스트 캐시의 포인터 */ CItemPriceListTableCache* GetItemPriceListCache(DWORD dwID); - /// Ʈ ijø ִ´. + /// 가격정보 리스트 캐시를 넣는다. /** - * @param [in] pItemPriceList ijÿ Ʈ + * @param [in] pItemPriceList 캐시에 넣을 아이템 가격정보 리스트 * - * ijð ̹ Update ƴ replace Ѵ. + * 캐시가 이미 있으면 Update 가 아닌 replace 한다. */ void PutItemPriceListCache(const TItemPriceListTable* pItemPriceList); - /// Flush ð Ʈ ijø Flush ְ ijÿ Ѵ. + /// Flush 시간이 만료된 아이템 가격정보 리스트 캐시를 Flush 해주고 캐시에서 삭제한다. void UpdateItemPriceListCache(void); // END_OF_MYSHOP_PRICE_LIST @@ -170,8 +170,8 @@ class CClientManager : public singleton void SendNotice(const char * c_pszFormat, ...); - std::string GetCommand(char* str); //ϼɿ ɾ Լ - void ItemAward(CPeer * peer, char* login); // + std::string GetCommand(char* str); //독일선물기능에서 명령어 얻는 함수 + void ItemAward(CPeer * peer, char* login); //독일 선물 기능 CPeer * AddPeer(bufferevent* bufev, sockaddr* addr); void RemovePeer(CPeer * pPeer); @@ -199,9 +199,9 @@ class CClientManager : public singleton bool InitializeObjectTable(); bool InitializeMonarch(); - // mob_proto.txt, item_proto.txt mob_proto, item_proto real db ݿ. - // item_proto, mob_proto db ݿ ʾƵ, ưµ , - //   db item_proto, mob_proto о ߻Ѵ. + // mob_proto.txt, item_proto.txt에서 읽은 mob_proto, item_proto를 real db에 반영. + // item_proto, mob_proto를 db에 반영하지 않아도, 게임 돌아가는데는 문제가 없지만, + // 운영툴 등에서 db의 item_proto, mob_proto를 읽어 쓰기 때문에 문제가 발생한다. bool MirrorMobTableIntoDB(); bool MirrorItemTableIntoDB(); @@ -260,20 +260,20 @@ class CClientManager : public singleton // END_PLAYER_INDEX_CREATE_BUG_FIX // MYSHOP_PRICE_LIST - /// ε Result ó + /// 가격정보 로드 쿼리에 대한 Result 처리 /** - * @param peer û Game server peer ü - * @param pMsg Result ü + * @param peer 가격정보를 요청한 Game server 의 peer 객체 포인터 + * @param pMsg 쿼리의 Result 로 받은 객체의 포인터 * - * ε Ʈ ijÿ ϰ peer Ʈ ش. + * 로드된 가격정보 리스트를 캐시에 저장하고 peer 에게 리스트를 보내준다. */ void RESULT_PRICELIST_LOAD(CPeer* peer, SQLMsg* pMsg); - /// Ʈ ε Result ó + /// 가격정보 업데이트를 위한 로드 쿼리에 대한 Result 처리 /** - * @param pMsg Result ü + * @param pMsg 쿼리의 Result 로 받은 객체의 포인터 * - * ε Ʈ ijø Ʈ Ʈ Ѵ. + * 로드된 정보로 가격정보 리스트 캐시를 만들고 업데이트 받은 가격정보로 업데이트 한다. */ void RESULT_PRICELIST_LOAD_FOR_UPDATE(SQLMsg* pMsg); // END_OF_MYSHOP_PRICE_LIST @@ -353,7 +353,7 @@ class CClientManager : public singleton void SendAllLoginToBilling(); void SendLoginToBilling(CLoginData * pkLD, bool bLogin); - // ȥ + // 결혼 void MarriageAdd(TPacketMarriageAdd * p); void MarriageUpdate(TPacketMarriageUpdate * p); void MarriageRemove(TPacketMarriageRemove * p); @@ -363,19 +363,19 @@ class CClientManager : public singleton void WeddingEnd(TPacketWeddingEnd * p); // MYSHOP_PRICE_LIST - // λ + // 개인상점 가격정보 - /// Ʈ Ʈ Ŷ(HEADER_GD_MYSHOP_PRICELIST_UPDATE) óԼ + /// 아이템 가격정보 리스트 업데이트 패킷(HEADER_GD_MYSHOP_PRICELIST_UPDATE) 처리함수 /** - * @param [in] pPacket Ŷ + * @param [in] pPacket 패킷 데이터의 포인터 */ void MyshopPricelistUpdate(const TPacketMyshopPricelistHeader* pPacket); - /// Ʈ û Ŷ(HEADER_GD_MYSHOP_PRICELIST_REQ) óԼ + /// 아이템 가격정보 리스트 요청 패킷(HEADER_GD_MYSHOP_PRICELIST_REQ) 처리함수 /** - * @param peer Ŷ Game server peer ü - * @param [in] dwHandle û peer ڵ - * @param [in] dwPlayerID Ʈ û ÷̾ ID + * @param peer 패킷을 보낸 Game server 의 peer 객체의 포인터 + * @param [in] dwHandle 가격정보를 요청한 peer 의 핸들 + * @param [in] dwPlayerID 가격정보 리스트를 요청한 플레이어의 ID */ void MyshopPricelistRequest(CPeer* peer, DWORD dwHandle, DWORD dwPlayerID); // END_OF_MYSHOP_PRICE_LIST @@ -413,7 +413,7 @@ class CClientManager : public singleton typedef std::unordered_map TLoginDataByAID; TLoginDataByAID m_map_pkLoginDataByAID; - // Login LoginData pair ( α Ǿִ ) + // Login LoginData pair (실제 로그인 되어있는 계정) typedef std::unordered_map TLogonAccountMap; TLogonAccountMap m_map_kLogonAccount; @@ -445,14 +445,14 @@ class CClientManager : public singleton bool m_bShutdowned; - TPlayerTableCacheMap m_map_playerCache; // ÷̾ id key + TPlayerTableCacheMap m_map_playerCache; // 플레이어 id가 key - TItemCacheMap m_map_itemCache; // id key - TItemCacheSetPtrMap m_map_pkItemCacheSetPtr; // ÷̾ id key, ÷̾  ij ֳ? + TItemCacheMap m_map_itemCache; // 아이템 id가 key + TItemCacheSetPtrMap m_map_pkItemCacheSetPtr; // 플레이어 id가 key, 이 플레이어가 어떤 아이템 캐쉬를 가지고 있나? // MYSHOP_PRICE_LIST - /// ÷̾ Ʈ map. key: ÷̾ ID, value: Ʈ ij - TItemPriceListCacheMap m_mapItemPriceListCache; ///< ÷̾ Ʈ + /// 플레이어별 아이템 가격정보 리스트 map. key: 플레이어 ID, value: 가격정보 리스트 캐시 + TItemPriceListCacheMap m_mapItemPriceListCache; ///< 플레이어별 아이템 가격정보 리스트 // END_OF_MYSHOP_PRICE_LIST TChannelStatusMap m_mChannelStatus; @@ -490,7 +490,7 @@ class CClientManager : public singleton //BOOT_LOCALIZATION public: - /* ʱȭ + /* 로컬 정보 초기화 **/ bool InitializeLocalization(); diff --git a/src/db/src/CsvReader.h b/src/db/src/CsvReader.h index e8f0919..c9bce44 100644 --- a/src/db/src/CsvReader.h +++ b/src/db/src/CsvReader.h @@ -12,28 +12,28 @@ //////////////////////////////////////////////////////////////////////////////// /// \class cCsvAlias -/// \brief CSV ߻ϴ ε ̱ -/// ü. +/// \brief CSV 파일을 수정했을 때 발생하는 인덱스 문제를 줄이기 위한 +/// 별명 객체. /// -/// 0 ÷ A ϰ, 1 ÷ B -/// ϰ ־µ... +/// 예를 들어 0번 컬럼이 A에 관한 내용을 포함하고, 1번 컬럼이 B에 관한 내용을 +/// 포함하고 있었는데... /// ///
 /// int a = row.AsInt(0);
 /// int b = row.AsInt(1);
 /// 
/// -/// ̿ C ϴ ÷ , ϵڵǾ ִ -/// 1 ãƼ ľ ϴµ, ߻ϱ ۾̴. +/// 그 사이에 C에 관한 내용을 포함하는 컬럼이 끼어든 경우, 하드코딩되어 있는 +/// 1번을 찾아서 고쳐야 하는데, 상당히 에러가 발생하기 쉬운 작업이다. /// ///
 /// int a = row.AsInt(0);
 /// int c = row.AsInt(1);
-/// int b = row.AsInt(2); <--  κ  Ű Ѵ.
+/// int b = row.AsInt(2); <-- 이 부분을 일일이 신경써야 한다.
 /// 
/// -/// κ ڿ óϸ  ణ̳ -/// ִ. +/// 이 부분을 문자열로 처리하면 유지보수에 들어가는 수고를 약간이나마 줄일 수 +/// 있다. //////////////////////////////////////////////////////////////////////////////// class cCsvAlias @@ -47,51 +47,51 @@ private: typedef std::map INDEX2NAME_MAP; #endif - NAME2INDEX_MAP m_Name2Index; ///< ε ϱ ̸ - INDEX2NAME_MAP m_Index2Name; ///< ߸ alias ˻ϱ ߰ + NAME2INDEX_MAP m_Name2Index; ///< 셀 인덱스 대신으로 사용하기 위한 이름들 + INDEX2NAME_MAP m_Index2Name; ///< 잘못된 alias를 검사하기 위한 추가적인 맵 public: - /// \brief + /// \brief 생성자 cCsvAlias() {} - /// \brief Ҹ + /// \brief 소멸자 virtual ~cCsvAlias() {} public: - /// \brief ׼ , ̸ Ѵ. + /// \brief 셀을 액세스할 때, 숫자 대신 사용할 이름을 등록한다. void AddAlias(const char* name, size_t index); - /// \brief ͸ Ѵ. + /// \brief 모든 데이터를 삭제한다. void Destroy(); - /// \brief ε ̸ ȯѴ. + /// \brief 숫자 인덱스를 이름으로 변환한다. const char* operator [] (size_t index) const; - /// \brief ̸ ε ȯѴ. + /// \brief 이름을 숫자 인덱스로 변환한다. size_t operator [] (const char* name) const; private: - /// \brief + /// \brief 복사 생성자 금지 cCsvAlias(const cCsvAlias&) {} - /// \brief + /// \brief 대입 연산자 금지 const cCsvAlias& operator = (const cCsvAlias&) { return *this; } }; //////////////////////////////////////////////////////////////////////////////// /// \class cCsvRow -/// \brief CSV ĸȭ Ŭ +/// \brief CSV 파일의 한 행을 캡슐화한 클래스 /// -/// CSV ⺻ ̴ ϳ ',' ڷ ̴. -/// , ȿ Ư ڷ ̴ ',' ڳ '"' ڰ  , -/// ణ ̻ϰ Ѵ. ȭ ̴. +/// CSV의 기본 포맷은 엑셀에서 보이는 하나의 셀을 ',' 문자로 구분한 것이다. +/// 하지만, 셀 안에 특수 문자로 쓰이는 ',' 문자나 '"' 문자가 들어갈 경우, +/// 모양이 약간 이상하게 변한다. 다음은 그 변화의 예이다. /// ///
-///  ̴  |  CSV Ͽ ִ 
+/// 엑셀에서 보이는 모양 | 실제 CSV 파일에 들어가있는 모양
 /// ---------------------+----------------------------------------------------
 /// ItemPrice            | ItemPrice
 /// Item,Price           | "Item,Price"
@@ -101,9 +101,9 @@ private:
 /// Item",Price          | "Item"",Price"
 /// 
/// -/// μ ִ. -/// - ο ',' Ǵ '"' ڰ  , ¿쿡 '"' ڰ . -/// - '"' ڴ 2 ġȯȴ. +/// 이 예로서 다음과 같은 사항을 알 수 있다. +/// - 셀 내부에 ',' 또는 '"' 문자가 들어갈 경우, 셀 좌우에 '"' 문자가 생긴다. +/// - 셀 내부의 '"' 문자는 2개로 치환된다. /// /// \sa cCsvFile //////////////////////////////////////////////////////////////////////////////// @@ -111,51 +111,51 @@ private: class cCsvRow : public std::vector { public: - /// \brief ⺻ + /// \brief 기본 생성자 cCsvRow() {} - /// \brief Ҹ + /// \brief 소멸자 ~cCsvRow() {} public: - /// \brief ش ͸ int ȯѴ. + /// \brief 해당 셀의 데이터를 int 형으로 반환한다. int AsInt(size_t index) const { return atoi(at(index).c_str()); } - /// \brief ش ͸ double ȯѴ. + /// \brief 해당 셀의 데이터를 double 형으로 반환한다. double AsDouble(size_t index) const { return atof(at(index).c_str()); } - /// \brief ش ͸ ڿ ȯѴ. + /// \brief 해당 셀의 데이터를 문자열로 반환한다. const char* AsString(size_t index) const { return at(index).c_str(); } - /// \brief شϴ ̸ ͸ int ȯѴ. + /// \brief 해당하는 이름의 셀 데이터를 int 형으로 반환한다. int AsInt(const char* name, const cCsvAlias& alias) const { return atoi( at(alias[name]).c_str() ); } - /// \brief شϴ ̸ ͸ int ȯѴ. + /// \brief 해당하는 이름의 셀 데이터를 int 형으로 반환한다. double AsDouble(const char* name, const cCsvAlias& alias) const { return atof( at(alias[name]).c_str() ); } - /// \brief شϴ ̸ ͸ ڿ ȯѴ. + /// \brief 해당하는 이름의 셀 데이터를 문자열로 반환한다. const char* AsString(const char* name, const cCsvAlias& alias) const { return at(alias[name]).c_str(); } private: - /// \brief + /// \brief 복사 생성자 금지 cCsvRow(const cCsvRow&) {} - /// \brief + /// \brief 대입 연산자 금지 const cCsvRow& operator = (const cCsvRow&) { return *this; } }; //////////////////////////////////////////////////////////////////////////////// /// \class cCsvFile -/// \brief CSV(Comma Seperated Values) read/writeϱ Ŭ +/// \brief CSV(Comma Seperated Values) 파일을 read/write하기 위한 클래스 /// /// sample ///
@@ -179,8 +179,8 @@ private:
 /// file.save("test.csv", false);
 /// 
/// -/// \todo Ͽ о ƴ϶, ޸ ҽκ д Լ -/// ־ ϴ. +/// \todo 파일에서만 읽어들일 것이 아니라, 메모리 소스로부터 읽는 함수도 +/// 있어야 할 듯 하다. //////////////////////////////////////////////////////////////////////////////// class cCsvFile @@ -188,55 +188,55 @@ class cCsvFile private: typedef std::vector ROWS; - ROWS m_Rows; ///< ÷ + ROWS m_Rows; ///< 행 컬렉션 public: - /// \brief + /// \brief 생성자 cCsvFile() {} - /// \brief Ҹ + /// \brief 소멸자 virtual ~cCsvFile() { Destroy(); } public: - /// \brief ̸ CSV εѴ. + /// \brief 지정된 이름의 CSV 파일을 로드한다. bool Load(const char* fileName, const char seperator=',', const char quote='"'); - /// \brief ִ CSV Ͽ Ѵ. + /// \brief 가지고 있는 내용을 CSV 파일에다 저장한다. bool Save(const char* fileName, bool append=false, char seperator=',', char quote='"') const; - /// \brief ͸ ޸𸮿 Ѵ. + /// \brief 모든 데이터를 메모리에서 삭제한다. void Destroy(); - /// \brief شϴ ε ȯѴ. + /// \brief 해당하는 인덱스의 행을 반환한다. cCsvRow* operator [] (size_t index); - /// \brief شϴ ε ȯѴ. + /// \brief 해당하는 인덱스의 행을 반환한다. const cCsvRow* operator [] (size_t index) const; - /// \brief ȯѴ. + /// \brief 행의 갯수를 반환한다. size_t GetRowCount() const { return m_Rows.size(); } private: - /// \brief + /// \brief 복사 생성자 금지 cCsvFile(const cCsvFile&) {} - /// \brief + /// \brief 대입 연산자 금지 const cCsvFile& operator = (const cCsvFile&) { return *this; } }; //////////////////////////////////////////////////////////////////////////////// /// \class cCsvTable -/// \brief CSV ̿ ̺ ͸ εϴ 찡 , Ŭ -/// ۾ ϱ ƿƼ Ŭ. +/// \brief CSV 파일을 이용해 테이블 데이터를 로드하는 경우가 많은데, 이 클래스는 +/// 그 작업을 좀 더 쉽게 하기 위해 만든 유틸리티 클래스다. /// -/// CSV εϴ , ڸ ̿ ׼ؾ ϴµ, CSV -/// ٲ , ڵ Ѵ. ۾ -/// Ű 䱸ϴ ٰ, ߻ϱ . ׷Ƿ ڷ -/// ׼ϱ⺸ٴ ڿ ׼ϴ ణ ٰ ִ. +/// CSV 파일을 로드하는 경우, 숫자를 이용해 셀을 액세스해야 하는데, CSV +/// 파일의 포맷이 바뀌는 경우, 이 숫자들을 변경해줘야한다. 이 작업이 꽤 +/// 신경 집중을 요구하는 데다가, 에러가 발생하기 쉽다. 그러므로 숫자로 +/// 액세스하기보다는 문자열로 액세스하는 것이 약간 느리지만 낫다고 할 수 있다. /// /// sample ///
@@ -259,63 +259,63 @@ private:
 class cCsvTable
 {
 public :
-    cCsvFile  m_File;   ///< CSV  ü
+    cCsvFile  m_File;   ///< CSV 파일 객체
 private:
-    cCsvAlias m_Alias;  ///< ڿ  ε ȯϱ  ü
-    int       m_CurRow; ///<  Ⱦ   ȣ
+    cCsvAlias m_Alias;  ///< 문자열을 셀 인덱스로 변환하기 위한 객체
+    int       m_CurRow; ///< 현재 횡단 중인 행 번호
 
 
 public:
-    /// \brief 
+    /// \brief 생성자
     cCsvTable();
 
-    /// \brief Ҹ
+    /// \brief 소멸자
     virtual ~cCsvTable();
 
 
 public:
-    /// \brief  ̸ CSV  εѴ.
+    /// \brief 지정된 이름의 CSV 파일을 로드한다.
     bool Load(const char* fileName, const char seperator=',', const char quote='"');
 
-    /// \brief  ׼ ,    ̸ Ѵ.
+    /// \brief 셀을 액세스할 때, 숫자 대신 사용할 이름을 등록한다.
     void AddAlias(const char* name, size_t index) { m_Alias.AddAlias(name, index); }
 
-    /// \brief   Ѿ.
+    /// \brief 다음 행으로 넘어간다.
     bool Next();
 
-    /// \brief    ڸ ȯѴ.
+    /// \brief 현재 행의 셀 숫자를 반환한다.
     size_t ColCount() const;
 
-    /// \brief ε ̿ int   ȯѴ.
+    /// \brief 인덱스를 이용해 int 형으로 셀값을 반환한다.
     int AsInt(size_t index) const;
 
-    /// \brief ε ̿ double   ȯѴ.
+    /// \brief 인덱스를 이용해 double 형으로 셀값을 반환한다.
     double AsDouble(size_t index) const;
 
-    /// \brief ε ̿ std::string   ȯѴ.
+    /// \brief 인덱스를 이용해 std::string 형으로 셀값을 반환한다.
     const char* AsStringByIndex(size_t index) const;
 
-    /// \brief  ̸ ̿ int   ȯѴ.
+    /// \brief 셀 이름을 이용해 int 형으로 셀값을 반환한다.
     int AsInt(const char* name) const { return AsInt(m_Alias[name]); }
 
-    /// \brief  ̸ ̿ double   ȯѴ.
+    /// \brief 셀 이름을 이용해 double 형으로 셀값을 반환한다.
     double AsDouble(const char* name) const { return AsDouble(m_Alias[name]); }
 
-    /// \brief  ̸ ̿ std::string   ȯѴ.
+    /// \brief 셀 이름을 이용해 std::string 형으로 셀값을 반환한다.
     const char* AsString(const char* name) const { return AsStringByIndex(m_Alias[name]); }
 
-    /// \brief alias   ͸ Ѵ.
+    /// \brief alias를 포함해 모든 데이터를 삭제한다.
     void Destroy();
 
 
 private:
-    /// \brief   ȯѴ.
+    /// \brief 현재 행을 반환한다.
     const cCsvRow* const CurRow() const;
 
-    /// \brief   
+    /// \brief 복사 생성자 금지
     cCsvTable(const cCsvTable&) {}
 
-    /// \brief   
+    /// \brief 대입 연산자 금지
     const cCsvTable& operator = (const cCsvTable&) { return *this; }
 };
 
diff --git a/src/db/src/DBManager.h b/src/db/src/DBManager.h
index f8b1d39..049c39f 100644
--- a/src/db/src/DBManager.h
+++ b/src/db/src/DBManager.h
@@ -2,9 +2,9 @@
 #ifndef __INC_METIN2_DB_DBMANAGER_H__
 #define __INC_METIN2_DB_DBMANAGER_H__
 
-//  Ŀؼ Ŭ ...   ؼ   ޾ƿ
-//  ϵ óѴ.
-//                             ڵ by  ķα׷ Ƴ~ = _=)b
+// 디비 커넥션 클래스의 목적은...  디비에 접속해서 쿼리보내고 결과 받아오는
+// 모든 일들을 처리한다.
+//                             코드 by 꼬붕 후로그래머 아노아~ = _=)b
 #include 
 
 #define SQL_SAFE_LENGTH(size)	(size * 2 + 1)
diff --git a/src/db/src/GuildManager.h b/src/db/src/GuildManager.h
index 26227bc..0ca963e 100644
--- a/src/db/src/GuildManager.h
+++ b/src/db/src/GuildManager.h
@@ -150,7 +150,7 @@ class CGuildWarReserve
 	void	SetLastNoticeMin(int iMin) { m_iLastNoticeMin = iMin; }
 
     private:
-	CGuildWarReserve();  // ⺻ ڸ  ϵ ǵ  
+	CGuildWarReserve();  // 기본 생성자를 사용하지 못하도록 의도적으로 구현하지 않음
 
 	TGuildWarReserve				m_data;
 	// >
@@ -235,7 +235,7 @@ class CGuildManager : public singleton
 	std::map					m_map_kGuild;
 	std::map >		m_mapGuildWarEndTime;
 
-	std::set				m_DeclareMap; //   ¸ 
+	std::set				m_DeclareMap; // 선전 포고 상태를 저장
 	std::map >	m_WarMap;
 
 	typedef std::pair	stPairGuildWar;
diff --git a/src/db/src/Marriage.h b/src/db/src/Marriage.h
index 6758c8a..149df9e 100644
--- a/src/db/src/Marriage.h
+++ b/src/db/src/Marriage.h
@@ -49,7 +49,7 @@ namespace marriage
 		DWORD pid2;
 		int   love_point;
 		DWORD time;
-		BYTE is_married; // false : ȥ , true : ȥ 
+		BYTE is_married; // false : 약혼 상태, true : 결혼 상태
 		std::string name1;
 		std::string name2;
 
diff --git a/src/db/src/Peer.h b/src/db/src/Peer.h
index 46e1a87..dc2dc96 100644
--- a/src/db/src/Peer.h
+++ b/src/db/src/Peer.h
@@ -64,9 +64,9 @@ class CPeer : public CPeerBase
 	BYTE	m_bChannel;
 	DWORD	m_dwHandle;
 	DWORD	m_dwUserCount;
-	WORD	m_wListenPort;	// Ӽ Ŭ̾Ʈ  listen ϴ Ʈ
-	WORD	m_wP2PPort;	// Ӽ Ӽ P2P   listen ϴ Ʈ
-	LONG	m_alMaps[MAP_ALLOW_MAX_LEN];	//   ϰ ִ°?
+	WORD	m_wListenPort;	// 게임서버가 클라이언트를 위해 listen 하는 포트
+	WORD	m_wP2PPort;	// 게임서버가 게임서버 P2P 접속을 위해 listen 하는 포트
+	LONG	m_alMaps[MAP_ALLOW_MAX_LEN];	// 어떤 맵을 관장하고 있는가?
 
 	TItemIDRangeTable m_itemRange;
 	TItemIDRangeTable m_itemSpareRange;
diff --git a/src/db/src/PrivManager.h b/src/db/src/PrivManager.h
index 9dd20df..95eb367 100644
--- a/src/db/src/PrivManager.h
+++ b/src/db/src/PrivManager.h
@@ -23,7 +23,7 @@ struct TPrivEmpireData
 };
 
 /**
- * @version 05/06/08	Bang2ni - ӽð ߰
+ * @version 05/06/08	Bang2ni - 지속시간 추가
  */
 struct TPrivGuildData
 {
@@ -33,7 +33,7 @@ struct TPrivGuildData
     DWORD guild_id;
 
 	// ADD_GUILD_PRIV_TIME
-    time_t end_time_sec;	///< ӽð
+    time_t end_time_sec;	///< 지속시간
 
     TPrivGuildData(BYTE type, int value, DWORD guild_id, time_t _end_time_sec)
 	: type(type), value(value), bRemoved(false), guild_id(guild_id), end_time_sec(_end_time_sec )
@@ -53,7 +53,7 @@ struct TPrivCharData
 };
 
 /**
- * @version 05/06/08	Bang2ni - Guild privilege  Լ  ð ߰
+ * @version 05/06/08	Bang2ni - Guild privilege 관련 함수 지속 시간 추가
  */
 class CPrivManager : public singleton
 {
diff --git a/src/db/src/ProtoReader.h b/src/db/src/ProtoReader.h
index 5505f73..260ccdb 100644
--- a/src/db/src/ProtoReader.h
+++ b/src/db/src/ProtoReader.h
@@ -6,8 +6,8 @@
 
 #include "CsvReader.h"
 
-//csv  оͼ  ̺ ־ش.
-void putItemIntoTable(); //(̺, ׽Ʈ)
+//csv 파일을 읽어와서 아이템 테이블에 넣어준다.
+void putItemIntoTable(); //(테이블, 테스트여부)
 
 int get_Item_Type_Value(std::string inputString);
 int get_Item_SubType_Value(int type_value, std::string inputString);
@@ -19,7 +19,7 @@ int get_Item_LimitType_Value(std::string inputString);
 int get_Item_ApplyType_Value(std::string inputString);
 
 
-// 䵵   ִ.
+//몬스터 프로토도 읽을 수 있다.
 int get_Mob_Rank_Value(std::string inputString);
 int get_Mob_Type_Value(std::string inputString);
 int get_Mob_BattleType_Value(std::string inputString);
diff --git a/src/db/src/QID.h b/src/db/src/QID.h
index 230d2ef..7a39fa0 100644
--- a/src/db/src/QID.h
+++ b/src/db/src/QID.h
@@ -2,7 +2,7 @@
 #define __INC_METIN_II_DB_QID_H__
 
 /**
- * @version	05/06/10 Bang2ni -    ߰(QID_ITEMPRICE_XXX)
+ * @version	05/06/10 Bang2ni - 아이템 가격정보 쿼리 추가(QID_ITEMPRICE_XXX)
  */
 enum QID
 {
@@ -29,10 +29,10 @@ enum QID
     QID_GUILD_RANKING,			// 20
 
 	// MYSHOP_PRICE_LIST
-    QID_ITEMPRICE_SAVE,			///< 21,    
-    QID_ITEMPRICE_DESTROY,		///< 22,    
-    QID_ITEMPRICE_LOAD_FOR_UPDATE,	///< 23,  Ʈ    ε 
-    QID_ITEMPRICE_LOAD,			///< 24,   ε 
+    QID_ITEMPRICE_SAVE,			///< 21, 아이템 가격정보 저장 쿼리
+    QID_ITEMPRICE_DESTROY,		///< 22, 아이템 가격정보 삭제 쿼리
+    QID_ITEMPRICE_LOAD_FOR_UPDATE,	///< 23, 가격정보 업데이트를 위한 아이템 가격정보 로드 쿼리
+    QID_ITEMPRICE_LOAD,			///< 24, 아이템 가격정보 로드 쿼리
 	// END_OF_MYSHOP_PRICE_LIST
 };
 

From 4fc612552ad1ba2a5f603e8852b976d2862b2952 Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Mon, 1 Apr 2024 12:45:35 +0200
Subject: [PATCH 03/21] fix common header encoding

---
 src/common/VnumHelper.h    |  32 ++++----
 src/common/auction_table.h |  18 ++---
 src/common/building.h      |   4 +-
 src/common/item_length.h   | 100 ++++++++++++------------
 src/common/length.h        | 140 ++++++++++++++++-----------------
 src/common/tables.h        | 156 ++++++++++++++++++-------------------
 6 files changed, 225 insertions(+), 225 deletions(-)

diff --git a/src/common/VnumHelper.h b/src/common/VnumHelper.h
index c025f9d..82635e5 100644
--- a/src/common/VnumHelper.h
+++ b/src/common/VnumHelper.h
@@ -2,15 +2,15 @@
 #define	__HEADER_VNUM_HELPER__
 
 /**
-	̹ ϰų  ߰ ,   ҽ ĺ   
-	ĺ(=VNum) ϵڵϴ  Ǿ־  ſ µ
+	이미 존재하거나 앞으로 추가될 아이템, 몹 등을 소스에서 식별할 때 현재는 모두
+	식별자(숫자=VNum)를 하드코딩하는 방식으로 되어있어서 가독성이 매우 떨어지는데
 
-	δ ҽ   (Ȥ )   ְ ڴ ö  ߰.
+	앞으로는 소스만 봐도 어떤 아이템(혹은 몹)인지 알 수 있게 하자는 승철님의 제안으로 추가.
 
-		*     Ǵµ PCH  ٲ  ü  ؾϴ 
-		ϴ ʿ cppϿ include ؼ  .
+		* 이 파일은 변경이 잦을것으로 예상되는데 PCH에 넣으면 바뀔 때마다 전체 컴파일 해야하니 
+		일단은 필요한 cpp파일에서 include 해서 쓰도록 했음.
 
-		* cpp ϸ  ~ ũؾϴ ׳ common  ־. (game, dbƮ    )
+		* cpp에서 구현하면 컴파일 ~ 링크해야하니 그냥 common에 헤더만 넣었음. (game, db프로젝트 둘 다 사용 예정)
 
 	@date	2011. 8. 29.
 */
@@ -19,35 +19,35 @@
 class CItemVnumHelper
 {
 public:
-	///  DVD һ ȯ
-	static	const bool	IsPhoenix(DWORD vnum)				{ return 53001 == vnum; }		// NOTE: һ ȯ  53001  mob-vnum 34001 Դϴ.
+	/// 독일 DVD용 불사조 소환권
+	static	const bool	IsPhoenix(DWORD vnum)				{ return 53001 == vnum; }		// NOTE: 불사조 소환 아이템은 53001 이지만 mob-vnum은 34001 입니다.
 
-	/// 󸶴 ̺Ʈ ʽ´  ( 󸶴 ̺Ʈ Ư ̾    Ȱؼ  ٰ )
+	/// 라마단 이벤트 초승달의 반지 (원래는 라마단 이벤트용 특수 아이템이었으나 앞으로 여러 방향으로 재활용해서 계속 쓴다고 함)
 	static	const bool	IsRamadanMoonRing(DWORD vnum)		{ return 71135 == vnum; }
 
-	/// ҷ  ( ʽ´  )
+	/// 할로윈 사탕 (스펙은 초승달의 반지와 동일)
 	static	const bool	IsHalloweenCandy(DWORD vnum)		{ return 71136 == vnum; }
 
-	/// ũ ູ 
+	/// 크리스마스 행복의 반지
 	static	const bool	IsHappinessRing(DWORD vnum)		{ return 71143 == vnum; }
 
-	/// ߷Ÿ  ҴƮ 
+	/// 발렌타인 사랑의 팬던트 
 	static	const bool	IsLovePendant(DWORD vnum)		{ return 71145 == vnum; }
 };
 
 class CMobVnumHelper
 {
 public:
-	///  DVD һ  ȣ
+	/// 독일 DVD용 불사조 몹 번호
 	static	bool	IsPhoenix(DWORD vnum)				{ return 34001 == vnum; }
 	static	bool	IsIcePhoenix(DWORD vnum)				{ return 34003 == vnum; }
-	/// PetSystem ϴ ΰ?
+	/// PetSystem이 관리하는 펫인가?
 	static	bool	IsPetUsingPetSystem(DWORD vnum)	{ return (IsPhoenix(vnum) || IsReindeerYoung(vnum)) || IsIcePhoenix(vnum); }
 
-	/// 2011 ũ ̺Ʈ  (Ʊ )
+	/// 2011년 크리스마스 이벤트용 펫 (아기 순록)
 	static	bool	IsReindeerYoung(DWORD vnum)	{ return 34002 == vnum; }
 
-	/// 󸶴 ̺Ʈ  渶(20119) .. ҷ ̺Ʈ 󸶴 渶 Ŭ( , 20219)
+	/// 라마단 이벤트 보상용 흑마(20119) .. 할로윈 이벤트용 라마단 흑마 클론(스펙은 같음, 20219)
 	static	bool	IsRamadanBlackHorse(DWORD vnum)		{ return 20119 == vnum || 20219 == vnum || 22022 == vnum; }
 };
 
diff --git a/src/common/auction_table.h b/src/common/auction_table.h
index 5dbebc2..b269b37 100644
--- a/src/common/auction_table.h
+++ b/src/common/auction_table.h
@@ -26,7 +26,7 @@ public:
 	int get_price () { return offer_price; }
 } TAuctionSimpleItemInfo;
 
-//  auction .
+// 각 auction 정보들.
 // primary key (item_id)
 typedef struct _auction : public _base_auction
 {
@@ -49,8 +49,8 @@ public:
 		empire = _empire;
 	}
 
-	//  ޼ҵ   auction   ϴ  
-	// Ҵ.
+	// 이 메소드들은 어떤 변수가 auction에서 어떤 역할을 하는지 까먹을 까봐
+	// 만들어놓았다.
 	// by rtsummit
 	DWORD get_item_id () { return item_id; }
 	DWORD get_bidder_id () { return bidder_id; }
@@ -89,7 +89,7 @@ typedef struct _sale : public _base_auction
 
 } TSaleItemInfo;
 
-// wish ϴ  .
+// wish는 실제하는 아이템은 없다.
 // primary key (item_num, wisher_id)
 typedef struct _wish : public _base_auction
 {
@@ -118,9 +118,9 @@ enum AuctionCmd {OPEN_AUCTION, OPEN_WISH_AUCTION, OPEN_MY_AUCTION, OPEN_MY_WISH_
 	AUCTION_REBID, AUCTION_BID_CANCEL,
 };
 
-// ݵ FAIL տ,    ;Ѵ.
-// ֳ, <= AUCTION_FAIL ̷ CHECK  Űŵ
-// ݴ SUCCESS ڿ,    ;Ѵ. ٵ  ֱ Ϸ...
+// 반드시 FAIL 앞에, 실패 류 들이 와야한다.
+// 왜냐, <= AUCTION_FAIL 이런 CHECK을 할 거거든
+// 반대로 SUCCESS 뒤에, 성공 류 들이 와야한다. 근데 성공류가 있긴 하려나...
 
 enum AuctionResult { AUCTION_EXPIRED, AUCTION_NOT_EXPIRED, AUCTION_NOT_ENOUGH_MONEY,
 	AUCTION_SOLD, AUCTION_CANCEL, AUCTION_ALREADY_IN, AUCTION_NOT_IN, AUCTION_FAIL, AUCTION_SUCCESS };
@@ -218,7 +218,7 @@ typedef struct command_auction
 		cmd = AUCTION_CHANGING_MONEY;
 		price1 = _money;
 	}
-	// bid cmd ٸ.
+	// bid랑 cmd만 다르다.
 	void rebid (DWORD _item_id, int _bidPrice)
 	{
 		cmd = AUCTION_REBID;
@@ -322,7 +322,7 @@ typedef struct auction_impur : public command_auction
 //	auction_type;
 //	start_idx;
 //	size;
-//	conditions;  öԲ  غ.
+//	conditions; 정렬은 승철님께 조언을 구해보자.ㅇㅇ
 //}
 //
 //get_auction_detail_item_info
diff --git a/src/common/building.h b/src/common/building.h
index 6fcd8d9..f495f87 100644
--- a/src/common/building.h
+++ b/src/common/building.h
@@ -41,8 +41,8 @@ namespace building
 		int	lNPCX;
 		int	lNPCY;
 
-		DWORD	dwGroupVnum; //  ׷ ϳ Ǽ
-		DWORD	dwDependOnGroupVnum; //  ־ϴ ׷
+		DWORD	dwGroupVnum; // 같은 그룹은 하나만 건설가능
+		DWORD	dwDependOnGroupVnum; // 지어져 있어야하는 그룹
 	} TObjectProto;
 
 	typedef struct SObject
diff --git a/src/common/item_length.h b/src/common/item_length.h
index 2f44961..036af1e 100644
--- a/src/common/item_length.h
+++ b/src/common/item_length.h
@@ -31,8 +31,8 @@ enum EItemDragonSoulSockets
 	ITEM_SOCKET_DRAGON_SOUL_ACTIVE_IDX = 2,
 	ITEM_SOCKET_CHARGING_AMOUNT_IDX = 2,
 };
-//  ̰ ģ ƴϾ?
-// ߿  Ȯϸ ¼  -_-;;;
+// 헐 이거 미친거 아니야?
+// 나중에 소켓 확장하면 어쩌려고 이지랄 -_-;;;
 enum EItemUniqueSockets
 {
 	ITEM_SOCKET_UNIQUE_SAVE_TIME = ITEM_SOCKET_MAX_NUM - 2,
@@ -42,18 +42,18 @@ enum EItemUniqueSockets
 enum EItemTypes
 {
     ITEM_NONE,              //0
-    ITEM_WEAPON,            //1//
-    ITEM_ARMOR,             //2//
-    ITEM_USE,               //3// 
+    ITEM_WEAPON,            //1//무기
+    ITEM_ARMOR,             //2//갑옷
+    ITEM_USE,               //3//아이템 사용
     ITEM_AUTOUSE,           //4
     ITEM_MATERIAL,          //5
-    ITEM_SPECIAL,           //6 // 
+    ITEM_SPECIAL,           //6 //스페셜 아이템
     ITEM_TOOL,              //7
-    ITEM_LOTTERY,           //8//
-    ITEM_ELK,               //9//
+    ITEM_LOTTERY,           //8//복권
+    ITEM_ELK,               //9//돈
     ITEM_METIN,             //10
     ITEM_CONTAINER,         //11
-    ITEM_FISH,              //12//
+    ITEM_FISH,              //12//낚시
     ITEM_ROD,               //13
     ITEM_RESOURCE,          //14
     ITEM_CAMPFIRE,          //15
@@ -61,21 +61,21 @@ enum EItemTypes
     ITEM_SKILLBOOK,         //17
     ITEM_QUEST,             //18
     ITEM_POLYMORPH,         //19
-    ITEM_TREASURE_BOX,      //20//
-    ITEM_TREASURE_KEY,      //21// 
+    ITEM_TREASURE_BOX,      //20//보물상자
+    ITEM_TREASURE_KEY,      //21//보물상자 열쇠
     ITEM_SKILLFORGET,       //22
     ITEM_GIFTBOX,           //23
     ITEM_PICK,              //24
-    ITEM_HAIR,              //25//Ӹ
-    ITEM_TOTEM,             //26//
-	ITEM_BLEND,				//27//ɶ ϰ Ӽ ٴ ๰
-	ITEM_COSTUME,			//28//ڽ  (2011 8 ߰ ڽ ýۿ )
-	ITEM_DS,				//29 //ȥ
-	ITEM_SPECIAL_DS,		//30 // Ư ȥ (DS_SLOT ϴ UNIQUE ̶ ϸ )
-	ITEM_EXTRACT,			//31 ⵵.
-	ITEM_SECONDARY_COIN,	//32 ?? ??
-	ITEM_RING,				//33 
-	ITEM_BELT,				//34 Ʈ
+    ITEM_HAIR,              //25//머리
+    ITEM_TOTEM,             //26//토템
+	ITEM_BLEND,				//27//생성될때 랜덤하게 속성이 붙는 약물
+	ITEM_COSTUME,			//28//코스츔 아이템 (2011년 8월 추가된 코스츔 시스템용 아이템)
+	ITEM_DS,				//29 //용혼석
+	ITEM_SPECIAL_DS,		//30 // 특수한 용혼석 (DS_SLOT에 착용하는 UNIQUE 아이템이라 생각하면 됨)
+	ITEM_EXTRACT,			//31 추출도구.
+	ITEM_SECONDARY_COIN,	//32 ?? 명도전??
+	ITEM_RING,				//33 반지
+	ITEM_BELT,				//34 벨트
 };
 
 enum EMetinSubTypes
@@ -111,8 +111,8 @@ enum EArmorSubTypes
 
 enum ECostumeSubTypes
 {
-	COSTUME_BODY = ARMOR_BODY,			// [߿!!] ECostumeSubTypes enum value   EArmorSubTypes װͰ ƾ .
-	COSTUME_HAIR = ARMOR_HEAD,			// ̴ ڽ ۿ ߰ Ӽ ̰ڴٴ  û    Ȱϱ .
+	COSTUME_BODY = ARMOR_BODY,			// [중요!!] ECostumeSubTypes enum value는  종류별로 EArmorSubTypes의 그것과 같아야 함.
+	COSTUME_HAIR = ARMOR_HEAD,			// 이는 코스츔 아이템에 추가 속성을 붙이겠다는 사업부의 요청에 따라서 기존 로직을 활용하기 위함임.
 	COSTUME_NUM_TYPES,
 };
 
@@ -215,8 +215,8 @@ enum EUseSubTypes
 	USE_UNBIND,
 	USE_TIME_CHARGE_PER,
 	USE_TIME_CHARGE_FIX,				// 28
-	USE_PUT_INTO_BELT_SOCKET,			// 29 Ʈ Ͽ   ִ  
-	USE_PUT_INTO_RING_SOCKET,			// 30  Ͽ   ִ  (ũ  ,  ߰  )
+	USE_PUT_INTO_BELT_SOCKET,			// 29 벨트 소켓에 사용할 수 있는 아이템 
+	USE_PUT_INTO_RING_SOCKET,			// 30 반지 소켓에 사용할 수 있는 아이템 (유니크 반지 말고, 새로 추가된 반지 슬롯)
 };
 
 enum EExtractSubTypes
@@ -270,7 +270,7 @@ enum EItemFlag
 {
 	ITEM_FLAG_REFINEABLE		= (1 << 0),
 	ITEM_FLAG_SAVE			= (1 << 1),
-	ITEM_FLAG_STACKABLE		= (1 << 2),	//  ĥ  
+	ITEM_FLAG_STACKABLE		= (1 << 2),	// 여러개 합칠 수 있음
 	ITEM_FLAG_COUNT_PER_1GOLD	= (1 << 3),
 	ITEM_FLAG_SLOW_QUERY		= (1 << 4),
 	ITEM_FLAG_UNUSED01		= (1 << 5),	// UNUSED
@@ -287,24 +287,24 @@ enum EItemFlag
 
 enum EItemAntiFlag
 {
-	ITEM_ANTIFLAG_FEMALE	= (1 << 0), //   Ұ
-	ITEM_ANTIFLAG_MALE		= (1 << 1), //   Ұ
-	ITEM_ANTIFLAG_WARRIOR	= (1 << 2), //   Ұ
-	ITEM_ANTIFLAG_ASSASSIN	= (1 << 3), // ڰ  Ұ
-	ITEM_ANTIFLAG_SURA		= (1 << 4), //   Ұ 
-	ITEM_ANTIFLAG_SHAMAN	= (1 << 5), //   Ұ
-	ITEM_ANTIFLAG_GET		= (1 << 6), //   
-	ITEM_ANTIFLAG_DROP		= (1 << 7), //   
-	ITEM_ANTIFLAG_SELL		= (1 << 8), //   
-	ITEM_ANTIFLAG_EMPIRE_A	= (1 << 9), // A   Ұ
-	ITEM_ANTIFLAG_EMPIRE_B	= (1 << 10), // B   Ұ
-	ITEM_ANTIFLAG_EMPIRE_C	= (1 << 11), // C   Ұ
-	ITEM_ANTIFLAG_SAVE		= (1 << 12), //  
-	ITEM_ANTIFLAG_GIVE		= (1 << 13), // ŷ Ұ
-	ITEM_ANTIFLAG_PKDROP	= (1 << 14), // PK  
-	ITEM_ANTIFLAG_STACK		= (1 << 15), // ĥ  
-	ITEM_ANTIFLAG_MYSHOP	= (1 << 16), //   ø  
-	ITEM_ANTIFLAG_SAFEBOX	= (1 << 17), // â   
+	ITEM_ANTIFLAG_FEMALE	= (1 << 0), // 여성 사용 불가
+	ITEM_ANTIFLAG_MALE		= (1 << 1), // 남성 사용 불가
+	ITEM_ANTIFLAG_WARRIOR	= (1 << 2), // 무사 사용 불가
+	ITEM_ANTIFLAG_ASSASSIN	= (1 << 3), // 자객 사용 불가
+	ITEM_ANTIFLAG_SURA		= (1 << 4), // 수라 사용 불가 
+	ITEM_ANTIFLAG_SHAMAN	= (1 << 5), // 무당 사용 불가
+	ITEM_ANTIFLAG_GET		= (1 << 6), // 집을 수 없음
+	ITEM_ANTIFLAG_DROP		= (1 << 7), // 버릴 수 없음
+	ITEM_ANTIFLAG_SELL		= (1 << 8), // 팔 수 없음
+	ITEM_ANTIFLAG_EMPIRE_A	= (1 << 9), // A 제국 사용 불가
+	ITEM_ANTIFLAG_EMPIRE_B	= (1 << 10), // B 제국 사용 불가
+	ITEM_ANTIFLAG_EMPIRE_C	= (1 << 11), // C 제국 사용 불가
+	ITEM_ANTIFLAG_SAVE		= (1 << 12), // 저장되지 않음
+	ITEM_ANTIFLAG_GIVE		= (1 << 13), // 거래 불가
+	ITEM_ANTIFLAG_PKDROP	= (1 << 14), // PK시 떨어지지 않음
+	ITEM_ANTIFLAG_STACK		= (1 << 15), // 합칠 수 없음
+	ITEM_ANTIFLAG_MYSHOP	= (1 << 16), // 개인 상점에 올릴 수 없음
+	ITEM_ANTIFLAG_SAFEBOX	= (1 << 17), // 창고에 넣을 수 없음
 };
 
 enum EItemWearableFlag
@@ -335,16 +335,16 @@ enum ELimitTypes
 	LIMIT_CON,
 	LIMIT_PCBANG,
 
-	///  ο   ǽð ð  (socket0 Ҹ ð : unix_timestamp Ÿ)
+	/// 착용 여부와 상관 없이 실시간으로 시간 차감 (socket0에 소멸 시간이 박힘: unix_timestamp 타입)
 	LIMIT_REAL_TIME,						
 
-	///   ó (Ȥ )   Ÿ Ÿ̸  
-	///    socket0 밡ɽð(ʴ, 0̸  limit value )  ִٰ 
-	///   socket1  Ƚ  socket0 unix_timestamp Ÿ Ҹð .
+	/// 아이템을 맨 처음 사용(혹은 착용) 한 순간부터 리얼타임 타이머 시작 
+	/// 최초 사용 전에는 socket0에 사용가능시간(초단위, 0이면 프로토의 limit value값 사용) 값이 쓰여있다가 
+	/// 아이템 사용시 socket1에 사용 횟수가 박히고 socket0에 unix_timestamp 타입의 소멸시간이 박힘.
 	LIMIT_REAL_TIME_START_FIRST_USE,
 
-	///      ð Ǵ 
-	/// socket0  ð ʴ . (   ش  0̸  limit value socket0 )
+	/// 아이템을 착용 중일 때만 사용 시간이 차감되는 아이템
+	/// socket0에 남은 시간이 초단위로 박힘. (아이템 최초 사용시 해당 값이 0이면 프로토의 limit value값을 socket0에 복사)
 	LIMIT_TIMER_BASED_ON_WEAR,
 
 	LIMIT_MAX_NUM
diff --git a/src/common/length.h b/src/common/length.h
index 82eca5d..4d03f1b 100644
--- a/src/common/length.h
+++ b/src/common/length.h
@@ -23,10 +23,10 @@ enum EMisc
 
 	GUILD_NAME_MAX_LEN		= 12,
 
-	SHOP_HOST_ITEM_MAX_NUM	= 40,	/* ȣƮ ִ   */
-	SHOP_GUEST_ITEM_MAX_NUM = 18,	/* ԽƮ ִ   */
+	SHOP_HOST_ITEM_MAX_NUM	= 40,	/* 호스트의 최대 아이템 개수 */
+	SHOP_GUEST_ITEM_MAX_NUM = 18,	/* 게스트의 최대 아이템 개수 */
 
-	SHOP_PRICELIST_MAX_NUM	= 40,	///< λ  Ʈ   ִ 
+	SHOP_PRICELIST_MAX_NUM	= 40,	///< 개인상점 가격정보 리스트에서 유지할 가격정보의 최대 갯수
 
 	CHAT_MAX_LEN			= 512,
 
@@ -80,19 +80,19 @@ enum EMisc
 
 
 /**
-	 ****  Ҵ     (DB Item Position) ****
+	 **** 현재까지 할당 된 아이템 영역 정리 (DB상 Item Position) ****
 	+------------------------------------------------------+ 0
-	| ij ⺻ κ丮 (45ĭ * 2) 90ĭ           | 
+	| 캐릭터 기본 인벤토리 (45칸 * 2페이지) 90칸           | 
 	+------------------------------------------------------+ 90 = INVENTORY_MAX_NUM(90)
-	| ij  â ( ) 32ĭ                |
+	| 캐릭터 장비 창 (착용중인 아이템) 32칸                |
 	+------------------------------------------------------+ 122 = INVENTORY_MAX_NUM(90) + WEAR_MAX_NUM(32)
-	| ȥ  â ( ȥ) 12ĭ                | 
+	| 용혼석 장비 창 (착용중인 용혼석) 12칸                | 
 	+------------------------------------------------------+ 134 = 122 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_MAX_NUM(2)
-	| ȥ  â  ( ̻) 18ĭ               | 
+	| 용혼석 장비 창 예약 (아직 미사용) 18칸               | 
 	+------------------------------------------------------+ 152 = 134 + DS_SLOT_MAX(6) * DRAGON_SOUL_DECK_RESERVED_MAX_NUM(3)
-	| Ʈ κ丮 (Ʈ ÿ Ʈ   Ȱ)|
+	| 벨트 인벤토리 (벨트 착용시에만 벨트 레벨에 따라 활성)|
 	+------------------------------------------------------+ 168 = 152 + BELT_INVENTORY_SLOT_COUNT(16) = INVENTORY_AND_EQUIP_CELL_MAX
-	| ̻                                               |
+	| 미사용                                               |
 	+------------------------------------------------------+ ??
 */
 };
@@ -127,10 +127,10 @@ enum EWearPositions
 	WEAR_COSTUME_BODY,	// 19
 	WEAR_COSTUME_HAIR,	// 20
 	
-	WEAR_RING1,			// 21	: ű 1 ()
-	WEAR_RING2,			// 22	: ű 2 ()
+	WEAR_RING1,			// 21	: 신규 반지슬롯1 (왼쪽)
+	WEAR_RING2,			// 22	: 신규 반지슬롯2 (오른쪽)
 
-	WEAR_BELT,			// 23	: ű Ʈ
+	WEAR_BELT,			// 23	: 신규 벨트슬롯
 
 	WEAR_MAX = 32	// 
 };
@@ -141,7 +141,7 @@ enum EDragonSoulDeckType
 	DRAGON_SOUL_DECK_1,
 	DRAGON_SOUL_DECK_MAX_NUM = 2,
 
-	DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3,	// NOTE: ߿!   , 3 з   . DS DECK ø  ݵ  ŭ RESERVED ؾ !
+	DRAGON_SOUL_DECK_RESERVED_MAX_NUM = 3,	// NOTE: 중요! 아직 사용중이진 않지만, 3페이지 분량을 예약 해 둠. DS DECK을 늘릴 경우 반드시 그 수만큼 RESERVED에서 차감해야 함!
 };
 
 enum ESex
@@ -163,7 +163,7 @@ enum EDirection
 	DIR_MAX_NUM
 };
 
-#define ABILITY_MAX_LEVEL	10  /*  ִ  */
+#define ABILITY_MAX_LEVEL	10  /* 기술 최대 레벨 */
 
 enum EAbilityDifficulty
 {
@@ -176,9 +176,9 @@ enum EAbilityDifficulty
 
 enum EAbilityCategory
 {
-	CATEGORY_PHYSICAL,	/* ü Ƽ */
-	CATEGORY_MENTAL,	/*  Ƽ */
-	CATEGORY_ATTRIBUTE,	/* ɷ Ƽ */
+	CATEGORY_PHYSICAL,	/* 신체적 어빌리티 */
+	CATEGORY_MENTAL,	/* 정신적 어빌리티 */
+	CATEGORY_ATTRIBUTE,	/* 능력 어빌리티 */
 	CATEGORY_NUM_TYPES
 };
 
@@ -248,13 +248,13 @@ enum EParts
 
 enum EChatType
 {
-	CHAT_TYPE_TALKING,	/* ׳ ä */
-	CHAT_TYPE_INFO,	/*  ( , ġ . ) */
-	CHAT_TYPE_NOTICE,	/*  */
-	CHAT_TYPE_PARTY,	/* Ƽ */
-	CHAT_TYPE_GUILD,	/* 帻 */
-	CHAT_TYPE_COMMAND,	/* Ϲ  */
-	CHAT_TYPE_SHOUT,	/* ġ */
+	CHAT_TYPE_TALKING,	/* 그냥 채팅 */
+	CHAT_TYPE_INFO,	/* 정보 (아이템을 집었다, 경험치를 얻었다. 등) */
+	CHAT_TYPE_NOTICE,	/* 공지사항 */
+	CHAT_TYPE_PARTY,	/* 파티말 */
+	CHAT_TYPE_GUILD,	/* 길드말 */
+	CHAT_TYPE_COMMAND,	/* 일반 명령 */
+	CHAT_TYPE_SHOUT,	/* 외치기 */
 	CHAT_TYPE_WHISPER,
 	CHAT_TYPE_BIG_NOTICE,
 	CHAT_TYPE_MONARCH_NOTICE,
@@ -397,38 +397,38 @@ enum EApplyTypes
 	APPLY_ATTBONUS_SURA,	// 61
 	APPLY_ATTBONUS_SHAMAN,	// 62
 	APPLY_ATTBONUS_MONSTER,	// 63
-	APPLY_MALL_ATTBONUS,			// 64 ݷ +x%
-	APPLY_MALL_DEFBONUS,			// 65  +x%
-	APPLY_MALL_EXPBONUS,			// 66 ġ +x%
-	APPLY_MALL_ITEMBONUS,			// 67   x/10
-	APPLY_MALL_GOLDBONUS,			// 68   x/10
-	APPLY_MAX_HP_PCT,				// 69 ִ  +x%
-	APPLY_MAX_SP_PCT,				// 70 ִ ŷ +x%
-	APPLY_SKILL_DAMAGE_BONUS,		// 71 ų  * (100+x)%
-	APPLY_NORMAL_HIT_DAMAGE_BONUS,	// 72 Ÿ  * (100+x)%
-	APPLY_SKILL_DEFEND_BONUS,		// 73 ų   * (100-x)%
-	APPLY_NORMAL_HIT_DEFEND_BONUS,	// 74 Ÿ   * (100-x)%
-	APPLY_PC_BANG_EXP_BONUS,		// 75 PC  EXP ʽ
-	APPLY_PC_BANG_DROP_BONUS,		// 76 PC   ʽ
+	APPLY_MALL_ATTBONUS,			// 64 공격력 +x%
+	APPLY_MALL_DEFBONUS,			// 65 방어력 +x%
+	APPLY_MALL_EXPBONUS,			// 66 경험치 +x%
+	APPLY_MALL_ITEMBONUS,			// 67 아이템 드롭율 x/10배
+	APPLY_MALL_GOLDBONUS,			// 68 돈 드롭율 x/10배
+	APPLY_MAX_HP_PCT,				// 69 최대 생명력 +x%
+	APPLY_MAX_SP_PCT,				// 70 최대 정신력 +x%
+	APPLY_SKILL_DAMAGE_BONUS,		// 71 스킬 데미지 * (100+x)%
+	APPLY_NORMAL_HIT_DAMAGE_BONUS,	// 72 평타 데미지 * (100+x)%
+	APPLY_SKILL_DEFEND_BONUS,		// 73 스킬 데미지 방어 * (100-x)%
+	APPLY_NORMAL_HIT_DEFEND_BONUS,	// 74 평타 데미지 방어 * (100-x)%
+	APPLY_PC_BANG_EXP_BONUS,		// 75 PC방 아이템 EXP 보너스
+	APPLY_PC_BANG_DROP_BONUS,		// 76 PC방 아이템 드롭율 보너스
 
-	APPLY_EXTRACT_HP_PCT,			// 77  HP Ҹ
+	APPLY_EXTRACT_HP_PCT,			// 77 사용시 HP 소모
 
-	APPLY_RESIST_WARRIOR,			// 78 翡 
-	APPLY_RESIST_ASSASSIN,			// 79 ڰ 
-	APPLY_RESIST_SURA,				// 80 󿡰 
-	APPLY_RESIST_SHAMAN,			// 81 翡 
-	APPLY_ENERGY,					// 82 
-	APPLY_DEF_GRADE,				// 83 . DEF_GRADE_BONUS Ŭ󿡼 ι  ǵ (...) ִ.
-	APPLY_COSTUME_ATTR_BONUS,		// 84 ڽƬ ۿ  Ӽġ ʽ
-	APPLY_MAGIC_ATTBONUS_PER,		// 85  ݷ +x%
-	APPLY_MELEE_MAGIC_ATTBONUS_PER,			// 86  + и ݷ +x%
+	APPLY_RESIST_WARRIOR,			// 78 무사에게 저항
+	APPLY_RESIST_ASSASSIN,			// 79 자객에게 저항
+	APPLY_RESIST_SURA,				// 80 수라에게 저항
+	APPLY_RESIST_SHAMAN,			// 81 무당에게 저항
+	APPLY_ENERGY,					// 82 기력
+	APPLY_DEF_GRADE,				// 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다.
+	APPLY_COSTUME_ATTR_BONUS,		// 84 코스튬 아이템에 붙은 속성치 보너스
+	APPLY_MAGIC_ATTBONUS_PER,		// 85 마법 공격력 +x%
+	APPLY_MELEE_MAGIC_ATTBONUS_PER,			// 86 마법 + 밀리 공격력 +x%
 	
-	APPLY_RESIST_ICE,		// 87 ñ 
-	APPLY_RESIST_EARTH,		// 88  
-	APPLY_RESIST_DARK,		// 89  
+	APPLY_RESIST_ICE,		// 87 냉기 저항
+	APPLY_RESIST_EARTH,		// 88 대지 저항
+	APPLY_RESIST_DARK,		// 89 어둠 저항
 
-	APPLY_ANTI_CRITICAL_PCT,	//90 ũƼ 
-	APPLY_ANTI_PENETRATE_PCT,	//91 Ÿ 
+	APPLY_ANTI_CRITICAL_PCT,	//90 크리티컬 저항
+	APPLY_ANTI_PENETRATE_PCT,	//91 관통타격 저항
 
 
 	MAX_APPLY_NUM,              // 
@@ -580,7 +580,7 @@ enum EGuildWarState
 	GUILD_WAR_OVER,
 	GUILD_WAR_RESERVE,
 
-	GUILD_WAR_DURATION = 30*60, // 1ð
+	GUILD_WAR_DURATION = 30*60, // 1시간
 	GUILD_WAR_WIN_POINT = 1000,
 	GUILD_WAR_LADDER_HALF_PENALTY_TIME = 12*60*60,
 };
@@ -624,13 +624,13 @@ enum EMoneyLogType
 
 enum EPremiumTypes
 {
-	PREMIUM_EXP,		// ġ 1.2
-	PREMIUM_ITEM,		//   2
-	PREMIUM_SAFEBOX,		// â 1ĭ 3ĭ
-	PREMIUM_AUTOLOOT,		//  ڵ ݱ
-	PREMIUM_FISH_MIND,		//    Ȯ 
-	PREMIUM_MARRIAGE_FAST,	// ݽ   մϴ.
-	PREMIUM_GOLD,		//   1.5
+	PREMIUM_EXP,		// 경험치가 1.2배
+	PREMIUM_ITEM,		// 아이템 드롭율이 2배
+	PREMIUM_SAFEBOX,		// 창고가 1칸에서 3칸
+	PREMIUM_AUTOLOOT,		// 돈 자동 줍기
+	PREMIUM_FISH_MIND,		// 고급 물고기 낚일 확률 상승
+	PREMIUM_MARRIAGE_FAST,	// 금실 증가 양을 빠르게합니다.
+	PREMIUM_GOLD,		// 돈 드롭율이 1.5배
 	PREMIUM_MAX_NUM = 9
 };
 
@@ -660,10 +660,10 @@ enum SPECIAL_EFFECT
 	SE_AUTO_HPUP,
 	SE_AUTO_SPUP,
 
-	SE_EQUIP_RAMADAN_RING,		// 󸶴 ʽ´ (71135)   Ʈ (ߵƮ, Ʈ ƴ)
-	SE_EQUIP_HALLOWEEN_CANDY,		// ҷ  (-_-;)  ߵϴ Ʈ
-	SE_EQUIP_HAPPINESS_RING,		// ũ ູ (71143)   Ʈ (ߵƮ, Ʈ ƴ)
-	SE_EQUIP_LOVE_PENDANT,		// ߷Ÿ  ҴƮ(71145)   Ʈ (ߵƮ, Ʈ ƴ)
+	SE_EQUIP_RAMADAN_RING,		// 라마단 초승달의 반지(71135) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
+	SE_EQUIP_HALLOWEEN_CANDY,		// 할로윈 사탕을 착용(-_-;)한 순간에 발동하는 이펙트
+	SE_EQUIP_HAPPINESS_RING,		// 크리스마스 행복의 반지(71143) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
+	SE_EQUIP_LOVE_PENDANT,		// 발렌타인 사랑의 팬던트(71145) 착용할 때 이펙트 (발동이펙트임, 지속이펙트 아님)
 } ;
 
 enum ETeenFlags
@@ -678,10 +678,10 @@ enum ETeenFlags
 
 #include "item_length.h"
 
-// inventory position Ÿ ü
-// int Ͻ ȯ ִ ,
-// κ õ  Լ window_type  ʰ, cell ϳ ޾ұ ,( κ ϳ ̾ inventory type̶ ʿ ,)
-// κ   Լ ȣκ ϴ  ϱ ??̴.
+// inventory의 position을 나타내는 구조체
+// int와의 암시적 형변환이 있는 이유는,
+// 인벤 관련된 모든 함수가 window_type은 받지 않고, cell 하나만 받았기 때문에,(기존에는 인벤이 하나 뿐이어서 inventory type이란게 필요없었기 때문에,)
+// 인벤 관련 모든 함수 호출부분을 수정하는 것이 난감하기 ??문이다.
 
 enum EDragonSoulRefineWindowSize
 {
@@ -730,7 +730,7 @@ typedef struct SItemPos
 			return cell < INVENTORY_AND_EQUIP_SLOT_MAX;
 		case DRAGON_SOUL_INVENTORY:
 			return cell < (DRAGON_SOUL_INVENTORY_MAX_NUM);
-		//  ũⰡ  window valid üũ   .
+		// 동적으로 크기가 정해지는 window는 valid 체크를 할 수가 없다.
 		case SAFEBOX:
 		case MALL:
 			return false;
diff --git a/src/common/tables.h b/src/common/tables.h
index e50b236..ebfc248 100644
--- a/src/common/tables.h
+++ b/src/common/tables.h
@@ -6,7 +6,7 @@
 typedef	DWORD IDENT;
 
 /**
- * @version 05/06/10	Bang2ni - Myshop Pricelist  Ŷ HEADER_XX_MYSHOP_PRICELIST_XXX ߰
+ * @version 05/06/10	Bang2ni - Myshop Pricelist 관련 패킷 HEADER_XX_MYSHOP_PRICELIST_XXX 추가
  */
 enum
 {
@@ -104,8 +104,8 @@ enum
 	HEADER_GD_BILLING_CHECK		= 106,
 	HEADER_GD_MALL_LOAD			= 107,
 
-	HEADER_GD_MYSHOP_PRICELIST_UPDATE	= 108,		///<   û
-	HEADER_GD_MYSHOP_PRICELIST_REQ		= 109,		///<  Ʈ û
+	HEADER_GD_MYSHOP_PRICELIST_UPDATE	= 108,		///< 가격정보 갱신 요청
+	HEADER_GD_MYSHOP_PRICELIST_REQ		= 109,		///< 가격정보 리스트 요청
 
 	HEADER_GD_BLOCK_CHAT				= 110,
 
@@ -116,21 +116,21 @@ enum
 	// END_OF_PCBANG_IP_LIST_BY_AUTH
 
 	HEADER_GD_HAMMER_OF_TOR			= 114,
-	HEADER_GD_RELOAD_ADMIN			= 115,			///<  û
-	HEADER_GD_BREAK_MARRIAGE		= 116,			///< ȥ ı
-	HEADER_GD_ELECT_MONARCH			= 117,			///<  ǥ
-	HEADER_GD_CANDIDACY				= 118,			///<  
-	HEADER_GD_ADD_MONARCH_MONEY		= 119,			///<    
-	HEADER_GD_TAKE_MONARCH_MONEY	= 120,			///<    
-	HEADER_GD_COME_TO_VOTE			= 121,			///< ǥ
-	HEADER_GD_RMCANDIDACY			= 122,			///< ĺ  ()
-	HEADER_GD_SETMONARCH			= 123,			///<ּ ()
-	HEADER_GD_RMMONARCH			= 124,			///<ֻ
+	HEADER_GD_RELOAD_ADMIN			= 115,			///<운영자 정보 요청
+	HEADER_GD_BREAK_MARRIAGE		= 116,			///< 결혼 파기
+	HEADER_GD_ELECT_MONARCH			= 117,			///< 군주 투표
+	HEADER_GD_CANDIDACY				= 118,			///< 군주 등록
+	HEADER_GD_ADD_MONARCH_MONEY		= 119,			///< 군주 돈 증가 
+	HEADER_GD_TAKE_MONARCH_MONEY	= 120,			///< 군주 돈 감소 
+	HEADER_GD_COME_TO_VOTE			= 121,			///< 표결
+	HEADER_GD_RMCANDIDACY			= 122,			///< 후보 제거 (운영자)
+	HEADER_GD_SETMONARCH			= 123,			///<군주설정 (운영자)
+	HEADER_GD_RMMONARCH			= 124,			///<군주삭제
 	HEADER_GD_DEC_MONARCH_MONEY = 125,
 
 	HEADER_GD_CHANGE_MONARCH_LORD = 126,
-	HEADER_GD_BLOCK_COUNTRY_IP		= 127,		// 뿪 IP-Block
-	HEADER_GD_BLOCK_EXCEPTION		= 128,		// 뿪 IP-Block 
+	HEADER_GD_BLOCK_COUNTRY_IP		= 127,		// 광대역 IP-Block
+	HEADER_GD_BLOCK_EXCEPTION		= 128,		// 광대역 IP-Block 예외
 
 	HEADER_GD_REQ_CHANGE_GUILD_MASTER	= 129,
 
@@ -139,7 +139,7 @@ enum
 	HEADER_GD_UPDATE_HORSE_NAME		= 131,
 	HEADER_GD_REQ_HORSE_NAME		= 132,
 
-	HEADER_GD_DC					= 133,		// Login Key 
+	HEADER_GD_DC					= 133,		// Login Key를 지움
 
 	HEADER_GD_VALID_LOGOUT			= 134,
 
@@ -257,23 +257,23 @@ enum
 	HEADER_DG_WEDDING_START		= 155,
 	HEADER_DG_WEDDING_END		= 156,
 
-	HEADER_DG_MYSHOP_PRICELIST_RES	= 157,		///<  Ʈ 
-	HEADER_DG_RELOAD_ADMIN = 158, 				///<   ε 
-	HEADER_DG_BREAK_MARRIAGE = 159,				///< ȥ ı
-	HEADER_DG_ELECT_MONARCH			= 160,			///<  ǥ
-	HEADER_DG_CANDIDACY				= 161,			///<  
-	HEADER_DG_ADD_MONARCH_MONEY		= 162,			///<    
-	HEADER_DG_TAKE_MONARCH_MONEY	= 163,			///<    
-	HEADER_DG_COME_TO_VOTE			= 164,			///< ǥ
-	HEADER_DG_RMCANDIDACY			= 165,			///< ĺ  ()
-	HEADER_DG_SETMONARCH			= 166,			///<ּ ()
-	HEADER_DG_RMMONARCH			= 167,			///<ֻ
+	HEADER_DG_MYSHOP_PRICELIST_RES	= 157,		///< 가격정보 리스트 응답
+	HEADER_DG_RELOAD_ADMIN = 158, 				///< 운영자 정보 리로드 
+	HEADER_DG_BREAK_MARRIAGE = 159,				///< 결혼 파기
+	HEADER_DG_ELECT_MONARCH			= 160,			///< 군주 투표
+	HEADER_DG_CANDIDACY				= 161,			///< 군주 등록
+	HEADER_DG_ADD_MONARCH_MONEY		= 162,			///< 군주 돈 증가 
+	HEADER_DG_TAKE_MONARCH_MONEY	= 163,			///< 군주 돈 감소 
+	HEADER_DG_COME_TO_VOTE			= 164,			///< 표결
+	HEADER_DG_RMCANDIDACY			= 165,			///< 후보 제거 (운영자)
+	HEADER_DG_SETMONARCH			= 166,			///<군주설정 (운영자)
+	HEADER_DG_RMMONARCH			= 167,			///<군주삭제
 	HEADER_DG_DEC_MONARCH_MONEY = 168,
 
 	HEADER_DG_CHANGE_MONARCH_LORD_ACK = 169,
 	HEADER_DG_UPDATE_MONARCH_INFO	= 170,
-	HEADER_DG_BLOCK_COUNTRY_IP		= 171,		// 뿪 IP-Block
-	HEADER_DG_BLOCK_EXCEPTION		= 172,		// 뿪 IP-Block  account
+	HEADER_DG_BLOCK_COUNTRY_IP		= 171,		// 광대역 IP-Block
+	HEADER_DG_BLOCK_EXCEPTION		= 172,		// 광대역 IP-Block 예외 account
 
 	HEADER_DG_ACK_CHANGE_GUILD_MASTER = 173,
 
@@ -364,7 +364,7 @@ typedef struct SPlayerItem
 	DWORD	count;
 
 	DWORD	vnum;
-	LONG	alSockets[ITEM_SOCKET_MAX_NUM];	// Ϲȣ
+	LONG	alSockets[ITEM_SOCKET_MAX_NUM];	// 소켓번호
 
 	TPlayerItemAttribute    aAttr[ITEM_ATTRIBUTE_MAX_NUM];
 
@@ -572,9 +572,9 @@ typedef struct SShopItemTable
 	DWORD		vnum;
 	BYTE		count;
 
-    TItemPos	pos;			// PC  ̿
-	DWORD		price;	// PC, shop_table_ex.txt  ̿
-	BYTE		display_pos; // PC, shop_table_ex.txt  ̿,  ġ.
+    TItemPos	pos;			// PC 상점에만 이용
+	DWORD		price;	// PC, shop_table_ex.txt 상점에만 이용
+	BYTE		display_pos; // PC, shop_table_ex.txt 상점에만 이용, 보일 위치.
 } TShopItemTable;
 
 typedef struct SShopTable
@@ -638,12 +638,12 @@ typedef struct SItemTable : public SEntityTable
 	BYTE	bSpecular;
 	BYTE	bGainSocketPct;
 
-	WORD	sAddonType; // ⺻ Ӽ
+	WORD	sAddonType; // 기본 속성
 
-	// Ʒ limit flag realtime üũ   ,  VNUM  ε,
-	//   Ź ۸ ʿ 쿡 LIMIT_MAX_NUM 鼭 üũϴ ϰ Ŀ ̸   .
-	char		cLimitRealTimeFirstUseIndex;		//  limit ʵ尪 ߿ LIMIT_REAL_TIME_FIRST_USE ÷ ġ ( -1)
-	char		cLimitTimerBasedOnWearIndex;		//  limit ʵ尪 ߿ LIMIT_TIMER_BASED_ON_WEAR ÷ ġ ( -1) 
+	// 아래 limit flag들은 realtime에 체크 할 일이 많고, 아이템 VNUM당 고정된 값인데,
+	// 현재 구조대로 매번 아이템마다 필요한 경우에 LIMIT_MAX_NUM까지 루프돌면서 체크하는 부하가 커서 미리 저장 해 둠.
+	char		cLimitRealTimeFirstUseIndex;		// 아이템 limit 필드값 중에서 LIMIT_REAL_TIME_FIRST_USE 플래그의 위치 (없으면 -1)
+	char		cLimitTimerBasedOnWearIndex;		// 아이템 limit 필드값 중에서 LIMIT_TIMER_BASED_ON_WEAR 플래그의 위치 (없으면 -1) 
 
 } TItemTable;
 
@@ -681,7 +681,7 @@ typedef struct SPlayerLoadPacket
 {
 	DWORD	account_id;
 	DWORD	player_id;
-	BYTE	account_index;	/* account  ġ */
+	BYTE	account_index;	/* account 에서의 위치 */
 } TPlayerLoadPacket;
 
 typedef struct SPlayerCreatePacket
@@ -758,9 +758,9 @@ typedef struct SEmpireSelectPacket
 typedef struct SPacketGDSetup
 {
 	char	szPublicIP[16];	// Public IP which listen to users
-	BYTE	bChannel;	// ä
-	WORD	wListenPort;	// Ŭ̾Ʈ ϴ Ʈ ȣ
-	WORD	wP2PPort;	//   Ű P2P Ʈ ȣ
+	BYTE	bChannel;	// 채널
+	WORD	wListenPort;	// 클라이언트가 접속하는 포트 번호
+	WORD	wP2PPort;	// 서버끼리 연결 시키는 P2P 포트 번호
 	LONG	alMaps[MAP_ALLOW_MAX_LEN];
 	DWORD	dwLoginCount;
 	BYTE	bAuthServer;
@@ -938,8 +938,8 @@ typedef struct SPacketGuildWar
 	LONG	lInitialScore;
 } TPacketGuildWar;
 
-// Game -> DB :  ȭ
-// DB -> Game : Ż 
+// Game -> DB : 상대적 변화값
+// DB -> Game : 토탈된 최종값
 typedef struct SPacketGuildWarScore
 {
 	DWORD dwGuildGainPoint;
@@ -960,8 +960,8 @@ typedef struct SRefineTable
 	//DWORD result_vnum;
 	DWORD id;
 	BYTE material_count;
-	DWORD cost; // ҿ 
-	DWORD prob; // Ȯ
+	DWORD cost; // 소요 비용
+	DWORD prob; // 확률
 	TRefineMaterial materials[REFINE_MATERIAL_MAX_NUM];
 } TRefineTable;
 
@@ -1046,14 +1046,14 @@ typedef struct SPacketGDLoginByKey
 } TPacketGDLoginByKey;
 
 /**
- * @version 05/06/08	Bang2ni - ӽð ߰
+ * @version 05/06/08	Bang2ni - 지속시간 추가
  */
 typedef struct SPacketGiveGuildPriv
 {
 	BYTE type;
 	DWORD value;
 	DWORD guild_id;
-	time_t duration_sec;	///< ӽð
+	time_t duration_sec;	///< 지속시간
 } TPacketGiveGuildPriv;
 typedef struct SPacketGiveEmpirePriv
 {
@@ -1088,7 +1088,7 @@ typedef struct SPacketDGChangeCharacterPriv
 } TPacketDGChangeCharacterPriv;
 
 /**
- * @version 05/06/08	Bang2ni - ӽð ߰
+ * @version 05/06/08	Bang2ni - 지속시간 추가
  */
 typedef struct SPacketDGChangeGuildPriv
 {
@@ -1096,7 +1096,7 @@ typedef struct SPacketDGChangeGuildPriv
 	DWORD value;
 	DWORD guild_id;
 	BYTE bLog;
-	time_t end_time_sec;	///< ӽð
+	time_t end_time_sec;	///< 지속시간
 } TPacketDGChangeGuildPriv;
 
 typedef struct SPacketDGChangeEmpirePriv
@@ -1277,27 +1277,27 @@ typedef struct
 	DWORD dwPID2;
 } TPacketWeddingEnd;
 
-/// λ  .  Ŷ  ڿ byCount ŭ TItemPriceInfo  ´.
+/// 개인상점 가격정보의 헤더. 가변 패킷으로 이 뒤에 byCount 만큼의 TItemPriceInfo 가 온다.
 typedef struct SPacketMyshopPricelistHeader
 { 
-	DWORD	dwOwnerID;	///<   ÷̾ ID 
-	BYTE	byCount;	///<  
+	DWORD	dwOwnerID;	///< 가격정보를 가진 플레이어 ID 
+	BYTE	byCount;	///< 가격정보 갯수
 } TPacketMyshopPricelistHeader;
 
-/// λ  ۿ  
+/// 개인상점의 단일 아이템에 대한 가격정보
 typedef struct SItemPriceInfo
 {
-	DWORD	dwVnum;		///<  vnum
-	DWORD	dwPrice;	///< 
+	DWORD	dwVnum;		///< 아이템 vnum
+	DWORD	dwPrice;	///< 가격
 } TItemPriceInfo;
 
-/// λ   Ʈ ̺
+/// 개인상점 아이템 가격정보 리스트 테이블
 typedef struct SItemPriceListTable
 {
-	DWORD	dwOwnerID;	///<   ÷̾ ID
-	BYTE	byCount;	///<  Ʈ 
+	DWORD	dwOwnerID;	///< 가격정보를 가진 플레이어 ID
+	BYTE	byCount;	///< 가격정보 리스트의 갯수
 
-	TItemPriceInfo	aPriceInfo[SHOP_PRICELIST_MAX_NUM];	///<  Ʈ
+	TItemPriceInfo	aPriceInfo[SHOP_PRICELIST_MAX_NUM];	///< 가격정보 리스트
 } TItemPriceListTable;
 
 typedef struct
@@ -1318,12 +1318,12 @@ typedef struct SPacketPCBangIP
 //ADMIN_MANAGER
 typedef struct TAdminInfo
 {
-	DWORD m_ID;				//ID
-	char m_szAccount[32];	//
-	char m_szName[32];		//ij̸
-	char m_szContactIP[16];	//پ
-	char m_szServerIP[16];  //
-	DWORD m_Authority;		//
+	DWORD m_ID;				//고유ID
+	char m_szAccount[32];	//계정
+	char m_szName[32];		//캐릭터이름
+	char m_szContactIP[16];	//접근아이피
+	char m_szServerIP[16];  //서버아이피
+	DWORD m_Authority;		//권한
 } tAdminInfo;
 //END_ADMIN_MANAGER
 
@@ -1344,20 +1344,20 @@ typedef struct SPacketReloadAdmin
 
 typedef struct TMonarchInfo
 {
-	DWORD pid[4];  //  PID
-	int64_t money[4];  //   	
-	char name[4][32];  //  ̸	
-	char date[4][32];  //   ¥
+	DWORD pid[4];  // 군주의 PID
+	int64_t money[4];  // 군주의 별개 돈	
+	char name[4][32];  // 군주의 이름	
+	char date[4][32];  // 군주 등록 날짜
 } MonarchInfo;
 
 typedef struct TMonarchElectionInfo
 {
-	DWORD pid;  // ǥ ѻ PID
-	DWORD selectedpid; // ǥ  PID (   )
-	char date[32]; // ǥ ¥
+	DWORD pid;  // 투표 한사람 PID
+	DWORD selectedpid; // 투표 당한 PID ( 군주 참가자 )
+	char date[32]; // 투표 날짜
 } MonarchElectionInfo;
 
-//  ⸶
+// 군주 출마자
 typedef struct tMonarchCandidacy
 {
 	DWORD pid;
@@ -1429,14 +1429,14 @@ typedef struct tNeedLoginLogInfo
 	DWORD dwPlayerID;
 } TPacketNeedLoginLogInfo;
 
-//  ˸  ׽Ʈ Ŷ 
+//독일 선물 알림 기능 테스트용 패킷 정보
 typedef struct tItemAwardInformer
 {
 	char	login[LOGIN_MAX_LEN + 1];
-	char	command[20];		//ɾ
-	DWORD	vnum;			//
+	char	command[20];		//명령어
+	DWORD	vnum;			//아이템
 } TPacketItemAwardInfromer;
-//  ˸   Ŷ 
+// 선물 알림 기능 삭제용 패킷 정보
 typedef struct tDeleteAwardID
 {
 	DWORD dwID;

From 869720f9e68fba05640929c276feaeb9d65440da Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Mon, 1 Apr 2024 12:46:52 +0200
Subject: [PATCH 04/21] fix libgame header encoding

---
 src/libgame/include/attribute.h | 6 +++---
 src/libgame/include/targa.h     | 8 ++++----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/libgame/include/attribute.h b/src/libgame/include/attribute.h
index 33d22fd..907c7c4 100644
--- a/src/libgame/include/attribute.h
+++ b/src/libgame/include/attribute.h
@@ -9,13 +9,13 @@ enum EDataType
 };
 
 //
-//  Ӽ ó  
+// 맵 속성들을 처리할 때 사용
 //
 class CAttribute
 {
     public:
-	CAttribute(DWORD width, DWORD height); // dword Ÿ  0 ä.
-	CAttribute(DWORD * attr, DWORD width, DWORD height); // attr о smartϰ Ӽ о´.
+	CAttribute(DWORD width, DWORD height); // dword 타잎으로 모두 0을 채운다.
+	CAttribute(DWORD * attr, DWORD width, DWORD height); // attr을 읽어서 smart하게 속성을 읽어온다.
 	~CAttribute();
 	void Alloc();
 	int GetDataType();
diff --git a/src/libgame/include/targa.h b/src/libgame/include/targa.h
index bf0a18f..8c99263 100644
--- a/src/libgame/include/targa.h
+++ b/src/libgame/include/targa.h
@@ -6,11 +6,11 @@
 struct TGA_HEADER
 {
     char idLen;		// 0
-    char palType;	// ķƮ 1,  0
-    char imgType;	// ķƮ 1,  2
+    char palType;	// 파레트있으면 1, 없음 0
+    char imgType;	// 파레트있으면 1, 없음 2
     WORD colorBegin;	// 0
-    WORD colorCount;	// ķƮ  256,  0
-    char palEntrySize;	// ķƮ  24,  0
+    WORD colorCount;	// 파레트 있으면 256, 없음 0
+    char palEntrySize;	// 파레트 있으면 24, 없음 0
     WORD left;
     WORD top;
     WORD width;

From 350fb0d4245d376e22f7bc8cd1b983ce35d6e2be Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Mon, 1 Apr 2024 12:48:16 +0200
Subject: [PATCH 05/21] fix libsql header encoding

---
 src/libsql/include/CAsyncSQL.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/libsql/include/CAsyncSQL.h b/src/libsql/include/CAsyncSQL.h
index 915590d..e617819 100644
--- a/src/libsql/include/CAsyncSQL.h
+++ b/src/libsql/include/CAsyncSQL.h
@@ -99,8 +99,8 @@ typedef struct _SQLMsg
 	int				iID;
 	std::string			stQuery;
 
-	std::vector	vec_pkResult;	// result 
-	unsigned int		uiResultPos;	//  result ġ
+	std::vector	vec_pkResult;	// result 벡터
+	unsigned int		uiResultPos;	// 현재 result 위치
 
 	void *			pvUserData;
 	bool			bReturn;

From d471d99a24d651c2a01140d55fd2fd484d1c0f6c Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Mon, 1 Apr 2024 12:48:58 +0200
Subject: [PATCH 06/21] fix libthecore header encoding

---
 src/libthecore/include/buffer.h | 40 ++++++++++++++++-----------------
 src/libthecore/include/heart.h  |  2 +-
 src/libthecore/include/main.h   |  2 +-
 src/libthecore/include/utils.h  | 14 ++++++------
 4 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/libthecore/include/buffer.h b/src/libthecore/include/buffer.h
index 8644ea1..a69ab95 100644
--- a/src/libthecore/include/buffer.h
+++ b/src/libthecore/include/buffer.h
@@ -1,8 +1,8 @@
 /*
  *    Filename: buffer.h
- * Description: Buffer ó 
+ * Description: Buffer 처리 모듈
  *
- *      Author:  (aka. , Cronan), ۿ (aka. myevan, ڷ)
+ *      Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루)
  */
 #ifndef __INC_LIBTHECORE_BUFFER_H__
 #define __INC_LIBTHECORE_BUFFER_H__
@@ -28,30 +28,30 @@
 	int            flag;
     };
 
-	extern LPBUFFER	buffer_new(int size);				//   
-    extern void		buffer_delete(LPBUFFER buffer);					//  
-    extern void		buffer_reset(LPBUFFER buffer);					//  ̵ ʱȭ
+	extern LPBUFFER	buffer_new(int size);				// 새 버퍼 생성
+    extern void		buffer_delete(LPBUFFER buffer);					// 버퍼 삭제
+    extern void		buffer_reset(LPBUFFER buffer);					// 버퍼 길이들을 초기화
 
-    extern DWORD	buffer_size(LPBUFFER buffer);					// ۿ  
-    extern int		buffer_has_space(LPBUFFER buffer);				//   ִ ̸ 
+    extern DWORD	buffer_size(LPBUFFER buffer);					// 버퍼에 남은 길이
+    extern int		buffer_has_space(LPBUFFER buffer);				// 쓸 수 있는 길이를 리턴
 
-    extern void		buffer_write (LPBUFFER& buffer, const void* src, int length);	// ۿ .
-    extern void		buffer_read(LPBUFFER buffer, void * buf, int bytes);		// ۿ д´.
+    extern void		buffer_write (LPBUFFER& buffer, const void* src, int length);	// 버퍼에 쓴다.
+    extern void		buffer_read(LPBUFFER buffer, void * buf, int bytes);		// 버퍼에서 읽는다.
     extern BYTE		buffer_get_byte(LPBUFFER buffer);
     extern WORD		buffer_get_word(LPBUFFER buffer);
     extern DWORD	buffer_get_dword(LPBUFFER buffer);
 
-    // buffer_proceed Լ buffer_peek б ͸  ޾Ƽ  ʿ䰡
-    //   ó  󸶳 ó ٰ 뺸ؾ   . 
-    // (buffer_read, buffer_get_* ø 쿡 ˾Ƽ ó peek ó
-    //   ׷   Ƿ)
-    extern const void *	buffer_read_peek(LPBUFFER buffer);				// д ġ 
-    extern void		buffer_read_proceed(LPBUFFER buffer, int length);		// lengthŭ ó 
+    // buffer_proceed 함수는 buffer_peek으로 읽기용 포인터를 리턴 받아서 쓸 필요가
+    // 있을 때 처리가 끝나면 얼마나 처리가 끝났다고 통보해야 할 때 쓴다. 
+    // (buffer_read, buffer_get_* 시리즈의 경우에는 알아서 처리되지만 peek으로 처리했을
+    //  때는 그렇게 될 수가 없으므로)
+    extern const void *	buffer_read_peek(LPBUFFER buffer);				// 읽는 위치를 리턴
+    extern void		buffer_read_proceed(LPBUFFER buffer, int length);		// length만큼의 처리가 끝남
 
-    //  write_peek  ġ   󸶳 質 뺸 
-    // buffer_write_proceed Ѵ.
-    extern void *	buffer_write_peek(LPBUFFER buffer);				//  ġ 
-    extern void		buffer_write_proceed(LPBUFFER buffer, int length);		// length  Ų.
+    // 마찬가지로 write_peek으로 쓰기 위치를 얻어온 다음 얼마나 썼나 통보할 때
+    // buffer_write_proceed를 사용한다.
+    extern void *	buffer_write_peek(LPBUFFER buffer);				// 쓰는 위치를 리턴
+    extern void		buffer_write_proceed(LPBUFFER buffer, int length);		// length만 증가 시킨다.
 
-    extern void		buffer_adjust_size(LPBUFFER & buffer, int add_size);		// add_sizeŭ ߰ ũ⸦ Ȯ
+    extern void		buffer_adjust_size(LPBUFFER & buffer, int add_size);		// add_size만큼 추가할 크기를 확보
 #endif
diff --git a/src/libthecore/include/heart.h b/src/libthecore/include/heart.h
index f98431d..23fc259 100644
--- a/src/libthecore/include/heart.h
+++ b/src/libthecore/include/heart.h
@@ -20,7 +20,7 @@ struct heart
 
 extern LPHEART	heart_new(int opt_usec, HEARTFUNC func);
 extern void	heart_delete(LPHEART ht);
-extern int	heart_idle(LPHEART ht);	//  pulse  Ѵ.
+extern int	heart_idle(LPHEART ht);	// 몇 pulse가 지났나 리턴한다.
 extern void	heart_beat(LPHEART ht, int pulses);
 
 #endif
diff --git a/src/libthecore/include/main.h b/src/libthecore/include/main.h
index 2ea09ed..ee6cfc0 100644
--- a/src/libthecore/include/main.h
+++ b/src/libthecore/include/main.h
@@ -32,7 +32,7 @@ extern "C"
     extern float		thecore_pulse_per_second(void);
 	extern int			thecore_is_shutdowned(void);
 
-	extern void			thecore_tick(void); // tics 
+	extern void			thecore_tick(void); // tics 증가
 
 #ifdef __cplusplus
 }
diff --git a/src/libthecore/include/utils.h b/src/libthecore/include/utils.h
index c560f38..6f8908f 100644
--- a/src/libthecore/include/utils.h
+++ b/src/libthecore/include/utils.h
@@ -13,24 +13,24 @@ using Random = effolkronium::random_static;
 #define str_cmp strcasecmp
 
 #define core_dump()	core_dump_unix(__FILE__, __LINE__)
-    extern void		core_dump_unix(const char *who, WORD line);	// ھ  
+    extern void		core_dump_unix(const char *who, WORD line);	// 코어를 강제로 덤프
 
 #define TOKEN(string) if (!str_cmp(token_string, string))
-    // src = ū : 
+    // src = 토큰 : 값
     extern void		parse_token(char * src, char * token, char * value);
 
     extern void		trim_and_lower(const char * src, char * dest, size_t dest_size);
 
-    // a b ð 󸶳 ̳ 
+    // a와 b의 시간이 얼마나 차이나는지 리턴
     extern struct timeval *	timediff(const struct timeval *a, const struct timeval *b);
 
-    // a ð b ð  
+    // a의 시간에 b의 시간을 더해 리턴
     extern struct timeval *	timeadd(struct timeval *a, struct timeval *b);
 
-    //  ð curr_tm  days   
+    // 현재 시간 curr_tm으로 부터 days가 지난 날을 리턴
     extern struct tm *		tm_calc(const struct tm *curr_tm, int days);
 
-    extern void		thecore_sleep(struct timeval * timeout);	// timeoutŭ μ 
+    extern void		thecore_sleep(struct timeval * timeout);	// timeout만큼 프로세스 쉬기
 
     extern float	get_float_time();
     extern DWORD	get_dword_time();
@@ -50,7 +50,7 @@ using Random = effolkronium::random_static;
 		sys_err("realloc failed [%d] %s", errno, strerror(errno)); \
 		abort(); } } while(0)
 
-    // Next  Prev  ִ Ʈ ߰
+    // Next 와 Prev 가 있는 리스트에 추가
 #define INSERT_TO_TW_LIST(item, head, prev, next)   \
     if (!(head))                                    \
     {                                               \

From dd74eafc24900beb0ae024083315bc8b4bfe21f0 Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Mon, 1 Apr 2024 14:20:00 +0200
Subject: [PATCH 07/21] fix db cpp encoding

---
 src/db/src/AuctionManager.cpp      |  12 +-
 src/db/src/BlockCountry.cpp        |   2 +-
 src/db/src/Cache.cpp               |  26 ++--
 src/db/src/ClientManager.cpp       | 176 ++++++++++-----------
 src/db/src/ClientManagerBoot.cpp   | 240 ++++++++++++++---------------
 src/db/src/ClientManagerGuild.cpp  |  18 +--
 src/db/src/ClientManagerLogin.cpp  |   8 +-
 src/db/src/ClientManagerPlayer.cpp |  98 ++++++------
 src/db/src/Config.cpp              |   4 +-
 src/db/src/CsvReader.cpp           | 186 +++++++++++-----------
 src/db/src/GuildManager.cpp        |  54 +++----
 src/db/src/HB.cpp                  |   4 +-
 src/db/src/ItemAwardManager.cpp    |  18 +--
 src/db/src/Main.cpp                |   8 +-
 src/db/src/Marriage.cpp            |   4 +-
 src/db/src/Monarch.cpp             |   2 +-
 src/db/src/PrivManager.cpp         |  18 +--
 src/db/src/ProtoReader.cpp         |  96 ++++++------
 src/db/src/grid.cpp                |   4 +-
 19 files changed, 490 insertions(+), 488 deletions(-)

diff --git a/src/db/src/AuctionManager.cpp b/src/db/src/AuctionManager.cpp
index a28bb3e..d06859a 100644
--- a/src/db/src/AuctionManager.cpp
+++ b/src/db/src/AuctionManager.cpp
@@ -135,7 +135,7 @@ void AuctionManager::LoadAuctionItem()
 	}
 	int rows;
 
-	if ((rows = mysql_num_rows(res)) <= 0)	//  
+	if ((rows = mysql_num_rows(res)) <= 0)	// 데이터 없음
 	{
 		return;
 	}
@@ -182,7 +182,7 @@ void AuctionManager::LoadAuctionInfo()
 	}
 	int rows;
 
-	if ((rows = mysql_num_rows(res)) <= 0)	//  
+	if ((rows = mysql_num_rows(res)) <= 0)	// 데이터 없음
 	{
 		return;
 	}
@@ -226,7 +226,7 @@ void AuctionManager::LoadSaleInfo()
 	}
 	int rows;
 
-	if ((rows = mysql_num_rows(res)) <= 0)	//  
+	if ((rows = mysql_num_rows(res)) <= 0)	// 데이터 없음
 	{
 		return;
 	}
@@ -269,7 +269,7 @@ void AuctionManager::LoadWishInfo()
 	}
 	int rows;
 
-	if ((rows = mysql_num_rows(res)) <= 0)	//  
+	if ((rows = mysql_num_rows(res)) <= 0)	// 데이터 없음
 	{
 		return;
 	}
@@ -311,7 +311,7 @@ void AuctionManager::LoadMyBidInfo ()
 	}
 	int rows;
 
-	if ((rows = mysql_num_rows(res)) <= 0)	//  
+	if ((rows = mysql_num_rows(res)) <= 0)	// 데이터 없음
 	{
 		return;
 	}
@@ -518,7 +518,7 @@ AuctionResult AuctionManager::Impur(DWORD purchaser_id, const char* purchaser_na
 		return AUCTION_EXPIRED;
 	}
 
-	// ﱸ عǷ, Ŵ .
+	// 즉구 해버렸으므로, 경매는 끝났다.
 	item_info->expired_time = 0;
 	item_info->bidder_id = purchaser_id;
 	item_info->set_bidder_name (purchaser_name);
diff --git a/src/db/src/BlockCountry.cpp b/src/db/src/BlockCountry.cpp
index bb69e80..2de4105 100644
--- a/src/db/src/BlockCountry.cpp
+++ b/src/db/src/BlockCountry.cpp
@@ -114,7 +114,7 @@ bool CBlockCountry::IsBlockedCountryIp(const char *user_ip)
 	st_addr.s_addr = in_address;
 	if (INADDR_NONE == in_address)
 #endif
-		return true;  // ǰ ϴ ϴ ó
+		return true;  // 아이피가 괴상하니 일단 블럭처리
 
 	DO_ALL_BLOCK_IP(iter)
 	{
diff --git a/src/db/src/Cache.cpp b/src/db/src/Cache.cpp
index 106afae..7a802c6 100644
--- a/src/db/src/Cache.cpp
+++ b/src/db/src/Cache.cpp
@@ -29,12 +29,12 @@ CItemCache::~CItemCache()
 {
 }
 
-// ̰ ̻ѵ...
-// Delete , Cache ؾ ϴ° ƴѰ???
-// ٵ Cache ϴ κ .
-//  ã ǰ?
-// ̷ س,  ð     ...
-// ̹  ε... Ȯλ??????
+// 이거 이상한데...
+// Delete를 했으면, Cache도 해제해야 하는것 아닌가???
+// 근데 Cache를 해제하는 부분이 없어.
+// 못 찾은 건가?
+// 이렇게 해놓으면, 계속 시간이 될 때마다 아이템을 계속 지워...
+// 이미 사라진 아이템인데... 확인사살??????
 // fixme
 // by rtsummit
 void CItemCache::Delete()
@@ -52,12 +52,12 @@ void CItemCache::Delete()
 	OnFlush();
 	
 	//m_bNeedQuery = false;
-	//m_lastUpdateTime = time(0) - m_expireTime; // ٷ ŸӾƿ ǵ .
+	//m_lastUpdateTime = time(0) - m_expireTime; // 바로 타임아웃 되도록 하자.
 }
 
 void CItemCache::OnFlush()
 {
-	if (m_data.vnum == 0) // vnum 0̸ ϶ ǥõ ̴.
+	if (m_data.vnum == 0) // vnum이 0이면 삭제하라고 표시된 것이다.
 	{
 		char szQuery[QUERY_MAX_LEN];
 		snprintf(szQuery, sizeof(szQuery), "DELETE FROM item%s WHERE id=%u", GetTablePostfix(), m_data.id);
@@ -186,7 +186,7 @@ CItemPriceListTableCache::CItemPriceListTableCache()
 void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList)
 {
 	//
-	// ̹ ij̵ ۰ ߺ  ã ߺ ʴ   tmpvec  ִ´.
+	// 이미 캐싱된 아이템과 중복된 아이템을 찾고 중복되지 않는 이전 정보는 tmpvec 에 넣는다.
 	//
 
 	std::vector tmpvec;
@@ -202,7 +202,7 @@ void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList
 	}
 
 	//
-	// pUpdateList  m_data  ϰ   tmpvec  տ   ŭ Ѵ.
+	// pUpdateList 를 m_data 에 복사하고 남은 공간을 tmpvec 의 앞에서 부터 남은 만큼 복사한다.
 	// 
 
 	if (pUpdateList->byCount > SHOP_PRICELIST_MAX_NUM)
@@ -215,7 +215,7 @@ void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList
 
 	memcpy(m_data.aPriceInfo, pUpdateList->aPriceInfo, sizeof(TItemPriceInfo) * pUpdateList->byCount);
 
-	int nDeletedNum;	//   
+	int nDeletedNum;	// 삭제된 가격정보의 갯수
 
 	if (pUpdateList->byCount < SHOP_PRICELIST_MAX_NUM)
 	{
@@ -244,14 +244,14 @@ void CItemPriceListTableCache::OnFlush()
 	char szQuery[QUERY_MAX_LEN];
 
 	//
-	//  ij ڿ   DB      Ѵ.
+	// 이 캐시의 소유자에 대한 기존에 DB 에 저장된 아이템 가격정보를 모두 삭제한다.
 	//
 
 	snprintf(szQuery, sizeof(szQuery), "DELETE FROM myshop_pricelist%s WHERE owner_id = %u", GetTablePostfix(), m_data.dwOwnerID);
 	CDBManager::instance().ReturnQuery(szQuery, QID_ITEMPRICE_DESTROY, 0, NULL);
 
 	//
-	// ij   DB  .
+	// 캐시의 내용을 모두 DB 에 쓴다.
 	//
 
 	for (int idx = 0; idx < m_data.byCount; ++idx)
diff --git a/src/db/src/ClientManager.cpp b/src/db/src/ClientManager.cpp
index 45d4c51..d72ce8b 100644
--- a/src/db/src/ClientManager.cpp
+++ b/src/db/src/ClientManager.cpp
@@ -248,7 +248,7 @@ bool CClientManager::Initialize()
 
 	LoadEventFlag();
 
-	// database character-set  
+	// database character-set을 강제로 맞춤
 	if (g_stLocale == "big5" || g_stLocale == "sjis")
 	    CDBManager::instance().QueryLocaleSet();
 
@@ -261,7 +261,7 @@ void CClientManager::MainLoop()
 
 	SPDLOG_DEBUG("ClientManager pointer is {}", (void*) this);
 
-	// η
+	// 메인루프
 	while (!m_bShutdowned)
 	{
 		while ((tmp = CDBManager::instance().PopResult()))
@@ -275,7 +275,7 @@ void CClientManager::MainLoop()
     }
 
 	//
-	// η ó
+	// 메인루프 종료처리
 	//
 	SPDLOG_DEBUG("MainLoop exited, Starting cache flushing");
 
@@ -283,7 +283,7 @@ void CClientManager::MainLoop()
 
 	itertype(m_map_playerCache) it = m_map_playerCache.begin();
 
-	//÷̾ ̺ ij ÷	
+	//플레이어 테이블 캐쉬 플러쉬	
 	while (it != m_map_playerCache.end())
 	{
 		CPlayerTableCache * c = (it++)->second;
@@ -295,7 +295,7 @@ void CClientManager::MainLoop()
 
 	
 	itertype(m_map_itemCache) it2 = m_map_itemCache.begin();
-	// ÷
+	//아이템 플러쉬
 	while (it2 != m_map_itemCache.end())
 	{
 		CItemCache * c = (it2++)->second;
@@ -307,7 +307,7 @@ void CClientManager::MainLoop()
 
 	// MYSHOP_PRICE_LIST
 	//
-	// λ   Ʈ Flush
+	// 개인상점 아이템 가격 리스트 Flush
 	//
 	for (itertype(m_mapItemPriceListCache) itPriceList = m_mapItemPriceListCache.begin(); itPriceList != m_mapItemPriceListCache.end(); ++itPriceList)
 	{
@@ -327,7 +327,7 @@ void CClientManager::Quit()
 
 void CClientManager::QUERY_BOOT(CPeer* peer, TPacketGDBoot * p)
 {
-	const BYTE bPacketVersion = 6; // BOOT Ŷ ٲ𶧸 ȣ ø Ѵ.
+	const BYTE bPacketVersion = 6; // BOOT 패킷이 바뀔때마다 번호를 올리도록 한다.
 
 	std::vector vAdmin;
 	std::vector vHost;
@@ -584,9 +584,9 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer * pkPeer, SQLMsg * msg)
 	ClientHandleInfo * pi = (ClientHandleInfo *) qi->pvData;
 	DWORD dwHandle = pi->dwHandle;
 
-	// ⿡ ϴ account_index   Ѵ.
-	// ù° н ˾Ƴ  ϴ  0
-	// ι°  ͸   1
+	// 여기에서 사용하는 account_index는 쿼리 순서를 말한다.
+	// 첫번째 패스워드 알아내기 위해 하는 쿼리가 0
+	// 두번째 실제 데이터를 얻어놓는 쿼리가 1
 
 	if (pi->account_index == 0)
 	{
@@ -611,7 +611,7 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer * pkPeer, SQLMsg * msg)
 		{
 			MYSQL_ROW row = mysql_fetch_row(res->pSQLResult);
 
-			// йȣ Ʋ..
+			// 비밀번호가 틀리면..
 			if (((!row[2] || !*row[2]) && strcmp("000000", szSafeboxPassword)) ||
 				((row[2] && *row[2]) && strcmp(row[2], szSafeboxPassword)))
 			{
@@ -677,8 +677,8 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer * pkPeer, SQLMsg * msg)
 		}
 
 
-		//   ־Ƿ   â ִ  ó
-		// ̱  â ƾ ȿ° 
+		// 쿼리에 에러가 있었으므로 응답할 경우 창고가 비어있는 것 처럼
+		// 보이기 때문에 창고가 아얘 안열리는게 나음
 		if (!msg->Get()->pSQLResult)
 		{
 			SPDLOG_ERROR("null safebox result");
@@ -787,8 +787,8 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer * pkPeer, SQLMsg * msg)
 						{
 							case 72723: case 72724: case 72725: case 72726:
 							case 72727: case 72728: case 72729: case 72730:
-							// ù  ϴ  ġ ...
-							// ׷ ׳ ϵ ڵ.  ڿ ڵ ۵.
+							// 무시무시하지만 이전에 하던 걸 고치기는 무섭고...
+							// 그래서 그냥 하드 코딩. 선물 상자용 자동물약 아이템들.
 							case 76004: case 76005: case 76021: case 76022:
 							case 79012: case 79013:
 								if (pItemAward->dwSocket2 == 0)
@@ -900,7 +900,7 @@ void CClientManager::RESULT_SAFEBOX_LOAD(CPeer * pkPeer, SQLMsg * msg)
 void CClientManager::QUERY_SAFEBOX_CHANGE_SIZE(CPeer * pkPeer, DWORD dwHandle, TSafeboxChangeSizePacket * p)
 {
 	ClientHandleInfo * pi = new ClientHandleInfo(dwHandle);
-	pi->account_index = p->bSize;	// account_index  ӽ÷ 
+	pi->account_index = p->bSize;	// account_index를 사이즈로 임시로 사용
 
 	char szQuery[QUERY_MAX_LEN];
 
@@ -988,7 +988,7 @@ void CClientManager::RESULT_PRICELIST_LOAD(CPeer* peer, SQLMsg* pMsg)
 	TItemPricelistReqInfo* pReqInfo = (TItemPricelistReqInfo*)static_cast(pMsg->pvUserData)->pvData;
 
 	//
-	// DB  ε  Cache  
+	// DB 에서 로드한 정보를 Cache 에 저장
 	//
 
 	TItemPriceListTable table;
@@ -1007,7 +1007,7 @@ void CClientManager::RESULT_PRICELIST_LOAD(CPeer* peer, SQLMsg* pMsg)
 	PutItemPriceListCache(&table);
 
 	//
-	// ε ͸ Game server  
+	// 로드한 데이터를 Game server 에 전송
 	//
 
 	TPacketMyshopPricelistHeader header;
@@ -1031,7 +1031,7 @@ void CClientManager::RESULT_PRICELIST_LOAD_FOR_UPDATE(SQLMsg* pMsg)
 	TItemPriceListTable* pUpdateTable = (TItemPriceListTable*)static_cast(pMsg->pvUserData)->pvData;
 
 	//
-	// DB  ε  Cache  
+	// DB 에서 로드한 정보를 Cache 에 저장
 	//
 
 	TItemPriceListTable table;
@@ -1093,18 +1093,18 @@ void CClientManager::QUERY_EMPIRE_SELECT(CPeer * pkPeer, DWORD dwHandle, TEmpire
 			UINT g_start_map[4] =
 			{
 				0,  // reserved
-				1,  // ż
-				21, // õ
-				41  // 뱹
+				1,  // 신수국
+				21, // 천조국
+				41  // 진노국
 			};
 
 			// FIXME share with game
 			DWORD g_start_position[4][2]=
 			{
 				{      0,      0 },
-				{ 469300, 964200 }, // ż
-				{  55700, 157900 }, // õ
-				{ 969600, 278400 }  // 뱹
+				{ 469300, 964200 }, // 신수국
+				{  55700, 157900 }, // 천조국
+				{ 969600, 278400 }  // 진노국
 			};
 
 			for (int i = 0; i < 3; ++i)
@@ -1155,7 +1155,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
 	peer->SetMaps(p->alMaps);
 
 	//
-	//     ִ 
+	// 어떤 맵이 어떤 서버에 있는지 보내기
 	//
 	TMapLocation kMapLocations;
 
@@ -1262,7 +1262,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
 	peer->Encode(&vec_kMapLocations[0], sizeof(TMapLocation) * vec_kMapLocations.size());
 
 	//
-	// ¾ :  Ǿ ٸ Ǿ ϰ . (P2P ؼ )
+	// 셋업 : 접속한 피어에 다른 피어들이 접속하게 만든다. (P2P 컨넥션 생성)
 	// 
 	SPDLOG_DEBUG("SETUP: channel {} listen {} p2p {} count {}", peer->GetChannel(), p->wListenPort, p->wP2PPort, bMapCount);
 
@@ -1278,7 +1278,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
 		if (tmp == peer)
 			continue;
 
-		// ä 0̶  SETUP Ŷ   Ǿ Ǵ auth   
+		// 채널이 0이라면 아직 SETUP 패킷이 오지 않은 피어 또는 auth라고 간주할 수 있음
 		if (0 == tmp->GetChannel())
 			continue;
 
@@ -1287,7 +1287,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
 	}
 
 	//
-	// α   
+	// 로그인 및 빌링정보 보내기
 	//
 	TPacketLoginOnSetup * pck = (TPacketLoginOnSetup *) c_pData;;
 	std::vector vec_repair;
@@ -1359,8 +1359,8 @@ void CClientManager::QUERY_ITEM_SAVE(CPeer * pkPeer, const char * c_pData)
 {
 	TPlayerItem * p = (TPlayerItem *) c_pData;
 
-	// â ij ʰ, ij ִ ͵  Ѵ.
-	// auction  Ʈ Ÿ ʾƾ Ѵ. EnrollInAuction ŸѴ.
+	// 창고면 캐쉬하지 않고, 캐쉬에 있던 것도 빼버려야 한다.
+	// auction은 이 루트를 타지 않아야 한다. EnrollInAuction을 타야한다.
 
 	if (p->window == SAFEBOX || p->window == MALL)
 	{
@@ -1495,7 +1495,7 @@ void CClientManager::PutItemCache(TPlayerItem * pNew, bool bSkipQuery)
 
 	c = GetItemCache(pNew->id);
 	
-	//   
+	// 아이템 새로 생성
 	if (!c)
 	{
         SPDLOG_TRACE("ITEM_CACHE: PutItemCache ==> New CItemCache id{} vnum{} new owner{}", pNew->id, pNew->vnum, pNew->owner);
@@ -1503,15 +1503,15 @@ void CClientManager::PutItemCache(TPlayerItem * pNew, bool bSkipQuery)
 		c = new CItemCache;
 		m_map_itemCache.insert(TItemCacheMap::value_type(pNew->id, c));
 	}
-	// 
+	// 있을시
 	else
 	{
         SPDLOG_TRACE("ITEM_CACHE: PutItemCache ==> Have Cache");
 
-		// ڰ Ʋ
+		// 소유자가 틀리면
 		if (pNew->owner != c->Get()->owner)
 		{
-			// ̹    ־    Ѵ.
+			// 이미 이 아이템을 가지고 있었던 유저로 부터 아이템을 삭제한다.
 			TItemCacheSetPtrMap::iterator it = m_map_pkItemCacheSetPtr.find(c->Get()->owner);
 
 			if (it != m_map_pkItemCacheSetPtr.end())
@@ -1522,7 +1522,7 @@ void CClientManager::PutItemCache(TPlayerItem * pNew, bool bSkipQuery)
 		}
 	}
 
-	// ο  Ʈ 
+	// 새로운 정보 업데이트 
 	c->Put(pNew, bSkipQuery);
 	
 	TItemCacheSetPtrMap::iterator it = m_map_pkItemCacheSetPtr.find(c->Get()->owner);
@@ -1534,8 +1534,8 @@ void CClientManager::PutItemCache(TPlayerItem * pNew, bool bSkipQuery)
 	}
 	else
 	{
-		//  ڰ Ƿ ٷ ؾ     SQL Ͽ
-		//   Ƿ ٷ Ѵ.
+		// 현재 소유자가 없으므로 바로 저장해야 다음 접속이 올 때 SQL에 쿼리하여
+		// 받을 수 있으므로 바로 저장한다.
         SPDLOG_TRACE("ITEM_CACHE: direct save {} id {}", c->Get()->owner, c->Get()->id);
 
 		c->OnFlush();
@@ -1591,7 +1591,7 @@ void CClientManager::UpdatePlayerCache()
 
 			c->Flush();
 
-			// Item Cache Ʈ
+			// Item Cache도 업데이트
 			UpdateItemCacheSet(c->Get()->id);
 		}
 		else if (c->CheckFlushTimeout())
@@ -1617,7 +1617,7 @@ void CClientManager::UpdateItemCache()
 	{
 		CItemCache * c = (it++)->second;
 
-		//  Flush Ѵ.
+		// 아이템은 Flush만 한다.
 		if (c->CheckFlushTimeout())
 		{
 			SPDLOG_TRACE("UpdateItemCache ==> Flush() vnum {} id owner {}", c->Get()->vnum, c->Get()->id, c->Get()->owner);
@@ -1662,7 +1662,7 @@ void CClientManager::QUERY_ITEM_DESTROY(CPeer * pkPeer, const char * c_pData)
 
         SPDLOG_TRACE("HEADER_GD_ITEM_DESTROY: PID {} ID {}", dwPID, dwID);
 
-		if (dwPID == 0) // ƹ   ٸ, 񵿱 
+		if (dwPID == 0) // 아무도 가진 사람이 없었다면, 비동기 쿼리
 			CDBManager::instance().AsyncQuery(szQuery);
 		else
 			CDBManager::instance().ReturnQuery(szQuery, QID_ITEM_DESTROY, pkPeer->GetHandle(), NULL);
@@ -1740,7 +1740,7 @@ void CClientManager::QUERY_RELOAD_PROTO()
 
 // ADD_GUILD_PRIV_TIME
 /**
- * @version	05/06/08 Bang2ni - ӽð ߰
+ * @version	05/06/08 Bang2ni - 지속시간 추가
  */
 void CClientManager::AddGuildPriv(TPacketGiveGuildPriv* p)
 {
@@ -2220,8 +2220,8 @@ void CClientManager::WeddingEnd(TPacketWeddingEnd * p)
 }
 
 //
-// ijÿ   ijø Ʈ ϰ ijÿ  ٸ
-// 켱  ͸ ε ڿ   ijø     Ʈ Ѵ.
+// 캐시에 가격정보가 있으면 캐시를 업데이트 하고 캐시에 가격정보가 없다면
+// 우선 기존의 데이터를 로드한 뒤에 기존의 정보로 캐시를 만들고 새로 받은 가격정보를 업데이트 한다.
 //
 void CClientManager::MyshopPricelistUpdate(const TPacketMyshopPricelistHeader* pPacket)
 {
@@ -2262,7 +2262,7 @@ void CClientManager::MyshopPricelistUpdate(const TPacketMyshopPricelistHeader* p
 }
 
 // MYSHOP_PRICE_LIST
-// ijõ   ijø о ٷ ϰ ijÿ   DB   Ѵ.
+// 캐시된 가격정보가 있으면 캐시를 읽어 바로 전송하고 캐시에 정보가 없으면 DB 에 쿼리를 한다.
 //
 void CClientManager::MyshopPricelistRequest(CPeer* peer, DWORD dwHandle, DWORD dwPlayerID)
 {
@@ -2655,15 +2655,15 @@ void CClientManager::ProcessPackets(CPeer * peer)
 				ComeToVote(peer, dwHandle, data);
 				break;
 
-			case HEADER_GD_RMCANDIDACY:		//< ĺ  ()
+			case HEADER_GD_RMCANDIDACY:		//< 후보 제거 (운영자)
 				RMCandidacy(peer, dwHandle, data);
 				break;
 
-			case HEADER_GD_SETMONARCH:		///<ּ ()
+			case HEADER_GD_SETMONARCH:		///<군주설정 (운영자)
 				SetMonarch(peer, dwHandle, data);
 				break;
 
-			case HEADER_GD_RMMONARCH:		///<ֻ
+			case HEADER_GD_RMMONARCH:		///<군주삭제
 				RMMonarch(peer, dwHandle, data);
 				break;
 			//END_MONARCH
@@ -2864,9 +2864,9 @@ CPeer * CClientManager::GetAnyPeer()
 	return m_peerList.front();
 }
 
-// DB Ŵ    óѴ.
+// DB 매니저로 부터 받은 결과를 처리한다.
 //
-// @version	05/06/10 Bang2ni -   (QID_ITEMPRICE_XXX) ߰
+// @version	05/06/10 Bang2ni - 가격정보 관련 쿼리(QID_ITEMPRICE_XXX) 추가
 int CClientManager::AnalyzeQueryResult(SQLMsg * msg)
 {
 	CQueryInfo * qi = (CQueryInfo *) msg->pvUserData;
@@ -2984,7 +2984,7 @@ void UsageLog()
 	char        *time_s;
 	struct tm   lt;
 
-	int         avg = g_dwUsageAvg / 3600; // 60  * 60 
+	int         avg = g_dwUsageAvg / 3600; // 60 초 * 60 분
 
 	fp = fopen("usage.txt", "a+");
 
@@ -3017,7 +3017,7 @@ int CClientManager::Process()
 		++thecore_heart->pulse;
 
 		/*
-		//30и 
+		//30분마다 변경
 		if (((thecore_pulse() % (60 * 30 * 10)) == 0))
 		{
 			g_iPlayerCacheFlushSeconds = std::max(60, rand() % 180);
@@ -3095,11 +3095,11 @@ int CClientManager::Process()
 			m_iCacheFlushCount = 0;
 
 
-			//÷̾ ÷
+			//플레이어 플러쉬
 			UpdatePlayerCache();
-			// ÷
+			//아이템 플러쉬
 			UpdateItemCache();
-			//α׾ƿ ó- ij ÷
+			//로그아웃시 처리- 캐쉬셋 플러쉬
 			UpdateLogoutPlayer();
 
 			// MYSHOP_PRICE_LIST
@@ -3169,13 +3169,13 @@ int CClientManager::Process()
             /////////////////////////////////////////////////////////////////
         }
 
-        if (!(thecore_heart->pulse % (thecore_heart->passes_per_sec * 60)))    // 60ʿ ѹ
+        if (!(thecore_heart->pulse % (thecore_heart->passes_per_sec * 60)))    // 60초에 한번
         {
-            // ũ   ð .
+            // 유니크 아이템을 위한 시간을 보낸다.
             CClientManager::instance().SendTime();
         }
 
-        if (!(thecore_heart->pulse % (thecore_heart->passes_per_sec * 3600)))    // ѽð ѹ
+        if (!(thecore_heart->pulse % (thecore_heart->passes_per_sec * 3600)))    // 한시간에 한번
         {
             CMoneyLog::instance().Save();
 		}
@@ -3190,7 +3190,7 @@ int CClientManager::Process()
 
 DWORD CClientManager::GetUserCount()
 {
-	// ܼ α īƮ .. --;
+	// 단순히 로그인 카운트를 센다.. --;
 	return m_map_kLogonAccount.size();
 }
 
@@ -3250,7 +3250,7 @@ bool CClientManager::InitializeNowItemID()
 {
 	DWORD dwMin, dwMax;
 
-	// ID ʱȭ Ѵ.
+	//아이템 ID를 초기화 한다.
 	if (!CConfig::instance().GetTwoValue("ITEM_ID_RANGE", &dwMin, &dwMax))
 	{
 		SPDLOG_ERROR("conf.txt: Cannot find ITEM_ID_RANGE [start_item_id] [end_item_id]");
@@ -3680,7 +3680,7 @@ bool CClientManager::InitializeLocalization()
 
 bool CClientManager::__GetAdminInfo(const char *szIP, std::vector & rAdminVec)
 {
-	//szIP == NULL ϰ  缭   ´.
+	//szIP == NULL 일경우  모든서버에 운영자 권한을 갖는다.
 	char szQuery[512];
 	snprintf(szQuery, sizeof(szQuery),
 			"SELECT mID,mAccount,mName,mContactIP,mServerIP,mAuthority FROM gmlist WHERE mServerIP='ALL' or mServerIP='%s'",
@@ -4233,7 +4233,7 @@ void CClientManager::SendSpareItemIDRange(CPeer* peer)
 }
 
 //
-// Login Key ʿ .
+// Login Key만 맵에서 지운다.
 // 
 void CClientManager::DeleteLoginKey(TPacketDC *data)
 {
@@ -4346,7 +4346,7 @@ void CClientManager::EnrollInAuction (CPeer * peer, DWORD owner_id, AuctionEnrol
 		SPDLOG_ERROR("Player id {} doesn't have item {}.", owner_id, data->get_item_id());
 		return;
 	}
-	//  ð + 24ð .
+	// 현재 시각 + 24시간 후.
 	time_t expired_time = time(0) + 24 * 60 * 60;
 	TAuctionItemInfo auctioned_item_info (item->vnum, data->get_bid_price(), 
 		data->get_impur_price(), owner_id, "", expired_time, data->get_item_id(), 0, data->get_empire());
@@ -4365,7 +4365,7 @@ void CClientManager::EnrollInAuction (CPeer * peer, DWORD owner_id, AuctionEnrol
 	}
 	else
 	{
-		//  ɽø Auction   ClientManager .
+		// 아이템 케시를 Auction에 등록 했으니 ClientManager에서는 뺀다.
 		TItemCacheSetPtrMap::iterator it = m_map_pkItemCacheSetPtr.find(item->owner);
 
 		if (it != m_map_pkItemCacheSetPtr.end())
@@ -4418,7 +4418,7 @@ void CClientManager::EnrollInSale (CPeer * peer, DWORD owner_id, AuctionEnrollSa
 		SPDLOG_ERROR("Player id {} doesn't have item {}.", owner_id, data->get_item_id());
 		return;
 	}
-	//  ð + 24ð .
+	// 현재 시각 + 24시간 후.
 	time_t expired_time = time(0) + 24 * 60 * 60;
 	TSaleItemInfo sold_item_info (item->vnum, data->get_sale_price(), 
 		owner_id, player->name, data->get_item_id(), data->get_wisher_id());
@@ -4437,7 +4437,7 @@ void CClientManager::EnrollInSale (CPeer * peer, DWORD owner_id, AuctionEnrollSa
 	}
 	else
 	{
-		//  ɽø Auction   ClientManager .
+		// 아이템 케시를 Auction에 등록 했으니 ClientManager에서는 뺀다.
 		TItemCacheSetPtrMap::iterator it = m_map_pkItemCacheSetPtr.find(item->owner);
 
 		if (it != m_map_pkItemCacheSetPtr.end())
@@ -4477,7 +4477,7 @@ void CClientManager::EnrollInWish (CPeer * peer, DWORD wisher_id, AuctionEnrollW
 	CPlayerTableCache* player_cache = it->second;
 	TPlayerTable* player = player_cache->Get(false);
 
-	//  ð + 24ð .
+	// 현재 시각 + 24시간 후.
 	time_t expired_time = time(0) + 24 * 60 * 60;
 	TWishItemInfo wished_item_info (data->get_item_num(), data->get_wish_price(), wisher_id, player->name, expired_time, data->get_empire());
 
@@ -4844,11 +4844,11 @@ void CClientManager::AuctionDeleteSaleItem (CPeer * peer, DWORD actor_id, DWORD
 	AuctionManager::instance().DeleteSaleItem (actor_id, item_id);
 }
 
-// ReBid  ݾ׿ ؼ Ѵ.
-// ReBid data->bid_price   
-//  ݾ rebidϴ .
-// ̷   rebid   ,
-//  ȣָӴϿ   ֱ ϰ ϱ ̴.
+// ReBid는 이전 입찰금액에 더해서 입찰한다.
+// ReBid에선 data->bid_price가 이전 입찰가에 더해져서
+// 그 금액으로 rebid하는 것.
+// 이렇게 한 이유는 rebid에 실패 했을 때,
+// 유저의 호주머니에서 뺀 돈을 돌려주기 편하게 하기 위함이다.
 
 void CClientManager::AuctionReBid (CPeer * peer, DWORD bidder_id, AuctionBidInfo* data)
 {
@@ -4873,14 +4873,14 @@ void CClientManager::AuctionReBid (CPeer * peer, DWORD bidder_id, AuctionBidInfo
 	{
 		SPDLOG_DEBUG("ReBid Success. bidder_id item_id {} {}", bidder_id, data->get_item_id());
 	}
-	// ̰ FAIL  ȵ.
-	// FAIL   °, MyBid ִ bidder_id   bidder_id    ְŵ?
-	// ׷Ƿ ٸ    ۵Ѵٰ  Ѵٸ
-	//     bidder_id MyBid Ѵ  , װ ȭ  .
-	// ٸ   Ȱ bidder_id     ϱ.
-	// ׷Ƿ    BidCancel  db ȴٴ ,
-	// ̹  κп ؼ ˻簡 Ϻϴٴ ̾.
-	// ׷ Ȥó ;,   fail ڵ带 ܵд.
+	// 이건 FAIL이 떠서는 안돼.
+	// FAIL이 뜰 수가 없는게, MyBid에 있는 bidder_id에 대한 컨텐츠는 bidder_id만이 접근 할 수 있거든?
+	// 그러므로 다른 것이 다 정상적으로 작동한다고 가정 한다면
+	// 한 게임 서버 내에서 bidder_id로 MyBid를 수정한다 할 지라도, 그건 동기화 문제가 없어.
+	// 다른 게임 서버에 똑같은 bidder_id를 가진 놈이 있을 수가 없으니까.
+	// 그러므로 그 게임 서버에서 BidCancel 명령을 db에 날렸다는 것은,
+	// 이미 그 부분에 대해서는 검사가 완벽하다는 것이야.
+	// 그래도 혹시나 싶어서, 디버깅을 위해 fail 코드를 남겨둔다.
 	if (result <= AUCTION_FAIL)
 	{
 		TPacketDGResultAuction enroll_result;
@@ -4915,14 +4915,14 @@ void CClientManager::AuctionBidCancel (CPeer * peer, DWORD bidder_id, DWORD item
 {
 	AuctionResult result = AuctionManager::instance().BidCancel (bidder_id, item_id);
 	
-	// ̰ FAIL  ȵ.
-	// FAIL   °, MyBid ִ bidder_id   bidder_id    ְŵ?
-	// ׷Ƿ ٸ    ۵Ѵٰ  Ѵٸ
-	//     bidder_id MyBid Ѵ  , װ ȭ  .
-	// ٸ   Ȱ bidder_id     ϱ.
-	// ׷Ƿ    BidCancel  db ȴٴ ,
-	// ̹  κп ؼ ˻簡 Ϻϴٴ ̾.
-	// ׷ Ȥó ;,   fail ڵ带 ܵд.
+	// 이건 FAIL이 떠서는 안돼.
+	// FAIL이 뜰 수가 없는게, MyBid에 있는 bidder_id에 대한 컨텐츠는 bidder_id만이 접근 할 수 있거든?
+	// 그러므로 다른 것이 다 정상적으로 작동한다고 가정 한다면
+	// 한 게임 서버 내에서 bidder_id로 MyBid를 수정한다 할 지라도, 그건 동기화 문제가 없어.
+	// 다른 게임 서버에 똑같은 bidder_id를 가진 놈이 있을 수가 없으니까.
+	// 그러므로 그 게임 서버에서 BidCancel 명령을 db에 날렸다는 것은,
+	// 이미 그 부분에 대해서는 검사가 완벽하다는 것이야.
+	// 그래도 혹시나 싶어서, 디버깅을 위해 fail 코드를 남겨둔다.
 	if (result <= AUCTION_FAIL)
 	{
 		TPacketDGResultAuction enroll_result;
diff --git a/src/db/src/ClientManagerBoot.cpp b/src/db/src/ClientManagerBoot.cpp
index 3b410ae..cfaa57c 100644
--- a/src/db/src/ClientManagerBoot.cpp
+++ b/src/db/src/ClientManagerBoot.cpp
@@ -171,42 +171,42 @@ class FCompareVnum
 
 bool CClientManager::InitializeMobTable()
 {
-	//================== Լ  ==================//
-	//1.  : 'mob_proto.txt', 'mob_proto_test.txt', 'mob_names.txt'  а,
-	//		(!)[mob_table] ̺ Ʈ Ѵ. (Ÿ : TMobTable)
-	//2. 
-	//	1) 'mob_names.txt'  о (a)[localMap](vnum:name)  .
-	//	2) 'mob_proto_test.txt'ϰ (a)[localMap] 
-	//		(b)[test_map_mobTableByVnum](vnum:TMobTable)  Ѵ.
-	//	3) 'mob_proto.txt' ϰ  (a)[localMap] 
-	//		(!)[mob_table] ̺ .
-	//			<>
-	//			 row  , 
-	//			(b)[test_map_mobTableByVnum],(!)[mob_table] ο ִ row
-	//			(b)[test_map_mobTableByVnum]  Ѵ.
-	//	4) (b)[test_map_mobTableByVnum] row, (!)[mob_table]   ߰Ѵ.
-	//3. ׽Ʈ
-	//	1)'mob_proto.txt'  mob_table  . -> Ϸ
-	//	2)'mob_names.txt'  mob_table  .
-	//	3)'mob_proto_test.txt'  [ġ]  mob_table   .
-	//	4)'mob_proto_test.txt'  [ο]  mob_table   .
-	//	5) ()  Ŭ̾Ʈ  ۵ ϴ.
+	//================== 함수 설명 ==================//
+	//1. 요약 : 'mob_proto.txt', 'mob_proto_test.txt', 'mob_names.txt' 파일을 읽고,
+	//		(!)[mob_table] 테이블 오브젝트를 생성한다. (타입 : TMobTable)
+	//2. 순서
+	//	1) 'mob_names.txt' 파일을 읽어서 (a)[localMap](vnum:name) 맵을 만든다.
+	//	2) 'mob_proto_test.txt'파일과 (a)[localMap] 맵으로
+	//		(b)[test_map_mobTableByVnum](vnum:TMobTable) 맵을 생성한다.
+	//	3) 'mob_proto.txt' 파일과  (a)[localMap] 맵으로
+	//		(!)[mob_table] 테이블을 만든다.
+	//			<참고>
+	//			각 row 들 중, 
+	//			(b)[test_map_mobTableByVnum],(!)[mob_table] 모두에 있는 row는
+	//			(b)[test_map_mobTableByVnum]의 것을 사용한다.
+	//	4) (b)[test_map_mobTableByVnum]의 row중, (!)[mob_table]에 없는 것을 추가한다.
+	//3. 테스트
+	//	1)'mob_proto.txt' 정보가 mob_table에 잘 들어갔는지. -> 완료
+	//	2)'mob_names.txt' 정보가 mob_table에 잘 들어갔는지.
+	//	3)'mob_proto_test.txt' 에서 [겹치는] 정보가 mob_table 에 잘 들어갔는지.
+	//	4)'mob_proto_test.txt' 에서 [새로운] 정보가 mob_table 에 잘 들어갔는지.
+	//	5) (최종) 게임 클라이언트에서 제대로 작동 하는지.
 	//_______________________________________________//
 
 
 	//===============================================//
-	//	1) 'mob_names.txt'  о (a)[localMap]  .
-	//<(a)localMap  >
+	//	1) 'mob_names.txt' 파일을 읽어서 (a)[localMap] 맵을 만든다.
+	//<(a)localMap 맵 생성>
 	map localMap;
 	bool isNameFile = true;
-	//< б>
+	//<파일 읽기>
 	cCsvTable nameData;
 	if(!nameData.Load("mob_names.txt",'\t'))
 	{
-		SPDLOG_ERROR("mob_names.txt  о ߽ϴ");
+		SPDLOG_ERROR("mob_names.txt 파일을 읽어오지 못했습니다");
 		isNameFile = false;
 	} else {
-		nameData.Next();	//row .
+		nameData.Next();	//설명row 생략.
 		while(nameData.Next()) {
 			localMap[atoi(nameData.AsStringByIndex(0))] = nameData.AsStringByIndex(1);
 		}
@@ -215,35 +215,35 @@ bool CClientManager::InitializeMobTable()
 
 	
 	//===============================================//
-	//	2) 'mob_proto_test.txt'ϰ (a)localMap 
-	//		(b)[test_map_mobTableByVnum](vnum:TMobTable)  Ѵ.
+	//	2) 'mob_proto_test.txt'파일과 (a)localMap 맵으로
+	//		(b)[test_map_mobTableByVnum](vnum:TMobTable) 맵을 생성한다.
 	//0. 
-	set vnumSet;	//׽Ʈ  , űԿ Ȯο .
-	//1.  о
+	set vnumSet;	//테스트용 파일 데이터중, 신규여부 확인에 사용.
+	//1. 파일 읽어오기
 	bool isTestFile = true;
 	cCsvTable test_data;
 	if(!test_data.Load("mob_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("׽Ʈ  ϴ. ״ մϴ.");
+		SPDLOG_ERROR("테스트 파일이 없습니다. 그대로 진행합니다.");
 		isTestFile = false;
 	}
-	//2. (c)[test_map_mobTableByVnum](vnum:TMobTable)  .
+	//2. (c)[test_map_mobTableByVnum](vnum:TMobTable) 맵 생성.
 	map test_map_mobTableByVnum;
 	if (isTestFile) {
-		test_data.Next();	// ο Ѿ.
+		test_data.Next();	//설명 로우 넘어가기.
 
-		//. ׽Ʈ  ̺ .
+		//ㄱ. 테스트 몬스터 테이블 생성.
 		TMobTable * test_mob_table = NULL;
 		int test_MobTableSize = test_data.m_File.GetRowCount()-1;
 		test_mob_table = new TMobTable[test_MobTableSize];
 		memset(test_mob_table, 0, sizeof(TMobTable) * test_MobTableSize);
 
-		//. ׽Ʈ  ̺  ְ, ʿ ֱ.
+		//ㄴ. 테스트 몬스터 테이블에 값을 넣고, 맵에까지 넣기.
 		while(test_data.Next()) {
 
 			if (!Set_Proto_Mob_Table(test_mob_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("  ̺  .");
+				SPDLOG_ERROR("몹 프로토 테이블 셋팅 실패.");
 			}
 
 			test_map_mobTableByVnum.insert(std::map::value_type(test_mob_table->dwVnum, test_mob_table));
@@ -254,22 +254,22 @@ bool CClientManager::InitializeMobTable()
 
 	}
 
-	//	3) 'mob_proto.txt' ϰ  (a)[localMap] 
-	//		(!)[mob_table] ̺ .
-	//			<>
-	//			 row  , 
-	//			(b)[test_map_mobTableByVnum],(!)[mob_table] ο ִ row
-	//			(b)[test_map_mobTableByVnum]  Ѵ.
+	//	3) 'mob_proto.txt' 파일과  (a)[localMap] 맵으로
+	//		(!)[mob_table] 테이블을 만든다.
+	//			<참고>
+	//			각 row 들 중, 
+	//			(b)[test_map_mobTableByVnum],(!)[mob_table] 모두에 있는 row는
+	//			(b)[test_map_mobTableByVnum]의 것을 사용한다.
 
-	//1.  б.
+	//1. 파일 읽기.
 	cCsvTable data;
 	if(!data.Load("mob_proto.txt",'\t')) {
-		SPDLOG_ERROR("mob_proto.txt  о ߽ϴ");
+		SPDLOG_ERROR("mob_proto.txt 파일을 읽어오지 못했습니다");
 		return false;
 	}
-	data.Next();					// row Ѿ
-	//2. (!)[mob_table] ϱ
-	//2.1  ߰Ǵ  ľ
+	data.Next();					//설명 row 넘어가기
+	//2. (!)[mob_table] 생성하기
+	//2.1 새로 추가되는 갯수를 파악
 	int addNumber = 0;
 	while(data.Next()) {
 		int vnum = atoi(data.AsStringByIndex(0));
@@ -279,15 +279,15 @@ bool CClientManager::InitializeMobTable()
 			addNumber++;
 		}
 	}
-	//data ٽ ùٷ ű.(ٽ о´;;)
+	//data를 다시 첫줄로 옮긴다.(다시 읽어온다;;)
 	data.Destroy();
 	if(!data.Load("mob_proto.txt",'\t'))
 	{
-		SPDLOG_ERROR("mob_proto.txt  о ߽ϴ");
+		SPDLOG_ERROR("mob_proto.txt 파일을 읽어오지 못했습니다");
 		return false;
 	}
-	data.Next(); //   ( Į ϴ κ)
-	//2.2 ũ⿡ ° mob_table 
+	data.Next(); //맨 윗줄 제외 (아이템 칼럼을 설명하는 부분)
+	//2.2 크기에 맞게 mob_table 생성
 	if (!m_vec_mobTable.empty())
 	{
 		SPDLOG_DEBUG("RELOAD: mob_proto");
@@ -296,18 +296,18 @@ bool CClientManager::InitializeMobTable()
 	m_vec_mobTable.resize(data.m_File.GetRowCount()-1 + addNumber);
 	memset(&m_vec_mobTable[0], 0, sizeof(TMobTable) * m_vec_mobTable.size());
 	TMobTable * mob_table = &m_vec_mobTable[0];
-	//2.3  ä
+	//2.3 데이터 채우기
 	while (data.Next())
 	{
 		int col = 0;
-		//(b)[test_map_mobTableByVnum]  row ִ .
+		//(b)[test_map_mobTableByVnum]에 같은 row가 있는지 조사.
 		bool isSameRow = true;
 		std::map::iterator it_map_mobTable;
 		it_map_mobTable = test_map_mobTableByVnum.find(atoi(data.AsStringByIndex(col)));
 		if(it_map_mobTable == test_map_mobTableByVnum.end()) {
 			isSameRow = false;
 		}
-		// row   (b) о´.
+		//같은 row 가 있으면 (b)에서 읽어온다.
 		if(isSameRow) {
 			TMobTable *tempTable = it_map_mobTable->second;
 
@@ -378,13 +378,13 @@ bool CClientManager::InitializeMobTable()
 
 			if (!Set_Proto_Mob_Table(mob_table, data, localMap))
 			{
-				SPDLOG_ERROR("  ̺  .");
+				SPDLOG_ERROR("몹 프로토 테이블 셋팅 실패.");
 			}
 
 						
 		}
 
-		//¿ vnum ߰
+		//셋에 vnum 추가
 		vnumSet.insert(mob_table->dwVnum);
 		
 
@@ -395,22 +395,22 @@ bool CClientManager::InitializeMobTable()
 	//_____________________________________________________//
 
 
-	//	4) (b)[test_map_mobTableByVnum] row, (!)[mob_table]   ߰Ѵ.
-	// ٽ о.
+	//	4) (b)[test_map_mobTableByVnum]의 row중, (!)[mob_table]에 없는 것을 추가한다.
+	//파일 다시 읽어오기.
 	test_data.Destroy();
 	isTestFile = true;
 	test_data;
 	if(!test_data.Load("mob_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("׽Ʈ  ϴ. ״ մϴ.");
+		SPDLOG_ERROR("테스트 파일이 없습니다. 그대로 진행합니다.");
 		isTestFile = false;
 	}
 	if(isTestFile) {
-		test_data.Next();	// ο Ѿ.
+		test_data.Next();	//설명 로우 넘어가기.
 
-		while (test_data.Next())	//׽Ʈ   Ⱦ,ο  ߰Ѵ.
+		while (test_data.Next())	//테스트 데이터 각각을 훑어나가며,새로운 것을 추가한다.
 		{
-			//ߺǴ κ̸ Ѿ.
+			//중복되는 부분이면 넘어간다.
 			set::iterator itVnum;
 			itVnum=vnumSet.find(atoi(test_data.AsStringByIndex(0)));
 			if (itVnum != vnumSet.end()) {
@@ -419,7 +419,7 @@ bool CClientManager::InitializeMobTable()
 
 			if (!Set_Proto_Mob_Table(mob_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("  ̺  .");
+				SPDLOG_ERROR("몹 프로토 테이블 셋팅 실패.");
 			}
 
 			SPDLOG_DEBUG("MOB #{:<5} {:24} {:24} level: {:<3} rank: {} empire: {}", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
@@ -447,8 +447,8 @@ bool CClientManager::InitializeShopTable()
 
 	std::unique_ptr pkMsg2(CDBManager::instance().DirectQuery(s_szQuery));
 
-	// shop vnum ִµ shop_item  ... з óǴ  .
-	// óҺκ
+	// shop의 vnum은 있는데 shop_item 이 없을경우... 실패로 처리되니 주의 요망.
+	// 고처야할부분
 	SQLResult * pRes2 = pkMsg2->Get();
 
 	if (!pRes2->uiNumRows)
@@ -487,7 +487,7 @@ bool CClientManager::InitializeShopTable()
 
 		str_to_number(shop_table->dwNPCVnum, data[col++]);
 
-		if (!data[col])	//  ϳ  NULL  ǹǷ..
+		if (!data[col])	// 아이템이 하나도 없으면 NULL이 리턴 되므로..
 			continue;
 
 		TShopItemTable * pItem = &shop_table->items[shop_table->byItemCount];
@@ -560,7 +560,7 @@ bool CClientManager::InitializeQuestItemTable()
 			continue;
 		}
 
-		tbl.bType = ITEM_QUEST; // quest_item_proto ̺ ִ ͵  ITEM_QUEST 
+		tbl.bType = ITEM_QUEST; // quest_item_proto 테이블에 있는 것들은 모두 ITEM_QUEST 유형
 		tbl.bSize = 1;
 
 		m_vec_itemTable.push_back(tbl);
@@ -571,39 +571,39 @@ bool CClientManager::InitializeQuestItemTable()
 
 bool CClientManager::InitializeItemTable()
 {
-	//================== Լ  ==================//
-	//1.  : 'item_proto.txt', 'item_proto_test.txt', 'item_names.txt'  а,
-	//		(TItemTable),  Ʈ Ѵ.
-	//2. 
-	//	1) 'item_names.txt'  о (a)[localMap](vnum:name)  .
-	//	2) 'item_proto_text.txt'ϰ (a)[localMap] 
-	//		(b)[test_map_itemTableByVnum](vnum:TItemTable)  Ѵ.
-	//	3) 'item_proto.txt' ϰ  (a)[localMap] 
-	//		(!)[item_table],  .
-	//			<>
-	//			 row  , 
-	//			(b)[test_map_itemTableByVnum],(!)[mob_table] ο ִ row
-	//			(b)[test_map_itemTableByVnum]  Ѵ.
-	//	4) (b)[test_map_itemTableByVnum] row, (!)[item_table]   ߰Ѵ.
-	//3. ׽Ʈ
-	//	1)'item_proto.txt'  item_table  . -> Ϸ
-	//	2)'item_names.txt'  item_table  .
-	//	3)'item_proto_test.txt'  [ġ]  item_table   .
-	//	4)'item_proto_test.txt'  [ο]  item_table   .
-	//	5) ()  Ŭ̾Ʈ  ۵ ϴ.
+	//================== 함수 설명 ==================//
+	//1. 요약 : 'item_proto.txt', 'item_proto_test.txt', 'item_names.txt' 파일을 읽고,
+	//		(TItemTable),  오브젝트를 생성한다.
+	//2. 순서
+	//	1) 'item_names.txt' 파일을 읽어서 (a)[localMap](vnum:name) 맵을 만든다.
+	//	2) 'item_proto_text.txt'파일과 (a)[localMap] 맵으로
+	//		(b)[test_map_itemTableByVnum](vnum:TItemTable) 맵을 생성한다.
+	//	3) 'item_proto.txt' 파일과  (a)[localMap] 맵으로
+	//		(!)[item_table], 을 만든다.
+	//			<참고>
+	//			각 row 들 중, 
+	//			(b)[test_map_itemTableByVnum],(!)[mob_table] 모두에 있는 row는
+	//			(b)[test_map_itemTableByVnum]의 것을 사용한다.
+	//	4) (b)[test_map_itemTableByVnum]의 row중, (!)[item_table]에 없는 것을 추가한다.
+	//3. 테스트
+	//	1)'item_proto.txt' 정보가 item_table에 잘 들어갔는지. -> 완료
+	//	2)'item_names.txt' 정보가 item_table에 잘 들어갔는지.
+	//	3)'item_proto_test.txt' 에서 [겹치는] 정보가 item_table 에 잘 들어갔는지.
+	//	4)'item_proto_test.txt' 에서 [새로운] 정보가 item_table 에 잘 들어갔는지.
+	//	5) (최종) 게임 클라이언트에서 제대로 작동 하는지.
 	//_______________________________________________//
 
 
 
 	//=================================================================================//
-	//	1) 'item_names.txt'  о (a)[localMap](vnum:name)  .
+	//	1) 'item_names.txt' 파일을 읽어서 (a)[localMap](vnum:name) 맵을 만든다.
 	//=================================================================================//
 	bool isNameFile = true;
 	map localMap;
 	cCsvTable nameData;
 	if(!nameData.Load("item_names.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_names.txt  о ߽ϴ");
+		SPDLOG_ERROR("item_names.txt 파일을 읽어오지 못했습니다");
 		isNameFile = false;
 	} else {
 		nameData.Next();
@@ -614,32 +614,32 @@ bool CClientManager::InitializeItemTable()
 	//_________________________________________________________________//
 
 	//=================================================================//
-	//	2) 'item_proto_text.txt'ϰ (a)[localMap] 
-	//		(b)[test_map_itemTableByVnum](vnum:TItemTable)  Ѵ.
+	//	2) 'item_proto_text.txt'파일과 (a)[localMap] 맵으로
+	//		(b)[test_map_itemTableByVnum](vnum:TItemTable) 맵을 생성한다.
 	//=================================================================//
 	map test_map_itemTableByVnum;
-	//1.  о.
+	//1. 파일 읽어오기.
 	cCsvTable test_data;
 	if(!test_data.Load("item_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto_test.txt  о ߽ϴ");
+		SPDLOG_ERROR("item_proto_test.txt 파일을 읽어오지 못했습니다");
 		//return false;
 	} else {
-		test_data.Next();	// ο Ѿ.
+		test_data.Next();	//설명 로우 넘어가기.
 
-		//2. ׽Ʈ  ̺ .
+		//2. 테스트 아이템 테이블 생성.
 		TItemTable * test_item_table = NULL;
 		int test_itemTableSize = test_data.m_File.GetRowCount()-1;
 		test_item_table = new TItemTable[test_itemTableSize];
 		memset(test_item_table, 0, sizeof(TItemTable) * test_itemTableSize);
 
-		//3. ׽Ʈ  ̺  ְ, ʿ ֱ.
+		//3. 테스트 아이템 테이블에 값을 넣고, 맵에까지 넣기.
 		while(test_data.Next()) {
 
 
 			if (!Set_Proto_Item_Table(test_item_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("  ̺  .");
+				SPDLOG_ERROR("아이템 프로토 테이블 셋팅 실패.");
 			}
 
 			test_map_itemTableByVnum.insert(std::map::value_type(test_item_table->dwVnum, test_item_table));
@@ -651,25 +651,25 @@ bool CClientManager::InitializeItemTable()
 
 
 	//========================================================================//
-	//	3) 'item_proto.txt' ϰ  (a)[localMap] 
-	//		(!)[item_table],  .
-	//			<>
-	//			 row  , 
-	//			(b)[test_map_itemTableByVnum],(!)[mob_table] ο ִ row
-	//			(b)[test_map_itemTableByVnum]  Ѵ.
+	//	3) 'item_proto.txt' 파일과  (a)[localMap] 맵으로
+	//		(!)[item_table], 을 만든다.
+	//			<참고>
+	//			각 row 들 중, 
+	//			(b)[test_map_itemTableByVnum],(!)[mob_table] 모두에 있는 row는
+	//			(b)[test_map_itemTableByVnum]의 것을 사용한다.
 	//========================================================================//
 
-	//vnum  . ο ׽Ʈ  ǺҶ ȴ.
+	//vnum들을 저장할 셋. 새로운 테스트 아이템을 판별할때 사용된다.
 	set vnumSet;
 
-	// о.
+	//파일 읽어오기.
 	cCsvTable data;
 	if(!data.Load("item_proto.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto.txt  о ߽ϴ");
+		SPDLOG_ERROR("item_proto.txt 파일을 읽어오지 못했습니다");
 		return false;
 	}
-	data.Next(); //   ( Į ϴ κ)
+	data.Next(); //맨 윗줄 제외 (아이템 칼럼을 설명하는 부분)
 
 	if (!m_vec_itemTable.empty())
 	{
@@ -678,8 +678,8 @@ bool CClientManager::InitializeItemTable()
 		m_map_itemTableByVnum.clear();
 	}
 
-	//=====  ̺  =====//
-	// ߰Ǵ  ľѴ.
+	//===== 아이템 테이블 생성 =====//
+	//새로 추가되는 갯수를 파악한다.
 	int addNumber = 0;
 	while(data.Next()) {
 		int vnum = atoi(data.AsStringByIndex(0));
@@ -689,14 +689,14 @@ bool CClientManager::InitializeItemTable()
 			addNumber++;
 		}
 	}
-	//data ٽ ùٷ ű.(ٽ о´;;)
+	//data를 다시 첫줄로 옮긴다.(다시 읽어온다;;)
 	data.Destroy();
 	if(!data.Load("item_proto.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto.txt  о ߽ϴ");
+		SPDLOG_ERROR("item_proto.txt 파일을 읽어오지 못했습니다");
 		return false;
 	}
-	data.Next(); //   ( Į ϴ κ)
+	data.Next(); //맨 윗줄 제외 (아이템 칼럼을 설명하는 부분)
 
 	m_vec_itemTable.resize(data.m_File.GetRowCount() - 1 + addNumber);
 	memset(&m_vec_itemTable[0], 0, sizeof(TItemTable) * m_vec_itemTable.size());
@@ -711,16 +711,16 @@ bool CClientManager::InitializeItemTable()
 		std::map::iterator it_map_itemTable;
 		it_map_itemTable = test_map_itemTableByVnum.find(atoi(data.AsStringByIndex(col)));
 		if(it_map_itemTable == test_map_itemTableByVnum.end()) {
-			// Į  
+			//각 칼럼 데이터 저장
 			
 			if (!Set_Proto_Item_Table(item_table, data, localMap))
 			{
-				SPDLOG_ERROR("  ̺  .");
+				SPDLOG_ERROR("아이템 프로토 테이블 셋팅 실패.");
 			}
 
 
 			
-		} else {	//$$$$$$$$$$$$$$$$$$$$$$$ ׽Ʈ   ִ!	
+		} else {	//$$$$$$$$$$$$$$$$$$$$$$$ 테스트 아이템 정보가 있다!	
 			TItemTable *tempTable = it_map_itemTable->second;
 
 			item_table->dwVnum = tempTable->dwVnum;
@@ -777,19 +777,19 @@ bool CClientManager::InitializeItemTable()
 	//_______________________________________________________________________//
 
 	//========================================================================//
-	//	4) (b)[test_map_itemTableByVnum] row, (!)[item_table]   ߰Ѵ.
+	//	4) (b)[test_map_itemTableByVnum]의 row중, (!)[item_table]에 없는 것을 추가한다.
 	//========================================================================//
 	test_data.Destroy();
 	if(!test_data.Load("item_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto_test.txt  о ߽ϴ");
+		SPDLOG_ERROR("item_proto_test.txt 파일을 읽어오지 못했습니다");
 		//return false;
 	} else {
-		test_data.Next();	// ο Ѿ.
+		test_data.Next();	//설명 로우 넘어가기.
 
-		while (test_data.Next())	//׽Ʈ   Ⱦ,ο  ߰Ѵ.
+		while (test_data.Next())	//테스트 데이터 각각을 훑어나가며,새로운 것을 추가한다.
 		{
-			//ߺǴ κ̸ Ѿ.
+			//중복되는 부분이면 넘어간다.
 			set::iterator itVnum;
 			itVnum=vnumSet.find(atoi(test_data.AsStringByIndex(0)));
 			if (itVnum != vnumSet.end()) {
@@ -798,7 +798,7 @@ bool CClientManager::InitializeItemTable()
 			
 			if (!Set_Proto_Item_Table(item_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("  ̺  .");
+				SPDLOG_ERROR("아이템 프로토 테이블 셋팅 실패.");
 			}
 
 
diff --git a/src/db/src/ClientManagerGuild.cpp b/src/db/src/ClientManagerGuild.cpp
index b706c60..47f1fe6 100644
--- a/src/db/src/ClientManagerGuild.cpp
+++ b/src/db/src/ClientManagerGuild.cpp
@@ -126,13 +126,13 @@ const char* __GetWarType(int n)
 	switch (n)
 	{
 		case 0 :
-			return "п";
+			return "\xEF\xBF\xBD\xD0\xBF\xEF\xBF\xBD"; // 패왕
 		case 1 :
-			return "";
+			return "\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD"; // 맹장
 		case 2 :
-			return "ȣ";
+			return "\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xA3"; // 수호
 		default :
-			return " ȣ";
+			return "\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\x20\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xA3"; // 없는 번호
 	}
 }
 
@@ -161,7 +161,7 @@ void CClientManager::GuildWar(CPeer* peer, TPacketGuildWar* p)
 
 		case GUILD_WAR_WAIT_START:
 			SPDLOG_DEBUG("GuildWar: GUILD_WAR_WAIT_START type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
-		case GUILD_WAR_RESERVE:	//  
+		case GUILD_WAR_RESERVE:	// 길드전 예약
 			if (p->bWar != GUILD_WAR_WAIT_START)
 				SPDLOG_DEBUG("GuildWar: GUILD_WAR_RESERVE type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
 			CGuildManager::instance().RemoveDeclare(p->dwGuildFrom, p->dwGuildTo);
@@ -173,21 +173,21 @@ void CClientManager::GuildWar(CPeer* peer, TPacketGuildWar* p)
 
 			break;
 
-		case GUILD_WAR_ON_WAR:		//   Ų. (ʵ ٷ  )
+		case GUILD_WAR_ON_WAR:		// 길드전을 시작 시킨다. (필드전은 바로 시작 됨)
 			SPDLOG_DEBUG("GuildWar: GUILD_WAR_ON_WAR type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
 			CGuildManager::instance().RemoveDeclare(p->dwGuildFrom, p->dwGuildTo);
 			CGuildManager::instance().StartWar(p->bType, p->dwGuildFrom, p->dwGuildTo);
 			break;
 
-		case GUILD_WAR_OVER:		//   
+		case GUILD_WAR_OVER:		// 길드전 정상 종료
 			SPDLOG_DEBUG("GuildWar: GUILD_WAR_OVER type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
 			CGuildManager::instance().RecvWarOver(p->dwGuildFrom, p->dwGuildTo, p->bType, p->lWarPrice);
 			break;
 
-		case GUILD_WAR_END:		//   
+		case GUILD_WAR_END:		// 길드전 비정상 종료
 			SPDLOG_DEBUG("GuildWar: GUILD_WAR_END type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
 			CGuildManager::instance().RecvWarEnd(p->dwGuildFrom, p->dwGuildTo);
-			return; // NOTE: RecvWarEnd Ŷ Ƿ  εij  ʴ´.
+			return; // NOTE: RecvWarEnd에서 패킷을 보내므로 따로 브로드캐스팅 하지 않는다.
 
 		case GUILD_WAR_CANCEL :
 			SPDLOG_DEBUG("GuildWar: GUILD_WAR_CANCEL type({}) guild({} - {})", __GetWarType(p->bType), p->dwGuildFrom, p->dwGuildTo);
diff --git a/src/db/src/ClientManagerLogin.cpp b/src/db/src/ClientManagerLogin.cpp
index 280dc4e..9c4eb47 100644
--- a/src/db/src/ClientManagerLogin.cpp
+++ b/src/db/src/ClientManagerLogin.cpp
@@ -230,7 +230,7 @@ TAccountTable * CreateAccountTableFromRes(MYSQL_RES * res)
 	TAccountTable * pkTab = new TAccountTable;
 	memset(pkTab, 0, sizeof(TAccountTable));
 
-	// ù° ÷ ͸  Ѵ (JOIN QUERY   )
+	// 첫번째 컬럼 것만 참고 한다 (JOIN QUERY를 위한 것 임)
 	strlcpy(input_pwd, row[col++], sizeof(input_pwd));
 	str_to_number(pkTab->id, row[col++]);
 	strlcpy(pkTab->login, row[col++], sizeof(pkTab->login));
@@ -354,7 +354,7 @@ void CClientManager::RESULT_LOGIN(CPeer * peer, SQLMsg * msg)
 
 	if (info->account_index == 0)
 	{
-		//  ?
+		// 계정이 없네?
 		if (msg->Get()->uiNumRows == 0)
 		{
 			SPDLOG_DEBUG("RESULT_LOGIN: no account");
@@ -396,14 +396,14 @@ void CClientManager::RESULT_LOGIN(CPeer * peer, SQLMsg * msg)
 	}
 	else
 	{
-		if (!info->pAccountTable) // ̷ ;;
+		if (!info->pAccountTable) // 이럴리는 없겠지만;;
 		{
 			peer->EncodeReturn(HEADER_DG_LOGIN_WRONG_PASSWD, info->dwHandle);
 			delete info;
 			return;
 		}
 
-		// ٸ ؼ ̹ α عȴٸ.. ̹ ߴٰ  Ѵ.
+		// 다른 컨넥션이 이미 로그인 해버렸다면.. 이미 접속했다고 보내야 한다.
 		if (!InsertLogonAccount(info->pAccountTable->login, peer->GetHandle(), info->ip))
 		{
 			SPDLOG_DEBUG("RESULT_LOGIN: already logon {}", info->pAccountTable->login);
diff --git a/src/db/src/ClientManagerPlayer.cpp b/src/db/src/ClientManagerPlayer.cpp
index 944da6e..e3c882c 100644
--- a/src/db/src/ClientManagerPlayer.cpp
+++ b/src/db/src/ClientManagerPlayer.cpp
@@ -31,7 +31,7 @@ bool CreateItemTableFromRes(MYSQL_RES * res, std::vector * pVec, DW
 
 	int rows;
 
-	if ((rows = mysql_num_rows(res)) <= 0)	//  
+	if ((rows = mysql_num_rows(res)) <= 0)	// 데이터 없음
 	{
 		pVec->clear();
 		return true;
@@ -158,7 +158,7 @@ size_t CreatePlayerSaveQuery(char * pszQuery, size_t querySize, TPlayerTable * p
 		pkTab->horse.sStamina,
 		pkTab->horse_skill_point);
 
-	// Binary  ٲٱ  ӽ 
+	// Binary 로 바꾸기 위한 임시 공간
 	char text[8192 + 1];
 
 	CDBManager::instance().EscapeString(text, pkTab->skills, sizeof(pkTab->skills));
@@ -210,7 +210,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 	TPlayerTable * pTab;
 	
 	//
-	//     ij͵ ijó
+	// 한 계정에 속한 모든 캐릭터들 캐쉬처리
 	//
 	CLoginData * pLoginData = GetLoginDataByAID(packet->account_id);
 
@@ -222,12 +222,12 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 	}
 
 	//----------------------------------------------------------------
-	// 1.  DBCache   : DBCache 
-	// 2.  DBCache   : DB 
+	// 1. 유저정보가 DBCache 에 존재 : DBCache에서 
+	// 2. 유저정보가 DBCache 에 없음 : DB에서 
 	// ---------------------------------------------------------------
 	
 	//----------------------------------
-	// 1.  DBCache   : DBCache 
+	// 1. 유저정보가 DBCache 에 존재 : DBCache에서 
 	//----------------------------------
 	if ((c = GetPlayerCache(packet->player_id)))
 	{
@@ -267,13 +267,13 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 		SPDLOG_DEBUG("[PLAYER_LOAD] ID {} pid {} gold {} ", pTab->name, pTab->id, pTab->gold);
 
 		//--------------------------------------------
-		//  & AFFECT & QUEST ε : 
+		// 아이템 & AFFECT & QUEST 로딩 : 
 		//--------------------------------------------
-		// 1)  DBCache   : DBCache  
-		// 2)  DBCache   : DB   
+		// 1) 아이템이 DBCache 에 존재 : DBCache 에서 가져옴
+		// 2) 아이템이 DBCache 에 없음 : DB 에서 가져옴 
 
 		/////////////////////////////////////////////
-		// 1)  DBCache   : DBCache  
+		// 1) 아이템이 DBCache 에 존재 : DBCache 에서 가져옴
 		/////////////////////////////////////////////
 		if (pSet)
 		{
@@ -288,7 +288,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 				CItemCache * c = *it++;
 				TPlayerItem * p = c->Get();
 
-				if (p->vnum) // vnum   ̴.
+				if (p->vnum) // vnum이 없으면 삭제된 아이템이다.
 					memcpy(&s_items[dwCount++], p, sizeof(TPlayerItem));
 			}
 
@@ -314,7 +314,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 			CDBManager::instance().ReturnQuery(szQuery, QID_AFFECT, peer->GetHandle(), new ClientHandleInfo(dwHandle));
 		}
 		/////////////////////////////////////////////
-		// 2)  DBCache   : DB   
+		// 2) 아이템이 DBCache 에 없음 : DB 에서 가져옴 
 		/////////////////////////////////////////////
 		else
 		{
@@ -348,7 +348,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 		//return;
 	}
 	//----------------------------------
-	// 2.  DBCache   : DB 
+	// 2. 유저정보가 DBCache 에 없음 : DB에서 
 	//----------------------------------
 	else
 	{
@@ -357,7 +357,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 		char queryStr[QUERY_MAX_LEN];
 
 		//--------------------------------------------------------------
-		// ij   :  DB 
+		// 캐릭터 정보 얻어오기 : 무조건 DB에서 
 		//--------------------------------------------------------------
 		snprintf(queryStr, sizeof(queryStr),
 				"SELECT "
@@ -373,7 +373,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 		CDBManager::instance().ReturnQuery(queryStr, QID_PLAYER, peer->GetHandle(), pkInfo);
 
 		//--------------------------------------------------------------
-		//   
+		// 아이템 가져오기 
 		//--------------------------------------------------------------
 		snprintf(queryStr, sizeof(queryStr),
 				"SELECT id,window+0,pos,count,vnum,socket0,socket1,socket2,attrtype0,attrvalue0,attrtype1,attrvalue1,attrtype2,attrvalue2,attrtype3,attrvalue3,attrtype4,attrvalue4,attrtype5,attrvalue5,attrtype6,attrvalue6 "
@@ -382,15 +382,15 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad
 		CDBManager::instance().ReturnQuery(queryStr, QID_ITEM, peer->GetHandle(), new ClientHandleInfo(dwHandle, packet->player_id));
 
 		//--------------------------------------------------------------
-		// QUEST  
+		// QUEST 가져오기 
 		//--------------------------------------------------------------
 		snprintf(queryStr, sizeof(queryStr),
 				"SELECT dwPID,szName,szState,lValue FROM quest%s WHERE dwPID=%d",
 				GetTablePostfix(), packet->player_id);
 		CDBManager::instance().ReturnQuery(queryStr, QID_QUEST, peer->GetHandle(), new ClientHandleInfo(dwHandle, packet->player_id,packet->account_id));
-		//  ɿ item_award̺ login   account id Ѱش
+		//독일 선물 기능에서 item_award테이블에서 login 정보를 얻기위해 account id도 넘겨준다
 		//--------------------------------------------------------------
-		// AFFECT  
+		// AFFECT 가져오기 
 		//--------------------------------------------------------------
 		snprintf(queryStr, sizeof(queryStr),
 				"SELECT dwPID,bType,bApplyOn,lApplyValue,dwFlag,lDuration,lSPCost FROM affect%s WHERE dwPID=%d",
@@ -407,21 +407,21 @@ void CClientManager::ItemAward(CPeer * peer,char* login)
 	std::set * pSet = ItemAwardManager::instance().GetByLogin(login_t);	
 	if(pSet == NULL)
 		return;
-	typeof(pSet->begin()) it = pSet->begin();	//taken_time NULLΰ͵ о	
+	typeof(pSet->begin()) it = pSet->begin();	//taken_time이 NULL인것들 읽어옴	
 	while(it != pSet->end() )
 	{				
 		TItemAward * pItemAward = *(it++);		
-		char* whyStr = pItemAward->szWhy;	//why ݷ б
-		char cmdStr[100] = "";	//whyݷ뿡   ӽ ڿ ص
-		strcpy(cmdStr,whyStr);	//ɾ   ū  ūȭ DZ 
+		char* whyStr = pItemAward->szWhy;	//why 콜룸 읽기
+		char cmdStr[100] = "";	//why콜룸에서 읽은 값을 임시 문자열에 복사해둠
+		strcpy(cmdStr,whyStr);	//명령어 얻는 과정에서 토큰쓰면 원본도 토큰화 되기 때문
 		char command[20] = "";
-		strcpy(command,GetCommand(cmdStr).c_str());	// command 
-		if( !(strcmp(command,"GIFT") ))	// command  GIFT̸
+		strcpy(command,GetCommand(cmdStr).c_str());	// command 얻기
+		if( !(strcmp(command,"GIFT") ))	// command 가 GIFT이면
 		{
 			TPacketItemAwardInfromer giftData;
-			strcpy(giftData.login, pItemAward->szLogin);	//α ̵ 
-			strcpy(giftData.command, command);					//ɾ 
-			giftData.vnum = pItemAward->dwVnum;				// vnum 
+			strcpy(giftData.login, pItemAward->szLogin);	//로그인 아이디 복사
+			strcpy(giftData.command, command);					//명령어 복사
+			giftData.vnum = pItemAward->dwVnum;				//아이템 vnum도 복사
 			ForwardPacket(HEADER_DG_ITEMAWARD_INFORMER,&giftData,sizeof(TPacketItemAwardInfromer));
 		}
 	}
@@ -442,7 +442,7 @@ std::string CClientManager::GetCommand(char* str)
 
 bool CreatePlayerTableFromRes(MYSQL_RES * res, TPlayerTable * pkTab)
 {
-	if (mysql_num_rows(res) == 0)	//  
+	if (mysql_num_rows(res) == 0)	// 데이터 없음
 		return false;
 
 	memset(pkTab, 0, sizeof(TPlayerTable));
@@ -529,11 +529,11 @@ bool CreatePlayerTableFromRes(MYSQL_RES * res, TPlayerTable * pkTab)
 			int max_point = pkTab->level - 9;
 
 			int skill_point = 
-				std::min(20, pkTab->skills[121].bLevel) +	// SKILL_LEADERSHIP			ַ
-				std::min(20, pkTab->skills[124].bLevel) +	// SKILL_MINING				ä
-				std::min(10, pkTab->skills[131].bLevel) +	// SKILL_HORSE_SUMMON		ȯ
-				std::min(20, pkTab->skills[141].bLevel) +	// SKILL_ADD_HP				HP
-				std::min(20, pkTab->skills[142].bLevel);		// SKILL_RESIST_PENETRATE	
+				std::min(20, pkTab->skills[121].bLevel) +	// SKILL_LEADERSHIP			통솔력
+				std::min(20, pkTab->skills[124].bLevel) +	// SKILL_MINING				채광
+				std::min(10, pkTab->skills[131].bLevel) +	// SKILL_HORSE_SUMMON		말소환
+				std::min(20, pkTab->skills[141].bLevel) +	// SKILL_ADD_HP				HP보강
+				std::min(20, pkTab->skills[142].bLevel);		// SKILL_RESIST_PENETRATE	관통저항
 
 			pkTab->sub_skill_point = max_point - skill_point;
 		}
@@ -573,13 +573,13 @@ void CClientManager::RESULT_COMPOSITE_PLAYER(CPeer * peer, SQLMsg * pMsg, DWORD
 			{
 				SPDLOG_DEBUG("QID_QUEST {}", info->dwHandle);
 				RESULT_QUEST_LOAD(peer, pSQLResult, info->dwHandle, info->player_id);
-				//aid
+				//aid얻기
 				ClientHandleInfo*  temp1 = info.get();
 				if (temp1 == NULL)
 					break;
 				
 				CLoginData* pLoginData1 = GetLoginDataByAID(temp1->account_id);	//				
-				//  
+				//독일 선물 기능
 				if( pLoginData1->GetAccountRef().login == NULL)
 					break;
 				if( pLoginData1 == NULL )
@@ -670,14 +670,14 @@ void CClientManager::RESULT_PLAYER_LOAD(CPeer * peer, MYSQL_RES * pRes, ClientHa
 void CClientManager::RESULT_ITEM_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dwHandle, DWORD dwPID)
 {
 	static std::vector s_items;
-	//DB   о´.
+	//DB에서 아이템 정보를 읽어온다.
 	CreateItemTableFromRes(pRes, &s_items, dwPID);
 	DWORD dwCount = s_items.size();
 
 	peer->EncodeHeader(HEADER_DG_ITEM_LOAD, dwHandle, sizeof(DWORD) + sizeof(TPlayerItem) * dwCount);
 	peer->EncodeDWORD(dwCount);
 
-	//CacheSet   
+	//CacheSet을 만든다  
 	CreateItemCacheSet(dwPID);
 
 	// ITEM_LOAD_LOG_ATTACH_PID
@@ -689,7 +689,7 @@ void CClientManager::RESULT_ITEM_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dwHa
 		peer->Encode(&s_items[0], sizeof(TPlayerItem) * dwCount);
 
 		for (DWORD i = 0; i < dwCount; ++i)
-			PutItemCache(&s_items[i], true); // ε    ʿ Ƿ,  bSkipQuery true ִ´.
+			PutItemCache(&s_items[i], true); // 로드한 것은 따로 저장할 필요 없으므로, 인자 bSkipQuery에 true를 넣는다.
 	}
 }
 
@@ -697,7 +697,7 @@ void CClientManager::RESULT_AFFECT_LOAD(CPeer * peer, MYSQL_RES * pRes, DWORD dw
 {
 	int iNumRows;
 
-	if ((iNumRows = mysql_num_rows(pRes)) == 0) //  
+	if ((iNumRows = mysql_num_rows(pRes)) == 0) // 데이터 없음
 		return;
 
 	static std::vector s_elements;
@@ -793,7 +793,7 @@ void CClientManager::__QUERY_PLAYER_CREATE(CPeer *peer, DWORD dwHandle, TPlayerC
 	int		queryLen;
 	DWORD   player_id;
 
-	//   X  ij    .
+	// 한 계정에 X초 내로 캐릭터 생성을 할 수 없다.
 	auto it = s_createTimeByAccountID.find(packet->account_id);
 
 	if (it != s_createTimeByAccountID.end())
@@ -1022,7 +1022,7 @@ void CClientManager::__QUERY_PLAYER_DELETE(CPeer* peer, DWORD dwHandle, TPlayerD
 }
 
 //
-// @version	05/06/10 Bang2ni - ÷̾   Ʈ  ߰.
+// @version	05/06/10 Bang2ni - 플레이어 삭제시 가격정보 리스트 삭제 추가.
 //
 void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
 {
@@ -1073,14 +1073,14 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
 			return;
 		}
 
-		//  
+		// 삭제 성공
 		SPDLOG_DEBUG("PLAYER_DELETE SUCCESS {}", dwPID);
 
 		char account_index_string[16];
 
 		snprintf(account_index_string, sizeof(account_index_string), "player_id%d", m_iPlayerIDStart + pi->account_index);
 
-		// ÷̾ ̺ ij Ѵ.
+		// 플레이어 테이블을 캐쉬에서 삭제한다.
 		CPlayerTableCache * pkPlayerCache = GetPlayerCache(pi->player_id);
 
 		if (pkPlayerCache)
@@ -1089,7 +1089,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
 			delete pkPlayerCache;
 		}
 
-		// ۵ ij Ѵ.
+		// 아이템들을 캐쉬에서 삭제한다.
 		TItemCacheSet * pSet = GetItemCacheSet(pi->player_id);
 
 		if (pSet)
@@ -1152,7 +1152,7 @@ void CClientManager::__RESULT_PLAYER_DELETE(CPeer *peer, SQLMsg* msg)
 	}
 	else
 	{
-		//  
+		// 삭제 실패
 		SPDLOG_DEBUG("PLAYER_DELETE FAIL NO ROW");
 		peer->EncodeHeader(HEADER_DG_PLAYER_DELETE_FAILED, pi->dwHandle, 1);
 		peer->EncodeBYTE(pi->account_index);
@@ -1237,7 +1237,7 @@ void CClientManager::RESULT_HIGHSCORE_REGISTER(CPeer * pkPeer, SQLMsg * msg)
 
 	if (res->uiNumRows == 0)
 	{
-		// ο ̽ھ 
+		// 새로운 하이스코어를 삽입
 		char buf[256];
 		snprintf(buf, sizeof(buf), "INSERT INTO highscore%s VALUES('%s', %u, %d)", GetTablePostfix(), szBoard, pi->player_id, value);
 		CDBManager::instance().AsyncQuery(buf);
@@ -1272,7 +1272,7 @@ void CClientManager::RESULT_HIGHSCORE_REGISTER(CPeer * pkPeer, SQLMsg * msg)
 			CDBManager::instance().AsyncQuery(buf);
 		}
 	}
-	// TODO: ̰ ̽ھ Ʈ Ǿ üũϿ  ѷѴ.
+	// TODO: 이곳에서 하이스코어가 업데이트 되었는지 체크하여 공지를 뿌려야한다.
 	delete pi;
 }
 
@@ -1280,10 +1280,10 @@ void CClientManager::InsertLogoutPlayer(DWORD pid)
 {
 	TLogoutPlayerMap::iterator it = m_map_logout.find(pid);
 
-	//   ߰
+	// 존재하지 않을경우 추가
 	if (it != m_map_logout.end())
 	{
-		// Ұ ð 
+		// 존재할경우 시간만 갱신
         SPDLOG_TRACE("LOGOUT: Update player time pid({})", pid);
 
 		it->second->time = time(0);
diff --git a/src/db/src/Config.cpp b/src/db/src/Config.cpp
index 216f122..24ae9b3 100644
--- a/src/db/src/Config.cpp
+++ b/src/db/src/Config.cpp
@@ -67,7 +67,7 @@ bool CConfig::GetWord(FILE *fp, char *tar)
 
 			if ((c == ' ' || c == '\t' || c == '\n'))
 			{
-				// .
+				// 텝.
 				tar[i] = '\0';
 				return true;
 			}
@@ -144,7 +144,7 @@ bool CConfig::LoadFile(const char* filename)
 	}
 
 
-	//  ݴ κ.
+	// 파일 닫는 부분.
 	fclose(fp);
 	return true;
 }
diff --git a/src/db/src/CsvReader.cpp b/src/db/src/CsvReader.cpp
index 6087c81..59cd7c6 100644
--- a/src/db/src/CsvReader.cpp
+++ b/src/db/src/CsvReader.cpp
@@ -11,14 +11,14 @@
 
 namespace
 {
-    /// Ľ̿ state Ű
+    /// 파싱용 state 열거값
     enum ParseState
     {
-        STATE_NORMAL = 0, ///< Ϲ 
-        STATE_QUOTE       ///< ǥ  
+        STATE_NORMAL = 0, ///< 일반 상태
+        STATE_QUOTE       ///< 따옴표 뒤의 상태
     };
 
-    /// ڿ ¿  ؼ ȯѴ.
+    /// 문자열 좌우의 공백을 제거해서 반환한다.
     std::string Trim(std::string str)
     {
         str = str.erase(str.find_last_not_of(" \t\r\n") + 1);
@@ -26,7 +26,7 @@ namespace
         return str;
     }
 
-    /// \brief ־ 忡 ִ ĺ  ҹڷ ٲ۴.
+    /// \brief 주어진 문장에 있는 알파벳을 모두 소문자로 바꾼다.
     std::string Lower(std::string original)
     {
         std::transform(original.begin(), original.end(), original.begin(), tolower);
@@ -35,9 +35,9 @@ namespace
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \brief  ׼ ,    ̸ Ѵ.
-/// \param name  ̸
-/// \param index  ε
+/// \brief 셀을 액세스할 때, 숫자 대신 사용할 이름을 등록한다.
+/// \param name 셀 이름
+/// \param index 셀 인덱스
 ////////////////////////////////////////////////////////////////////////////////
 void cCsvAlias::AddAlias(const char* name, size_t index)
 {
@@ -51,7 +51,7 @@ void cCsvAlias::AddAlias(const char* name, size_t index)
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \brief  ͸ Ѵ.
+/// \brief 모든 데이터를 삭제한다.
 ////////////////////////////////////////////////////////////////////////////////
 void cCsvAlias::Destroy()
 {
@@ -60,9 +60,9 @@ void cCsvAlias::Destroy()
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \brief  ε ̸ ȯѴ.
-/// \param index  ε
-/// \return const char* ̸
+/// \brief 숫자 인덱스를 이름으로 변환한다.
+/// \param index 숫자 인덱스
+/// \return const char* 이름
 ////////////////////////////////////////////////////////////////////////////////
 const char* cCsvAlias::operator [] (size_t index) const
 {
@@ -78,9 +78,9 @@ const char* cCsvAlias::operator [] (size_t index) const
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \brief ̸  ε ȯѴ.
-/// \param name ̸
-/// \return size_t  ε
+/// \brief 이름을 숫자 인덱스로 변환한다.
+/// \param name 이름
+/// \return size_t 숫자 인덱스
 ////////////////////////////////////////////////////////////////////////////////
 size_t cCsvAlias::operator [] (const char* name) const
 {
@@ -96,11 +96,11 @@ size_t cCsvAlias::operator [] (const char* name) const
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \brief  ̸ CSV  εѴ.
-/// \param fileName CSV  ̸
-/// \param seperator ʵ иڷ  . ⺻ ','̴.
-/// \param quote ǥ  . ⺻ '"'̴.
-/// \return bool  εߴٸ true, ƴ϶ false
+/// \brief 지정된 이름의 CSV 파일을 로드한다.
+/// \param fileName CSV 파일 이름
+/// \param seperator 필드 분리자로 사용할 글자. 기본값은 ','이다.
+/// \param quote 따옴표로 사용할 글자. 기본값은 '"'이다.
+/// \return bool 무사히 로드했다면 true, 아니라면 false
 ////////////////////////////////////////////////////////////////////////////////
 bool cCsvFile::Load(const char* fileName, const char seperator, const char quote)
 {
@@ -109,7 +109,7 @@ bool cCsvFile::Load(const char* fileName, const char seperator, const char quote
     std::ifstream file(fileName, std::ios::in);
     if (!file) return false;
 
-    Destroy(); //  ͸ 
+    Destroy(); // 기존의 데이터를 삭제
 
     cCsvRow* row = NULL;
     ParseState state = STATE_NORMAL;
@@ -124,33 +124,33 @@ bool cCsvFile::Load(const char* fileName, const char seperator, const char quote
         std::string line(Trim(buf));
         if (line.empty() || (state == STATE_NORMAL && line[0] == '#')) continue;
         
-        std::string text  = std::string(line) + "  "; // Ľ lookahead  ٿش.
+        std::string text  = std::string(line) + "  "; // 파싱 lookahead 때문에 붙여준다.
         size_t cur = 0;
 
         while (cur < text.size())
         {
-            //  尡 QUOTE  ,
+            // 현재 모드가 QUOTE 모드일 때,
             if (state == STATE_QUOTE)
             {
-                // '"'    ̴.
-                // 1.  ο Ư ڰ   ̸ ˸  ¿ 
-                // 2.   '"' ڰ '"' 2 ġȯ 
-                //   ù°   ִ  CSV  ̶, 
-                //  STATE_NORMAL ɸ Ǿִ.
-                // ׷Ƿ ⼭ ɸ  1  쳪, 2  ̴.
-                // 2 쿡  '"' ڰ 2 Ÿ.  1
-                //  쿡 ƴϴ. ̸  ؼ ڵ带 ¥...
+                // '"' 문자의 종류는 두 가지이다.
+                // 1. 셀 내부에 특수 문자가 있을 경우 이를 알리는 셀 좌우의 것
+                // 2. 셀 내부의 '"' 문자가 '"' 2개로 치환된 것
+                // 이 중 첫번째 경우의 좌측에 있는 것은 CSV 파일이 정상적이라면, 
+                // 무조건 STATE_NORMAL에 걸리게 되어있다.
+                // 그러므로 여기서 걸리는 것은 1번의 우측 경우나, 2번 경우 뿐이다.
+                // 2번의 경우에는 무조건 '"' 문자가 2개씩 나타난다. 하지만 1번의
+                // 우측 경우에는 아니다. 이를 바탕으로 해서 코드를 짜면...
                 if (text[cur] == quote)
                 {
-                    //  ڰ '"' ڶ,  ӵ '"' ڶ 
-                    // ̴   '"' ڰ ġȯ ̴.
+                    // 다음 문자가 '"' 문자라면, 즉 연속된 '"' 문자라면 
+                    // 이는 셀 내부의 '"' 문자가 치환된 것이다.
                     if (text[cur+1] == quote)
                     {
                         token += quote;
                         ++cur;
                     }
-                    //  ڰ '"' ڰ ƴ϶ 
-                    //  '"'ڴ   ˸ ڶ   ִ.
+                    // 다음 문자가 '"' 문자가 아니라면 
+                    // 현재의 '"'문자는 셀의 끝을 알리는 문자라고 할 수 있다.
                     else
                     {
                         state = STATE_NORMAL;
@@ -161,25 +161,25 @@ bool cCsvFile::Load(const char* fileName, const char seperator, const char quote
                     token += text[cur];
                 }
             }
-            //  尡 NORMAL  ,
+            // 현재 모드가 NORMAL 모드일 때,
             else if (state == STATE_NORMAL)
             {
                 if (row == NULL)
                     row = new cCsvRow();
 
-                // ',' ڸ ٸ   ǹѴ.
-                // ūμ  Ʈٰ ְ, ū ʱȭѴ.
+                // ',' 문자를 만났다면 셀의 끝의 의미한다.
+                // 토큰으로서 셀 리스트에다가 집어넣고, 토큰을 초기화한다.
                 if (text[cur] == seperator)
                 {
                     row->push_back(token);
                     token.clear();
                 }
-                // '"' ڸ ٸ, QUOTE  ȯѴ.
+                // '"' 문자를 만났다면, QUOTE 모드로 전환한다.
                 else if (text[cur] == quote)
                 {
                     state = STATE_QUOTE;
                 }
-                // ٸ Ϲ ڶ  ūٰ δ.
+                // 다른 일반 문자라면 현재 토큰에다가 덧붙인다.
                 else
                 {
                     token += text[cur];
@@ -189,8 +189,8 @@ bool cCsvFile::Load(const char* fileName, const char seperator, const char quote
             ++cur;
         }
 
-        //    ',' ڰ   ⼭ ߰Ѵ.
-        // , ó Ľ lookahead   ̽    .
+        // 마지막 셀은 끝에 ',' 문자가 없기 때문에 여기서 추가해줘야한다.
+        // 단, 처음에 파싱 lookahead 때문에 붙인 스페이스 문자 두 개를 뗀다.
         if (state == STATE_NORMAL)
         {
             Assert(row != NULL);
@@ -209,49 +209,49 @@ bool cCsvFile::Load(const char* fileName, const char seperator, const char quote
 }
 
 ////////////////////////////////////////////////////////////////////////////////
-/// \brief  ִ  CSV Ͽ Ѵ.
-/// \param fileName CSV  ̸
-/// \param append true ,  Ͽ δ. false 쿡 
-///    ϰ,  .
-/// \param seperator ʵ иڷ  . ⺻ ','̴.
-/// \param quote ǥ  . ⺻ '"'̴.
-/// \return bool  ߴٸ true,   쿡 false
+/// \brief 가지고 있는 내용을 CSV 파일에다 저장한다.
+/// \param fileName CSV 파일 이름
+/// \param append true일 경우, 기존의 파일에다 덧붙인다. false인 경우에는 
+/// 기존의 파일 내용을 삭제하고, 새로 쓴다.
+/// \param seperator 필드 분리자로 사용할 글자. 기본값은 ','이다.
+/// \param quote 따옴표로 사용할 글자. 기본값은 '"'이다.
+/// \return bool 무사히 저장했다면 true, 에러가 생긴 경우에는 false
 ////////////////////////////////////////////////////////////////////////////////
 bool cCsvFile::Save(const char* fileName, bool append, char seperator, char quote) const
 {
     Assert(seperator != quote);
 
-    //  忡    ÷׷ Ѵ.
+    // 출력 모드에 따라 파일을 적당한 플래그로 생성한다.
     std::ofstream file;
     if (append) { file.open(fileName, std::ios::out | std::ios::app); }
     else { file.open(fileName, std::ios::out | std::ios::trunc); }
 
-    //   ߴٸ, false Ѵ.
+    // 파일을 열지 못했다면, false를 리턴한다.
     if (!file) return false;
 
     char special_chars[5] = { seperator, quote, '\r', '\n', 0 };
     char quote_escape_string[3] = { quote, quote, 0 };
 
-    //   Ⱦϸ鼭...
+    // 모든 행을 횡단하면서...
     for (size_t i=0; iiScore[0] > pData->iScore[1])
 		{
@@ -508,7 +508,7 @@ void CGuildManager::WarEnd(DWORD GID1, DWORD GID2, bool bForceDraw)
 		else
 			bDraw = true;
 	}
-	else //  º 쿡  º
+	else // 강제 무승부일 경우에는 무조건 무승부
 		bDraw = true;
 
 	if (bDraw)
@@ -516,14 +516,14 @@ void CGuildManager::WarEnd(DWORD GID1, DWORD GID2, bool bForceDraw)
 	else
 		ProcessWinLose(win_guild, lose_guild);
 
-	// DB  ü   ֱ   Ŷ  Ѵ.
+	// DB 서버에서 자체적으로 끝낼 때도 있기 때문에 따로 패킷을 보내줘야 한다.
 	CClientManager::instance().for_each_peer(FSendPeerWar(0, GUILD_WAR_END, GID1, GID2));
 
 	RemoveWar(GID1, GID2);
 }
 
 //
-//   
+// 길드전 정상 종료
 // 
 void CGuildManager::RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bDraw, int lWarPrice)
 {
@@ -571,7 +571,7 @@ void CGuildManager::RecvWarOver(DWORD dwGuildWinner, DWORD dwGuildLoser, bool bD
 void CGuildManager::RecvWarEnd(DWORD GID1, DWORD GID2)
 {
 	SPDLOG_DEBUG("GuildWar: RecvWarEnded : {} vs {}", GID1, GID2);
-	WarEnd(GID1, GID2, true); //    Ѿ Ѵ.
+	WarEnd(GID1, GID2, true); // 무조건 비정상 종료 시켜야 한다.
 }
 
 void CGuildManager::StartWar(BYTE bType, DWORD GID1, DWORD GID2, CGuildWarReserve * pkReserve)
@@ -745,7 +745,7 @@ void CGuildManager::ChangeLadderPoint(DWORD GID, int change)
 	SPDLOG_DEBUG("GuildManager::ChangeLadderPoint {} {}", GID, r.ladder_point);
 	SPDLOG_DEBUG("{}", buf);
 
-	// Packet 
+	// Packet 보내기
 	TPacketGuildLadder p;
 
 	p.dwGuild = GID;
@@ -808,7 +808,7 @@ void CGuildManager::WithdrawMoney(CPeer* peer, DWORD dwGuild, INT iGold)
 		return;
 	}
 
-	//  ϰ ÷ش
+	// 돈이있으니 출금하고 올려준다
 	if (it->second.gold >= iGold)
 	{
 		it->second.gold -= iGold;
@@ -839,7 +839,7 @@ void CGuildManager::WithdrawMoneyReply(DWORD dwGuild, BYTE bGiveSuccess, INT iGo
 }
 
 //
-//  (ڰ   ִ)
+// 예약 길드전(관전자가 배팅할 수 있다)
 //
 const int c_aiScoreByLevel[GUILD_MAX_LEVEL+1] =
 {
@@ -869,7 +869,7 @@ const int c_aiScoreByLevel[GUILD_MAX_LEVEL+1] =
 const int c_aiScoreByRanking[GUILD_RANK_MAX_NUM+1] =
 {
 	0,
-	55000,	// 1
+	55000,	// 1위
 	50000,
 	45000,
 	40000,
@@ -878,7 +878,7 @@ const int c_aiScoreByRanking[GUILD_RANK_MAX_NUM+1] =
 	28000,
 	24000,
 	21000,
-	18000,	// 10
+	18000,	// 10위
 	15000,
 	12000,
 	10000,
@@ -888,7 +888,7 @@ const int c_aiScoreByRanking[GUILD_RANK_MAX_NUM+1] =
 	3000,
 	2000,
 	1000,
-	500		// 20
+	500		// 20위
 };
 
 void CGuildManager::BootReserveWar()
@@ -932,8 +932,8 @@ void CGuildManager::BootReserveWar()
 
 			char buf[512];
 			snprintf(buf, sizeof(buf), "GuildWar: BootReserveWar : step %d id %u GID1 %u GID2 %u", i, t.dwID, t.dwGuildFrom, t.dwGuildTo);
-			// i == 0 ̸   DB ƨ ̹Ƿ º óѴ.
-			// Ǵ, 5     º óѴ. ( þ ش)
+			// i == 0 이면 길드전 도중 DB가 튕긴 것이므로 무승부 처리한다.
+			// 또는, 5분 이하 남은 예약 길드전도 무승부 처리한다. (각자의 배팅액을 돌려준다)
 			//if (i == 0 || (int) t.dwTime - CClientManager::instance().GetCurrentTime() < 60 * 5)
 			if (i == 0 || (int) t.dwTime - CClientManager::instance().GetCurrentTime() < 0)
 			{
@@ -1010,7 +1010,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
 
 	int lvp, rkp, alv, mc;
 
-	// Ŀ 
+	// 파워 계산
 	TGuild & k1 = TouchGuild(GID1);
 
 	lvp = c_aiScoreByLevel[std::min(GUILD_MAX_LEVEL, k1.level)];
@@ -1026,7 +1026,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
 	t.lPowerFrom = (int) polyPower.Eval();
 	SPDLOG_DEBUG("GuildWar: {} lvp {} rkp {} alv {} mc {} power {}", GID1, lvp, rkp, alv, mc, t.lPowerFrom);
 
-	// Ŀ 
+	// 파워 계산
 	TGuild & k2 = TouchGuild(GID2);
 
 	lvp = c_aiScoreByLevel[std::min(GUILD_MAX_LEVEL, k2.level)];
@@ -1042,7 +1042,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
 	t.lPowerTo = (int) polyPower.Eval();
 	SPDLOG_DEBUG("GuildWar: {} lvp {} rkp {} alv {} mc {} power {}", GID2, lvp, rkp, alv, mc, t.lPowerTo);
 
-	// ڵĸ 
+	// 핸디캡 계산
 	if (t.lPowerTo > t.lPowerFrom)
 	{
 		polyHandicap.SetVar("pA", t.lPowerTo);
@@ -1057,7 +1057,7 @@ bool CGuildManager::ReserveWar(TPacketGuildWar * p)
 	t.lHandicap = (int) polyHandicap.Eval();
 	SPDLOG_DEBUG("GuildWar: handicap {}", t.lHandicap);
 
-	// 
+	// 쿼리
 	char szQuery[512];
 
 	snprintf(szQuery, sizeof(szQuery),
@@ -1094,7 +1094,7 @@ void CGuildManager::ProcessReserveWar()
 		CGuildWarReserve * pk = it2->second;
 		TGuildWarReserve & r = pk->GetDataRef();
 
-		if (!r.bStarted && r.dwTime - 1800 <= dwCurTime) // 30  ˸.
+		if (!r.bStarted && r.dwTime - 1800 <= dwCurTime) // 30분 전부터 알린다.
 		{
 			int iMin = (int) ceil((int)(r.dwTime - dwCurTime) / 60.0);
 
@@ -1135,9 +1135,11 @@ void CGuildManager::ProcessReserveWar()
 					pk->SetLastNoticeMin(iMin);
 
 					if (!g_stLocale.compare("euckr"))
-						CClientManager::instance().SendNotice("%s  %s    %d   ˴ϴ!", r_1.szName, r_2.szName, iMin);
+						// "%s 길드와 %s 길드의 전쟁이 약 %d분 후 시작 됩니다!"
+						CClientManager::instance().SendNotice("%s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCB\xB4\xCF\xB4\xEF\xBF\xBD!", r_1.szName, r_2.szName, iMin);
 					else if (!g_stLocale.compare("gb2312"))
-						CClientManager::instance().SendNotice("%s  %s İս %dӺʼ!", r_1.szName, r_2.szName, iMin);
+						// "%s 곤삔뵨 %s 곤삔돨곤삔濫轢쉥瞳 %d롸爐빈역迦!"
+						CClientManager::instance().SendNotice("%s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC4\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xD5\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD3\xBA\xEF\xBF\xBD\xCA\xBC!", r_1.szName, r_2.szName, iMin);
 				}
 			}
 		}
@@ -1239,7 +1241,7 @@ void CGuildWarReserve::Initialize()
 
 void CGuildWarReserve::OnSetup(CPeer * peer)
 {
-	if (m_data.bStarted) // ̹ ۵   ʴ´.
+	if (m_data.bStarted) // 이미 시작된 것은 보내지 않는다.
 		return;
 
 	FSendPeerWar(m_data.bType, GUILD_WAR_RESERVE, m_data.dwGuildFrom, m_data.dwGuildTo) (peer);
@@ -1325,8 +1327,8 @@ bool CGuildWarReserve::Bet(const char * pszLogin, DWORD dwGold, DWORD dwGuild)
 }
 
 //
-// º ó: κ ºΰ  ,    Ư Ȳ 쿡
-//              º ó ־ Ѵ.
+// 무승부 처리: 대부분 승부가 나야 정상이지만, 서버 문제 등 특정 상황일 경우에는
+//              무승부 처리가 있어야 한다.
 //
 void CGuildWarReserve::Draw() 
 {
@@ -1458,7 +1460,7 @@ void CGuildWarReserve::End(int iScoreFrom, int iScoreTo)
 
 			double ratio = (double) it->second.second / dwWinnerBet;
 
-			// 10%    й
+			// 10% 세금 공제 후 분배
 			SPDLOG_DEBUG("WAR_REWARD: {} {} ratio {}", it->first.c_str(), it->second.second, ratio);
 
 			DWORD dwGold = (DWORD) (dwTotalBet * ratio * 0.9);
diff --git a/src/db/src/HB.cpp b/src/db/src/HB.cpp
index 8e899fe..3c8d61f 100644
--- a/src/db/src/HB.cpp
+++ b/src/db/src/HB.cpp
@@ -30,7 +30,7 @@ bool PlayerHB::Initialize()
 }
 
 //
-// @version	05/07/05 Bang2ni - id  شϴ data    ϰ data  insert  ϴڵ ߰.
+// @version	05/07/05 Bang2ni - id 에 해당하는 data 가 없을 때 쿼리하고 data 를 insert  하는코드 추가.
 //
 void PlayerHB::Put(DWORD id)
 {
@@ -48,7 +48,7 @@ void PlayerHB::Put(DWORD id)
 }
 
 //
-// @version	05/07/05 Bang2ni - Query string ۰ ۾Ƽ ÷.
+// @version	05/07/05 Bang2ni - Query string 버퍼가 작아서 늘려줌.
 //
 bool PlayerHB::Query(DWORD id)
 {
diff --git a/src/db/src/ItemAwardManager.cpp b/src/db/src/ItemAwardManager.cpp
index 7012130..32a0d88 100644
--- a/src/db/src/ItemAwardManager.cpp
+++ b/src/db/src/ItemAwardManager.cpp
@@ -54,19 +54,19 @@ void ItemAwardManager::Load(SQLMsg * pMsg)
 		if (row[col])
 		{
 			strlcpy(kData->szWhy, row[col], sizeof(kData->szWhy));
-			// ߿ whyݷ뿡  				
-			char* whyStr = kData->szWhy;	//why ݷ б
-			char cmdStr[100] = "";	//whyݷ뿡   ӽ ڿ ص
-			strcpy(cmdStr,whyStr);	//ɾ   ū  ūȭ DZ 
+			//게임 중에 why콜룸에 변동이 생기면				
+			char* whyStr = kData->szWhy;	//why 콜룸 읽기
+			char cmdStr[100] = "";	//why콜룸에서 읽은 값을 임시 문자열에 복사해둠
+			strcpy(cmdStr,whyStr);	//명령어 얻는 과정에서 토큰쓰면 원본도 토큰화 되기 때문
 			char command[20] = "";
-			strcpy(command,CClientManager::instance().GetCommand(cmdStr).c_str());	// command 
+			strcpy(command,CClientManager::instance().GetCommand(cmdStr).c_str());	// command 얻기
 			//SPDLOG_ERROR("{},  {}",pItemAward->dwID,command);
-			if( !(strcmp(command,"GIFT") ))	// command  GIFT̸
+			if( !(strcmp(command,"GIFT") ))	// command 가 GIFT이면
 			{
 				TPacketItemAwardInfromer giftData;
-				strcpy(giftData.login, kData->szLogin);	//α ̵ 
-				strcpy(giftData.command, command);					//ɾ 
-				giftData.vnum = kData->dwVnum;				// vnum 
+				strcpy(giftData.login, kData->szLogin);	//로그인 아이디 복사
+				strcpy(giftData.command, command);					//명령어 복사
+				giftData.vnum = kData->dwVnum;				//아이템 vnum도 복사
 				CClientManager::instance().ForwardPacket(HEADER_DG_ITEMAWARD_INFORMER,&giftData,sizeof(TPacketItemAwardInfromer));
 			}
 		}
diff --git a/src/db/src/Main.cpp b/src/db/src/Main.cpp
index ac392cb..51b8369 100644
--- a/src/db/src/Main.cpp
+++ b/src/db/src/Main.cpp
@@ -31,11 +31,11 @@ std::string g_stPlayerDBName = "";
 bool g_bHotBackup = false;
 BOOL g_test_server = false;
 
-// 
+//단위 초
 int g_iPlayerCacheFlushSeconds = 60*7;
 int g_iItemCacheFlushSeconds = 60*5;
 
-//g_iLogoutSeconds ġ g_iPlayerCacheFlushSeconds  g_iItemCacheFlushSeconds   Ѵ.
+//g_iLogoutSeconds 수치는 g_iPlayerCacheFlushSeconds 와 g_iItemCacheFlushSeconds 보다 길어야 한다.
 int g_iLogoutSeconds = 60*10;
 
 
@@ -122,13 +122,13 @@ int main()
 
 void emptybeat(LPHEART heart, int pulse)
 {
-	if (!(pulse % heart->passes_per_sec))	// 1ʿ ѹ
+	if (!(pulse % heart->passes_per_sec))	// 1초에 한번
 	{
 	}
 }
 
 //
-// @version	05/06/13 Bang2ni -   ij flush timeout  ߰.
+// @version	05/06/13 Bang2ni - 아이템 가격정보 캐시 flush timeout 설정 추가.
 //
 int Start()
 {
diff --git a/src/db/src/Marriage.cpp b/src/db/src/Marriage.cpp
index f42df95..b7e3a4e 100644
--- a/src/db/src/Marriage.cpp
+++ b/src/db/src/Marriage.cpp
@@ -253,7 +253,7 @@ namespace marriage
 
 	void CManager::OnSetup(CPeer* peer)
 	{
-		// ȥ  
+		// 결혼한 사람들 보내기
 		for (itertype(m_Marriages) it = m_Marriages.begin(); it != m_Marriages.end(); ++it)
 		{
 			TMarriage* pMarriage = *it;
@@ -280,7 +280,7 @@ namespace marriage
 			}
 		}
 
-		// ȥ 
+		// 결혼식 보내기
 		for (itertype(m_mapRunningWedding) it = m_mapRunningWedding.begin(); it != m_mapRunningWedding.end(); ++it)
 		{
 			const TWedding& t = it->second;
diff --git a/src/db/src/Monarch.cpp b/src/db/src/Monarch.cpp
index 3c38fe7..5fe7ba5 100644
--- a/src/db/src/Monarch.cpp
+++ b/src/db/src/Monarch.cpp
@@ -233,7 +233,7 @@ bool CMonarch::SetMonarch(const char * name)
     }
     delete pMsg;
 
-	//db Է
+	//db에 입력
 	snprintf(szQuery, sizeof(szQuery),
 					"REPLACE INTO monarch (empire, name, windate, money) VALUES(%d, %d, now(), %ld)", Empire, p->pid[Empire], p->money[Empire]);
 
diff --git a/src/db/src/PrivManager.cpp b/src/db/src/PrivManager.cpp
index ede3c4e..ab1cb94 100644
--- a/src/db/src/PrivManager.cpp
+++ b/src/db/src/PrivManager.cpp
@@ -20,7 +20,7 @@ CPrivManager::~CPrivManager()
 }
 
 //
-// @version 05/06/07	Bang2ni - ߺ ʽ   忡  ó
+// @version 05/06/07	Bang2ni - 중복적으로 보너스가 적용 된 길드에 대한 처리
 //
 void CPrivManager::Update()
 {
@@ -37,8 +37,8 @@ void CPrivManager::Update()
 			typeof(m_aPrivGuild[p->type].begin()) it = m_aPrivGuild[p->type].find(p->guild_id);
 
 			// ADD_GUILD_PRIV_TIME
-			// 忡 ߺ ʽ Ǿ  map  value  () ǾǷ
-			// TPrivGuildData  Ͱ    ְ Ӽ鿡 cast  ش.
+			// 길드에 중복적으로 보너스가 설정되었을 경우 map 의 value 가 갱신(수정) 되었으므로
+			// TPrivGuildData 의 포인터가 같을때 실제로 삭제해 주고 게임서버들에게 cast 해 준다.
 			if (it != m_aPrivGuild[p->type].end() && it->second == p) {
 				m_aPrivGuild[p->type].erase(it);
 				SendChangeGuildPriv(p->guild_id, p->type, 0, 0);
@@ -113,7 +113,7 @@ void CPrivManager::AddCharPriv(DWORD pid, BYTE type, int value)
 }
 
 //
-// @version 05/06/07	Bang2ni - ̹ ʽ   忡 ʽ 
+// @version 05/06/07	Bang2ni - 이미 보너스가 적용 된 길드에 보너스 설정
 //
 void CPrivManager::AddGuildPriv(DWORD guild_id, BYTE type, int value, time_t duration_sec)
 {
@@ -131,8 +131,8 @@ void CPrivManager::AddGuildPriv(DWORD guild_id, BYTE type, int value, time_t dur
 	m_pqPrivGuild.push(std::make_pair(end, p));
 
 	// ADD_GUILD_PRIV_TIME
-	// ̹ ʽ  ִٸ map  value   ش.
-	//  value  ʹ priority queue    ȴ.
+	// 이미 보너스가 설정되 있다면 map 의 value 를 갱신해 준다.
+	// 이전 value 의 포인터는 priority queue 에서 삭제될 때 해제된다.
 	if (it != m_aPrivGuild[type].end())
 		it->second = p;
 	else
@@ -158,8 +158,8 @@ void CPrivManager::AddEmpirePriv(BYTE empire, BYTE type, int value, time_t durat
 	time_t now = CClientManager::instance().GetCurrentTime();
 	time_t end = now+duration_sec;
 
-	//   ȿȭ
-	// priority_queue ִ pointer == m_aaPrivEmpire[type][empire]
+	// 이전 설정값 무효화
+	// priority_queue에 들어있는 pointer == m_aaPrivEmpire[type][empire]
 	{
 		if (m_aaPrivEmpire[type][empire])
 			m_aaPrivEmpire[type][empire]->bRemoved = true;
@@ -177,7 +177,7 @@ void CPrivManager::AddEmpirePriv(BYTE empire, BYTE type, int value, time_t durat
 }
 
 /**
- * @version 05/06/08	Bang2ni - ӽð ߰
+ * @version 05/06/08	Bang2ni - 지속시간 추가
  */
 struct FSendChangeGuildPriv
 {
diff --git a/src/db/src/ProtoReader.cpp b/src/db/src/ProtoReader.cpp
index 21cdb22..f38a8f2 100644
--- a/src/db/src/ProtoReader.cpp
+++ b/src/db/src/ProtoReader.cpp
@@ -25,23 +25,23 @@ string trim(const string& str){return trim_left(trim_right(str));}
 
 static string* StringSplit(string strOrigin, string strTok)
 {
-    int     cutAt;                            //ڸġ
-    int     index     = 0;                    //ڿε
-    string* strResult = new string[30];		  //return Һ
+    int     cutAt;                            //자르는위치
+    int     index     = 0;                    //문자열인덱스
+    string* strResult = new string[30];		  //결과return 할변수
 
-    //strTokãݺ
+    //strTok을찾을때까지반복
     while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
     {
-       if (cutAt > 0)  //ڸġ0ũ()
+       if (cutAt > 0)  //자르는위치가0보다크면(성공시)
        {
-            strResult[index++] = strOrigin.substr(0, cutAt);  //迭߰
+            strResult[index++] = strOrigin.substr(0, cutAt);  //결과배열에추가
        }
-       strOrigin = strOrigin.substr(cutAt+1);  //ڸκѳ
+       strOrigin = strOrigin.substr(cutAt+1);  //원본은자른부분제외한나머지
     }
 
-    if(strOrigin.length() > 0)  //̾
+    if(strOrigin.length() > 0)  //원본이아직남았으면
     {
-        strResult[index++] = strOrigin.substr(0, cutAt);  //迭߰
+        strResult[index++] = strOrigin.substr(0, cutAt);  //나머지를결과배열에추가
     }
 
 	for( int i=0;i type_value && "Subtype rule: Out of range!!");
 
-	// assert   ..
+	// assert 안 먹히는 듯..
 	if (_countof(arSubType) <= type_value)
 	{
 		SPDLOG_ERROR("SubType : Out of range!! (type_value: {}, count of registered subtype: {}", type_value, _countof(arSubType));
 		return -1;
 	}
 
-	// Ÿ Ÿ ̰ ϴ ˾ƺ,  0 
+	//아이템 타입의 서브타입 어레이가 존재하는지 알아보고, 없으면 0 리턴
 	if (arSubType[type_value]==0) {
 		return 0;
 	}
@@ -246,13 +246,13 @@ int get_Item_AntiFlag_Value(string inputString)
 
 
 	int retValue = 0;
-	string* arInputString = StringSplit(inputString, "|");				//   ܾ ɰ 迭.
+	string* arInputString = StringSplit(inputString, "|");				//프로토 정보 내용을 단어별로 쪼갠 배열.
 	for(int i =0;i &nameMap)
 {
 	int col = 0;
 	str_to_number(mobTable->dwVnum, csvTable.AsStringByIndex(col++));
 	strlcpy(mobTable->szName, csvTable.AsStringByIndex(col++), sizeof(mobTable->szName));
 
-	//3.  ̸ ־ֱ.
+	//3. 지역별 이름 넣어주기.
 	map::iterator it;
 	it = nameMap.find(mobTable->dwVnum);
 	if (it != nameMap.end()) {
@@ -749,11 +749,11 @@ bool Set_Proto_Item_Table(TItemTable *itemTable, cCsvTable &csvTable,std::mapdwVnum = dataArray[0];
@@ -777,7 +777,7 @@ bool Set_Proto_Item_Table(TItemTable *itemTable, cCsvTable &csvTable,std::mapszName, csvTable.AsStringByIndex(1), sizeof(itemTable->szName));
-	// ̸ ־ֱ.
+	//지역별 이름 넣어주기.
 	map::iterator it;
 	it = nameMap.find(itemTable->dwVnum);
 	if (it != nameMap.end()) {
diff --git a/src/db/src/grid.cpp b/src/db/src/grid.cpp
index 1487055..922c4ba 100644
--- a/src/db/src/grid.cpp
+++ b/src/db/src/grid.cpp
@@ -28,7 +28,7 @@ void CGrid::Clear()
 
 int CGrid::FindBlank(int w, int h)
 {
-	// ũⰡ  ũٸ Ȯ ʿ  ׳ 
+	// 크기가 더 크다면 확인할 필요 없이 그냥 리턴
 	if (w > m_iWidth || h > m_iHeight)
 		return -1;
 
@@ -86,7 +86,7 @@ bool CGrid::IsEmpty(int iPos, int w, int h)
 {
 	int iRow = iPos / m_iWidth;
 
-	// Grid ΰ  ˻
+	// Grid 안쪽인가를 먼저 검사
 	if (iRow + h > m_iHeight)
 		return false;
 

From aae9b169dfa26a9a77a4270baa6054e50b727c13 Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Fri, 5 Apr 2024 21:57:49 +0200
Subject: [PATCH 08/21] encoding fix script

---
 .vscode/settings.json              |   3 +
 tools/encoding-fixer/.gitignore    | 175 +++++++++++++++++++++++++++++
 tools/encoding-fixer/README.md     |  15 +++
 tools/encoding-fixer/bun.lockb     | Bin 0 -> 3139 bytes
 tools/encoding-fixer/index.ts      |  27 +++++
 tools/encoding-fixer/package.json  |  11 ++
 tools/encoding-fixer/test.cpp      |   2 +
 tools/encoding-fixer/tsconfig.json |  27 +++++
 8 files changed, 260 insertions(+)
 create mode 100644 .vscode/settings.json
 create mode 100644 tools/encoding-fixer/.gitignore
 create mode 100644 tools/encoding-fixer/README.md
 create mode 100755 tools/encoding-fixer/bun.lockb
 create mode 100644 tools/encoding-fixer/index.ts
 create mode 100644 tools/encoding-fixer/package.json
 create mode 100644 tools/encoding-fixer/test.cpp
 create mode 100644 tools/encoding-fixer/tsconfig.json

diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..28c3106
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+  "cmake.configureOnOpen": true
+}
diff --git a/tools/encoding-fixer/.gitignore b/tools/encoding-fixer/.gitignore
new file mode 100644
index 0000000..9b1ee42
--- /dev/null
+++ b/tools/encoding-fixer/.gitignore
@@ -0,0 +1,175 @@
+# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
+
+# Logs
+
+logs
+_.log
+npm-debug.log_
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Caches
+
+.cache
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+
+report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
+
+# Runtime data
+
+pids
+_.pid
+_.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+
+lib-cov
+
+# Coverage directory used by tools like istanbul
+
+coverage
+*.lcov
+
+# nyc test coverage
+
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+
+bower_components
+
+# node-waf configuration
+
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+
+build/Release
+
+# Dependency directories
+
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+
+web_modules/
+
+# TypeScript cache
+
+*.tsbuildinfo
+
+# Optional npm cache directory
+
+.npm
+
+# Optional eslint cache
+
+.eslintcache
+
+# Optional stylelint cache
+
+.stylelintcache
+
+# Microbundle cache
+
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+
+.node_repl_history
+
+# Output of 'npm pack'
+
+*.tgz
+
+# Yarn Integrity file
+
+.yarn-integrity
+
+# dotenv environment variable files
+
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+
+.parcel-cache
+
+# Next.js build output
+
+.next
+out
+
+# Nuxt.js build / generate output
+
+.nuxt
+dist
+
+# Gatsby files
+
+# Comment in the public line in if your project uses Gatsby and not Next.js
+
+# https://nextjs.org/blog/next-9-1#public-directory-support
+
+# public
+
+# vuepress build output
+
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+
+.temp
+
+# Docusaurus cache and generated files
+
+.docusaurus
+
+# Serverless directories
+
+.serverless/
+
+# FuseBox cache
+
+.fusebox/
+
+# DynamoDB Local files
+
+.dynamodb/
+
+# TernJS port file
+
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+
+.vscode-test
+
+# yarn v2
+
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+# IntelliJ based IDEs
+.idea
+
+# Finder (MacOS) folder config
+.DS_Store
diff --git a/tools/encoding-fixer/README.md b/tools/encoding-fixer/README.md
new file mode 100644
index 0000000..1df6b2b
--- /dev/null
+++ b/tools/encoding-fixer/README.md
@@ -0,0 +1,15 @@
+# encoding-fixer
+
+To install dependencies:
+
+```bash
+bun install
+```
+
+To run:
+
+```bash
+bun run index.ts
+```
+
+This project was created using `bun init` in bun v1.1.1. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
diff --git a/tools/encoding-fixer/bun.lockb b/tools/encoding-fixer/bun.lockb
new file mode 100755
index 0000000000000000000000000000000000000000..61779cface353510da2b1ae5d9c71bfcf21d6161
GIT binary patch
literal 3139
zcmd5;4Nz276n@~UusCcX;NPaZ@}m;_-tGb`t}7LeTJDUp1tg%(EX&*V!SZ%_@9|Hv
zOlmu!jghHiHX{Be(_S!wLuGeZ@~n)VR#_cfzFANesipn|LA)Q@A&Xi*
zZ&~E#>m_uZv_#$@i#N>>MD#Z_#-A}K|txJoEayI?6qqZrm{lt;}zVf3H
zr@Cdy7Zhcc7j=owOK-kV@MYD@Un%K3wace$_u@tI#v(bM6Jk1fd3#OF`B}L)yL&FD
z^?ldnKKPCEJ+4zbWK6G#2#^ha&~MteAZ_pS2bAuHlUcO^Aun#KTy(r#GWFYr+g`lh
z`IiX1-X@RQbuDu#En9z=8934@OSxLTVtoGj=%K3;ZS}_b@VVh@Gqpw`wKcSHLy9b#
zl5I(kY~H`=XjfhlxzdZ*`&>$*Q#LQWzE?<=9x)ZXRyQl%6`H;-?#3qzJD%wJxk#v=
zf4D(;E#>tUXCtYW4LdVR$FHW`74Ot2f9d+j7-sD)+waAT&KVYoVAiD%$q!`Rx^m`s
zc|`B27QAPC$m;M(u+rvXSDlx5sC;4Z-5Z@pGcYBXfrA@B$F7r0M=e-gz&X8+_tTus3Ak|WMA(y+!1GY666jje!jRSe2Pa6^wI{Zq42M0tC
z>ctKW&H%()bFXj{G;49>fIBKHQ$lk>sgvd{9OD$8^gL3~1FjPUC$Fa{jluA4xYJ@Cga~KPA-;H>i0gd-moK2
OC?0;`lz1Bdcj^z6?m|ca

literal 0
HcmV?d00001

diff --git a/tools/encoding-fixer/index.ts b/tools/encoding-fixer/index.ts
new file mode 100644
index 0000000..b1321b6
--- /dev/null
+++ b/tools/encoding-fixer/index.ts
@@ -0,0 +1,27 @@
+import { Glob } from 'bun';
+
+// const glob = new Glob('./*.cpp');
+const glob = new Glob('../../src/**/*.cpp');
+
+for await (const fileName of glob.scan('.')) {
+  const file = Bun.file(fileName);
+  const content = await file.arrayBuffer();
+  const bytes = new Uint8Array(content);
+  const newFileContent = [];
+  let isString = false;
+  for (const byte of bytes) {
+    if (byte === 0x22) {
+      isString = !isString;
+    }
+    if (byte > 127 && isString) {
+      const stringifiedByte = `\\x${byte
+        .toString(16)
+        .padStart(2, '0')
+        .toUpperCase()}`;
+      newFileContent.push(...Buffer.from(stringifiedByte));
+    } else {
+      newFileContent.push(byte);
+    }
+  }
+  await Bun.write(file, Buffer.from(newFileContent));
+}
diff --git a/tools/encoding-fixer/package.json b/tools/encoding-fixer/package.json
new file mode 100644
index 0000000..a4f2126
--- /dev/null
+++ b/tools/encoding-fixer/package.json
@@ -0,0 +1,11 @@
+{
+  "name": "encoding-fixer",
+  "module": "index.ts",
+  "type": "module",
+  "devDependencies": {
+    "@types/bun": "latest"
+  },
+  "peerDependencies": {
+    "typescript": "^5.0.0"
+  }
+}
\ No newline at end of file
diff --git a/tools/encoding-fixer/test.cpp b/tools/encoding-fixer/test.cpp
new file mode 100644
index 0000000..2240a42
--- /dev/null
+++ b/tools/encoding-fixer/test.cpp
@@ -0,0 +1,2 @@
+chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEB\xB0\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD5\xB4\xCF\xB4\xEF\xBF\xBD."));
+DWORD dwOppList[8]; // �ִ� ��Ƽ�� 8�� �̹Ƿ�..
diff --git a/tools/encoding-fixer/tsconfig.json b/tools/encoding-fixer/tsconfig.json
new file mode 100644
index 0000000..238655f
--- /dev/null
+++ b/tools/encoding-fixer/tsconfig.json
@@ -0,0 +1,27 @@
+{
+  "compilerOptions": {
+    // Enable latest features
+    "lib": ["ESNext", "DOM"],
+    "target": "ESNext",
+    "module": "ESNext",
+    "moduleDetection": "force",
+    "jsx": "react-jsx",
+    "allowJs": true,
+
+    // Bundler mode
+    "moduleResolution": "bundler",
+    "allowImportingTsExtensions": true,
+    "verbatimModuleSyntax": true,
+    "noEmit": true,
+
+    // Best practices
+    "strict": true,
+    "skipLibCheck": true,
+    "noFallthroughCasesInSwitch": true,
+
+    // Some stricter flags (disabled by default)
+    "noUnusedLocals": false,
+    "noUnusedParameters": false,
+    "noPropertyAccessFromIndexSignature": false
+  }
+}

From 4a1460f36e659dc89e909d930004d7f10ce92f34 Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Fri, 5 Apr 2024 22:24:46 +0200
Subject: [PATCH 09/21] convert korean characters in string literals to string
 encoded bytes

---
 src/game/src/BattleArena.cpp              |  30 +-
 src/game/src/DragonLair.cpp               |   4 +-
 src/game/src/DragonSoul.cpp               |  54 +-
 src/game/src/OXEvent.cpp                  |  22 +-
 src/game/src/arena.cpp                    | 102 ++--
 src/game/src/auction_manager.cpp          |  50 +-
 src/game/src/battle.cpp                   |   4 +-
 src/game/src/castle.cpp                   |  16 +-
 src/game/src/char.cpp                     | 166 +++----
 src/game/src/char_affect.cpp              |   4 +-
 src/game/src/char_battle.cpp              |  30 +-
 src/game/src/char_dragonsoul.cpp          |   2 +-
 src/game/src/char_horse.cpp               |  18 +-
 src/game/src/char_item.cpp                | 570 +++++++++++-----------
 src/game/src/char_skill.cpp               |  98 ++--
 src/game/src/char_state.cpp               |  16 +-
 src/game/src/cmd.cpp                      |  22 +-
 src/game/src/cmd_emotion.cpp              | 124 ++---
 src/game/src/cmd_general.cpp              | 376 +++++++-------
 src/game/src/cmd_gm.cpp                   | 130 ++---
 src/game/src/cmd_oxevent.cpp              |   6 +-
 src/game/src/config.cpp                   |  56 +--
 src/game/src/constants.cpp                |  16 +-
 src/game/src/cube.cpp                     |  12 +-
 src/game/src/db.cpp                       |   4 +-
 src/game/src/desc.cpp                     |   2 +-
 src/game/src/empire_text_convert.cpp      |   2 +-
 src/game/src/exchange.cpp                 |  30 +-
 src/game/src/fishing.cpp                  | 104 ++--
 src/game/src/guild.cpp                    |  64 +--
 src/game/src/guild_manager.cpp            |  26 +-
 src/game/src/guild_war.cpp                |  12 +-
 src/game/src/input_db.cpp                 |  16 +-
 src/game/src/input_login.cpp              |  16 +-
 src/game/src/input_main.cpp               | 180 +++----
 src/game/src/input_teen.cpp               |  32 +-
 src/game/src/item.cpp                     |   4 +-
 src/game/src/item_manager.cpp             |   4 +-
 src/game/src/item_manager_read_tables.cpp |   8 +-
 src/game/src/main.cpp                     |   6 +-
 src/game/src/messenger_manager.cpp        |   6 +-
 src/game/src/mining.cpp                   |  20 +-
 src/game/src/monarch.cpp                  |  10 +-
 src/game/src/party.cpp                    |  12 +-
 src/game/src/polymorph.cpp                |   6 +-
 src/game/src/priv_manager.cpp             |   8 +-
 src/game/src/pvp.cpp                      |   8 +-
 src/game/src/questlua_global.cpp          |   2 +-
 src/game/src/questlua_monarch.cpp         | 128 ++---
 src/game/src/questlua_pc.cpp              |  32 +-
 src/game/src/questmanager.cpp             |  14 +-
 src/game/src/questnpc.cpp                 |   2 +-
 src/game/src/questpc.cpp                  |   2 +-
 src/game/src/shop.cpp                     |   2 +-
 src/game/src/shop_manager.cpp             |  12 +-
 src/game/src/start_position.cpp           |  12 +-
 src/game/src/threeway_war.cpp             |  12 +-
 src/game/src/war_map.cpp                  |  10 +-
 src/game/src/wedding.cpp                  |   4 +-
 59 files changed, 1370 insertions(+), 1370 deletions(-)

diff --git a/src/game/src/BattleArena.cpp b/src/game/src/BattleArena.cpp
index 397d0ed..e7cfed9 100644
--- a/src/game/src/BattleArena.cpp
+++ b/src/game/src/BattleArena.cpp
@@ -102,14 +102,14 @@ EVENTFUNC(battle_arena_event)
 			case 0:
 				{
 					++pInfo->state;
-					BroadcastNotice(LC_TEXT("͵ ݱ 5 ҽϴ!!!"));
+					BroadcastNotice(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xC7 \xB0\xF8\xB0\xDD\xB1\xEE\xC1\xF6 5\xBA\xD0 \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9!!!"));
 				}
 				return test_server ? PASSES_PER_SEC(60) : PASSES_PER_SEC(60*4);
 
 			case 1:
 				{
 					++pInfo->state;
-					BroadcastNotice(LC_TEXT("͵ ݱ 1 ҽϴ!!!"));
+					BroadcastNotice(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xC7 \xB0\xF8\xB0\xDD\xB1\xEE\xC1\xF6 1\xBA\xD0 \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9!!!"));
 				}
 				return test_server ? PASSES_PER_SEC(10) : PASSES_PER_SEC(60);
 
@@ -119,7 +119,7 @@ EVENTFUNC(battle_arena_event)
 					pInfo->wait_count = 0;
 
 					quest::CQuestManager::instance().RequestSetEventFlag("battle_arena", 0);
-					BroadcastNotice(LC_TEXT("͵  ϱ ߽ϴ."));
+					BroadcastNotice(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xBC\xBA\xC0\xBB \xB0\xF8\xB0\xDD\xC7\xCF\xB1\xE2 \xBD\xC3\xC0\xDB\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 					LPSECTREE_MAP sectree = SECTREE_MANAGER::instance().GetMap(pInfo->nMapIndex);
 
@@ -141,7 +141,7 @@ EVENTFUNC(battle_arena_event)
 					if ( SECTREE_MANAGER::instance().GetMonsterCountInMap(pInfo->nMapIndex) <= 0 )
 					{
 						pInfo->state = 6;
-						SendNoticeMap(LC_TEXT("߾ ܿ   𿩵ϴ."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("\xC1\xDF\xBE\xD3 \xC1\xA6\xB4\xDC\xBF\xA1 \xBE\xC7\xC0\xC7 \xB1\xE2\xBF\xEE\xC0\xCC \xB8\xF0\xBF\xA9\xB5\xEC\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
 					}
 					else
 					{
@@ -150,7 +150,7 @@ EVENTFUNC(battle_arena_event)
 						if ( pInfo->wait_count >= 5 )
 						{
 							pInfo->state++;
-							SendNoticeMap(LC_TEXT("͵   Դϴ."), pInfo->nMapIndex, false);
+							SendNoticeMap(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xB9\xB0\xB7\xAF\xB0\xA5 \xC1\xB6\xC1\xFC\xC0\xBB \xBA\xB8\xC0\xD4\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
 						}
 						else
 						{
@@ -163,8 +163,8 @@ EVENTFUNC(battle_arena_event)
 			case 4 :
 				{
 					pInfo->state++;
-					SendNoticeMap(LC_TEXT("͵  ߽ϴ."), pInfo->nMapIndex, false);
-					SendNoticeMap(LC_TEXT("   ưϴ."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xB9\xB0\xB7\xAF\xB0\xA1\xB1\xE2 \xBD\xC3\xC0\xDB\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3 \xC8\xC4 \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
 
 					SECTREE_MANAGER::instance().PurgeMonstersInMap(pInfo->nMapIndex);
 				}
@@ -189,8 +189,8 @@ EVENTFUNC(battle_arena_event)
 					pInfo->state++;
 					pInfo->wait_count = 0;
 
-					SendNoticeMap(LC_TEXT("͵  Ÿϴ."), pInfo->nMapIndex, false);
-					SendNoticeMap(LC_TEXT("30  ͸ָ ּ."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xC7 \xB4\xEB\xC0\xE5\xC0\xCC \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("30\xBA\xD0 \xB3\xBB\xB7\xCE \xB1\xCD\xB8\xF1\xB7\xC9\xC1\xD6\xB8\xA6 \xB9\xB0\xB8\xAE\xC3\xC4\xC1\xD6\xBC\xBC\xBF\xE4."), pInfo->nMapIndex, false);
 
 					CBattleArena::instance().SpawnLastBoss();
 				}
@@ -200,8 +200,8 @@ EVENTFUNC(battle_arena_event)
 				{
 					if ( SECTREE_MANAGER::instance().GetMonsterCountInMap(pInfo->nMapIndex) <= 0 )
 					{
-						SendNoticeMap(LC_TEXT("͸ֿ  ϵ  ƽϴ."), pInfo->nMapIndex, false);
-						SendNoticeMap(LC_TEXT("   ưϴ."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("\xB1\xCD\xB8\xF1\xB7\xC9\xC1\xD6\xBF\xCD \xB1\xD7\xC0\xC7 \xBA\xCE\xC7\xCF\xB5\xE9\xC0\xBB \xB8\xF0\xB5\xCE \xB9\xB0\xB8\xAE\xC3\xC6\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3 \xC8\xC4 \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
 
 						pInfo->state = 5;
 
@@ -212,8 +212,8 @@ EVENTFUNC(battle_arena_event)
 
 					if ( pInfo->wait_count >= 6 )
 					{
-						SendNoticeMap(LC_TEXT("͸ְ Ͽϴ."), pInfo->nMapIndex, false);
-						SendNoticeMap(LC_TEXT("   ưϴ."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("\xB1\xCD\xB8\xF1\xB7\xC9\xC1\xD6\xB0\xA1 \xC5\xF0\xB0\xA2\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3 \xC8\xC4 \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
 
 						SECTREE_MANAGER::instance().PurgeMonstersInMap(pInfo->nMapIndex);
 						SECTREE_MANAGER::instance().PurgeStonesInMap(pInfo->nMapIndex);
@@ -243,9 +243,9 @@ bool CBattleArena::Start(int nEmpire)
 	m_nEmpire = nEmpire;
 
 	char szBuf[1024];
-	snprintf(szBuf, sizeof(szBuf), LC_TEXT("%s  ͵ ϰ ֽϴ."), EMPIRE_NAME(m_nEmpire));
+	snprintf(szBuf, sizeof(szBuf), LC_TEXT("%s\xC0\xC7 \xBC\xBA\xC0\xB8\xB7\xCE \xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xC1\xF8\xB1\xBA\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(m_nEmpire));
 	BroadcastNotice(szBuf);
-	BroadcastNotice(LC_TEXT("10    Դϴ."));
+	BroadcastNotice(LC_TEXT("10\xBA\xD0 \xB5\xDA \xBC\xBA\xC0\xBB \xB0\xF8\xB0\xDD\xC7\xD2 \xBF\xB9\xC1\xA4\xC0\xD4\xB4\xCF\xB4\xD9."));
 
 	if (m_pEvent != NULL) {
 		event_cancel(&m_pEvent);
diff --git a/src/game/src/DragonLair.cpp b/src/game/src/DragonLair.cpp
index a847b8e..d31a61f 100644
--- a/src/game/src/DragonLair.cpp
+++ b/src/game/src/DragonLair.cpp
@@ -91,7 +91,7 @@ EVENTFUNC( DragonLair_Collapse_Event )
 	if (0 == pInfo->step)
 	{
 		char buf[512];
-		snprintf(buf, 512, LC_TEXT("밡 %d ʸ ׾ȿФ"), pInfo->pLair->GetEstimatedTime());
+		snprintf(buf, 512, LC_TEXT("\xBF\xEB\xB0\xA1\xB8\xAE\xB0\xA1 %d \xC3\xCA\xB8\xB8\xBF\xA1 \xC1\xD7\xBE\xEE\xBD\xE1\xC8\xBF\xA4\xD0\xA4\xD0"), pInfo->pLair->GetEstimatedTime());
 		SendNoticeMap(buf, pInfo->InstanceMapIndex, true);
 
 		pInfo->step++;
@@ -146,7 +146,7 @@ DWORD CDragonLair::GetEstimatedTime() const
 
 void CDragonLair::OnDragonDead(LPCHARACTER pDragon)
 {
-	SPDLOG_DEBUG("DragonLair:  ׾ȿ");
+	SPDLOG_DEBUG("DragonLair: \xB5\xB5\xB6\xF3\xB0\xEF\xC0\xCC \xC1\xD7\xBE\xEE\xBD\xE1\xC8\xBF");
 
 	LogManager::instance().DragonSlayLog(  GuildID_, pDragon->GetMobTable().dwVnum, StartTime_, get_global_time() );
 }
diff --git a/src/game/src/DragonSoul.cpp b/src/game/src/DragonSoul.cpp
index 28eb300..f508546 100644
--- a/src/game/src/DragonSoul.cpp
+++ b/src/game/src/DragonSoul.cpp
@@ -322,7 +322,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 		return false;
 	if (pItem->IsEquipped())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȥ   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC2\xF8\xBF\xEB \xC1\xDF\xC0\xCE \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xBA \xC3\xDF\xC3\xE2\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -366,7 +366,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 		}
 		LogManager::instance().ItemLog(ch, pItem, "DS_HEART_EXTRACT_FAIL", "");
 	
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ⿡ Ͽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC9 \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 	else
@@ -392,7 +392,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 		std::string s = boost::lexical_cast  (iCharge);
 		s += "%s";
 		LogManager::instance().ItemLog(ch, pItem, "DS_HEART_EXTRACT_SUCCESS", s.c_str());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ⿡ Ͽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC9 \xC3\xDF\xC3\xE2\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return true;
 	}
 }
@@ -412,7 +412,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 		int iEmptyCell = ch->GetEmptyDragonSoulInventory(pItem);
 		if (iEmptyCell < 0)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǰ   ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 		else
@@ -469,7 +469,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 				sprintf(buf, "dice(%d) prob(%d)", (int)fDice, (int)fProb);
 			}
 			LogManager::instance().ItemLog(ch, pItem, "DS_PULL_OUT_SUCCESS", buf);
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ ⿡ Ͽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 			pItem->AddToCharacter(ch, DestCell);
 			return true;
 		}
@@ -490,12 +490,12 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 			{
 				LPITEM pByProduct = ch->AutoGiveItem(dwByProduct, true);
 				if (pByProduct)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ ⿡ Ͽ %s ϴ."), pByProduct->GetName());
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xA9 %s\xB8\xA6 \xBE\xF2\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), pByProduct->GetName());
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ ⿡ Ͽϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			else
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ ⿡ Ͽϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 	}
 
@@ -532,7 +532,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 			// ȥ ƴ  â   .
 			if (!pItem->IsDragonSoul())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ʿ ᰡ ƴմϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 				SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 
 				return false;
@@ -566,7 +566,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		
 		if (!m_pTable->GetRefineGradeValues(ds_type, grade_idx, need_count, fee, vec_probs))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ȥԴϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 
 			return false;
@@ -585,7 +585,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		
 		if (ds_type != GetType(pItem->GetVnum()) || grade_idx != GetGradeIdx(pItem->GetVnum()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ʿ ᰡ ƴմϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 
 			return false;
@@ -603,7 +603,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 
 	if (ch->GetGold() < fee)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ   մϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY, NPOS);
 		return false;
 	}
@@ -648,7 +648,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		char buf[128];
 		sprintf(buf, "GRADE : %d -> %d", grade_idx, result_grade);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_GRADE_REFINE_SUCCESS", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_SUCCEED, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return true;
 	}
@@ -657,7 +657,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		char buf[128];
 		sprintf(buf, "GRADE : %d -> %d", grade_idx, result_grade);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_GRADE_REFINE_FAIL", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return false;
 	}
@@ -690,7 +690,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 			// ȥ ƴ  â   .
 			if (!pItem->IsDragonSoul())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ܰ  ʿ ᰡ ƴմϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 				SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 				return false;
 			}
@@ -721,7 +721,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 
 		if (!m_pTable->GetRefineStepValues(ds_type, step_idx, need_count, fee, vec_probs))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ܰ    ȥԴϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 			return false;
 		}
@@ -738,7 +738,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		}
 		if (ds_type != GetType(pItem->GetVnum()) || grade_idx != GetGradeIdx(pItem->GetVnum()) || step_idx != GetStepIdx(pItem->GetVnum()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ܰ  ʿ ᰡ ƴմϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 			return false;
 		}
@@ -755,7 +755,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 	
 	if (ch->GetGold() < fee)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ   մϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY, NPOS);
 		return false;
 	}
@@ -800,7 +800,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		char buf[128];
 		sprintf(buf, "STEP : %d -> %d", step_idx, result_step);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_STEP_REFINE_SUCCESS", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ܰ  ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_SUCCEED, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return true;
 	}
@@ -809,7 +809,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		char buf[128];
 		sprintf(buf, "STEP : %d -> %d", step_idx, result_step);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_STEP_REFINE_FAIL", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ܰ  ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return false;
 	}
@@ -892,7 +892,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭ ʿ ᰡ ƴմϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 			return false;
 		}
@@ -915,14 +915,14 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		// ġ  ٸ ȭ   ȥ
 		if (!m_pTable->GetWeight(bType, bGrade, bStep, bStrength + 1, fWeight))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭ   ȥԴϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 			return false;
 		}
 		// ȭ  ġ 0̶  ̻ ȭǼ ȵȴ.
 		if (fWeight < FLT_EPSILON)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭ   ȥԴϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 			return false;
 		}
@@ -931,7 +931,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 	float fProb;
 	if (!m_pTable->GetRefineStrengthValues(bType, pRefineStone->GetSubType(), bStrength, fee, fProb))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭ   ȥԴϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 
 		return false;
@@ -939,7 +939,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 
 	if (ch->GetGold() < fee)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ   մϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY, NPOS);
 		return false;
 	}
@@ -967,7 +967,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		char buf[128];
 		sprintf(buf, "STRENGTH : %d -> %d", bStrength, bStrength + 1);
 		LogManager::instance().ItemLog(ch, pDragonSoul, "DS_STRENGTH_REFINE_SUCCESS", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭ ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 		ch->AutoGiveItem(pResult, true);
 		bSubHeader = DS_SUB_HEADER_REFINE_SUCCEED;
 	}
@@ -991,7 +991,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		// strengthȭ н   ־,    α׸ .
 		LogManager::instance().ItemLog(ch, pDragonSoul, "DS_STRENGTH_REFINE_FAIL", buf);
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭ ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 		pDragonSoul->SetCount(pDragonSoul->GetCount() - 1);
 		pRefineStone->SetCount(pRefineStone->GetCount() - 1);
 		if (NULL != pResult)
diff --git a/src/game/src/OXEvent.cpp b/src/game/src/OXEvent.cpp
index 3e0bf8c..24a0f95 100644
--- a/src/game/src/OXEvent.cpp
+++ b/src/game/src/OXEvent.cpp
@@ -155,11 +155,11 @@ bool COXEventManager::ShowQuizList(LPCHARACTER pkChar)
 	{
 		for (size_t j = 0; j < m_vec_quiz[i].size(); ++j, ++c)
 		{
-			pkChar->ChatPacket(CHAT_TYPE_INFO, "%d %s %s", m_vec_quiz[i][j].level, m_vec_quiz[i][j].Quiz, m_vec_quiz[i][j].answer ? LC_TEXT("") : LC_TEXT(""));
+			pkChar->ChatPacket(CHAT_TYPE_INFO, "%d %s %s", m_vec_quiz[i][j].level, m_vec_quiz[i][j].Quiz, m_vec_quiz[i][j].answer ? LC_TEXT("\xC2\xFC") : LC_TEXT("\xB0\xC5\xC1\xFE"));
 		}
 	}
 
-	pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  : %d"), c);	
+	pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xD1 \xC4\xFB\xC1\xEE \xBC\xF6: %d"), c);	
 	return true;
 }
 
@@ -197,22 +197,22 @@ EVENTFUNC(oxevent_timer)
 	switch (flag)
 	{
 		case 0:
-			SendNoticeMap(LC_TEXT("10ʵ ϰڽϴ."), OXEVENT_MAP_INDEX, true);
+			SendNoticeMap(LC_TEXT("10\xC3\xCA\xB5\xDA \xC6\xC7\xC1\xA4\xC7\xCF\xB0\xDA\xBD\xC0\xB4\xCF\xB4\xD9."), OXEVENT_MAP_INDEX, true);
 			flag++;
 			return PASSES_PER_SEC(10);
 			
 		case 1:
-			SendNoticeMap(LC_TEXT(""), OXEVENT_MAP_INDEX, true);
+			SendNoticeMap(LC_TEXT("\xC1\xA4\xB4\xE4\xC0\xBA"), OXEVENT_MAP_INDEX, true);
 
 			if (info->answer == true)
 			{
 				COXEventManager::instance().CheckAnswer(true);
-				SendNoticeMap(LC_TEXT("O Դϴ"), OXEVENT_MAP_INDEX, true);
+				SendNoticeMap(LC_TEXT("O \xC0\xD4\xB4\xCF\xB4\xD9"), OXEVENT_MAP_INDEX, true);
 			}
 			else
 			{
 				COXEventManager::instance().CheckAnswer(false);
-				SendNoticeMap(LC_TEXT("X Դϴ"), OXEVENT_MAP_INDEX, true);
+				SendNoticeMap(LC_TEXT("X \xC0\xD4\xB4\xCF\xB4\xD9"), OXEVENT_MAP_INDEX, true);
 			}
 
 			if (LC_IsJapan())
@@ -221,7 +221,7 @@ EVENTFUNC(oxevent_timer)
 			}
 			else
 			{
-				SendNoticeMap(LC_TEXT("5  Ʋ е ٱ ̵ Űڽϴ."), OXEVENT_MAP_INDEX, true);
+				SendNoticeMap(LC_TEXT("5\xC3\xCA \xB5\xDA \xC6\xB2\xB8\xAE\xBD\xC5 \xBA\xD0\xB5\xE9\xC0\xBB \xB9\xD9\xB1\xF9\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xBD\xC3\xC5\xB0\xB0\xDA\xBD\xC0\xB4\xCF\xB4\xD9."), OXEVENT_MAP_INDEX, true);
 			}
 
 			flag++;
@@ -230,7 +230,7 @@ EVENTFUNC(oxevent_timer)
 		case 2:
 			COXEventManager::instance().WarpToAudience();
 			COXEventManager::instance().SetStatus(OXEVENT_CLOSE);
-			SendNoticeMap(LC_TEXT("  غּ."), OXEVENT_MAP_INDEX, true);
+			SendNoticeMap(LC_TEXT("\xB4\xD9\xC0\xBD \xB9\xAE\xC1\xA6 \xC1\xD8\xBA\xF1\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."), OXEVENT_MAP_INDEX, true);
 			flag = 0;
 			break;
 	}
@@ -247,9 +247,9 @@ bool COXEventManager::Quiz(unsigned char level, int timelimit)
 
 	int idx = Random::get(0, m_vec_quiz[level].size() - 1);
 
-	SendNoticeMap(LC_TEXT(" Դϴ."), OXEVENT_MAP_INDEX, true);
+	SendNoticeMap(LC_TEXT("\xB9\xAE\xC1\xA6 \xC0\xD4\xB4\xCF\xB4\xD9."), OXEVENT_MAP_INDEX, true);
 	SendNoticeMap(m_vec_quiz[level][idx].Quiz, OXEVENT_MAP_INDEX, true);
-	SendNoticeMap(LC_TEXT(" O, Ʋ X ̵ּ"), OXEVENT_MAP_INDEX, true);
+	SendNoticeMap(LC_TEXT("\xB8\xC2\xC0\xB8\xB8\xE9 O, \xC6\xB2\xB8\xAE\xB8\xE9 X\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4"), OXEVENT_MAP_INDEX, true);
 
 	if (m_timedEvent != NULL) {
 		event_cancel(&m_timedEvent);
@@ -312,7 +312,7 @@ bool COXEventManager::CheckAnswer(bool answer)
 			}
 			else
 			{
-				pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Դϴ!"));
+				pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA4\xB4\xE4\xC0\xD4\xB4\xCF\xB4\xD9!"));
 				// pkChar->CreateFly(Random::get(FLY_FIREWORK1, FLY_FIREWORK6), pkChar);
 				char chatbuf[256];
 				int len = snprintf(chatbuf, sizeof(chatbuf), 
diff --git a/src/game/src/arena.cpp b/src/game/src/arena.cpp
index 5e4d878..33068d4 100644
--- a/src/game/src/arena.cpp
+++ b/src/game/src/arena.cpp
@@ -233,17 +233,17 @@ EVENTFUNC(ready_to_start_event)
 
 		if (chA != NULL)
 		{
-			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 밡   մϴ."));
+			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
 		}
 
 		if (chB != NULL)
 		{
-			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 밡   մϴ."));
+			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
 		}
 
-		pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT(" 밡   մϴ."));
+		pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
 
 		pArena->EndDuel();
 		return 0;
@@ -260,20 +260,20 @@ EVENTFUNC(ready_to_start_event)
 
 				if (count > 10000)
 				{
-					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϴ."));
-					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϴ."));
+					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xA6\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xA6\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
 					chA->SetPotionLimit(count);
 					chB->SetPotionLimit(count);
 
-					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d    մϴ."), chA->GetPotionLimit());
-					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d    մϴ."), chB->GetPotionLimit());
+					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0\xC0\xBB %d \xB0\xB3 \xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."), chA->GetPotionLimit());
+					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0\xC0\xBB %d \xB0\xB3 \xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."), chB->GetPotionLimit());
 				}
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10ʵ  ۵˴ϴ."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10ʵ  ۵˴ϴ."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10ʵ  ۵˴ϴ."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xCB\xB4\xCF\xB4\xD9."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xCB\xB4\xCF\xB4\xD9."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xCB\xB4\xCF\xB4\xD9."));
 
 				info->state++;
 				return PASSES_PER_SEC(10);
@@ -282,9 +282,9 @@ EVENTFUNC(ready_to_start_event)
 
 		case 1:
 			{
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ۵Ǿϴ."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ۵Ǿϴ."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT(" ۵Ǿϴ."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 				TPacketGCDuelStart duelStart;
 				duelStart.header = HEADER_GC_DUEL_START;
@@ -354,9 +354,9 @@ EVENTFUNC(ready_to_start_event)
 				buf2.write(&dwOppList[0], 4);
 				chB->GetDesc()->Packet(buf2.read_peek(), buf2.size());
 
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ۵Ǿϴ."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ۵Ǿϴ."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT(" ۵Ǿϴ."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 				pArena->ClearEvent();
 
@@ -366,9 +366,9 @@ EVENTFUNC(ready_to_start_event)
 
 		default:
 			{
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ͽ  մϴ."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ͽ  մϴ."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("  Ͽ  մϴ."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
 
                 SPDLOG_DEBUG("ARENA: Something wrong in event func. info->state({})", info->state);
 
@@ -407,17 +407,17 @@ EVENTFUNC(duel_time_out)
 	{
 		if (chA != NULL)
 		{
-			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 밡   մϴ."));
+			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
 		}
 
 		if (chB != NULL)
 		{
-			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 밡   մϴ."));
+			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
 		}
 
-		pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT(" 밡   մϴ."));
+		pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
 
 		pArena->EndDuel();
 		return 0;
@@ -427,14 +427,14 @@ EVENTFUNC(duel_time_out)
 		switch (info->state)
 		{
 			case 0:
-				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT(" ð ʰ  ߴմϴ."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("10ʵ  ̵մϴ."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xB0\xA3 \xC3\xCA\xB0\xFA\xB7\xCE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9."));
 
-				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ð ʰ  ߴմϴ."));
-				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("10ʵ  ̵մϴ."));
+				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xB0\xA3 \xC3\xCA\xB0\xFA\xB7\xCE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
+				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9."));
 
-				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ð ʰ  ߴմϴ."));
-				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("10ʵ  ̵մϴ."));
+				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xB0\xA3 \xC3\xCA\xB0\xFA\xB7\xCE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
+				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9."));
 
 				TPacketGCDuelStart duelStart;
 				duelStart.header = HEADER_GC_DUEL_START;
@@ -729,19 +729,19 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	if (pCharA == NULL && pCharB == NULL)
 	{
 		// Ѵ   ?!
-		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("  Ͽ  ߴմϴ."));
+		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
 		restart = false;
 	}
 	else if (pCharA == NULL && pCharB != NULL)
 	{
-		pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ij  Ͽ  մϴ."));
-		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("  Ͽ  մϴ."));
+		pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xC0\xC7 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
 		restart = false;
 	}
 	else if (pCharA != NULL && pCharB == NULL)
 	{
-		pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ij  Ͽ  մϴ."));
-		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("  Ͽ  մϴ."));
+		pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xC0\xC7 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
 		restart = false;
 	}
 	else if (pCharA != NULL && pCharB != NULL)
@@ -752,9 +752,9 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 
 			if (m_dwSetPointOfA >= m_dwSetCount)
 			{
-				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s  ÿ ¸Ͽϴ."), pCharA->GetName());
-				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s  ÿ ¸Ͽϴ."), pCharA->GetName());
-				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s  ÿ ¸Ͽϴ."), pCharA->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
+				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
 
                 SPDLOG_DEBUG("ARENA: Duel is end. Winner {}({}) Loser {}({})",
 						pCharA->GetName(), GetPlayerAPID(), pCharB->GetName(), GetPlayerBPID());
@@ -762,10 +762,10 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 			else
 			{
 				restart = true;
-				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ¸Ͽϴ."), pCharA->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
 				pCharA->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
-				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ¸Ͽϴ."), pCharA->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
 				pCharB->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
 				SendChatPacketToObserver(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
@@ -779,19 +779,19 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 			m_dwSetPointOfB++;
 			if (m_dwSetPointOfB >= m_dwSetCount)
 			{
-				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s  ÿ ¸Ͽϴ."), pCharB->GetName());
-				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s  ÿ ¸Ͽϴ."), pCharB->GetName());
-				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s  ÿ ¸Ͽϴ."), pCharB->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
+				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
 
                 SPDLOG_DEBUG("ARENA: Duel is end. Winner({}) Loser({})", GetPlayerBPID(), GetPlayerAPID());
 			}
 			else
 			{
 				restart = true;
-				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ¸Ͽϴ."), pCharB->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
 				pCharA->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
-				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ¸Ͽϴ."), pCharB->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
 				pCharB->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
 				SendChatPacketToObserver(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
@@ -817,12 +817,12 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	if (restart == false)
 	{
 		if (pCharA != NULL)
-			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10ʵ  ǵưϴ."));
+			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xC7\xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."));
 
 		if (	pCharB != NULL)
-			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10ʵ  ǵưϴ."));
+			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xC7\xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."));
 
-		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10ʵ  ǵưϴ."));
+		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xC7\xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."));
 
 		if (m_pEvent != NULL) {
 			event_cancel(&m_pEvent);
@@ -838,12 +838,12 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	else
 	{
 		if (pCharA != NULL)
-			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10ʵ   մϴ."));
+			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xD9\xC0\xBD \xC6\xC7\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9."));
 
 		if (pCharB != NULL)
-			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10ʵ   մϴ."));
+			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xD9\xC0\xBD \xC6\xC7\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9."));
 
-		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10ʵ   մϴ."));
+		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xD9\xC0\xBD \xC6\xC7\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9."));
 
 		if (m_pEvent != NULL) {
 			event_cancel(&m_pEvent);
@@ -949,7 +949,7 @@ void CArena::OnDisconnect(DWORD pid)
 	if (m_dwPIDA == pid)
 	{
 		if (GetPlayerB() != NULL)
-			GetPlayerB()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ijͰ  Ͽ  մϴ."));
+			GetPlayerB()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xB0\xA1 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xC1\xF6\xC7\xD5\xB4\xCF\xB4\xD9."));
 
         SPDLOG_DEBUG("ARENA : Duel is end because of Opp({}) is disconnect. MyPID({})", GetPlayerAPID(), GetPlayerBPID());
 		EndDuel();
@@ -957,7 +957,7 @@ void CArena::OnDisconnect(DWORD pid)
 	else if (m_dwPIDB == pid)
 	{
 		if (GetPlayerA() != NULL)
-			GetPlayerA()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ijͰ  Ͽ  մϴ."));
+			GetPlayerA()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xB0\xA1 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xC1\xF6\xC7\xD5\xB4\xCF\xB4\xD9."));
 
         SPDLOG_DEBUG("ARENA : Duel is end because of Opp({}) is disconnect. MyPID({})", GetPlayerBPID(), GetPlayerAPID());
 		EndDuel();
diff --git a/src/game/src/auction_manager.cpp b/src/game/src/auction_manager.cpp
index 32833a8..12a405c 100644
--- a/src/game/src/auction_manager.cpp
+++ b/src/game/src/auction_manager.cpp
@@ -881,21 +881,21 @@ void AuctionManager::enroll_auction (LPCHARACTER ch, LPITEM item, BYTE empire, i
 	}
 	if (item->IsEquipped())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "    .");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xE5\xC2\xF8\xC7\xD1 \xB0\xC7 \xB5\xEE\xB7\xCF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBE\xEE.");
 		return;
 	}
 
 	if (GetAuctionItemInfo (item->GetID()))
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "̹  ž. ü ?");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB5\xEE\xB7\xCF\xC7\xD1 \xB0\xC5\xBE\xDF. \xB5\xB5\xB4\xEB\xC3\xBC \xB9\xB9\xC1\xF6?");
 		return;
 	}
 
 	if (item->GetWindow() == AUCTION)
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "  ..");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xBE\xEB \xB6\xC7 \xB9\xB9\xB3\xC4..");
 		return;
 	}
 
@@ -918,21 +918,21 @@ void AuctionManager::enroll_sale (LPCHARACTER ch, LPITEM item, DWORD wisher_id,
 	}
 	if (item->IsEquipped())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "    .");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xE5\xC2\xF8\xC7\xD1 \xB0\xC7 \xB5\xEE\xB7\xCF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBE\xEE.");
 		return;
 	}
 
 	if (GetSaleItemInfo (item->GetID()))
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "̹  ž. ü ?");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB5\xEE\xB7\xCF\xC7\xD1 \xB0\xC5\xBE\xDF. \xB5\xB5\xB4\xEB\xC3\xBC \xB9\xB9\xC1\xF6?");
 		return;
 	}
 
 	if (item->GetWindow() == AUCTION)
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "  ..");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xBE\xEB \xB6\xC7 \xB9\xB9\xB3\xC4..");
 		return;
 	}
 
@@ -959,11 +959,11 @@ void AuctionManager::bid (LPCHARACTER ch, DWORD item_id, int bid_price)
 	std::pair  mb = MyBid.GetMoney(ch->GetPlayerID(), item_id);
 	if (mb.first != -1)
 	{
-		ch->ChatPacket (CHAT_TYPE_INFO, " ϶ ̴.");
+		ch->ChatPacket (CHAT_TYPE_INFO, "\xC0\xE7\xC0\xD4\xC2\xFB\xC0\xBB \xC7\xCF\xB6\xF5 \xB8\xBB\xC0\xCC\xB4\xD9.");
 	}
 	if (ch->GetGold() < bid_price)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, " ");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD8");
 		return;
 	}
 
@@ -988,13 +988,13 @@ void AuctionManager::immediate_purchase (LPCHARACTER ch, DWORD item_id)
 
 	if (item_info->get_impur_price() == 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "ﱸ   ");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC1\xEF\xB1\xB8 \xC7\xD2 \xBC\xF6 \xBE\xF6\xBC\xAD");
 		return;
 	}
 
 	if (ch->GetGold() < item_info->get_impur_price())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, " ");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD8");
 		return;
 	}
 
@@ -1013,7 +1013,7 @@ void AuctionManager::get_auctioned_item (LPCHARACTER ch, DWORD item_id, DWORD it
 
 	if (pos == -1)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "ڸ ");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xDA\xB8\xAE\xB0\xA1 \xBE\xF6\xBC\xAD");
 		return;
 	}
 
@@ -1069,13 +1069,13 @@ void AuctionManager::rebid (LPCHARACTER ch, DWORD item_id, int bid_price)
 	
 	if (lock)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, " ̾.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xD4\xC2\xFB \xC1\xDF\xC0\xCC\xBE\xDF.");
 		return;
 	}
 
 	if (ch->GetGold() + money < bid_price)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, " ");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD8");
 		return;
 	}
 
@@ -1101,14 +1101,14 @@ void AuctionManager::bid_cancel (LPCHARACTER ch, DWORD item_id)
 	
 	if (lock)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, " ̾.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xD4\xC2\xFB \xC1\xDF\xC0\xCC\xBE\xDF.");
 		return;
 	}
 
 	TAuctionItemInfo* item_info = GetAuctionItemInfo(item_id);
 	if (item_info->get_bidder_id() == ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "ϰ ְ ھ.  .");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xB4\xCF\xB0\xA1 \xC3\xD6\xB0\xED \xC0\xD4\xC2\xFB\xC0\xDA\xBE\xDF. \xC3\xEB\xBC\xD2 \xB8\xF8\xC7\xD8.");
 		return;
 	}
 
@@ -1142,7 +1142,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 				Auction.InsertItemInfo (item_info);
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "忡 ߾.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xE6\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xDF\xBE\xEE.");
 				}
 				break;
 			}
@@ -1157,7 +1157,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 					LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID (player_item->owner);
 
 					ch->AutoGiveItem (item, true);
-					ch->ChatPacket(CHAT_TYPE_INFO, "忡  ߾.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xE6\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xDF\xBE\xEE.");
 				}
 				break;
 			}
@@ -1179,7 +1179,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 				Sale.InsertItemInfo (item_info);
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "Ǹ忡 ߾.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xC6\xC7\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xDF\xBE\xEE.");
 				}
 				break;
 			}
@@ -1193,7 +1193,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 
 
 					ch->AutoGiveItem (item, true);
-					ch->ChatPacket(CHAT_TYPE_INFO, "Ǹ忡  ߾.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xC6\xC7\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xDF\xBE\xEE.");
 				}
 				break;
 			}
@@ -1210,7 +1210,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 				Wish.InsertItemInfo (item_info);
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "ϴٿ ߾.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xBB\xF0\xB4\xCF\xB4\xD9\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xDF\xBE\xEE.");
 				}
 				break;
 			}
@@ -1218,7 +1218,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			{
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "ϴٿ  ߾.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xBB\xF0\xB4\xCF\xB4\xD9\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xDF\xBE\xEE.");
 				}
 				break;
 			}
@@ -1238,7 +1238,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			MyBid.Insert(new_item_info->bidder_id, new_item_info->item_id, new_item_info->get_bid_price());
 			if (ch != NULL)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, "߾.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xD4\xC2\xFB\xC7\xDF\xBE\xEE.");
 			}
 		}
 		break;
@@ -1254,7 +1254,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			memcpy (old_item_info, new_item_info, sizeof(TAuctionItemInfo));
 			if (ch != NULL)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, "ﱸ عȾ.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "\xC1\xEF\xB1\xB8 \xC7\xD8\xB9\xF6\xB7\xC8\xBE\xEE.");
 			}
 		}
 		break;
@@ -1277,7 +1277,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			{
 				LPITEM item = ITEM_MANAGER::instance().CreateItem(player_item->vnum, player_item->count, item_id);
 				ch->AutoGiveItem (item, true);
-				ch->ChatPacket(CHAT_TYPE_INFO, "Ծ.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xA1\xC1\xAE\xBF\xD4\xBE\xEE.");
 				if (cmd == AUCTION_GET_AUC || cmd == AUCTION_CANCEL_AUC)
 				{
 					TPacketGDCommnadAuction pack_dai;
@@ -1337,7 +1337,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			}
 			else if (ch != NULL)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, "߾.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "\xC3\xEB\xBC\xD2\xC7\xDF\xBE\xEE.");
 			}
 		}
 		break;
diff --git a/src/game/src/battle.cpp b/src/game/src/battle.cpp
index f259e9e..8f9bf3a 100644
--- a/src/game/src/battle.cpp
+++ b/src/game/src/battle.cpp
@@ -147,10 +147,10 @@ int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
 	}
 
 	if (timed_event_cancel(ch))
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ǿ  Ǿϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFC\xC5\xF5\xB0\xA1 \xBD\xC3\xC0\xDB \xB5\xC7\xBE\xEE \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 	if (timed_event_cancel(victim))
-		victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ǿ  Ǿϴ."));
+		victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFC\xC5\xF5\xB0\xA1 \xBD\xC3\xC0\xDB \xB5\xC7\xBE\xEE \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 	ch->SetPosition(POS_FIGHTING);
 	ch->SetVictim(victim);
diff --git a/src/game/src/castle.cpp b/src/game/src/castle.cpp
index 51d41fe..ff6e96d 100644
--- a/src/game/src/castle.cpp
+++ b/src/game/src/castle.cpp
@@ -250,7 +250,7 @@ EVENTFUNC(castle_siege_event)
 	//   30 ̳ ȳ 
 	if (info->pulse < PASSES_PER_SEC(30*60))
 	{
-		snprintf(buf, sizeof(buf), LC_TEXT("%s ȭ ѷΰ  Դϴ."),
+		snprintf(buf, sizeof(buf), LC_TEXT("%s\xBF\xA1\xBC\xAD \xBA\xC0\xC8\xAD\xB8\xA6 \xB5\xD1\xB7\xAF\xBD\xCE\xB0\xED \xC0\xFC\xC5\xF5\xB0\xA1 \xC1\xF8\xC7\xE0\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."),
 				EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 		BroadcastNotice(buf);
 
@@ -264,10 +264,10 @@ EVENTFUNC(castle_siege_event)
 
 		case CASTLE_SIEGE_STRUGGLE:
 			{
-				snprintf(buf, sizeof(buf), LC_TEXT("%s  ߽ϴ."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+				snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xBC\xF6\xBC\xBA\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 				BroadcastNotice(buf);
 
-				snprintf(buf, sizeof(buf), LC_TEXT("ݺ %s 30а ȭ ıϿ  ȹ   ֽϴ."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+				snprintf(buf, sizeof(buf), LC_TEXT("\xC1\xF6\xB1\xDD\xBA\xCE\xC5\xCD %s\xC0\xBA 30\xBA\xD0\xB0\xA3 \xBA\xC0\xC8\xAD\xB8\xA6 \xC6\xC4\xB1\xAB\xC7\xCF\xBF\xA9 \xBA\xB8\xBB\xF3\xC0\xBB \xC8\xB9\xB5\xE6 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 				BroadcastNotice(buf);
 
 				GET_SIEGE_STATE() = CASTLE_SIEGE_END;
@@ -276,7 +276,7 @@ EVENTFUNC(castle_siege_event)
 			}
 			break;
 		case CASTLE_SIEGE_END:
-			BroadcastNotice(LC_TEXT("30 ߽ϴ.. ȭ ϴ."));
+			BroadcastNotice(LC_TEXT("30\xBA\xD0\xC0\xCC \xB0\xE6\xB0\xFA\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9.. \xBA\xC0\xC8\xAD\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 			castle_end_siege();
 			break;
 	}
@@ -796,7 +796,7 @@ bool castle_spawn_tower(int empire, int tower_count)
 	// broad cast
 	{
 		char buf[1024];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s   ˸ ȭ Ÿϴ."), EMPIRE_NAME(empire));
+		snprintf(buf, sizeof(buf), LC_TEXT("%s\xBF\xA1 \xC0\xFC\xC0\xEF\xC0\xC7 \xBD\xC3\xC0\xDB\xC0\xBB \xBE\xCB\xB8\xAE\xB4\xC2 \xBA\xC0\xC8\xAD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(empire));
 		BroadcastNotice(buf);
 	}
 	return true;
@@ -864,7 +864,7 @@ void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
 		case CASTLE_SIEGE_END:
 			{
 				int	siege_end = true;
-				snprintf(buf, sizeof(buf), LC_TEXT("%s ȭ ı߽ϴ."), EMPIRE_NAME(killer_empire));
+				snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xBA\xC0\xC8\xAD\xB8\xA6 \xC6\xC4\xB1\xAB\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(killer_empire));
 				BroadcastNotice(buf);
 
 				LogManager::instance().CharLog(killer, 0, "CASTLE_TORCH_KILL", "");
@@ -885,12 +885,12 @@ void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
 				{
 					if (GET_SIEGE_STATE() == CASTLE_SIEGE_STRUGGLE)
 					{
-						snprintf(buf, sizeof(buf), LC_TEXT("%s  Ͽ £ йϿϴ.."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+						snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xBC\xF6\xBC\xBA\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xA9 \xC0\xFC\xC0\xEF\xBF\xA1 \xC6\xD0\xB9\xE8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9.."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 						BroadcastNotice(buf);
 					}
 					else
 					{
-						snprintf(buf, sizeof(buf), LC_TEXT("%s  ȭ ıϿϴ."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+						snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xB8\xF0\xB5\xE7 \xBA\xC0\xC8\xAD\xB8\xA6 \xC6\xC4\xB1\xAB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 						BroadcastNotice(buf);
 					}
 					castle_end_siege();
diff --git a/src/game/src/char.cpp b/src/game/src/char.cpp
index 3b44242..4218c31 100644
--- a/src/game/src/char.cpp
+++ b/src/game/src/char.cpp
@@ -559,7 +559,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 {
 	if (GetPart(PART_MAIN) > 2)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ ����� ���� ������ �� �� �ֽ��ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 
@@ -591,7 +591,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	if (GOLD_MAX <= nTotalMoney)
 	{
 		SPDLOG_ERROR("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id {} name {}", GetPlayerID(), GetName());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20�� ���� �ʰ��Ͽ� ������ ������ �����ϴ�"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD"));
 		return;
 	}
 
@@ -607,7 +607,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	{
 		if (CBanwordManager::instance().CheckString(m_stShopSign.c_str(), m_stShopSign.length()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("��Ӿ ��� ���Ե� ���� �̸����� ������ �� �� �����ϴ�."));	
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xD3\xBE\xEE\xB3\xAA \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEE\xB0\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD4\xB5\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));	
 			return;
 		}
 	}
@@ -634,19 +634,19 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 
 			if (item_table && (IS_SET(item_table->dwAntiFlags, ITEM_ANTIFLAG_GIVE | ITEM_ANTIFLAG_MYSHOP)))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("����ȭ �������� ���λ������� �Ǹ��� �� �����ϴ�."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC7\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 				return;
 			}
 
 			if (pkItem->IsEquipped() == true)
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������� �������� ���λ������� �Ǹ��� �� �����ϴ�."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC7\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 				return;
 			}
 
 			if (true == pkItem->isLocked())
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������� �������� ���λ������� �Ǹ��� �� �����ϴ�."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC7\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 				return;
 			}
 
@@ -1097,14 +1097,14 @@ void CHARACTER::SetPosition(int pos)
 		{
 			case POS_FIGHTING:
 				if (!IsState(m_stateBattle))
-					MonsterLog("[BATTLE] �� ����");
+					MonsterLog("[BATTLE] \xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
 
 				GotoState(m_stateBattle);
 				break;
 
 			default:
 				if (!IsState(m_stateIdle))
-					MonsterLog("[IDLE] ���� ����");
+					MonsterLog("[IDLE] \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
 
 				GotoState(m_stateIdle);
 				break;
@@ -2659,7 +2659,7 @@ bool CHARACTER::Sync(int x, int y)
 void CHARACTER::Stop()
 {
 	if (!IsState(m_stateIdle))
-		MonsterLog("[IDLE] ����");
+		MonsterLog("[IDLE] \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
 
 	GotoState(m_stateIdle);
 
@@ -2694,7 +2694,7 @@ bool CHARACTER::Goto(int x, int y)
 	
 	if (!IsState(m_stateMove))
 	{
-		MonsterLog("[MOVE] %s", GetVictim() ? "�������" : "�׳��̵�");
+		MonsterLog("[MOVE] %s", GetVictim() ? "\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD" : "\xEF\xBF\xBD\xD7\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD");
 
 		if (GetVictim())
 		{
@@ -3919,7 +3919,7 @@ void CHARACTER::mining_cancel()
 	{
         SPDLOG_DEBUG("XXX MINING CANCEL");
 		event_cancel(&m_pkMiningEvent);
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ä���� �ߴ��Ͽ����ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xDF\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 	}
 }
 
@@ -3941,7 +3941,7 @@ void CHARACTER::mining(LPCHARACTER chLoad)
 
 	if (!pick || pick->GetType() != ITEM_PICK)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("��̸� �����ϼ���."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEE\xB1\xAA\xEF\xBF\xBD\xCC\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
 		return;
 	}
 
@@ -3980,7 +3980,7 @@ void CHARACTER::fishing()
 
 		if (IS_SET(dwAttr, ATTR_BLOCK))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("���ø� �� �� �ִ� ���� �ƴմϴ�"));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC6\xB4\xD5\xB4\xCF\xB4\xEF\xBF\xBD"));
 			return;
 		}
 	}
@@ -3990,13 +3990,13 @@ void CHARACTER::fishing()
 	// ���ô� ����
 	if (!rod || rod->GetType() != ITEM_ROD)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("���ô븦 ���� �ϼ���."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCF\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
 		return;
 	}
 
 	if (0 == rod->GetSocket(2))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�̳��� ���� ���� �ּ���."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
 		return;
 	}
 
@@ -4022,7 +4022,7 @@ void CHARACTER::fishing_take()
 	}
 	else
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("���ô밡 �ƴ� �������� ���ø� �� �� �����ϴ�!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB4\xEB\xB0\xA1 \xEF\xBF\xBD\xC6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD!"));
 	}
 
 	event_cancel(&m_pkFishingEvent);
@@ -4062,7 +4062,7 @@ void CHARACTER::SetNextStatePulse(int iNextPulse)
 	m_dwNextStatePulse = iNextPulse;
 
 	if (iNextPulse < 10)
-		MonsterLog("�������·ξ����");
+		MonsterLog("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xB7\xCE\xBE\xEE\xBC\xAD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
 }
 
 
@@ -4299,7 +4299,7 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
 
 	if (!leader)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("��Ƽ���� ���� ���°� �ƴ϶� ��û�� �� �� �����ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xC6\xB4\xCF\xB6\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC3\xBB\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return false;
 	}
 
@@ -4320,38 +4320,38 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
 			break;
 
 		case PERR_SERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ������ ��Ƽ ���� ó���� �� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return false;
 
 		case PERR_DIFFEMPIRE:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �ٸ� ������ ��Ƽ�� �̷� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return false;
 
 		case PERR_DUNGEON:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� �ȿ����� ��Ƽ �ʴ븦 �� �� �����ϴ�.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
 			return false;
 
 		case PERR_OBSERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ��忡�� ��Ƽ �ʴ븦 �� �� �����ϴ�.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
 			return false;
 
 		case PERR_LVBOUNDARY:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> -30 ~ +30 ���� �̳��� ���游 �ʴ��� �� �ֽ��ϴ�.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
 			return false;
 
 		case PERR_LOWLEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� �ְ� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return false;
 
 		case PERR_HILEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� ���� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
 			return false;
 
 		case PERR_ALREADYJOIN: 	
 			return false;
 
 		case PERR_PARTYISFULL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �� �̻� ��Ƽ���� �ʴ��� �� �����ϴ�.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
 			return false;
 
 		default:
@@ -4367,7 +4367,7 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
 	SetPartyRequestEvent(event_create(party_request_event, info, PASSES_PER_SEC(10)));
 
 	leader->ChatPacket(CHAT_TYPE_COMMAND, "PartyRequest %u", (DWORD) GetVID());
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s �Կ��� ��Ƽ���� ��û�� �߽��ϴ�."), leader->GetName());
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xEF\xBF\xBD\xD4\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC3\xBB\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xDF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), leader->GetName());
 	return true;
 }
 
@@ -4421,7 +4421,7 @@ void CHARACTER::AcceptToParty(LPCHARACTER member)
 	event_cancel(&member->m_pkPartyRequestEvent);
 
 	if (!GetParty())
-		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ ��Ƽ�� �������� �ʽ��ϴ�."));
+		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 	else 
 	{
 		if (GetPlayerID() != GetParty()->GetLeaderPID())
@@ -4431,16 +4431,16 @@ void CHARACTER::AcceptToParty(LPCHARACTER member)
 		switch (errcode) 
 		{
 			case PERR_NONE: 		member->PartyJoin(this); return;
-			case PERR_SERVER:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ������ ��Ƽ ���� ó���� �� �� �����ϴ�.")); break;
-			case PERR_DUNGEON:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� �ȿ����� ��Ƽ �ʴ븦 �� �� �����ϴ�.")); break;
-			case PERR_OBSERVER: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ��忡�� ��Ƽ �ʴ븦 �� �� �����ϴ�.")); break;
-			case PERR_LVBOUNDARY:	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> -30 ~ +30 ���� �̳��� ���游 �ʴ��� �� �ֽ��ϴ�.")); break;
-			case PERR_LOWLEVEL: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� �ְ� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�.")); break;
-			case PERR_HILEVEL: 		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� ���� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�.")); break;
+			case PERR_SERVER:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
+			case PERR_DUNGEON:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
+			case PERR_OBSERVER: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
+			case PERR_LVBOUNDARY:	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
+			case PERR_LOWLEVEL: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
+			case PERR_HILEVEL: 		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
 			case PERR_ALREADYJOIN: 	break;
 			case PERR_PARTYISFULL: {
-									   ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �� �̻� ��Ƽ���� �ʴ��� �� �����ϴ�."));
-									   member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� �ο������� �ʰ��Ͽ� ��Ƽ�� ������ �� �����ϴ�."));
+									   ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+									   member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 									   break;
 								   }
 			default: SPDLOG_ERROR("Do not process party join error({})", (int) errcode);
@@ -4479,12 +4479,12 @@ void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)
 {
 	if (GetParty() && GetParty()->GetLeaderPID() != GetPlayerID())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ���� �ʴ��� �� �ִ� ������ �����ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 	else if (pchInvitee->IsBlockMode(BLOCK_PARTY_INVITE))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> %s ���� ��Ƽ �ź� �����Դϴ�."), pchInvitee->GetName());
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xC5\xBA\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD4\xB4\xCF\xB4\xEF\xBF\xBD."), pchInvitee->GetName());
 		return;
 	}
 
@@ -4496,39 +4496,39 @@ void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)
 			break;
 
 		case PERR_SERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ������ ��Ƽ ���� ó���� �� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_DIFFEMPIRE:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �ٸ� ������ ��Ƽ�� �̷� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_DUNGEON:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� �ȿ����� ��Ƽ �ʴ븦 �� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_OBSERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ��忡�� ��Ƽ �ʴ븦 �� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_LVBOUNDARY:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> -30 ~ +30 ���� �̳��� ���游 �ʴ��� �� �ֽ��ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_LOWLEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� �ְ� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_HILEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� ���� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_ALREADYJOIN:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �̹� %s���� ��Ƽ�� ���� �ֽ��ϴ�."), pchInvitee->GetName());
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xCC\xB9\xEF\xBF\xBD %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), pchInvitee->GetName());
 			return;
 
 		case PERR_PARTYISFULL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �� �̻� ��Ƽ���� �ʴ��� �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		default:
@@ -4574,7 +4574,7 @@ void CHARACTER::PartyInviteAccept(LPCHARACTER pchInvitee)
 
 	if (GetParty() && GetParty()->GetLeaderPID() != GetPlayerID())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ���� �ʴ��� �� �ִ� ������ �����ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 
@@ -4586,36 +4586,36 @@ void CHARACTER::PartyInviteAccept(LPCHARACTER pchInvitee)
 			break;
 
 		case PERR_SERVER:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ������ ��Ƽ ���� ó���� �� �� �����ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_DUNGEON:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� �ȿ����� ��Ƽ �ʴ뿡 ���� �� �����ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xBF\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_OBSERVER:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ���� ��忡�� ��Ƽ �ʴ븦 �� �� �����ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_LVBOUNDARY:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> -30 ~ +30 ���� �̳��� ���游 �ʴ��� �� �ֽ��ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_LOWLEVEL:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� �ְ� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_HILEVEL:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� ���� ���� ���� 30������ ���� �ʴ��� �� �����ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_ALREADYJOIN:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ �ʴ뿡 ���� �� �����ϴ�."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xBF\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		case PERR_PARTYISFULL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> �� �̻� ��Ƽ���� �ʴ��� �� �����ϴ�."));
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> ��Ƽ�� �ο������� �ʰ��Ͽ� ��Ƽ�� ������ �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return;
 
 		default:
@@ -4654,13 +4654,13 @@ void CHARACTER::PartyInviteDeny(DWORD dwPID)
 
 	LPCHARACTER pchInvitee = CHARACTER_MANAGER::instance().FindByPID(dwPID);
 	if (pchInvitee)
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> %s���� ��Ƽ �ʴ븦 �����ϼ̽��ϴ�."), pchInvitee->GetName());
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), pchInvitee->GetName());
 }
 
 void CHARACTER::PartyJoin(LPCHARACTER pLeader)
 {
-	pLeader->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> %s���� ��Ƽ�� �����ϼ̽��ϴ�."), GetName());
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<��Ƽ> %s���� ��Ƽ�� �����ϼ̽��ϴ�."), pLeader->GetName());
+	pLeader->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), GetName());
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), pLeader->GetName());
 
 	pLeader->GetParty()->Join(GetPlayerID());
 	pLeader->GetParty()->Link(this);
@@ -4871,7 +4871,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 				{
 					if ((GetExchange() || IsOpenSafebox() || GetShopOwner()) || IsCubeOpen())
 					{
-						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�ٸ� �ŷ���(â��,��ȯ,����)���� ���λ����� ����� �� �����ϴ�."));
+						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD(\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD)\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 						return;
 					}
 				}
@@ -4880,7 +4880,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 					// Ŭ���� ����� ��ȯ/â��/���λ���/�����̿����̶�� �Ұ�
 					if ((pkChrCauser->GetExchange() || pkChrCauser->IsOpenSafebox() || pkChrCauser->GetMyShop() || pkChrCauser->GetShopOwner()) || pkChrCauser->IsCubeOpen() )
 					{
-						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�ٸ� �ŷ���(â��,��ȯ,����)���� ���λ����� ����� �� �����ϴ�."));
+						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD(\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD)\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 						return;
 					}
 
@@ -4888,7 +4888,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 					//if ((GetExchange() || IsOpenSafebox() || GetShopOwner()))
 					if ((GetExchange() || IsOpenSafebox() || IsCubeOpen()))
 					{
-						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ �ٸ� �ŷ��� �ϰ� �ִ� ���Դϴ�."));
+						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCF\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD4\xB4\xCF\xB4\xEF\xBF\xBD."));
 						return;
 					}
 				}
@@ -5333,7 +5333,7 @@ bool CHARACTER::Return()
 
 	SendMovePacket(FUNC_WAIT, 0, 0, 0, 0);
 
-    SPDLOG_TRACE("{} {} �����ϰ� ���ư���! {} {}", GetName(), (void*) this, x, y);
+    SPDLOG_TRACE("{} {} \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD! {} {}", GetName(), (void*) this, x, y);
 
 	if (GetParty())
 		GetParty()->SendMessage(this, PM_RETURN, x, y);
@@ -5486,7 +5486,7 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 	}
 
 	SendMovePacket(FUNC_WAIT, 0, 0, 0, 0);
-	//MonsterLog("�Ѿư���; %s", pkChr->GetName());
+	//MonsterLog("\xEF\xBF\xBD\xD1\xBE\xC6\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD; %s", pkChr->GetName());
 	return true;
 }
 
@@ -5509,12 +5509,12 @@ void CHARACTER::ReqSafeboxLoad(const char* pszPassword)
 {
 	if (!*pszPassword || strlen(pszPassword) > SAFEBOX_PASSWORD_MAX_LEN)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â��> �߸��� ��ȣ�� �Է��ϼ̽��ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xEF\xBF\xBD\xDF\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC8\xA3\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD4\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 	else if (m_pkSafebox)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â��> â�� �̹� �����ֽ��ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB9\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 
@@ -5522,12 +5522,12 @@ void CHARACTER::ReqSafeboxLoad(const char* pszPassword)
 
 	if (iPulse - GetSafeboxLoadTime()  < PASSES_PER_SEC(10))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â��> â�� ������ 10�� �ȿ��� �� �� �����ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 10\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 	else if (GetDistanceFromSafeboxOpen() > 1000)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â��> �Ÿ��� �־ â�� �� �� �����ϴ�."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xEF\xBF\xBD\xC5\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBE\xEE\xBC\xAD \xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 		return;
 	}
 	else if (m_bOpeningSafebox)
@@ -5798,9 +5798,9 @@ void CHARACTER::SetNowWalking(bool bWalkFlag)
 		if (IsNPC())
 		{
 			if (m_bNowWalking)
-				MonsterLog("�ȴ´�");
+				MonsterLog("\xEF\xBF\xBD\xC8\xB4\xC2\xB4\xEF\xBF\xBD");
 			else
-				MonsterLog("�ڴ�");
+				MonsterLog("\xEF\xBF\xBD\xDA\xB4\xEF\xBF\xBD");
 		}
 	}
 }
@@ -6514,13 +6514,13 @@ bool CHARACTER::WarpToPID(DWORD dwPID)
 			}
 			else
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ �ִ� ������ ������ �� �����ϴ�."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 				return false;
 			}
 		}
 		else
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ �ִ� ������ ������ �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return false;
 		}
 	}
@@ -6534,25 +6534,25 @@ bool CHARACTER::WarpToPID(DWORD dwPID)
 
 		if (!pcci)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ �¶��� ���°� �ƴմϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC2\xB6\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xC6\xB4\xD5\xB4\xCF\xB4\xEF\xBF\xBD."));
 			return false;
 		}
 
 		if (pcci->bChannel != g_bChannel)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ %d ä�ο� �ֽ��ϴ�. (���� ä�� %d)"), pcci->bChannel, g_bChannel);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d \xC3\xA4\xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD. (\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xA4\xEF\xBF\xBD\xEF\xBF\xBD %d)"), pcci->bChannel, g_bChannel);
 			return false;
 		}
 		else if (false == IS_SUMMONABLE_ZONE(pcci->lMapIndex))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ �ִ� ������ ������ �� �����ϴ�."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 			return false;
 		}
 		else
 		{
 			if (!CAN_ENTER_ZONE(this, pcci->lMapIndex))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ �ִ� ������ ������ �� �����ϴ�."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 				return false;
 			}
 
@@ -6634,7 +6634,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (iPulse - GetSafeboxLoadTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("â�� ���� %d�� �̳����� �ٸ������� �̵��Ҽ� �����ϴ�."), limittime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD\xEF\xBF\xBD\xD2\xBC\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime);
 
 		if (test_server)
 			ChatPacket(CHAT_TYPE_INFO, "[TestOnly]Pulse %d LoadTime %d PASS %d", iPulse, GetSafeboxLoadTime(), PASSES_PER_SEC(limittime));
@@ -6647,7 +6647,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
 			if (bSendMsg)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�ŷ�â,â�� ���� �� ���¿����� �ٸ������� �̵�,���� �Ҽ� �����ϴ�"));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xC3\xA2,\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD2\xBC\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD"));
 
 			return true;
 		}
@@ -6657,7 +6657,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 		if (GetExchange() || GetMyShop() || IsOpenSafebox() || IsCubeOpen())
 		{
 			if (bSendMsg)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�ŷ�â,â�� ���� �� ���¿����� �ٸ������� �̵�,���� �Ҽ� �����ϴ�"));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xC3\xA2,\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD2\xBC\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD"));
 
 			return true;
 		}
@@ -6668,7 +6668,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (iPulse - GetExchangeTime()  < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�ŷ� �� %d�� �̳����� �ٸ��������� �̵� �� �� �����ϴ�."), limittime );
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime );
 		return true;
 	}
 	//END_PREVENT_PORTAL_AFTER_EXCHANGE
@@ -6677,14 +6677,14 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (iPulse - GetMyShopTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("�ŷ� �� %d�� �̳����� �ٸ��������� �̵� �� �� �����ϴ�."), limittime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime);
 		return true;
 	}
 
 	if (iPulse - GetRefineTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("������ ������ %d�� �̳����� ��ȯ��,��ȯ���θ� ����� �� �����ϴ�."), limittime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime);
 		return true; 
 	}
 	//END_PREVENT_ITEM_COPY
diff --git a/src/game/src/char_affect.cpp b/src/game/src/char_affect.cpp
index 2beb8bd..b9638e3 100644
--- a/src/game/src/char_affect.cpp
+++ b/src/game/src/char_affect.cpp
@@ -533,7 +533,7 @@ bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, int lApplyValue, DWORD dw
 	// CHAT_BLOCK
 	if (dwType == AFFECT_BLOCK_CHAT && lDuration > 1)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ä  Ǿϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEE\xBF\xB5\xC0\xDA \xC1\xA6\xC1\xA6\xB7\xCE \xC3\xA4\xC6\xC3\xC0\xCC \xB1\xDD\xC1\xF6 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	// END_OF_CHAT_BLOCK
 
@@ -713,7 +713,7 @@ bool CHARACTER::RemoveAffect(DWORD dwType)
 	// CHAT_BLOCK
 	if (dwType == AFFECT_BLOCK_CHAT)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ä  ǮȽϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xC6\xC3 \xB1\xDD\xC1\xF6\xB0\xA1 \xC7\xAE\xB7\xC8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	// END_OF_CHAT_BLOCK
 
diff --git a/src/game/src/char_battle.cpp b/src/game/src/char_battle.cpp
index 86056c9..d41103e 100644
--- a/src/game/src/char_battle.cpp
+++ b/src/game/src/char_battle.cpp
@@ -286,14 +286,14 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 	if (GetLevel() < 10)
 	{
 		SPDLOG_DEBUG("NO_DEATH_PENALTY_LESS_LV10({})", GetName());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȣ ġ  ʾҽϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
    	if (Random::get(0, 2))
 	{
 		SPDLOG_DEBUG("NO_DEATH_PENALTY_LUCK({})", GetName());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȣ ġ  ʾҽϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -307,7 +307,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 			if (FindAffect(AFFECT_NO_DEATH_PENALTY))
 			{
 				SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName());
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȣ ġ  ʾҽϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 				RemoveAffect(AFFECT_NO_DEATH_PENALTY);
 				return;
 			}
@@ -317,7 +317,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 			if (FindAffect(AFFECT_NO_DEATH_PENALTY))
 			{
 				SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName());
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȣ ġ  ʾҽϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 				RemoveAffect(AFFECT_NO_DEATH_PENALTY);
 				return;
 			}
@@ -1330,7 +1330,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 					}
 
 					if (Random::get(1, 100) < iNoPenaltyProb)
-						pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȣ   ʾҽϴ."));
+						pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xBA\xB8\xC8\xA3\xB7\xCE \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 					else
 					{
 						if (g_iUseLocale && pkKiller->GetParty())
@@ -1413,7 +1413,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 				if (pkKiller->m_dwUnderGuildWarInfoMessageTime < get_dword_time())
 				{
 					pkKiller->m_dwUnderGuildWarInfoMessageTime = get_dword_time() + 60000;
-					pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ߿ ɿ   ϴ."));
+					pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC1\xDF\xBF\xA1\xB4\xC2 \xBB\xE7\xB3\xC9\xBF\xA1 \xB5\xFB\xB8\xA5 \xC0\xCC\xC0\xCD\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 			}
 		}
@@ -1768,7 +1768,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 					IsPenetrate = true;
 
 					if (test_server)
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߰  %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC5\xEB \xC3\xDF\xB0\xA1 \xB5\xA5\xB9\xCC\xC1\xF6 %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
 
 					dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;
 
@@ -1792,8 +1792,8 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			{
 				if (test_server)
 				{
-					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
+					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBA\xED\xB7\xB0! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBA\xED\xB7\xB0! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
 				}
 
 				SendDamagePacket(pAttacker, 0, DAMAGE_BLOCK);
@@ -1807,8 +1807,8 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			{
 				if (test_server)
 				{
-					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ȸ! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ȸ! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
+					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xC8\xB8\xC7\xC7! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xC8\xB8\xC7\xC7! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
 				}
 
 				SendDamagePacket(pAttacker, 0, DAMAGE_DODGE);
@@ -1894,7 +1894,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 					IsPenetrate = true;
 
 					if (test_server)
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߰  %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC5\xEB \xC3\xDF\xB0\xA1 \xB5\xA5\xB9\xCC\xC1\xF6 %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
 					dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;
 				}
 			}
@@ -2260,7 +2260,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 
 		if (m_bDetailLog)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s[%d]  ġ: %d %d"), pAttacker->GetName(), (DWORD) pAttacker->GetVID(), pAttacker->GetX(), pAttacker->GetY());
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s[%d]\xB0\xA1 \xB0\xF8\xB0\xDD \xC0\xA7\xC4\xA1: %d %d"), pAttacker->GetName(), (DWORD) pAttacker->GetVID(), pAttacker->GetX(), pAttacker->GetY());
 		}
 	}
 
@@ -3208,7 +3208,7 @@ void CHARACTER::SetVictim(LPCHARACTER pkVictim)
 	if (!pkVictim)
 	{
 		if (0 != (DWORD)m_kVIDVictim)
-			MonsterLog("  ");
+			MonsterLog("\xB0\xF8\xB0\xDD \xB4\xEB\xBB\xF3\xC0\xBB \xC7\xD8\xC1\xA6");
 
 		m_kVIDVictim.Reset();
 		battle_end(this);
@@ -3216,7 +3216,7 @@ void CHARACTER::SetVictim(LPCHARACTER pkVictim)
 	else
 	{
 		if (m_kVIDVictim != pkVictim->GetVID())
-			MonsterLog("  : %s", pkVictim->GetName());
+			MonsterLog("\xB0\xF8\xB0\xDD \xB4\xEB\xBB\xF3\xC0\xBB \xBC\xB3\xC1\xA4: %s", pkVictim->GetName());
 
 		m_kVIDVictim = pkVictim->GetVID();
 		m_dwLastVictimSetTime = get_dword_time();
diff --git a/src/game/src/char_dragonsoul.cpp b/src/game/src/char_dragonsoul.cpp
index 98de574..33f0996 100644
--- a/src/game/src/char_dragonsoul.cpp
+++ b/src/game/src/char_dragonsoul.cpp
@@ -73,7 +73,7 @@ bool CHARACTER::DragonSoul_ActivateDeck(int deck_idx)
 
 	if (!DragonSoul_IsQualified())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ ڰ Ȱȭ ʾҽϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xBB\xF3\xC0\xDA\xB0\xA1 \xC8\xB0\xBC\xBA\xC8\xAD\xB5\xC7\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
diff --git a/src/game/src/char_horse.cpp b/src/game/src/char_horse.cpp
index c7a1404..136a1b7 100644
--- a/src/game/src/char_horse.cpp
+++ b/src/game/src/char_horse.cpp
@@ -17,13 +17,13 @@ bool CHARACTER::StartRiding()
 {
 	if (IsDead() == true)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ¿  Ż  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xB2\xB7\xAF\xC1\xF8 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB8\xBB\xBF\xA1 \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 	
 	if (IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ¿  Ż  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB8\xBB\xBF\xA1 \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -32,7 +32,7 @@ bool CHARACTER::StartRiding()
 
 	if (armor && (armor->GetVnum() >= 11901 && armor->GetVnum() <= 11904))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ¿  Ż  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xB9\xBA\xB9\xC0\xBB \xC0\xD4\xC0\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xB8\xBB\xC0\xBB \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -48,11 +48,11 @@ bool CHARACTER::StartRiding()
 	if (false == CHorseRider::StartRiding())
 	{
 		if (GetHorseLevel() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϰ  ʽϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xBC\xD2\xC0\xAF\xC7\xCF\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 		else if (GetHorseHealth() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ׾ִ  Դϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xCC \xC1\xD7\xBE\xEE\xC0\xD6\xB4\xC2 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9."));
 		else if (GetHorseStamina() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ׹̳ʰ Ͽ  Ż  ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xC7 \xBD\xBA\xC5\xD7\xB9\xCC\xB3\xCA\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB8\xBB\xC0\xBB \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 		return false;
 	}
@@ -177,7 +177,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 
 		if (!m_chHorse)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȯ Ͽϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB \xBC\xD2\xC8\xAF\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
@@ -203,7 +203,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 		else
 		{
 			m_chHorse->m_stName = GetName();
-			m_chHorse->m_stName += LC_TEXT(" ");
+			m_chHorse->m_stName += LC_TEXT("\xB4\xD4\xC0\xC7 \xB8\xBB");
 		}
 
 		if (!m_chHorse->Show(GetMapIndex(), x, y, GetZ()))
@@ -343,7 +343,7 @@ STM
 		{
 			ChatPacket(CHAT_TYPE_COMMAND, "horse_state %d %d %d", GetHorseLevel(), iHealthGrade, iStaminaGrade);
 
-			// FIX : Ŭ̾Ʈ "  "  ǥ   Լ Կ returnν Ʒ ڵ带 Ѵٸ
+			// FIX : Ŭ̾Ʈ "\xB8\xBB \xBB\xF3\xC5\xC2 \xB9\xF6\xC7\xC1"  ǥ   Լ Կ returnν Ʒ ڵ带 Ѵٸ
 			//  Ѵ ȯϴ ù װ .. Ȯ  ľ غ .
 			m_bSendHorseLevel = GetHorseLevel();
 			m_bSendHorseHealthGrade = iHealthGrade;
diff --git a/src/game/src/char_item.cpp b/src/game/src/char_item.cpp
index 0992df7..cdae1d7 100644
--- a/src/game/src/char_item.cpp
+++ b/src/game/src/char_item.cpp
@@ -835,7 +835,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	{
 		if (!item->CheckItemUseLevel(20) || item->GetType() != ITEM_WEAPON)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȸ 20  ⸸ մϴ"));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB7\xE1 \xB0\xB3\xB7\xAE \xB1\xE2\xC8\xB8\xB4\xC2 20 \xC0\xCC\xC7\xCF\xC0\xC7 \xB9\xAB\xB1\xE2\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9"));
 			return false;
 		}
 
@@ -846,7 +846,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 
 	if (result_vnum == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -858,7 +858,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	if (!pProto)
 	{
 		SPDLOG_ERROR("DoRefine NOT GET ITEM PROTO {}", item->GetRefinedVnum());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -874,7 +874,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 				case LIMIT_LEVEL:
 					if (GetLevel() < limit)
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    Ѻ  ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xB5\xC8 \xC8\xC4 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 					break;
@@ -885,7 +885,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	// REFINE_COST
 	if (GetGold() < cost)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ   մϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -899,7 +899,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 				{
 					ChatPacket(CHAT_TYPE_INFO, "Find %d, count %d, require %d", prt->materials[i].vnum, CountSpecifyItem(prt->materials[i].vnum), prt->materials[i].count);
 				}
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ  ᰡ մϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 				return false;
 			}
 		}
@@ -1026,7 +1026,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	if (result_vnum == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1035,7 +1035,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	{
 		if (item->GetRefineLevel() >= 4)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ̻   ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB0\xB3\xB7\xAE\xBC\xAD\xB7\xCE \xB4\xF5 \xC0\xCC\xBB\xF3 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -1045,7 +1045,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	{
 		if (item->GetRefineLevel() != pkItemScroll->GetValue(1))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB0\xB3\xB7\xAE\xBC\xAD\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -1053,7 +1053,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	{
 		if (item->GetType() != ITEM_METIN || item->GetRefineLevel() != 4)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -1063,7 +1063,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	if (!pProto)
 	{
 		SPDLOG_ERROR("DoRefineWithScroll NOT GET ITEM PROTO {}", item->GetRefinedVnum());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1079,7 +1079,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 				case LIMIT_LEVEL:
 					if (GetLevel() < limit)
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    Ѻ  ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xB5\xC8 \xC8\xC4 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 					break;
@@ -1089,7 +1089,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	if (GetGold() < prt->cost)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ   մϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1101,7 +1101,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 			{
 				ChatPacket(CHAT_TYPE_INFO, "Find %d, count %d, require %d", prt->materials[i].vnum, CountSpecifyItem(prt->materials[i].vnum), prt->materials[i].count);
 			}
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϱ  ᰡ մϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -1271,7 +1271,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	// REFINE_COST
 	if (bType == REFINE_TYPE_MONEY_ONLY && !GetQuestFlag("deviltower_zone.can_refine"))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ÿ Ϸ  ѹ 밡մϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xB1\xCD \xC5\xB8\xBF\xF6 \xBF\xCF\xB7\xE1 \xBA\xB8\xBB\xF3\xC0\xBA \xC7\xD1\xB9\xF8\xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 	// END_OF_REFINE_COST
@@ -1287,7 +1287,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	if (p.result_vnum == 0)
 	{
 		SPDLOG_ERROR("RefineInformation p.result_vnum == 0");
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1295,7 +1295,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	{
 		if (bType == 0)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   δ   ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xC0\xCC \xB9\xE6\xBD\xC4\xC0\xB8\xB7\xCE\xB4\xC2 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 		else
@@ -1303,8 +1303,8 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 			LPITEM itemScroll = GetInventoryItem(iAdditionalCell);
 			if (!itemScroll || item->GetVnum() == itemScroll->GetVnum())
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ĥ  ϴ."));
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ູ  ö ĥ  ֽϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xBA \xB0\xB3\xB7\xAE\xBC\xAD\xB8\xA6 \xC7\xD5\xC4\xA5 \xBC\xF6\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xE0\xBA\xB9\xC0\xC7 \xBC\xAD\xBF\xCD \xC7\xF6\xC3\xB6\xC0\xBB \xC7\xD5\xC4\xA5 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return false;
 			}
 		}
@@ -1317,7 +1317,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	if (!prt)
 	{
 		SPDLOG_ERROR("RefineInformation NOT GET REFINE SET {}", item->GetRefineSet());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1329,7 +1329,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 		// Ϻ 
 		if (!item->CheckItemUseLevel(20) || item->GetType() != ITEM_WEAPON)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȸ 20  ⸸ մϴ"));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB7\xE1 \xB0\xB3\xB7\xAE \xB1\xE2\xC8\xB8\xB4\xC2 20 \xC0\xCC\xC7\xCF\xC0\xC7 \xB9\xAB\xB1\xE2\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9"));
 			return false;
 		}
 		p.cost = 0;
@@ -1418,7 +1418,7 @@ bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget)
 		}
 		else
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ִ ƾ ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xA9\xB3\xBE \xBC\xF6 \xC0\xD6\xB4\xC2 \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -1470,7 +1470,7 @@ bool CHARACTER::GiveRecallItem(LPITEM item)
 
 	if (iEmpireByMapIndex && GetEmpire() != iEmpireByMapIndex)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ġ Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xE2\xBE\xEF\xC7\xD8 \xB5\xD1 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1 \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1496,7 +1496,7 @@ bool CHARACTER::GiveRecallItem(LPITEM item)
 	}
 	else
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǰ   ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1534,7 +1534,7 @@ void CHARACTER::ProcessRecallItem(LPITEM item)
 		case 304:
 			if( GetLevel() < 90 )
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ѻ  ϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return;
 			}
 			else
@@ -1543,7 +1543,7 @@ void CHARACTER::ProcessRecallItem(LPITEM item)
 
 	if (iEmpireByMapIndex && GetEmpire() != iEmpireByMapIndex)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ġ Ÿ  ־ ȯ  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xE2\xBE\xEF\xB5\xC8 \xC0\xA7\xC4\xA1\xB0\xA1 \xC5\xB8\xC1\xA6\xB1\xB9\xBF\xA1 \xBC\xD3\xC7\xD8 \xC0\xD6\xBE\xEE\xBC\xAD \xB1\xCD\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		item->SetSocket(0, 0);
 		item->SetSocket(1, 0);
 	}
@@ -1566,7 +1566,7 @@ void CHARACTER::__OpenPrivateShop()
 			ChatPacket(CHAT_TYPE_COMMAND, "OpenPrivateShop");
 			break;
 		default:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("      ֽϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA9\xBF\xCA\xC0\xBB \xB9\xFE\xBE\xEE\xBE\xDF \xB0\xB3\xC0\xCE \xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			break;
 	}
 }
@@ -1628,7 +1628,7 @@ int CalculateConsume(LPCHARACTER ch)
 		const int needLife = ch->GetMaxHP() * needPercent / 100;
 		if (curLife < needLife)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ڶ   ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBB\xFD\xB8\xED\xB7\xC2 \xBE\xE7\xC0\xCC \xB8\xF0\xC0\xDA\xB6\xF3 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return -1;
 		}
 
@@ -1657,7 +1657,7 @@ int CalculateConsumeSP(LPCHARACTER lpChar)
 
 	if (curSP < needSP)
 	{
-		lpChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ŷ  ڶ   ϴ."));
+		lpChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xC1\xA4\xBD\xC5\xB7\xC2 \xBE\xE7\xC0\xCC \xB8\xF0\xC0\xDA\xB6\xF3 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return -1;
 	}
 
@@ -1680,7 +1680,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			case LIMIT_LEVEL:
 				if (GetLevel() < limitValue)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ѻ  ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				break;
@@ -1699,7 +1699,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 	if ( CArenaManager::instance().IsLimitedItem( GetMapIndex(), item->GetVnum() ) == true )
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1736,7 +1736,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			{
 				if (item->GetVnum() == 50051 || item->GetVnum() == 50052 || item->GetVnum() == 50053)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 			}
@@ -1763,13 +1763,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 				if (!tree)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ں ǿ   Դϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xF0\xB4\xDA\xBA\xD2\xC0\xBB \xC7\xC7\xBF\xEF \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xF6\xC1\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 
 				if (tree->IsAttr((int)(GetX()+fx), (int)(GetY()+fy), ATTR_WATER))
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ӿ ں ǿ  ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0 \xBC\xD3\xBF\xA1 \xB8\xF0\xB4\xDA\xBA\xD2\xC0\xBB \xC7\xC7\xBF\xEF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 
@@ -1863,7 +1863,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     Դϴ"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xC0\xCE \xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xF6\xBF\xAA\xC0\xD4\xB4\xCF\xB4\xD9"));
 											}
 										}
 										else
@@ -1922,7 +1922,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			{
 				if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 
@@ -1934,7 +1934,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 		case ITEM_TREASURE_BOX:
 			{
 				return false;
-				//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("  ־  ʴ° . 踦 غ."));
+				//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB7\xCE \xC0\xE1\xB0\xDC \xC0\xD6\xBE\xEE\xBC\xAD \xBF\xAD\xB8\xAE\xC1\xF6 \xBE\xCA\xB4\xC2\xB0\xCD \xB0\xB0\xB4\xD9. \xBF\xAD\xBC\xE8\xB8\xA6 \xB1\xB8\xC7\xD8\xBA\xB8\xC0\xDA."));
 			}
 			break;
 
@@ -1950,13 +1950,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 				if (item2->GetType() != ITEM_TREASURE_BOX)
 				{
-					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("   ƴѰ ."));
+					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB7\xCE \xBF\xA9\xB4\xC2 \xB9\xB0\xB0\xC7\xC0\xCC \xBE\xC6\xB4\xD1\xB0\xCD \xB0\xB0\xB4\xD9."));
 					return false;
 				}
 
 				if (item->GetValue(0) == item2->GetValue(0))
 				{
-					//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("   ִ κ  ȵǾϴ."));
+					//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB4\xC2 \xB8\xC2\xC0\xB8\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB \xC1\xD6\xB4\xC2 \xBA\xCE\xBA\xD0 \xB1\xB8\xC7\xF6\xC0\xCC \xBE\xC8\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 					DWORD dwBoxVnum = item2->GetVnum();
 					std::vector  dwVnums;
 					std::vector  dwCounts;
@@ -1972,34 +1972,34 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							switch (dwVnums[i])
 							{
 								case CSpecialItemGroup::GOLD:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d  ȹ߽ϴ."), dwCounts[i]);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 									break;
 								case CSpecialItemGroup::EXP:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ  ź  ɴϴ."));
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ġ ȹ߽ϴ."), dwCounts[i]);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 									break;
 								case CSpecialItemGroup::MOB:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ Ͱ Ÿϴ!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
 									break;
 								case CSpecialItemGroup::SLOW:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ   ⸦ ̸ ̴ ӵ ϴ!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xBB\xA1\xB0\xA3 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xBF\xF2\xC1\xF7\xC0\xCC\xB4\xC2 \xBC\xD3\xB5\xB5\xB0\xA1 \xB4\xC0\xB7\xC1\xC1\xB3\xBD\xC0\xB4\xCF\xB4\xD9!"));
 									break;
 								case CSpecialItemGroup::DRAIN_HP:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڰ ڱ Ͽϴ!  ߽ϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xB0\xA1 \xB0\xA9\xC0\xDA\xB1\xE2 \xC6\xF8\xB9\xDF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! \xBB\xFD\xB8\xED\xB7\xC2\xC0\xCC \xB0\xA8\xBC\xD2\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 									break;
 								case CSpecialItemGroup::POISON:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ   ⸦ ̸  ¸ ϴ!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xB3\xEC\xBB\xF6 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xB5\xB6\xC0\xCC \xBF\xC2\xB8\xF6\xC0\xB8\xB7\xCE \xC6\xDB\xC1\xFD\xB4\xCF\xB4\xD9!"));
 									break;
 								case CSpecialItemGroup::MOB_GROUP:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ Ͱ Ÿϴ!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
 									break;
 								default:
 									if (item_gets[i])
 									{
 										if (dwCounts[i] > 1)
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ %s  %d  Խϴ."), item_gets[i]->GetName(), dwCounts[i]);
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 %d \xB0\xB3 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName(), dwCounts[i]);
 										else
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ %s  Խϴ."), item_gets[i]->GetName());
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName());
 
 									}
 							}
@@ -2007,13 +2007,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 					}
 					else
 					{
-						ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("谡  ʴ  ."));
+						ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB0\xA1 \xB8\xC2\xC1\xF6 \xBE\xCA\xB4\xC2 \xB0\xCD \xB0\xB0\xB4\xD9."));
 						return false;
 					}
 				}
 				else
 				{
-					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("谡  ʴ  ."));
+					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB0\xA1 \xB8\xC2\xC1\xF6 \xBE\xCA\xB4\xC2 \xB0\xCD \xB0\xB0\xB4\xD9."));
 					return false;
 				}
 			}
@@ -2031,7 +2031,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (GetLevel() < 15)
 					{
-						ChatPacket(CHAT_TYPE_INFO, "15 Ͽ   ϴ.");
+						ChatPacket(CHAT_TYPE_INFO, "15\xB7\xB9\xBA\xA7 \xC0\xCC\xC7\xCF\xBF\xA1\xBC\xAD\xB4\xC2 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.");
 						return false;
 					}
 				}
@@ -2040,7 +2040,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if( !(this->DragonSoul_IsQualified()) )
 					{
-						ChatPacket(CHAT_TYPE_INFO,LC_TEXT(" ȥ Ʈ Ϸϼž մϴ."));
+						ChatPacket(CHAT_TYPE_INFO,LC_TEXT("\xB8\xD5\xC0\xFA \xBF\xEB\xC8\xA5\xBC\xAE \xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xBF\xCF\xB7\xE1\xC7\xCF\xBC\xC5\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -2053,41 +2053,41 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						switch (dwVnums[i])
 						{
 						case CSpecialItemGroup::GOLD:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d  ȹ߽ϴ."), dwCounts[i]);
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 							break;
 						case CSpecialItemGroup::EXP:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ  ź  ɴϴ."));
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ġ ȹ߽ϴ."), dwCounts[i]);
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 							break;
 						case CSpecialItemGroup::MOB:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ Ͱ Ÿϴ!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
 							break;
 						case CSpecialItemGroup::SLOW:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ   ⸦ ̸ ̴ ӵ ϴ!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xBB\xA1\xB0\xA3 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xBF\xF2\xC1\xF7\xC0\xCC\xB4\xC2 \xBC\xD3\xB5\xB5\xB0\xA1 \xB4\xC0\xB7\xC1\xC1\xB3\xBD\xC0\xB4\xCF\xB4\xD9!"));
 							break;
 						case CSpecialItemGroup::DRAIN_HP:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڰ ڱ Ͽϴ!  ߽ϴ."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xB0\xA1 \xB0\xA9\xC0\xDA\xB1\xE2 \xC6\xF8\xB9\xDF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! \xBB\xFD\xB8\xED\xB7\xC2\xC0\xCC \xB0\xA8\xBC\xD2\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 							break;
 						case CSpecialItemGroup::POISON:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ   ⸦ ̸  ¸ ϴ!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xB3\xEC\xBB\xF6 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xB5\xB6\xC0\xCC \xBF\xC2\xB8\xF6\xC0\xB8\xB7\xCE \xC6\xDB\xC1\xFD\xB4\xCF\xB4\xD9!"));
 							break;
 						case CSpecialItemGroup::MOB_GROUP:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ Ͱ Ÿϴ!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
 							break;
 						default:
 							if (item_gets[i])
 							{
 								if (dwCounts[i] > 1)
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ %s  %d  Խϴ."), item_gets[i]->GetName(), dwCounts[i]);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 %d \xB0\xB3 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName(), dwCounts[i]);
 								else
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ %s  Խϴ."), item_gets[i]->GetName());
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName());
 							}
 						}
 					}
 				}
 				else
 				{
-					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("ƹ͵   ϴ."));
+					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBE\xC6\xB9\xAB\xB0\xCD\xB5\xB5 \xBE\xF2\xC0\xBB \xBC\xF6 \xBE\xF8\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 			}
@@ -2106,10 +2106,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				if (SkillLevelDown(dwVnum))
 				{
 					ITEM_MANAGER::instance().RemoveItem(item);
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ų  µ Ͽϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xBA\xC5\xB3 \xB7\xB9\xBA\xA7\xC0\xBB \xB3\xBB\xB8\xAE\xB4\xC2\xB5\xA5 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ų    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xBA\xC5\xB3 \xB7\xB9\xBA\xA7\xC0\xBB \xB3\xBB\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			break;
 
@@ -2117,7 +2117,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			{
 				if (IsPolymorphed())
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 
@@ -2174,7 +2174,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						case USE_ABILITY_UP:
 							if (FindAffect(affect_type, apply_type))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ȿ ɷ ֽϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
@@ -2215,7 +2215,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						{
 							if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, aApplyInfo[item->GetValue(1)].bPointType))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ȿ ɷ ֽϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 							}
 							else
 							{
@@ -2226,7 +2226,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (CPCBangManager::instance().IsPCBangIP(GetDesc()->GetHostName()) == false)
 									{
 										// PC ƴ!
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  PC濡   ֽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA PC\xB9\xE6\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 								}
@@ -2244,7 +2244,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									return false;
 								}
 
@@ -2258,14 +2258,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (m_nPotionLimit <= 0)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ѷ ʰϿϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB \xC1\xA6\xC7\xD1\xB7\xAE\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 												return false;
 											}
 										}
 										break;
 
 									default :
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										break;
 								}
@@ -2318,7 +2318,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								if (item->GetVnum() == 50085 || item->GetVnum() == 50086)
 								{
 									if (test_server)
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ǵ   Ͽϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xF9\xBA\xB4 \xB6\xC7\xB4\xC2 \xC1\xBE\xC0\xDA \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
 									SetUseSeedOrMoonBottleTime();
 								}
 								if (GetDungeon())
@@ -2345,7 +2345,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -2385,7 +2385,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										sprintf(buf, "Inc %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									}
 
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ŭ Ǿϴ."), ret);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC3\xCA \xB8\xB8\xC5\xAD \xC3\xE6\xC0\xFC\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), ret);
 									item->SetCount(item->GetCount() - 1);
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_SUCCESS", buf);
 									return true;
@@ -2401,7 +2401,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										sprintf(buf, "No change by item{VN:%d VAL%d:%d}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									}
 
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xE6\xC0\xFC\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_FAILED", buf);
 									return false;
 								}
@@ -2424,7 +2424,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								char buf[128];
 								if (ret)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ŭ Ǿϴ."), ret);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC3\xCA \xB8\xB8\xC5\xAD \xC3\xE6\xC0\xFC\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), ret);
 									sprintf(buf, "Increase %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_SUCCESS", buf);
 									item->SetCount(item->GetCount() - 1);
@@ -2432,7 +2432,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								else
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xE6\xC0\xFC\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									sprintf(buf, "No change by item{VN:%d VAL%d:%d}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_FAILED", buf);
 									return false;
@@ -2459,7 +2459,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									*/
 									if (FindAffect(AFFECT_NOG_ABILITY))
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ȿ ɷ ֽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 									int time = item->GetValue(0);
@@ -2503,7 +2503,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (CArenaManager::instance().IsArenaMap(pMarriage->ch1->GetMapIndex()) == true)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 												break;
 											}
 										}
@@ -2512,7 +2512,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (CArenaManager::instance().IsArenaMap(pMarriage->ch2->GetMapIndex()) == true)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 												break;
 											}
 										}
@@ -2527,7 +2527,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										WarpToPID(pMarriage->GetOther(GetPlayerID()));
 									}
 									else
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ ° ƴϸ ȥ   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE1\xC8\xA5 \xBB\xF3\xC5\xC2\xB0\xA1 \xBE\xC6\xB4\xCF\xB8\xE9 \xB0\xE1\xC8\xA5\xB9\xDD\xC1\xF6\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 								}
 								break;
 
@@ -2676,7 +2676,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ̺Ʈ Ⱑ  ʴ° ϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB0\xF7\xBF\xA1\xBC\xB1 \xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xB5\xBF\xC0\xDB\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2\xB0\xCD \xB0\xB0\xBD\xC0\xB4\xCF\xB4\xD9."));
 											return false;
 										}
 									}
@@ -2687,7 +2687,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (distance < 1000.0f)
 									{
 										// ߰!
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̺Ʈ Ⱑ źο   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xBD\xC5\xBA\xF1\xB7\xCE\xBF\xEE \xBA\xFB\xC0\xBB \xB3\xBB\xB8\xE7 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 
 										// Ƚ  ִ  ٸ Ѵ.
 										struct TEventStoneInfo
@@ -2838,7 +2838,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									const int STONE_DETECT_MAX_TRY = 10;
 									if (item->GetSocket(0) >= STONE_DETECT_MAX_TRY)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̺Ʈ Ⱑ   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xC8\xE7\xC0\xFB\xB5\xB5 \xBE\xF8\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 										ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (DETECT_EVENT_STONE) 0");
 										AutoGiveItem(27002);
 										return true;
@@ -2919,12 +2919,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("⸦ ۿϿ Ǵ  ϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA8\xC1\xF6\xB1\xE2\xB8\xA6 \xC0\xDB\xBF\xEB\xC7\xCF\xBF\xB4\xC0\xB8\xB3\xAA \xB0\xA8\xC1\xF6\xB5\xC7\xB4\xC2 \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 											}
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("⸦ ۿϿ Ǵ  ϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA8\xC1\xF6\xB1\xE2\xB8\xA6 \xC0\xDB\xBF\xEB\xC7\xCF\xBF\xB4\xC0\xB8\xB3\xAA \xB0\xA8\xC1\xF6\xB5\xC7\xB4\xC2 \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										}
 
 										if (item->GetSocket(0) >= 6)
@@ -2969,7 +2969,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (r <= 50)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Խϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xB5\xB9\xC1\xB6\xB0\xA2\xC0\xCC \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 										AutoGiveItem(27990);
 									}
 									else
@@ -2988,21 +2988,21 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 										if (r <= prob_table[0])
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xB0\xA1 \xC8\xE7\xC0\xFB\xB5\xB5 \xBE\xF8\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 										}
 										else if (r <= prob_table[1])
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ְ Խϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xB9\xE9\xC1\xF8\xC1\xD6\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 											AutoGiveItem(27992);
 										}
 										else if (r <= prob_table[2])
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ûְ Խϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xC3\xBB\xC1\xF8\xC1\xD6\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 											AutoGiveItem(27993);
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ְ Խϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xC7\xC7\xC1\xF8\xC1\xD6\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 											AutoGiveItem(27994);
 										}
 									}
@@ -3034,7 +3034,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     Դϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xC0\xCE \xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xF6\xBF\xAA\xC0\xD4\xB4\xCF\xB4\xD9"));
 									}
 								}
 								else
@@ -3054,7 +3054,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed() == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3062,13 +3062,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (lv < item->GetValue(0))
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" å ʹ  ϱⰡ ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBA \xB3\xCA\xB9\xAB \xBE\xEE\xB7\xC1\xBF\xF6 \xC0\xCC\xC7\xD8\xC7\xCF\xB1\xE2\xB0\xA1 \xC8\xFB\xB5\xEC\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (lv >= item->GetValue(1))
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" å ƹ      ʽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBA \xBE\xC6\xB9\xAB\xB8\xAE \xBA\xC1\xB5\xB5 \xB5\xB5\xBF\xF2\xC0\xCC \xB5\xC9 \xB0\xCD \xB0\xB0\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3090,25 +3090,25 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										
 									}
 									if (GetSkillLevel(SKILL_COMBO) == 0 && GetLevel() < 30)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 30 DZ       ʽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xB9\xBA\xA7 30\xC0\xCC \xB5\xC7\xB1\xE2 \xC0\xFC\xBF\xA1\xB4\xC2 \xBD\xC0\xB5\xE6\xC7\xD2 \xBC\xF6 \xC0\xD6\xC0\xBB \xB0\xCD \xB0\xB0\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (GetSkillLevel(SKILL_COMBO) == 1 && GetLevel() < 50)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 50 DZ       ʽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xB9\xBA\xA7 50\xC0\xCC \xB5\xC7\xB1\xE2 \xC0\xFC\xBF\xA1\xB4\xC2 \xBD\xC0\xB5\xE6\xC7\xD2 \xBC\xF6 \xC0\xD6\xC0\xBB \xB0\xCD \xB0\xB0\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (GetSkillLevel(SKILL_COMBO) >= 2)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xAC\xB0\xE8\xB1\xE2\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3131,7 +3131,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										
 									}
@@ -3139,7 +3139,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									int iPct = std::clamp(item->GetValue(1), 0, 100);
 									if (GetSkillLevel(dwSkillVnum)>=20 || dwSkillVnum-SKILL_LANGUAGE1+1 == GetEmpire())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ Ϻϰ ˾Ƶ  ִ ̴."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xBF\xCF\xBA\xAE\xC7\xCF\xB0\xD4 \xBE\xCB\xBE\xC6\xB5\xE9\xC0\xBB \xBC\xF6 \xC0\xD6\xB4\xC2 \xBE\xF0\xBE\xEE\xC0\xCC\xB4\xD9."));
 										return false;
 									}
 
@@ -3159,7 +3159,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										
 									}
@@ -3168,7 +3168,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetSkillLevel(dwSkillVnum) >= 10)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3190,7 +3190,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed() == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 									
@@ -3223,25 +3223,25 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetLevel() < iLevelLimit)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" å    ÷ մϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xB8\xB7\xC1\xB8\xE9 \xB7\xB9\xBA\xA7\xC0\xBB \xB4\xF5 \xBF\xC3\xB7\xC1\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (GetSkillLevel(dwSkillVnum) >= 40)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (GetSkillLevel(dwSkillVnum) < iSkillLevelLowLimit)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" å ʹ  ϱⰡ ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBA \xB3\xCA\xB9\xAB \xBE\xEE\xB7\xC1\xBF\xF6 \xC0\xCC\xC7\xD8\xC7\xCF\xB1\xE2\xB0\xA1 \xC8\xFB\xB5\xEC\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (GetSkillLevel(dwSkillVnum) >= iSkillLevelHighLimit)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" åδ  ̻   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xB8\xB7\xCE\xB4\xC2 \xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3263,7 +3263,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										
 									}
@@ -3272,7 +3272,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetSkillLevel(dwSkillVnum)>=40)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3305,7 +3305,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										
 									}
@@ -3314,7 +3314,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetSkillLevel(dwSkillVnum)>=40)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3335,7 +3335,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߿ å  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 										
 									}
@@ -3344,7 +3344,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetLevel() < 50)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ¸ ų   ִ  ƴմϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xBD\xC2\xB8\xB6 \xBD\xBA\xC5\xB3\xC0\xBB \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xB7\xB9\xBA\xA7\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3354,7 +3354,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											// ־ȼ ߿ ð  
 											RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("־ȼ  ȭԸ Խϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 										}
 										else
 										{
@@ -3367,14 +3367,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											GetSkillLevel(SKILL_HORSE_WILDATTACK) + GetSkillLevel(SKILL_HORSE_CHARGE) + GetSkillLevel(SKILL_HORSE_ESCAPE) >= 60 ||
 											GetSkillLevel(SKILL_HORSE_WILDATTACK_RANGE) + GetSkillLevel(SKILL_HORSE_CHARGE) + GetSkillLevel(SKILL_HORSE_ESCAPE) >= 60)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻ ¸ ü   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBD\xC2\xB8\xB6 \xBC\xF6\xB7\xC3\xBC\xAD\xB8\xA6 \xC0\xD0\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (Random::get(1, 100) <= iPct)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸ ü о ¸ ų Ʈ ϴ."));
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ʈδ ¸ ų  ø  ֽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xC2\xB8\xB6 \xBC\xF6\xB7\xC3\xBC\xAD\xB8\xA6 \xC0\xD0\xBE\xEE \xBD\xC2\xB8\xB6 \xBD\xBA\xC5\xB3 \xC6\xF7\xC0\xCE\xC6\xAE\xB8\xA6 \xBE\xF2\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xF2\xC0\xBA \xC6\xF7\xC0\xCE\xC6\xAE\xB7\xCE\xB4\xC2 \xBD\xC2\xB8\xB6 \xBD\xBA\xC5\xB3\xC0\xC7 \xB7\xB9\xBA\xA7\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 										PointChange(POINT_HORSE_SKILL, 1);
 
 										int iReadDelay = Random::get(SKILLBOOK_DELAY_MIN, SKILLBOOK_DELAY_MAX);
@@ -3385,7 +3385,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("¸ ü ؿ Ͽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xC2\xB8\xB6 \xBC\xF6\xB7\xC3\xBC\xAD \xC0\xCC\xC7\xD8\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 									}
 
 									ITEM_MANAGER::instance().RemoveItem(item);
@@ -3407,8 +3407,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (delta / 10 > 0)
 									{
-										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT(" ±.   𰡰   ̾."));
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ġ %d Ͽϴ."), delta/10);
+										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xB6\xC0\xBD\xC0\xCC \xB8\xBC\xBE\xC6\xC1\xF6\xB4\xC2\xB1\xBA. \xB0\xA1\xBD\xBF\xC0\xBB \xC1\xFE\xB4\xA9\xB8\xA3\xB4\xF8 \xB9\xAB\xBE\xF0\xB0\xA1\xB0\xA1 \xC1\xBB \xB0\xA1\xBA\xAD\xBF\xF6\xC1\xF8 \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xBE\xC7\xC4\xA1\xB0\xA1 %d \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), delta/10);
 									}
 								}
 								break;
@@ -3424,18 +3424,18 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									{
 										if (test_server == false)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 											return false;
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׽Ʈ  ð "));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xD7\xBD\xBA\xC6\xAE \xBC\xAD\xB9\xF6 \xBD\xC3\xB0\xA3\xC1\xA6\xC7\xD1 \xC5\xEB\xB0\xFA"));
 										}
 									}
 									
 									if (GetAlignment() == 200000)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ġ  ̻ ø  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xBE\xC7\xC4\xA1\xB8\xA6 \xB4\xF5 \xC0\xCC\xBB\xF3 \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 									
@@ -3451,8 +3451,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									item->SetCount(item->GetCount()-1);
 									pPC->SetFlag("mythical_peach.last_use_time", get_global_time());
 
-									ChatPacket(CHAT_TYPE_TALKING, LC_TEXT(" ±.   𰡰   ̾."));
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ġ %d Ͽϴ."), val);
+									ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xB6\xC0\xBD\xC0\xCC \xB8\xBC\xBE\xC6\xC1\xF6\xB4\xC2\xB1\xBA. \xB0\xA1\xBD\xBF\xC0\xBB \xC1\xFE\xB4\xA9\xB8\xA3\xB4\xF8 \xB9\xAB\xBE\xF0\xB0\xA1\xB0\xA1 \xC1\xBB \xB0\xA1\xBA\xAD\xBF\xF6\xC1\xF8 \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xBE\xC7\xC4\xA1\xB0\xA1 %d \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), val);
 
 									char buf[256 + 1];
 									snprintf(buf, sizeof(buf), "%d %d", old_alignment, GetAlignment() / 10);
@@ -3484,7 +3484,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											case ARMOR_EAR:
 											case ARMOR_WRIST:
 											case ARMOR_NECK:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϴ"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xA9\xB3\xBE \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 												return false;
 											}
 											break;
@@ -3511,7 +3511,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (socket.size() == 0)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xA9\xB3\xBE \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 										return false;
 									}
 
@@ -3541,7 +3541,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									// NEW_HAIR_STYLE_ADD
 									if (GetPart(PART_HAIR) >= 1001)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ŸϿ  Ż Ұմϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xC7\xEC\xBE\xEE\xBD\xBA\xC5\xB8\xC0\xCF\xBF\xA1\xBC\xAD\xB4\xC2 \xBF\xB0\xBB\xF6\xB0\xFA \xC5\xBB\xBB\xF6\xC0\xCC \xBA\xD2\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 									}
 									// END_NEW_HAIR_STYLE_ADD
 									else
@@ -3569,7 +3569,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d  Ǿ ٽ Ͻ  ֽϴ."), last_dye_level+3);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xB7\xB9\xBA\xA7\xC0\xCC \xB5\xC7\xBE\xEE\xBE\xDF \xB4\xD9\xBD\xC3 \xBF\xB0\xBB\xF6\xC7\xCF\xBD\xC7 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), last_dye_level+3);
 											}
 										}
 									}
@@ -3589,7 +3589,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										for (int i = 0; i < count; i++)
 										{
 											if (dwVnums[i] == CSpecialItemGroup::GOLD)
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d  ȹ߽ϴ."), dwCounts[i]);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 										}
 
 										item->SetCount(item->GetCount() - 1);
@@ -3611,7 +3611,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										item->GetVnum() == ITEM_VALENTINE_CHOCOLATE && SEX_FEMALE==GET_SEX(this))
 									{
 										//  ʾ   .
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʾ     ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3635,7 +3635,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										item->GetVnum() == ITEM_WHITEDAY_ROSE && SEX_FEMALE==GET_SEX(this))
 									{
 										//  ʾ   .
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʾ     ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3667,41 +3667,41 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											switch (dwVnums[i])
 											{
 											case CSpecialItemGroup::GOLD:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d  ȹ߽ϴ."), dwCounts[i]);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 												break;
 
 											case CSpecialItemGroup::EXP:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ  ź  ɴϴ."));
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ġ ȹ߽ϴ."), dwCounts[i]);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 												break;
 
 											case CSpecialItemGroup::MOB:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ Ͱ Ÿϴ!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
 												break;
 
 											case CSpecialItemGroup::SLOW:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ   ⸦ ̸ ̴ ӵ ϴ!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xBB\xA1\xB0\xA3 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xBF\xF2\xC1\xF7\xC0\xCC\xB4\xC2 \xBC\xD3\xB5\xB5\xB0\xA1 \xB4\xC0\xB7\xC1\xC1\xB3\xBD\xC0\xB4\xCF\xB4\xD9!"));
 												break;
 
 											case CSpecialItemGroup::DRAIN_HP:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڰ ڱ Ͽϴ!  ߽ϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xB0\xA1 \xB0\xA9\xC0\xDA\xB1\xE2 \xC6\xF8\xB9\xDF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! \xBB\xFD\xB8\xED\xB7\xC2\xC0\xCC \xB0\xA8\xBC\xD2\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 												break;
 
 											case CSpecialItemGroup::POISON:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ   ⸦ ̸  ¸ ϴ!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xB3\xEC\xBB\xF6 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xB5\xB6\xC0\xCC \xBF\xC2\xB8\xF6\xC0\xB8\xB7\xCE \xC6\xDB\xC1\xFD\xB4\xCF\xB4\xD9!"));
 												break;
 
 											case CSpecialItemGroup::MOB_GROUP:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ Ͱ Ÿϴ!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
 												break;
 
 											default:
 												if (item_gets[i])
 												{
 													if (dwCounts[i] > 1)
-														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ %s  %d  Խϴ."), item_gets[i]->GetName(), dwCounts[i]);
+														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 %d \xB0\xB3 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName(), dwCounts[i]);
 													else
-														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڿ %s  Խϴ."), item_gets[i]->GetName());
+														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName());
 												}
 												break;
 											}
@@ -3709,7 +3709,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("ƹ͵   ϴ."));
+										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBE\xC6\xB9\xAB\xB0\xCD\xB5\xB5 \xBE\xF2\xC0\xBB \xBC\xF6 \xBE\xF8\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 								}
@@ -3736,7 +3736,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3771,7 +3771,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									int iGold = item->GetSocket(0);
 									ITEM_MANAGER::instance().RemoveItem(item);
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d  ȹ߽ϴ."), iGold);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), iGold);
 									PointChange(POINT_GOLD, iGold);
 								}
 								break;
@@ -3786,10 +3786,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (CMonarch::instance().HealMyEmpire(this, HealPrice))
 									{
 										char szNotice[256];
-										snprintf(szNotice, sizeof(szNotice), LC_TEXT(" ູ  %s  HP,SP  äϴ."), EMPIRE_NAME(GetEmpire()));
+										snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 HP,SP\xB0\xA1 \xB8\xF0\xB5\xCE \xC3\xA4\xBF\xF6\xC1\xFD\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GetEmpire()));
 										SendNoticeMap(szNotice, GetMapIndex(), false);
 										
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ູ Ͽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 									}
 								}
 								break;
@@ -3836,13 +3836,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ    Դϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (item2->AddRareAttribute() == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ӽ ߰ Ǿϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xBC\xD3\xBC\xBA\xC0\xCC \xC3\xDF\xB0\xA1 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"));
 
 										int iAddedIdx = item2->GetRareAttrCount() + 4;
 										char buf[21];
@@ -3862,7 +3862,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   Ӽ ߰  ϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 									}
 								}
 								break;
@@ -3883,7 +3883,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ    Դϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3897,7 +3897,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ų Ӽ ϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xB0\xE6 \xBD\xC3\xC5\xB3 \xBC\xD3\xBC\xBA\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 									}
 								}
 								break;
@@ -3921,7 +3921,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -3964,7 +3964,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 										if (-1 == pos)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǰ   ϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 											break;
 										}
 
@@ -4074,7 +4074,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (get_global_time() - last_use_time < 10*60)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -4093,7 +4093,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									return false;
 								}
 
@@ -4107,14 +4107,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (m_nPotionLimit <= 0)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ѷ ʰϿϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB \xC1\xA6\xC7\xD1\xB7\xAE\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 												return false;
 											}
 										}
 										break;
 
 									default :
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 								}
 							}
@@ -4166,7 +4166,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								if (item->GetVnum() == 50085 || item->GetVnum() == 50086)
 								{
 									if (test_server)
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ǵ   Ͽϴ"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xF9\xBA\xB4 \xB6\xC7\xB4\xC2 \xC1\xBE\xC0\xDA \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
 									SetUseSeedOrMoonBottleTime();
 								}
 								if (GetDungeon())
@@ -4189,7 +4189,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						{
 							if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 						
@@ -4205,14 +4205,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									{
 										if (m_nPotionLimit <= 0)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ѷ ʰϿϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB \xC1\xA6\xC7\xD1\xB7\xAE\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 											return false;
 										}
 									}
 									break;
 
 								default :
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									return false;
 							}
 						}
@@ -4336,19 +4336,19 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							// gm_guild_build, oxevent ʿ ȯ ȯ  ϰ 
 							if (GetMapIndex() == 200 || GetMapIndex() == 113)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ġ   ϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xC0\xA7\xC4\xA1\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
 							if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̿   ǰԴϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
 							if (m_pkWarpEvent)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̵ غ Ǿ ȯθ Ҽ ϴ"));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB5\xBF\xC7\xD2 \xC1\xD8\xBA\xF1\xB0\xA1 \xB5\xC7\xBE\xEE\xC0\xD6\xC0\xBD\xC0\xB8\xB7\xCE \xB1\xCD\xC8\xAF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 								return false;
 							}
 
@@ -4385,7 +4385,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								else
 								{
 									if (test_server)
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ġ "));	
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xF8\xB7\xA1 \xC0\xA7\xC4\xA1\xB7\xCE \xBA\xB9\xB1\xCD"));	
 
 									ProcessRecallItem(item);
 								}
@@ -4396,7 +4396,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (GetDungeon())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȿ %s%s   ϴ."),
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF8\xC0\xFC \xBE\xC8\xBF\xA1\xBC\xAD\xB4\xC2 %s%s \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."),
 												item->GetName(), "");
 										return false;
 									}
@@ -4429,7 +4429,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 	
 							if (item2->GetVnum() >= 28330 && item2->GetVnum() <= 28343) // +3
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("+3      ϴ"));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("+3 \xBF\xB5\xBC\xAE\xC0\xBA \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 								return false;
 							}
 							
@@ -4441,7 +4441,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								else
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     ϴ"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xB5\xBC\xAE\xC0\xBA \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 								}
 							}
 							else
@@ -4476,7 +4476,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							// ׵ ʿ ġ  ش޷ ׳ ⼭ ... -_-
 							if (ITEM_COSTUME == item2->GetType())
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ    Դϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
@@ -4496,7 +4496,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 										if (i == ITEM_SOCKET_MAX_NUM)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("û   ʽϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xBB\xBC\xD2\xC7\xD2 \xBC\xAE\xC0\xCC \xB9\xDA\xC7\xF4\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 											return false;
 										}
 
@@ -4528,13 +4528,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								case USE_CHANGE_ATTRIBUTE :
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ    Դϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
 									if (item2->GetAttributeCount() == 0)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ӽ ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xD3\xBC\xBA\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -4559,7 +4559,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 											if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ ٲ %d ̳ ٽ   ϴ.(%d  )"),
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xB9\xD9\xB2\xDB\xC1\xF6 %d\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xBD\xC3 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.(%d \xBA\xD0 \xB3\xB2\xC0\xBD)"),
 														dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));
 												return false;
 											}
@@ -4607,20 +4607,20 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 												}
 												if (false == bCanUse)
 												{
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    Ұմϴ."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xBF\xEB \xB7\xB9\xBA\xA7\xBA\xB8\xB4\xD9 \xB3\xF4\xBE\xC6 \xBB\xE7\xBF\xEB\xC0\xCC \xBA\xD2\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 													break;
 												}
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʿ  մϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB1\xE2\xBF\xCD \xB0\xA9\xBF\xCA\xBF\xA1\xB8\xB8 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 												break;
 											}
 										}
 										item2->ChangeAttribute();
 									}
 
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ Ͽϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 									{
 										char buf[21];
 										snprintf(buf, sizeof(buf), "%u", item2->GetID());
@@ -4633,7 +4633,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								case USE_ADD_ATTRIBUTE :
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ    Դϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -4657,13 +4657,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 												}
 												if (false == bCanUse)
 												{
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    Ұմϴ."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xBF\xEB \xB7\xB9\xBA\xA7\xBA\xB8\xB4\xD9 \xB3\xF4\xBE\xC6 \xBB\xE7\xBF\xEB\xC0\xCC \xBA\xD2\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 													break;
 												}
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʿ  մϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB1\xE2\xBF\xCD \xB0\xA9\xBF\xCA\xBF\xA1\xB8\xB8 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 												break;
 											}
 										}
@@ -4673,7 +4673,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										if (Random::get(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
 										{
 											item2->AddAttribute();
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ ߰ Ͽϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 											int iAddedIdx = item2->GetAttributeCount() - 1;
 											LogManager::instance().ItemLog(
@@ -4688,7 +4688,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ ߰ Ͽϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 											LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE_FAIL", buf);
 										}
 
@@ -4696,7 +4696,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̻   ̿Ͽ Ӽ ߰  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5\xC0\xCC\xBB\xF3 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xC0\xCC\xBF\xEB\xC7\xCF\xBF\xA9 \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									}
 									break;
 
@@ -4705,7 +4705,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									// 簡񼭸  Ӽ 4 ߰ Ų ۿ ؼ ϳ Ӽ  ٿش.
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ    Դϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
@@ -4718,7 +4718,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										if (Random::get(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
 										{
 											item2->AddAttribute();
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ ߰ Ͽϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 											int iAddedIdx = item2->GetAttributeCount() - 1;
 											LogManager::instance().ItemLog(
@@ -4733,7 +4733,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ӽ ߰ Ͽϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 											LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE2_FAIL", buf);
 										}
 
@@ -4741,11 +4741,11 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else if (item2->GetAttributeCount() == 5)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̻   ̿Ͽ Ӽ ߰  ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xC0\xCC\xBF\xEB\xC7\xCF\xBF\xA9 \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									}
 									else if (item2->GetAttributeCount() < 4)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 簡񼭸 ̿Ͽ Ӽ ߰ ּ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xD5\xC0\xFA \xC0\xE7\xB0\xA1\xBA\xF1\xBC\xAD\xB8\xA6 \xC0\xCC\xBF\xEB\xC7\xCF\xBF\xA9 \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xBD\xC3\xC4\xD1 \xC1\xD6\xBC\xBC\xBF\xE4."));
 									}
 									else
 									{
@@ -4766,12 +4766,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 												if (Random::get(1, 100) <= 50)
 												{
 													item2->SetAccessorySocketMaxGrade(item2->GetAccessorySocketMaxGrade() + 1);
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ߰Ǿϴ."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC4\xCF\xC0\xCC \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xC3\xDF\xB0\xA1\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 													LogManager::instance().ItemLog(this, item, "ADD_SOCKET_SUCCESS", buf);
 												}
 												else
 												{
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߰ Ͽϴ."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC4\xCF \xC3\xDF\xB0\xA1\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 													LogManager::instance().ItemLog(this, item, "ADD_SOCKET_FAIL", buf);
 												}
 
@@ -4779,12 +4779,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ׼ ̻  ߰  ϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xD7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 											}
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ߰   Դϴ."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										}
 									}
 									break;
@@ -4801,12 +4801,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											if (Random::get(1, 100) <= aiAccessorySocketPutPct[item2->GetAccessorySocketGrade()])
 											{
 												item2->SetAccessorySocketGrade(item2->GetAccessorySocketGrade() + 1);
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ͽϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE5\xC2\xF8\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 												LogManager::instance().ItemLog(this, item, "PUT_SOCKET_SUCCESS", buf);
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ͽϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE5\xC2\xF8\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 												LogManager::instance().ItemLog(this, item, "PUT_SOCKET_FAIL", buf);
 											}
 
@@ -4815,19 +4815,19 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										else
 										{
 											if (item2->GetAccessorySocketMaxGrade() == 0)
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ̾Ƹ Ǽ  ߰ؾմϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xD5\xC0\xFA \xB4\xD9\xC0\xCC\xBE\xC6\xB8\xF3\xB5\xE5\xB7\xCE \xBE\xC7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1 \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD8\xBE\xDF\xC7\xD5\xB4\xCF\xB4\xD9."));
 											else if (item2->GetAccessorySocketMaxGrade() < ITEM_ACCESSORY_SOCKET_MAX_NUM)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ׼ ̻   ϴ."));
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̾Ƹ  ߰ؾմϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xD7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xD2\xC4\xCF\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xC0\xCC\xBE\xC6\xB8\xF3\xB5\xE5\xB7\xCE \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD8\xBE\xDF\xC7\xD5\xB4\xCF\xB4\xD9."));
 											}
 											else
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ׼ ̻    ϴ."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xD7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xBA\xB8\xBC\xAE\xC0\xBB \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										}
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 									}
 									break;
 							}
@@ -4844,7 +4844,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (m_pkFishingEvent)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߿ ̳ Ƴ  ϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3 \xC1\xDF\xBF\xA1 \xB9\xCC\xB3\xA2\xB8\xA6 \xB0\xA5\xBE\xC6\xB3\xA2\xBF\xEF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
@@ -4855,11 +4855,11 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (weapon->GetSocket(2))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ִ ̳  %s ϴ."), item->GetName());
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xB2\xC8\xC7\xF4\xC0\xD6\xB4\xF8 \xB9\xCC\xB3\xA2\xB8\xA6 \xBB\xA9\xB0\xED %s\xB8\xA6 \xB3\xA2\xBF\xF3\xB4\xCF\xB4\xD9."), item->GetName());
 							}
 							else
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ô뿡 %s ̳ ϴ."), item->GetName());
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3\xB4\xEB\xBF\xA1 %s\xB8\xA6 \xB9\xCC\xB3\xA2\xB7\xCE \xB3\xA2\xBF\xF3\xB4\xCF\xB4\xD9."), item->GetName());
 							}
 
 							weapon->SetSocket(2, item->GetValue(0));
@@ -4876,7 +4876,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						{
 							if (FindAffect(item->GetValue(0), aApplyInfo[item->GetValue(1)].bPointType))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ȿ ɷ ֽϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 							}
 							else
 							{
@@ -4887,7 +4887,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (CPCBangManager::instance().IsPCBangIP(GetDesc()->GetHostName()) == false)
 									{
 										// PC ƴ!
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  PC濡   ֽϴ."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA PC\xB9\xE6\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 								}
@@ -4917,7 +4917,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource1 == NULL)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ᰡ մϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xB6\xC7\xD5\xC0\xBB \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 									return false;
 								}
 							}
@@ -4926,7 +4926,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource2 == NULL)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ᰡ մϴ."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xB6\xC7\xD5\xC0\xBB \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 									return false;
 								}
 							}
@@ -4935,7 +4935,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource1->GetCount() < dwSourceCount1)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("(%s) մϴ."), pSource1->GetName());
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE7\xB7\xE1(%s)\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."), pSource1->GetName());
 									return false;
 								}
 
@@ -4946,7 +4946,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource2->GetCount() < dwSourceCount2)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("(%s) մϴ."), pSource2->GetName());
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE7\xB7\xE1(%s)\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."), pSource2->GetName());
 									return false;
 								}
 
@@ -4957,7 +4957,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (!pBottle || pBottle->GetCount() < 1)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ڸϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xF3 \xBA\xB4\xC0\xCC \xB8\xF0\xC0\xDA\xB8\xA8\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
@@ -4965,7 +4965,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (Random::get(1, 100) > item->GetValue(5))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ߽ϴ."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xA6\xC1\xB6\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 								return false;
 							}
 
@@ -5005,7 +5005,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 					if (item->GetValue(5) == p->alValues[5])
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ƾ    ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xBA \xBF\xA9\xB7\xAF\xB0\xB3 \xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -5014,7 +5014,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ƾ    ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xBA \xC0\xE5\xBA\xF1\xBF\xA1 \xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -5022,13 +5022,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (!IS_SET(item->GetWearFlag(), WEARABLE_WEAPON))
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ƾ ⿡   ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xBA \xB9\xAB\xB1\xE2\xBF\xA1 \xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
 				else
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ִ  ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xBD\xBD\xB7\xD4\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 
@@ -5038,12 +5038,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						//  Ȯ
 						if (Random::get(1, 100) <= 30)
 						{
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ƾ  Ͽϴ."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xDE\xC6\xBE\xBC\xAE \xBA\xCE\xC2\xF8\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 							item2->SetSocket(i, item->GetVnum());
 						}
 						else
 						{
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ƾ  Ͽϴ."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xDE\xC6\xBE\xBC\xAE \xBA\xCE\xC2\xF8\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 							item2->SetSocket(i, ITEM_BROKEN_METIN_VNUM);
 						}
 
@@ -5053,7 +5053,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 					}
 
 				if (i == ITEM_SOCKET_MAX_NUM)
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ִ  ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xBD\xBD\xB7\xD4\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			break;
 
@@ -5088,13 +5088,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				
 				if (FindAffect(affect_type, apply_type))
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ȿ ɷ ֽϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
 					if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ ȿ ɷ ֽϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 					}
 					else
 					{
@@ -5166,7 +5166,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 	if (!item->CanUsedBy(this))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʾ     ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xF7\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -5175,7 +5175,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 	if (false == FN_check_item_sex(this, item))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʾ     ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -5184,7 +5184,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 	{
 		if (false == IS_SUMMONABLE_ZONE(GetMapIndex()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ҽ ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 
@@ -5193,7 +5193,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//Ÿ  ʿ ȯθ ƹ.
 		if (CThreeWayWar::instance().IsThreeWayWarMapIndex(GetMapIndex()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ÿ  ߿ ȯ,ȯθ Ҽ ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xEF\xB0\xC5\xB8\xAE \xC0\xFC\xC5\xF5 \xC2\xFC\xB0\xA1\xC1\xDF\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 		int iPulse = thecore_pulse();
@@ -5201,7 +5201,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//â  üũ
 		if (iPulse - GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("â  %d ̳ ȯ,ȯθ   ϴ."), g_nPortalLimitTime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 
 			if (test_server)
 				ChatPacket(CHAT_TYPE_INFO, "[TestOnly]Pulse %d LoadTime %d PASS %d", iPulse, GetSafeboxLoadTime(), PASSES_PER_SEC(g_nPortalLimitTime));
@@ -5211,7 +5211,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//ŷ â üũ
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŷâ,â   ¿ ȯ,ȯ  Ҽ ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 
@@ -5220,7 +5220,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		{
 			if (iPulse - GetRefineTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  %d ̳ ȯ,ȯθ   ϴ."), g_nPortalLimitTime);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xB0\xB3\xB7\xAE\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 				return false;
 			}
 		}
@@ -5231,7 +5231,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		{
 			if (iPulse - GetMyShopTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("λ  %d ̳ ȯ,ȯθ   ϴ."), g_nPortalLimitTime);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1 \xBB\xE7\xBF\xEB\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 				return false;
 			}
 			
@@ -5276,7 +5276,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 			if (nDistant > nDist)
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̵ Ǿ ġ ʹ  ȯθ Ҽ ϴ."));				
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB5\xBF \xB5\xC7\xBE\xEE\xC1\xFA \xC0\xA7\xC4\xA1\xBF\xCD \xB3\xCA\xB9\xAB \xB0\xA1\xB1\xEE\xBF\xF6 \xB1\xCD\xC8\xAF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));				
 				if (test_server)
 					ChatPacket(CHAT_TYPE_INFO, "PossibleDistant %f nNowDist %f", nDistant,nDist); 
 				return false;
@@ -5287,7 +5287,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//ȯ  ðüũ
 		if (iPulse - GetExchangeTime()  < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŷ  %d ̳ ȯ,ȯε   ϴ."), g_nPortalLimitTime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB5\xEE\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 			return false;
 		}
 		//END_PREVENT_PORTAL_AFTER_EXCHANGE
@@ -5299,7 +5299,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 	{
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŷâ,â   ¿ ,ܺ Ҽ ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBA\xB8\xB5\xFB\xB8\xAE,\xBA\xF1\xB4\xDC\xBA\xB8\xB5\xFB\xB8\xAE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 
@@ -5342,7 +5342,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 	if (!CanHandleItem())
 	{
 		if (NULL != DragonSoul_RefineWindow_GetOpener())
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭâ  ¿  ű  ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC3\xA2\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -5363,7 +5363,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 
 	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_DROP | ITEM_ANTIFLAG_GIVE))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xF6\xB8\xB1 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -5414,7 +5414,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 		if (LC_IsYMIR())
 			item->AttrLog();
 
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  3  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB6\xB3\xBE\xEE\xC1\xF8 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA 3\xBA\xD0 \xC8\xC4 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 		pkItemToDrop->StartDestroyEvent();
 
 		ITEM_MANAGER::instance().FlushDelayedSave(pkItemToDrop);
@@ -5440,7 +5440,7 @@ bool CHARACTER::DropGold(int gold)
 	{
 		if (get_dword_time() < m_dwLastGoldDropTime+g_GoldDropTimeLimitValue)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" 带   ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xB0\xF1\xB5\xE5\xB8\xA6 \xB9\xF6\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -5477,12 +5477,12 @@ bool CHARACTER::DropGold(int gold)
 			if (false == LC_IsBrazil())
 			{
 				item->StartDestroyEvent(150);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  %d  ϴ."), 150/60);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB6\xB3\xBE\xEE\xC1\xF8 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA %d\xBA\xD0 \xC8\xC4 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."), 150/60);
 			}
 			else
 			{
 				item->StartDestroyEvent(60);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  %d  ϴ."), 1);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB6\xB3\xBE\xEE\xC1\xF8 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA %d\xBA\xD0 \xC8\xC4 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."), 1);
 			}
 		}
 
@@ -5523,14 +5523,14 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 	if (!CanHandleItem())
 	{
 		if (NULL != DragonSoul_RefineWindow_GetOpener())
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȭâ  ¿  ű  ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC3\xA2\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
 	// ȹ û Ʈ κ丮 Ư Ÿ ۸   ִ.
 	if (DestCell.IsBeltInventoryPosition() && false == CBeltInventoryHelper::CanMoveIntoBeltInventory(item))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ʈ κ丮 ű  ϴ."));			
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xBA\xA7\xC6\xAE \xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xB7\xCE \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));			
 		return false;
 	}
 
@@ -5542,7 +5542,7 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 	{
 		if (GetItem(DestCell))	//     ˻ص ȴ.
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹  ϰ ֽϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC0\xE5\xBA\xF1\xB8\xA6 \xC2\xF8\xBF\xEB\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			
 			return false;
 		}
@@ -5813,7 +5813,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 							if (bCount == 0)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s"), item2->GetName());
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item2->GetName());
 								M2_DESTROY_ITEM(item);
 								if (item2->GetType() == ITEM_QUEST)
 									quest::CQuestManager::instance().PickupItem (GetPlayerID(), item2);
@@ -5831,7 +5831,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 					if ((iEmptyCell = GetEmptyDragonSoulInventory(item)) == -1)
 					{
 						SPDLOG_DEBUG("No empty ds inventory pid {} size {}d itemid {}", GetPlayerID(), item->GetSize(), item->GetID());
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ϰ ִ  ʹ ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -5840,7 +5840,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 					if ((iEmptyCell = GetEmptyInventory(item->GetSize())) == -1)
 					{
 						SPDLOG_DEBUG("No empty inventory pid {} size {}d itemid {}", GetPlayerID(), item->GetSize(), item->GetID());
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ϰ ִ  ʹ ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -5855,7 +5855,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 				char szHint[32+1];
 				snprintf(szHint, sizeof(szHint), "%s %u %u", item->GetName(), item->GetCount(), item->GetOriginalVnum());
 				LogManager::instance().ItemLog(this, item, "GET", szHint);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s"), item->GetName());
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
 
 				if (item->GetType() == ITEM_QUEST)
 					quest::CQuestManager::instance().PickupItem (GetPlayerID(), item);
@@ -5883,7 +5883,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 					if ((iEmptyCell = GetEmptyDragonSoulInventory(item)) == -1)
 					{
-						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ϰ ִ  ʹ ϴ."));
+						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -5896,7 +5896,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 					if ((iEmptyCell = GetEmptyInventory(item->GetSize())) == -1)
 					{
-						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ϰ ִ  ʹ ϴ."));
+						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return false;
 					}
 				}
@@ -5914,11 +5914,11 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 			LogManager::instance().ItemLog(owner, item, "GET", szHint);
 
 			if (owner == this)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s"), item->GetName());
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
 			else
 			{
-				owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s κ %s"), GetName(), item->GetName());
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" : %s Կ %s"), owner->GetName(), item->GetName());
+				owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s \xB4\xD4\xC0\xB8\xB7\xCE\xBA\xCE\xC5\xCD %s"), GetName(), item->GetName());
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC0\xFC\xB4\xDE: %s \xB4\xD4\xBF\xA1\xB0\xD4 %s"), owner->GetName(), item->GetName());
 			}
 
 			if (item->GetType() == ITEM_QUEST)
@@ -6065,26 +6065,26 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 	// 𰡸 ź ¿ νõ Ա 
 	if (iWearCell == WEAR_BODY && IsRiding() && (item->GetVnum() >= 11901 && item->GetVnum() <= 11904))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ź ¿    ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xBF\xB9\xBA\xB9\xC0\xBB \xC0\xD4\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
 	if (iWearCell != WEAR_ARROW && IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿     ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xC2\xF8\xBF\xEB\xC1\xDF\xC0\xCE \xC0\xE5\xBA\xF1\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
 	if (FN_check_item_sex(this, item) == false)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʾ     ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
 	//ű Ż    뿩 üũ
 	if(item->IsRideItem() && IsRiding())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ Ż ̿Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC5\xBB\xB0\xCD\xC0\xBB \xC0\xCC\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -6094,7 +6094,7 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 	if (iWearCell != WEAR_ARROW 
 		&& (dwCurTime - GetLastAttackTime() <= 1500 || dwCurTime - m_dwLastSkillTime <= 1500))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     ֽϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA1\xB8\xB8\xC8\xF7 \xC0\xD6\xC0\xBB \xB6\xA7\xB8\xB8 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -6105,7 +6105,7 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 		// ȥ swap ϸ ȵ.
 		if(GetInventoryItem(INVENTORY_MAX_NUM + iWearCell))
 		{
-			ChatPacket(CHAT_TYPE_INFO, "̹   ȥ ϰ ֽϴ.");
+			ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xBB \xC2\xF8\xBF\xEB\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.");
 			return false;
 		}
 		
@@ -6540,7 +6540,7 @@ LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool
 				if (bCount == 0)
 				{
 					if (bMsg)
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s"), item->GetName());
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
 
 					return item;
 				}
@@ -6592,7 +6592,7 @@ LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool
 	if (iEmptyCell != -1)
 	{
 		if (bMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s"), item->GetName());
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
 
 		if (item->IsDragonSoul())
 			item->AddToCharacter(this, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyCell));
@@ -6736,7 +6736,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (!IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ʸ   ϴ."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC1\xF6 \xBE\xCA\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				return true;
@@ -6745,7 +6745,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ḧ   ϴ."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				return true;
@@ -6763,7 +6763,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (!IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ʸ   ϴ."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC1\xF6 \xBE\xCA\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				return true;
@@ -6772,7 +6772,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ḧ   ϴ."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				return true;
@@ -6790,7 +6790,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (!IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ʸ   ϴ."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC1\xF6 \xBE\xCA\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				return true;
@@ -6799,7 +6799,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ḧ   ϴ."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				return true;
@@ -6849,7 +6849,7 @@ void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
 			}
 			else
 			{
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			break;
 			// END_OF_DEVILTOWER_NPC
@@ -6866,7 +6866,7 @@ void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
 			}
 			else
 			{
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			break;
 
@@ -6885,14 +6885,14 @@ void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
 			{
 				from->ReviveHorse();
 				item->SetCount(item->GetCount()-1);
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʸ ־ϴ."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xC1\xD6\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			else if (item->GetVnum() == ITEM_HORSE_FOOD_1 ||
 					item->GetVnum() == ITEM_HORSE_FOOD_2 ||
 					item->GetVnum() == ITEM_HORSE_FOOD_3)
 			{
 				from->FeedHorse();
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ḧ ־ϴ."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xC1\xD6\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 				item->SetCount(item->GetCount()-1);
 				EffectPacket(SE_HPUP_RED);
 			}
@@ -7084,7 +7084,7 @@ bool CHARACTER::ItemProcess_Hair(LPITEM item, int iDestCell)
 	if (item->CheckItemUseLevel(GetLevel()) == false)
 	{
 		//  ѿ ɸ
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ӹ    Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xCC \xB8\xD3\xB8\xAE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB7\xB9\xBA\xA7\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -7115,7 +7115,7 @@ bool CHARACTER::ItemProcess_Hair(LPITEM item, int iDestCell)
 
 	if (hair == GetPart(PART_HAIR))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ӹ ŸϷδ ü  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xBF\xC0\xCF\xC7\xD1 \xB8\xD3\xB8\xAE \xBD\xBA\xC5\xB8\xC0\xCF\xB7\xCE\xB4\xC2 \xB1\xB3\xC3\xBC\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return true;
 	}
 
@@ -7132,13 +7132,13 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 {
 	if (IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ а Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xB5\xD0\xB0\xA9\xC1\xDF\xC0\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
 	if (true == IsRiding())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а   Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -7146,7 +7146,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 
 	if (dwVnum == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߸ а Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDF\xB8\xF8\xB5\xC8 \xB5\xD0\xB0\xA9 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 		item->SetCount(item->GetCount()-1);
 		return false;
 	}
@@ -7155,7 +7155,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 
 	if (pMob == NULL)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("߸ а Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDF\xB8\xF8\xB5\xC8 \xB5\xD0\xB0\xA9 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 		item->SetCount(item->GetCount()-1);
 		return false;
 	}
@@ -7175,7 +7175,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 				int iPolymorphLevelLimit = std::max(0, 20 - GetLevel() * 3 / 10);
 				if (pMob->m_table.bLevel >= GetLevel() + iPolymorphLevelLimit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʹ   ͷδ    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xBA\xB8\xB4\xD9 \xB3\xCA\xB9\xAB \xB3\xF4\xC0\xBA \xB7\xB9\xBA\xA7\xC0\xC7 \xB8\xF3\xBD\xBA\xC5\xCD\xB7\xCE\xB4\xC2 \xBA\xAF\xBD\xC5 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 
@@ -7443,7 +7443,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_LEVEL:
 				if (GetLevel() < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				break;
@@ -7451,7 +7451,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_STR:
 				if (GetPoint(POINT_ST) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٷ    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD9\xB7\xC2\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				break;
@@ -7459,7 +7459,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_INT:
 				if (GetPoint(POINT_IQ) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xF6\xB4\xC9\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				break;
@@ -7467,7 +7467,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_DEX:
 				if (GetPoint(POINT_DX) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ø    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xCE\xC3\xB8\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				break;
@@ -7475,7 +7475,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_CON:
 				if (GetPoint(POINT_HT) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ü    ϴ."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xBC\xB7\xC2\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return false;
 				}
 				break;
@@ -7487,14 +7487,14 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 		if ((GetWear(WEAR_UNIQUE1) && GetWear(WEAR_UNIQUE1)->IsSameSpecialGroup(item)) ||
 			(GetWear(WEAR_UNIQUE2) && GetWear(WEAR_UNIQUE2)->IsSameSpecialGroup(item)))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ũ    ÿ   ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xC0\xAF\xB4\xCF\xC5\xA9 \xBE\xC6\xC0\xCC\xC5\xDB \xB5\xCE \xB0\xB3\xB8\xA6 \xB5\xBF\xBD\xC3\xBF\xA1 \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 
 		if (marriage::CManager::instance().IsMarriageUniqueItem(item->GetVnum()) && 
 			!marriage::CManager::instance().IsMarried(GetPlayerID()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȥ  ¿    ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE1\xC8\xA5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xBF\xB9\xB9\xB0\xC0\xBB \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 
@@ -7508,7 +7508,7 @@ bool CHARACTER::CanUnequipNow(const LPITEM item, const TItemPos& srcCell, const
 {	
 
 	if (ITEM_BELT == item->GetType())
-		VERIFY_MSG(CBeltInventoryHelper::IsExistItemInBeltInventory(this), "Ʈ κ丮  ϸ   ϴ.");
+		VERIFY_MSG(CBeltInventoryHelper::IsExistItemInBeltInventory(this), "\xBA\xA7\xC6\xAE \xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xBF\xA1 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xB8\xC0\xE7\xC7\xCF\xB8\xE9 \xC7\xD8\xC1\xA6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.");
 
 	//     
 	if (IS_SET(item->GetFlag(), ITEM_FLAG_IRREMOVABLE))
@@ -7523,7 +7523,7 @@ bool CHARACTER::CanUnequipNow(const LPITEM item, const TItemPos& srcCell, const
 		else
 			pos = GetEmptyInventory(item->GetSize());
 
-		VERIFY_MSG( -1 == pos, "ǰ   ϴ." );
+		VERIFY_MSG( -1 == pos, "\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." );
 	}
 
 
diff --git a/src/game/src/char_skill.cpp b/src/game/src/char_skill.cpp
index c2fb144..77fbd5f 100644
--- a/src/game/src/char_skill.cpp
+++ b/src/game/src/char_skill.cpp
@@ -267,7 +267,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 
 	if (!IsLearnableSkill(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ųԴϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -282,7 +282,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 	   {
 	// ־ȼ ߿ ð  
 	RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("־ȼ  ȭԸ Խϴ."));
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	else 	    
 	{
@@ -296,16 +296,16 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 	// bType 0̸ ó å  
 	if (pkSk->dwType == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׷      ųԴϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xA3\xB5\xE5 \xB8\xB6\xBD\xBA\xC5\xCD \xBC\xF6\xB7\xC3\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
 	if (GetSkillMasterType(dwSkillVnum) != SKILL_GRAND_MASTER)
 	{
 		if (GetSkillMasterType(dwSkillVnum) > SKILL_GRAND_MASTER)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ ͵ ųԴϴ.  ̻    ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xDB\xC6\xE5\xC6\xAE \xB8\xB6\xBD\xBA\xC5\xCD\xB5\xC8 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9. \xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		else
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ų  ׷     ̸ ʾҽϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBD\xBA\xC5\xB3\xC0\xBA \xBE\xC6\xC1\xF7 \xB1\xD7\xB7\xA3\xB5\xE5 \xB8\xB6\xBD\xBA\xC5\xCD \xBC\xF6\xB7\xC3\xC0\xBB \xC7\xD2 \xB0\xE6\xC1\xF6\xBF\xA1 \xC0\xCC\xB8\xA3\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -386,15 +386,15 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 
 	if (bLastLevel == GetSkillLevel(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("ũ, Ⱑ ϰ ־! ̰  ȭԸΰ!? !"));
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" з ϴ. ٽ ֽñ ٶϴ."));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xC5\xA9\xC0\xB9, \xB1\xE2\xB0\xA1 \xBF\xAA\xB7\xF9\xC7\xCF\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC5 \xBC\xB3\xB8\xB6 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xC0\xCE\xB0\xA1!? \xC1\xA8\xC0\xE5!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC0\xCC \xBD\xC7\xC6\xD0\xB7\xCE \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9. \xB4\xD9\xBD\xC3 \xB5\xB5\xC0\xFC\xC7\xD8\xC1\xD6\xBD\xC3\xB1\xE2 \xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
 		LogManager::instance().CharLog(this, dwSkillVnum, "GM_READ_FAIL", "");
 		return false;
 	}
 
-	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("     ̾!"));
-	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("߰ſ   ġ ־! ̰, ̰!"));
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     ̽ϴ."));
+	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xF6\xBF\xA1\xBC\xAD \xB9\xBA\xB0\xA1 \xC8\xFB\xC0\xCC \xC5\xCD\xC1\xAE \xB3\xAA\xBF\xC0\xB4\xC2 \xB1\xE2\xBA\xD0\xC0\xCC\xBE\xDF!"));
+	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB6\xDF\xB0\xC5\xBF\xEE \xB9\xAB\xBE\xF9\xC0\xCC \xB0\xE8\xBC\xD3 \xBF\xEB\xBC\xDA\xC0\xBD\xC4\xA1\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC7, \xC0\xCC\xB0\xCD\xC0\xBA!"));
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xB3\xF4\xC0\xBA \xB0\xE6\xC1\xF6\xC0\xC7 \xBC\xF6\xB7\xC3\xC0\xBB \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xB3\xA1\xB3\xBB\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 	LogManager::instance().CharLog(this, dwSkillVnum, "GM_READ_SUCCESS", "");
 	return true;
 }
@@ -421,7 +421,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 	if (!IsLearnableSkill(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ųԴϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -433,7 +433,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 		if ( GetExp() < need_exp )
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ġ Ͽ å   ϴ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -444,9 +444,9 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 		if (GetSkillMasterType(dwSkillVnum) != SKILL_MASTER)
 		{
 			if (GetSkillMasterType(dwSkillVnum) > SKILL_MASTER)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ų å ̻   ϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBD\xBA\xC5\xB3\xC0\xBA \xC3\xA5\xC0\xB8\xB7\xCE \xB4\xF5\xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			else
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ų  å   ̸ ʾҽϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBD\xBA\xC5\xB3\xC0\xBA \xBE\xC6\xC1\xF7 \xC3\xA5\xC0\xB8\xB7\xCE \xBC\xF6\xB7\xC3\xC7\xD2 \xB0\xE6\xC1\xF6\xBF\xA1 \xC0\xCC\xB8\xA3\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return false;
 		}
 	}
@@ -459,7 +459,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 			{
 				// ־ȼ ߿ ð  
 				RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("־ȼ  ȭԸ Խϴ."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			else 	    
 			{
@@ -533,7 +533,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 						SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK);
 						pPC->SetFlag(flag, 0);
 
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("å      ̽ϴ."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA5\xC0\xB8\xB7\xCE \xB4\xF5 \xB3\xF4\xC0\xBA \xB0\xE6\xC1\xF6\xC0\xC7 \xBC\xF6\xB7\xC3\xC0\xBB \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xB3\xA1\xB3\xBB\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 						LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", "");
 						return true;
 					}
@@ -544,20 +544,20 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 						switch (Random::get(1, 3))
 						{
 							case 1:
-								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("    ذ Ǿ  ѵ ѵ.."));
+								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBE\xEE\xB4\xC0\xC1\xA4\xB5\xB5 \xC0\xCC \xB1\xE2\xBC\xFA\xBF\xA1 \xB4\xEB\xC7\xD8 \xC0\xCC\xC7\xD8\xB0\xA1 \xB5\xC7\xBE\xFA\xC1\xF6\xB8\xB8 \xC1\xB6\xB1\xDD \xBA\xCE\xC1\xB7\xC7\xD1\xB5\xED \xC7\xD1\xB5\xA5.."));
 								break;
 											
 							case 2:
-								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("  ̴ ǰ...    ϱⰡ ʹ .."));
+								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB5\xE5\xB5\xF0\xBE\xEE \xB3\xA1\xC0\xCC \xBA\xB8\xC0\xCC\xB4\xC2 \xB0\xC7\xB0\xA1...  \xC0\xCC \xB1\xE2\xBC\xFA\xC0\xBA \xC0\xCC\xC7\xD8\xC7\xCF\xB1\xE2\xB0\xA1 \xB3\xCA\xB9\xAB \xC8\xFB\xB5\xE9\xBE\xEE.."));
 								break;
 
 							case 3:
 							default:
-								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT(" ϴ   ͸   ִ  ̴.."));
+								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBD\xC9\xC8\xF7 \xC7\xCF\xB4\xC2 \xB9\xE8\xBF\xF2\xC0\xBB \xB0\xA1\xC1\xF6\xB4\xC2 \xB0\xCD\xB8\xB8\xC0\xCC \xB1\xE2\xBC\xFA\xC0\xBB \xB9\xE8\xBF\xEF\xBC\xF6 \xC0\xD6\xB4\xC2 \xC0\xAF\xC0\xCF\xC7\xD1 \xB1\xE6\xC0\xCC\xB4\xD9.."));
 								break;
 						}
 
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d   о  Ϸ   ֽϴ."), need_bookcount - read_count);
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xB1\xC7\xC0\xBB \xB4\xF5 \xC0\xD0\xBE\xEE\xBE\xDF \xBC\xF6\xB7\xC3\xC0\xBB \xBF\xCF\xB7\xE1 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), need_bookcount - read_count);
 						return true;
 					}
 				}
@@ -602,15 +602,15 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 	if (bLastLevel != GetSkillLevel(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("     ̾!"));
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("߰ſ   ġ ־! ̰, ̰!"));
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("å      ̽ϴ."));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xF6\xBF\xA1\xBC\xAD \xB9\xBA\xB0\xA1 \xC8\xFB\xC0\xCC \xC5\xCD\xC1\xAE \xB3\xAA\xBF\xC0\xB4\xC2 \xB1\xE2\xBA\xD0\xC0\xCC\xBE\xDF!"));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB6\xDF\xB0\xC5\xBF\xEE \xB9\xAB\xBE\xF9\xC0\xCC \xB0\xE8\xBC\xD3 \xBF\xEB\xBC\xDA\xC0\xBD\xC4\xA1\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC7, \xC0\xCC\xB0\xCD\xC0\xBA!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA5\xC0\xB8\xB7\xCE \xB4\xF5 \xB3\xF4\xC0\xBA \xB0\xE6\xC1\xF6\xC0\xC7 \xBC\xF6\xB7\xC3\xC0\xBB \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xB3\xA1\xB3\xBB\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 		LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", "");
 	}
 	else
 	{
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("ũ, Ⱑ ϰ ־! ̰  ȭԸΰ!? !"));
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" з ϴ. ٽ ֽñ ٶϴ."));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xC5\xA9\xC0\xB9, \xB1\xE2\xB0\xA1 \xBF\xAA\xB7\xF9\xC7\xCF\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC5 \xBC\xB3\xB8\xB6 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xC0\xCE\xB0\xA1!? \xC1\xA8\xC0\xE5!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC0\xCC \xBD\xC7\xC6\xD0\xB7\xCE \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9. \xB4\xD9\xBD\xC3 \xB5\xB5\xC0\xFC\xC7\xD8\xC1\xD6\xBD\xC3\xB1\xE2 \xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
 		LogManager::instance().CharLog(this, dwSkillVnum, "READ_FAIL", "");
 	}
 
@@ -694,7 +694,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
 
 	if (IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1178,7 +1178,7 @@ struct FuncSplashDamage
 
 		if (test_server && iAmount == 0 && m_pkSk->bPointOn != POINT_NONE)
 		{
-			m_pkChr->ChatPacket(CHAT_TYPE_INFO, "ȿ ϴ. ų  Ȯϼ");
+			m_pkChr->ChatPacket(CHAT_TYPE_INFO, "\xC8\xBF\xB0\xFA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xBA\xC5\xB3 \xB0\xF8\xBD\xC4\xC0\xBB \xC8\xAE\xC0\xCE\xC7\xCF\xBC\xBC\xBF\xE4");
 		}
 		////////////////////////////////////////////////////////////////////////////////
 		iAmount = -iAmount;
@@ -1642,7 +1642,7 @@ EVENTFUNC(skill_gwihwan_event)
 	else
 	{
 		//
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȯ Ͽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xCD\xC8\xAF\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	return 0;
 }
@@ -1754,7 +1754,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
 
 	if (test_server && iAmount == 0 && pkSk->bPointOn != POINT_NONE)
 	{
-		ChatPacket(CHAT_TYPE_INFO, "ȿ ϴ. ų  Ȯϼ");
+		ChatPacket(CHAT_TYPE_INFO, "\xC8\xBF\xB0\xFA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xBA\xC5\xB3 \xB0\xF8\xBD\xC4\xC0\xBB \xC8\xAE\xC0\xCE\xC7\xCF\xBC\xBC\xBF\xE4");
 	}
 
 	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_REMOVE_BAD_AFFECT))
@@ -2093,7 +2093,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
 
 	if (test_server && iAmount == 0 && pkSk->bPointOn != POINT_NONE)
 	{
-		ChatPacket(CHAT_TYPE_INFO, "ȿ ϴ. ų  Ȯϼ");
+		ChatPacket(CHAT_TYPE_INFO, "\xC8\xBF\xB0\xFA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xBA\xC5\xB3 \xB0\xF8\xBD\xC4\xC0\xBB \xC8\xAE\xC0\xCE\xC7\xCF\xBC\xBC\xBF\xE4");
 	}
 	// END_OF_ADD_GRANDMASTER_SKILL
 
@@ -2421,9 +2421,9 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 			return false;
 
 		if (GetHorseLevel() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϴ. °  ãư."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xB8\xB6\xB1\xC2\xB0\xA3 \xB0\xE6\xBA\xF1\xBA\xB4\xC0\xBB \xC3\xA3\xBE\xC6\xB0\xA1\xBC\xBC\xBF\xE4."));
 		else
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȯ  ϼ."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB \xBC\xD2\xC8\xAF \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xCF\xBC\xBC\xBF\xE4."));
 
 		return true;
 	}
@@ -2560,7 +2560,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 			return false;
 
 		if (test_server)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s SPҸ: %d"), pkSk->szName, iNeededSP);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s SP\xBC\xD2\xB8\xF0: %d"), pkSk->szName, iNeededSP);
 
 		PointChange(POINT_SP, -iNeededSP);
 	}
@@ -2745,41 +2745,41 @@ void CHARACTER::SkillLearnWaitMoreTimeMessage(DWORD ms)
 	//const char* str = "";
 	//
 	if (ms < 3 * 60)
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("  ̱߰.   . ̴ ⸦ Ű."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB8\xF6 \xBC\xD3\xC0\xCC \xB6\xDF\xB0\xCC\xB1\xBA. \xC7\xCF\xC1\xF6\xB8\xB8 \xBE\xC6\xC1\xD6 \xC6\xED\xBE\xC8\xC7\xD8. \xC0\xCC\xB4\xEB\xB7\xCE \xB1\xE2\xB8\xA6 \xBE\xC8\xC1\xA4\xBD\xC3\xC5\xB0\xC0\xDA."));
 	else if (ms < 5 * 60)
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("׷, õõ.  õõ, ׷   !"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB7\xA1, \xC3\xB5\xC3\xB5\xC8\xF7. \xC1\xBB\xB4\xF5 \xC3\xB5\xC3\xB5\xC8\xF7, \xB1\xD7\xB7\xAF\xB3\xAA \xB8\xB7\xC8\xFB \xBE\xF8\xC0\xCC \xBA\xFC\xB8\xA3\xB0\xD4!"));
 	else if (ms < 10 * 60) // 10
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("׷,  ̾. ü Ⱑ  游."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB7\xA1, \xC0\xCC \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF. \xC3\xBC\xB3\xBB\xBF\xA1 \xB1\xE2\xB0\xA1 \xBE\xC6\xC1\xD6 \xC3\xE6\xB8\xB8\xC7\xD8."));
 	else if (ms < 30 * 60) // 30
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT(" о!  ޿ ִ  ſ ⸦ ⸸ ϸ,"));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("װ   ž!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB4\xD9 \xC0\xD0\xBE\xFA\xB4\xD9! \xC0\xCC\xC1\xA6 \xBA\xF1\xB1\xDE\xBF\xA1 \xC0\xFB\xC7\xF4\xC0\xD6\xB4\xC2 \xB4\xEB\xB7\xCE \xC0\xFC\xBD\xC5\xBF\xA1 \xB1\xE2\xB8\xA6 \xB5\xB9\xB8\xAE\xB1\xE2\xB8\xB8 \xC7\xCF\xB8\xE9,"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB0\xCD\xC0\xB8\xB7\xCE \xBC\xF6\xB7\xC3\xC0\xBA \xB3\xA1\xB3\xAD \xB0\xC5\xBE\xDF!"));
 	}
 	else if (ms < 1 * 3600) // 1ð
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT(" å  ̾!    ̰ ־!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xC1\xA6 \xC3\xA5\xC0\xC7 \xB8\xB6\xC1\xF6\xB8\xB7 \xC0\xE5\xC0\xCC\xBE\xDF! \xBC\xF6\xB7\xC3\xC0\xC7 \xB3\xA1\xC0\xCC \xB4\xAB\xBF\xA1 \xBA\xB8\xC0\xCC\xB0\xED \xC0\xD6\xBE\xEE!"));
 	else if (ms < 2 * 3600) // 2ð
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("  Ҿ! ݸ !"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBE\xF3\xB8\xB6 \xBE\xC8 \xB3\xB2\xBE\xD2\xBE\xEE! \xC1\xB6\xB1\xDD\xB8\xB8 \xB4\xF5!"));
 	else if (ms < 3 * 3600)
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Ҿ! ݸ   ̴!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC1\xC1\xBE\xD2\xBE\xEE! \xC1\xB6\xB1\xDD\xB8\xB8 \xB4\xF5 \xC0\xD0\xC0\xB8\xB8\xE9 \xB3\xA1\xC0\xCC\xB4\xD9!"));
 	else if (ms < 6 * 3600)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("å嵵    ʾұ."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("  ȿ    ."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC3\xA5\xC0\xE5\xB5\xB5 \xC0\xCC\xC1\xA6 \xBE\xF3\xB8\xB6 \xB3\xB2\xC1\xF6 \xBE\xCA\xBE\xD2\xB1\xBA."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB9\xBA\xB0\xA1 \xB8\xF6 \xBE\xC8\xBF\xA1 \xC8\xFB\xC0\xCC \xBB\xFD\xB1\xE2\xB4\xC2 \xB1\xE2\xBA\xD0\xC0\xCE \xB0\xC9."));
 	}
 	else if (ms < 12 * 3600)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("      ."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT(",  ⼼  !"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xC1\xA6 \xC1\xBB \xBD\xBD\xBD\xBD \xB0\xA1\xB4\xDA\xC0\xCC \xC0\xE2\xC8\xF7\xB4\xC2 \xB0\xCD \xB0\xB0\xC0\xBA\xB5\xA5."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC1\xC1\xBE\xC6, \xC0\xCC \xB1\xE2\xBC\xBC\xB7\xCE \xB0\xE8\xBC\xD3 \xB3\xAA\xB0\xA3\xB4\xD9!"));
 	}
 	else if (ms < 18 * 3600)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("ƴ     о Ӹ  ."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("ϱ Ⱦ."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBE\xC6\xB4\xCF \xBE\xEE\xB6\xBB\xB0\xD4 \xB5\xC8 \xB0\xD4 \xC1\xBE\xC0\xCF \xC0\xD0\xBE\xEE\xB5\xB5 \xB8\xD3\xB8\xAE\xBF\xA1 \xBE\xC8 \xB5\xE9\xBE\xEE\xBF\xC0\xB3\xC4."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB0\xF8\xBA\xCE\xC7\xCF\xB1\xE2 \xBD\xC8\xBE\xEE\xC1\xF6\xB3\xD7."));
 	}
 	else //if (ms < 2 * 86400)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("ŭ бⰡ  ʱ. ص ư 뵵 ."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("̷ ΰ ȵȴٱ."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBB\xFD\xB0\xA2\xB8\xB8\xC5\xAD \xC0\xD0\xB1\xE2\xB0\xA1 \xBD\xB1\xC1\xF6\xB0\xA1 \xBE\xCA\xB1\xBA. \xC0\xCC\xC7\xD8\xB5\xB5 \xBE\xEE\xB7\xC6\xB0\xED \xB3\xBB\xBF\xEB\xB5\xB5 \xB3\xAD\xC7\xD8\xC7\xD8."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xB7\xA1\xBC\xAD\xBE\xDF \xB0\xF8\xBA\xCE\xB0\xA1 \xBE\xC8\xB5\xC8\xB4\xD9\xB1\xB8."));
 	}
 	/*
 	   str = "30%";
diff --git a/src/game/src/char_state.cpp b/src/game/src/char_state.cpp
index 9e7becb..915c17b 100644
--- a/src/game/src/char_state.cpp
+++ b/src/game/src/char_state.cpp
@@ -155,7 +155,7 @@ namespace
 								//pkChr->RemoveAffect(AFFECT_WAR_FLAG);
 
 								char buf[256];
-								snprintf(buf, sizeof(buf), LC_TEXT("%s 尡 %s   Ѿҽϴ!"), pMap->GetGuild(idx)->GetName(), pMap->GetGuild(idx_opp)->GetName());
+								snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xEA\xB9\xDF\xC0\xBB \xBB\xA9\xBE\xD1\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9!"), pMap->GetGuild(idx)->GetName(), pMap->GetGuild(idx_opp)->GetName());
 								pMap->Notice(buf);
 							}
 						}
@@ -690,7 +690,7 @@ void CHARACTER::__StateIdle_Monster()
 		{
 			if (Follow(pkChrProtege, Random::get(150, 400)))
 			{
-				MonsterLog("[IDLE] κ ʹ ָ ! Ѵ.");
+				MonsterLog("[IDLE] \xB8\xAE\xB4\xF5\xB7\xCE\xBA\xCE\xC5\xCD \xB3\xCA\xB9\xAB \xB8\xD6\xB8\xAE \xB6\xB3\xBE\xEE\xC1\xB3\xB4\xD9! \xBA\xB9\xB1\xCD\xC7\xD1\xB4\xD9.");
 				return;
 			}
 		}
@@ -877,7 +877,7 @@ void CHARACTER::StateMove()
 	{
 		if (IsPC())
 		{
-			SPDLOG_DEBUG(" {} {} {}", GetName(), x, y);
+			SPDLOG_DEBUG("\xB5\xB5\xC2\xF8 {} {} {}", GetName(), x, y);
 			GotoState(m_stateIdle);
 			StopStaminaConsume();
 		}
@@ -886,7 +886,7 @@ void CHARACTER::StateMove()
 			if (GetVictim() && !IsCoward())
 			{
 				if (!IsState(m_stateBattle))
-					MonsterLog("[BATTLE] ó  ݽ %s", GetVictim()->GetName());
+					MonsterLog("[BATTLE] \xB1\xD9\xC3\xB3\xBF\xA1 \xBF\xD4\xC0\xB8\xB4\xCF \xB0\xF8\xB0\xDD\xBD\xC3\xC0\xDB %s", GetVictim()->GetName());
 
 				GotoState(m_stateBattle);
 				m_dwStateDuration = 1;
@@ -894,7 +894,7 @@ void CHARACTER::StateMove()
 			else
 			{
 				if (!IsState(m_stateIdle))
-					MonsterLog("[IDLE]   ");
+					MonsterLog("[IDLE] \xB4\xEB\xBB\xF3\xC0\xCC \xBE\xF8\xC0\xB8\xB4\xCF \xBD\xAC\xC0\xDA");
 
 				GotoState(m_stateIdle);
 
@@ -1014,7 +1014,7 @@ void CHARACTER::StateBattle()
 
 		if (bPct && pParty->CountMemberByVnum(GetSummonVnum()) < SUMMON_MONSTER_COUNT)
 		{
-			MonsterLog("  ȯ!");
+			MonsterLog("\xBA\xCE\xC7\xCF \xB8\xF3\xBD\xBA\xC5\xCD \xBC\xD2\xC8\xAF!");
 			// ڶ ༮ ҷ äô.
 			int sx = GetX() - 300;
 			int sy = GetY() - 300;
@@ -1037,7 +1037,7 @@ void CHARACTER::StateBattle()
 
 	if (fDist >= 4000.0f)   // 40 ̻ ־ 
 	{
-		MonsterLog("Ÿ ־ ");
+		MonsterLog("\xC5\xB8\xB0\xD9\xC0\xCC \xB8\xD6\xBE\xEE\xBC\xAD \xC6\xF7\xB1\xE2");
 		SetVictim(NULL);
 
 		// ȣ (, Ƽ) ֺ .
@@ -1152,7 +1152,7 @@ void CHARACTER::StateFlag()
 
 	pMap->RemoveFlag(idx);
 
-	snprintf(buf, sizeof(buf), LC_TEXT("%s   %s  ȹϿϴ."), pMap->GetGuild(idx)->GetName(), f.m_pkChrFind->GetName());
+	snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xEA\xB9\xDF\xC0\xBB %s \xB4\xD4\xC0\xCC \xC8\xB9\xB5\xE6\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pMap->GetGuild(idx)->GetName(), f.m_pkChrFind->GetName());
 	pMap->Notice(buf);
 }
 
diff --git a/src/game/src/cmd.cpp b/src/game/src/cmd.cpp
index 4b6a112..341f5f1 100644
--- a/src/game/src/cmd.cpp
+++ b/src/game/src/cmd.cpp
@@ -167,7 +167,7 @@ ACMD(do_add_socket);
 
 ACMD(do_inputall)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ɾ  Էϼ."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xED\xB7\xC9\xBE\xEE\xB8\xA6 \xB8\xF0\xB5\xCE \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xBC\xBF\xE4."));
 }
 
 ACMD(do_show_arena_list);
@@ -396,8 +396,8 @@ struct command_info cmd_info[] =
 	{ "delqf",		do_delqf,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 	{ "set_state",	do_set_state,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 
-	{ "α׸",	do_detaillog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
-	{ "ͺ",	do_monsterlog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
+	{ "\xB7\xCE\xB1\xD7\xB8\xA6\xBA\xB8\xBF\xA9\xC1\xE0",	do_detaillog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
+	{ "\xB8\xF3\xBD\xBA\xC5\xCD\xBA\xB8\xBF\xA9\xC1\xE0",	do_monsterlog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 
 	{ "detaillog",	do_detaillog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 	{ "monsterlog",	do_monsterlog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
@@ -536,7 +536,7 @@ struct command_info cmd_info[] =
 	{ "get_mob_count",		do_get_mob_count,		0,	POS_DEAD,	GM_LOW_WIZARD	},
 
 	{ "dice",				do_dice,				0,	POS_DEAD,	GM_PLAYER		},
-	{ "ֻ",				do_dice,				0,	POS_DEAD,	GM_PLAYER		},
+	{ "\xC1\xD6\xBB\xE7\xC0\xA7",				do_dice,				0,	POS_DEAD,	GM_PLAYER		},
 	{ "special_item",			do_special_item,	0,	POS_DEAD,	GM_IMPLEMENTOR		},
 
 	{ "click_mall",			do_click_mall,			0,	POS_DEAD,	GM_PLAYER		},
@@ -673,24 +673,24 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 		switch (ch->GetPosition())
 		{
 			case POS_MOUNTING:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ź ¿   ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				break;
 
 			case POS_DEAD:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ¿   ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xB2\xB7\xAF\xC1\xF8 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				break;
 
 			case POS_SLEEPING:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("޼ӿ Կ?"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB2\xDE\xBC\xD3\xBF\xA1\xBC\xAD \xBE\xEE\xB6\xBB\xB0\xD4\xBF\xE4?"));
 				break;
 
 			case POS_RESTING:
 			case POS_SITTING:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ͼ ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xD5\xC0\xFA \xC0\xCF\xBE\xEE \xB3\xAA\xBC\xBC\xBF\xE4."));
 				break;
 				/*
 				   case POS_FIGHTING:
-				   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ɰ   Դϴ.  ϼ."));
+				   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xF1\xBC\xFB\xC0\xBB \xB0\xC9\xB0\xED \xC0\xFC\xC5\xF5 \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9. \xC1\xFD\xC1\xDF \xC7\xCF\xBC\xBC\xBF\xE4."));
 				   break;
 				 */
 			default:
@@ -703,13 +703,13 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 
 	if (*cmd_info[icmd].command == '\n')
 	{   
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׷ ɾ ϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 		return;
 	}
 
 	if (cmd_info[icmd].gm_level && cmd_info[icmd].gm_level > ch->GetGMLevel())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׷ ɾ ϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 		return;
 	}
 
diff --git a/src/game/src/cmd_emotion.cpp b/src/game/src/cmd_emotion.cpp
index 958c60e..e9d8fec 100644
--- a/src/game/src/cmd_emotion.cpp
+++ b/src/game/src/cmd_emotion.cpp
@@ -23,65 +23,65 @@ struct emotion_type_s
 	int	flag;
 	float	extra_delay;
 } emotion_types[] = {
-	{ "Ű",	"french_kiss",	NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		2.0f },
-	{ "ǻ",	"kiss",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		1.5f },
-	{ "",	"slap",		NEED_PC | SELF_DISARM,				1.5f },
-	{ "ڼ",	"clap",		0,						1.0f },
-	{ "",		"cheer1",	0,						1.0f },
-	{ "",	"cheer2",	0,						1.0f },
+	{ "\xC5\xB0\xBD\xBA",	"french_kiss",	NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		2.0f },
+	{ "\xBB\xC7\xBB\xC7",	"kiss",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		1.5f },
+	{ "\xB5\xFB\xB1\xCD",	"slap",		NEED_PC | SELF_DISARM,				1.5f },
+	{ "\xB9\xDA\xBC\xF6",	"clap",		0,						1.0f },
+	{ "\xBF\xCD",		"cheer1",	0,						1.0f },
+	{ "\xB8\xB8\xBC\xBC",	"cheer2",	0,						1.0f },
 	
 	// DANCE
-	{ "1",	"dance1",	0,						1.0f },
-	{ "2",	"dance2",	0,						1.0f },
-	{ "3",	"dance3",	0,						1.0f },
-	{ "4",	"dance4",	0,						1.0f },
-	{ "5",	"dance5",	0,						1.0f },
-	{ "6",	"dance6",	0,						1.0f },
+	{ "\xB4\xED\xBD\xBA\1",	"dance1",	0,						1.0f },
+	{ "\xB4\xED\xBD\xBA\2",	"dance2",	0,						1.0f },
+	{ "\xB4\xED\xBD\xBA\3",	"dance3",	0,						1.0f },
+	{ "\xB4\xED\xBD\xBA\4",	"dance4",	0,						1.0f },
+	{ "\xB4\xED\xBD\xBA\5",	"dance5",	0,						1.0f },
+	{ "\xB4\xED\xBD\xBA\6",	"dance6",	0,						1.0f },
 	// END_OF_DANCE
-	{ "",	"congratulation",	0,				1.0f	},
-	{ "뼭",	"forgive",			0,				1.0f	},
-	{ "ȭ",	"angry",			0,				1.0f	},
-	{ "Ȥ",	"attractive",		0,				1.0f	},
-	{ "",	"sad",				0,				1.0f	},
-	{ "",	"shy",				0,				1.0f	},
-	{ "",	"cheerup",			0,				1.0f	},
-	{ "",	"banter",			0,				1.0f	},
-	{ "",	"joy",				0,				1.0f	},
+	{ "\xC3\xE0\xC7\xCF",	"congratulation",	0,				1.0f	},
+	{ "\xBF\xEB\xBC\xAD",	"forgive",			0,				1.0f	},
+	{ "\xC8\xAD\xB3\xB2",	"angry",			0,				1.0f	},
+	{ "\xC0\xAF\xC8\xA4",	"attractive",		0,				1.0f	},
+	{ "\xBD\xBD\xC7\xC4",	"sad",				0,				1.0f	},
+	{ "\xBA\xEA\xB2\xF4",	"shy",				0,				1.0f	},
+	{ "\xC0\xC0\xBF\xF8",	"cheerup",			0,				1.0f	},
+	{ "\xC1\xFA\xC5\xF5",	"banter",			0,				1.0f	},
+	{ "\xB1\xE2\xBB\xDD",	"joy",				0,				1.0f	},
 	{ "\n",	"\n",		0,						0.0f },
 	/*
-	//{ "Ű",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_FRENCH_KISS,	 1.0f },
-	{ "ǻ",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_KISS,		 1.0f },
-	{ "ȱ",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_SHORT_HUG,	 1.0f },
-	{ "",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_LONG_HUG,		 1.0f },
-	{ "",	NEED_PC | SELF_DISARM,				MOTION_ACTION_PUT_ARMS_SHOULDER, 0.0f },
-	{ "¯",		NEED_PC	| WOMAN_ONLY | SELF_DISARM,		MOTION_ACTION_FOLD_ARM,		 0.0f },
-	{ "",		NEED_PC | SELF_DISARM,				MOTION_ACTION_SLAP,		 1.5f },
+	//{ "\xC5\xB0\xBD\xBA",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_FRENCH_KISS,	 1.0f },
+	{ "\xBB\xC7\xBB\xC7",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_KISS,		 1.0f },
+	{ "\xB2\xB8\xBE\xC8\xB1\xE2",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_SHORT_HUG,	 1.0f },
+	{ "\xC6\xF7\xBF\xCB",		NEED_PC | OTHER_SEX_ONLY | BOTH_DISARM,		MOTION_ACTION_LONG_HUG,		 1.0f },
+	{ "\xBE\xEE\xB1\xFA\xB5\xBF\xB9\xAB",	NEED_PC | SELF_DISARM,				MOTION_ACTION_PUT_ARMS_SHOULDER, 0.0f },
+	{ "\xC6\xC8\xC2\xAF",		NEED_PC	| WOMAN_ONLY | SELF_DISARM,		MOTION_ACTION_FOLD_ARM,		 0.0f },
+	{ "\xB5\xFB\xB1\xCD",		NEED_PC | SELF_DISARM,				MOTION_ACTION_SLAP,		 1.5f },
 
-	{ "Ķ",		0,						MOTION_ACTION_CHEER_01,		 0.0f },
-	{ "",		0,						MOTION_ACTION_CHEER_02,		 0.0f },
-	{ "ڼ",		0,						MOTION_ACTION_CHEER_03,		 0.0f },
+	{ "\xC8\xD6\xC6\xC4\xB6\xF7",		0,						MOTION_ACTION_CHEER_01,		 0.0f },
+	{ "\xB8\xB8\xBC\xBC",		0,						MOTION_ACTION_CHEER_02,		 0.0f },
+	{ "\xB9\xDA\xBC\xF6",		0,						MOTION_ACTION_CHEER_03,		 0.0f },
 
-	{ "ȣȣ",		0,						MOTION_ACTION_LAUGH_01,		 0.0f },
-	{ "űű",		0,						MOTION_ACTION_LAUGH_02,		 0.0f },
-	{ "",		0,						MOTION_ACTION_LAUGH_03,		 0.0f },
+	{ "\xC8\xA3\xC8\xA3",		0,						MOTION_ACTION_LAUGH_01,		 0.0f },
+	{ "\xC5\xB1\xC5\xB1",		0,						MOTION_ACTION_LAUGH_02,		 0.0f },
+	{ "\xBF\xEC\xC7\xCF\xC7\xCF",		0,						MOTION_ACTION_LAUGH_03,		 0.0f },
 
-	{ "",		0,						MOTION_ACTION_CRY_01,		 0.0f },
-	{ "",		0,						MOTION_ACTION_CRY_02,		 0.0f },
+	{ "\xBE\xFB\xBE\xFB",		0,						MOTION_ACTION_CRY_01,		 0.0f },
+	{ "\xC8\xE6\xC8\xE6",		0,						MOTION_ACTION_CRY_02,		 0.0f },
 
-	{ "λ",		0,						MOTION_ACTION_GREETING_01,	0.0f },
-	{ "",		0,						MOTION_ACTION_GREETING_02,	0.0f },
-	{ "λ",	0,						MOTION_ACTION_GREETING_03,	0.0f },
+	{ "\xC0\xCE\xBB\xE7",		0,						MOTION_ACTION_GREETING_01,	0.0f },
+	{ "\xB9\xD9\xC0\xCC",		0,						MOTION_ACTION_GREETING_02,	0.0f },
+	{ "\xC1\xA4\xC1\xDF\xC0\xCE\xBB\xE7",	0,						MOTION_ACTION_GREETING_03,	0.0f },
 
-	{ "",		0,						MOTION_ACTION_INSULT_01,	0.0f },
-	{ "",		SELF_DISARM,					MOTION_ACTION_INSULT_02,	0.0f },
-	{ "",		0,						MOTION_ACTION_INSULT_03,	0.0f },
+	{ "\xBA\xF1\xB3\xAD",		0,						MOTION_ACTION_INSULT_01,	0.0f },
+	{ "\xB8\xF0\xBF\xE5",		SELF_DISARM,					MOTION_ACTION_INSULT_02,	0.0f },
+	{ "\xBF\xEC\xC0\xA1",		0,						MOTION_ACTION_INSULT_03,	0.0f },
 
-	{ "",		0,						MOTION_ACTION_ETC_01,		0.0f },
-	{ "",	0,						MOTION_ACTION_ETC_02,		0.0f },
-	{ "",	0,						MOTION_ACTION_ETC_03,		0.0f },
-	{ "",	0,						MOTION_ACTION_ETC_04,		0.0f },
-	{ "ơ",		0,						MOTION_ACTION_ETC_05,		0.0f },
-	{ "",		0,						MOTION_ACTION_ETC_06,		0.0f },
+	{ "\xB0\xBC\xBF\xEC\xB6\xD7",		0,						MOTION_ACTION_ETC_01,		0.0f },
+	{ "\xB2\xF4\xB4\xF6\xB2\xF4\xB4\xF6",	0,						MOTION_ACTION_ETC_02,		0.0f },
+	{ "\xB5\xB5\xB8\xAE\xB5\xB5\xB8\xAE",	0,						MOTION_ACTION_ETC_03,		0.0f },
+	{ "\xB1\xDC\xC0\xFB\xB1\xDC\xC0\xFB",	0,						MOTION_ACTION_ETC_04,		0.0f },
+	{ "\xC6\xA1",		0,						MOTION_ACTION_ETC_05,		0.0f },
+	{ "\xBB\xD7",		0,						MOTION_ACTION_ETC_06,		0.0f },
 	 */
 };
 
@@ -92,7 +92,7 @@ ACMD(do_emotion_allow)
 {
 	if ( ch->GetArena() )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -108,11 +108,11 @@ ACMD(do_emotion_allow)
 
 bool CHARACTER_CanEmotion(CHARACTER& rch)
 {
-	// ȥ ʿ   ִ.
+	// ��ȥ�� �ʿ����� ����� �� �ִ�.
 	if (marriage::WeddingManager::instance().IsWeddingMap(rch.GetMapIndex()))
 		return true;
 
-	//      ִ.
+	// ������ ���� ����� ����� �� �ִ�.
 	if (rch.IsEquipUniqueItem(UNIQUE_ITEM_EMOTION_MASK))
 		return true;
 
@@ -128,7 +128,7 @@ ACMD(do_emotion)
 	{
 		if (ch->IsRiding())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ź ¿ ǥ   ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xB0\xA8\xC1\xA4\xC7\xA5\xC7\xF6\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 	}
@@ -150,13 +150,13 @@ ACMD(do_emotion)
 
 	if (!CHARACTER_CanEmotion(*ch))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ÿ   ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xAD\xC1\xA4\xC0\xC7 \xB0\xA1\xB8\xE9\xC0\xBB \xC2\xF8\xBF\xEB\xBD\xC3\xBF\xA1\xB8\xB8 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (IS_SET(emotion_types[i].flag, WOMAN_ONLY) && SEX_MALE==GET_SEX(ch))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڸ   ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xA9\xC0\xDA\xB8\xB8 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -172,7 +172,7 @@ ACMD(do_emotion)
 	{
 		if (!victim)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׷  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xBB\xE7\xB6\xF7\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 	}
@@ -184,7 +184,7 @@ ACMD(do_emotion)
 
 		if (victim->IsRiding())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ź  ǥ   ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xB4\xEB\xBF\xCD \xB0\xA8\xC1\xA4\xC7\xA5\xC7\xF6\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
@@ -192,13 +192,13 @@ ACMD(do_emotion)
 
 		if (distance < 10)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ʹ  ֽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xCA\xB9\xAB \xB0\xA1\xB1\xEE\xC0\xCC \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
 		if (distance > 500)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ʹ ָ ֽϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xCA\xB9\xAB \xB8\xD6\xB8\xAE \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"));
 			return;
 		}
 
@@ -206,7 +206,7 @@ ACMD(do_emotion)
 		{
 			if (GET_SEX(ch)==GET_SEX(victim))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̼   ֽϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBC\xBA\xB0\xA3\xBF\xA1\xB8\xB8 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return;
 			}
 		}
@@ -223,13 +223,13 @@ ACMD(do_emotion)
 
 					if (0 == other || other != victim->GetPlayerID())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ൿ ȣ Ͽ  մϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC7\xE0\xB5\xBF\xC0\xBA \xBB\xF3\xC8\xA3\xB5\xBF\xC0\xC7 \xC7\xCF\xBF\xA1 \xB0\xA1\xB4\xC9 \xC7\xD5\xB4\xCF\xB4\xD9."));
 						return;
 					}
 				}
 				else
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ൿ ȣ Ͽ  մϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC7\xE0\xB5\xBF\xC0\xBA \xBB\xF3\xC8\xA3\xB5\xBF\xC0\xC7 \xC7\xCF\xBF\xA1 \xB0\xA1\xB4\xC9 \xC7\xD5\xB4\xCF\xB4\xD9."));
 					return;
 				}
 			}
@@ -246,7 +246,7 @@ ACMD(do_emotion)
 	if (len < 0 || len >= (int) sizeof(chatbuf))
 		len = sizeof(chatbuf) - 1;
 
-	++len;  // \0  
+	++len;  // \0 ���� ����
 
 	TPacketGCChat pack_chat;
 	pack_chat.header = HEADER_GC_CHAT;
diff --git a/src/game/src/cmd_general.cpp b/src/game/src/cmd_general.cpp
index 51a9277..e61158b 100644
--- a/src/game/src/cmd_general.cpp
+++ b/src/game/src/cmd_general.cpp
@@ -49,13 +49,13 @@ ACMD(do_user_horse_ride)
 		//  ƴ ٸŻ Ÿִ.
 		if (ch->GetMountVnum())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ Ż ̿Դϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC5\xBB\xB0\xCD\xC0\xBB \xC0\xCC\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
 		if (ch->GetHorse() == NULL)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȯּ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
 			return;
 		}
 
@@ -72,15 +72,15 @@ ACMD(do_user_horse_back)
 	if (ch->GetHorse() != NULL)
 	{
 		ch->HorseSummon(false);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ½ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB5\xB9\xB7\xC1\xBA\xB8\xB3\xC2\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	else if (ch->IsHorseRiding() == true)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   մϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xBC\xAD \xB8\xD5\xC0\xFA \xB3\xBB\xB7\xC1\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."));
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȯּ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
 	}
 }
 
@@ -93,9 +93,9 @@ ACMD(do_user_horse_feed)
 	if (ch->GetHorse() == NULL)
 	{
 		if (ch->IsHorseRiding() == false)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȯּ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
 		else
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ź ¿ ̸   ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB8\xD4\xC0\xCC\xB8\xA6 \xC1\xD9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -105,12 +105,12 @@ ACMD(do_user_horse_feed)
 	{
 		ch->RemoveSpecifyItem(dwFood, 1);
 		ch->FeedHorse();
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %s%s ־ϴ."), 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xB0\xD4 %s%s \xC1\xD6\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), 
 				ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName, "");
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ʿմϴ"), ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9"), ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName);
 	}
 }
 
@@ -209,7 +209,7 @@ EVENTFUNC(shutdown_event)
 	else
 	{
 		char buf[64];
-		snprintf(buf, sizeof(buf), LC_TEXT("˴ٿ %d ҽϴ."), *pSec);
+		snprintf(buf, sizeof(buf), LC_TEXT("\xBC\xCB\xB4\xD9\xBF\xEE\xC0\xCC %d\xC3\xCA \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."), *pSec);
 		SendNotice(buf);
 
 		--*pSec;
@@ -228,7 +228,7 @@ void Shutdown(int iSec)
 	CWarMapManager::instance().OnShutdown();
 
 	char buf[64];
-	snprintf(buf, sizeof(buf), LC_TEXT("%d   ˴ٿ ˴ϴ."), iSec);
+	snprintf(buf, sizeof(buf), LC_TEXT("%d\xC3\xCA \xC8\xC4 \xB0\xD4\xC0\xD3\xC0\xCC \xBC\xCB\xB4\xD9\xBF\xEE \xB5\xCB\xB4\xCF\xB4\xD9."), iSec);
 
 	SendNotice(buf);
 
@@ -317,7 +317,7 @@ EVENTFUNC(timed_event)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ҽϴ."), info->left_second);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC3\xCA \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."), info->left_second);
 		--info->left_second;
 	}
 
@@ -329,7 +329,7 @@ ACMD(do_cmd)
 	/* RECALL_DELAY
 	   if (ch->m_pkRecallEvent != NULL)
 	   {
-	   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ǿϴ."));
+	   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 	   event_cancel(&ch->m_pkRecallEvent);
 	   return;
 	   }
@@ -337,7 +337,7 @@ ACMD(do_cmd)
 
 	if (ch->m_pkTimedEvent)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ǿϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 		event_cancel(&ch->m_pkTimedEvent);
 		return;
 	}
@@ -345,15 +345,15 @@ ACMD(do_cmd)
 	switch (subcmd)
 	{
 		case SCMD_LOGOUT:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("α ȭ  ϴ. ø ٸ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xCE\xB1\xD7\xC0\xCE \xC8\xAD\xB8\xE9\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6 \xB0\xA9\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB8\xAE\xBC\xBC\xBF\xE4."));
 			break;
 
 		case SCMD_QUIT:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ. ø ٸ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xD4\xC0\xD3\xC0\xBB \xC1\xBE\xB7\xE1 \xC7\xD5\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB8\xAE\xBC\xBC\xBF\xE4."));
 			break;
 
 		case SCMD_PHASE_SELECT:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ij͸ ȯ մϴ. ø ٸ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xB3\xB8\xAF\xC5\xCD\xB8\xA6 \xC0\xFC\xC8\xAF \xC7\xD5\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB8\xAE\xBC\xBC\xBF\xE4."));
 			break;
 	}
 
@@ -415,7 +415,7 @@ ACMD(do_mount)
 
 	if (distance > 600.0f)
 	{
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xBB \xB4\xF5 \xB0\xA1\xB1\xEE\xC0\xCC \xB0\xA1\xBC\xAD \xB3\xBB\xB8\xAE\xBC\xBC\xBF\xE4."));
 	return;
 	}
 
@@ -432,7 +432,7 @@ ACMD(do_mount)
 
 	if (!tch->IsNPC() || !tch->IsMountable())
 	{
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ű⿡ Ż  ."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB1\xE2\xBF\xA1\xB4\xC2 \xC5\xBB \xBC\xF6 \xBE\xF8\xBE\xEE\xBF\xE4."));
 	return;
 	}
 
@@ -440,7 +440,7 @@ ACMD(do_mount)
 
 	if (distance > 600.0f)
 	{
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    Ÿ."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xBB \xB4\xF5 \xB0\xA1\xB1\xEE\xC0\xCC \xB0\xA1\xBC\xAD \xC5\xB8\xBC\xBC\xBF\xE4."));
 	return;
 	}
 
@@ -491,14 +491,14 @@ ACMD(do_restart)
 				// ϰ쿡 üũ  ʴ´.
 				if (false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ. (%d )"), iTimeToDead - (180 - g_nPortalLimitTime));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - (180 - g_nPortalLimitTime));
 					return;
 				}
 			}
 
 			if (iTimeToDead > 170)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ. (%d )"), iTimeToDead - 170);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - 170);
 				return;
 			}
 		}
@@ -515,14 +515,14 @@ ACMD(do_restart)
 			if ((!ch->GetWarMap() || ch->GetWarMap()->GetType() == GUILD_WAR_TYPE_FLAG) ||
 			   	false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    ϴ. (%d )"), iTimeToDead - (180 - g_nPortalLimitTime));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - (180 - g_nPortalLimitTime));
 				return;
 			}
 		}
 
 		if (iTimeToDead > 173)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     ϴ. (%d  )"), iTimeToDead - 173);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xB8\xB6\xC0\xBB\xBF\xA1\xBC\xAD \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d \xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - 173);
 			return;
 		}
 	}
@@ -557,7 +557,7 @@ ACMD(do_restart)
 			{
 				if (CThreeWayWar::instance().GetReviveTokenForPlayer(ch->GetPlayerID()) <= 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ȱ ȸ  Ҿϴ!  ̵մϴ!"));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xC1\xF6\xBF\xA1\xBC\xAD \xBA\xCE\xC8\xB0 \xB1\xE2\xC8\xB8\xB8\xA6 \xB8\xF0\xB5\xCE \xC0\xD2\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9! \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9!"));
 					ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
 				}
 				else
@@ -658,7 +658,7 @@ ACMD(do_stat_minus)
 
 	if (ch->IsPolymorphed())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -725,7 +725,7 @@ ACMD(do_stat)
 
 	if (ch->IsPolymorphed())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -770,7 +770,7 @@ ACMD(do_pvp)
 {
 	if (ch->GetArena() != NULL || CArenaManager::instance().IsArenaMap(ch->GetMapIndex()) == true)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -789,7 +789,7 @@ ACMD(do_pvp)
 
 	if (pkVictim->GetArena() != NULL)
 	{
-		pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Դϴ."));
+		pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB4\xEB\xB7\xC3\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -806,7 +806,7 @@ ACMD(do_guildskillup)
 
 	if (!ch->GetGuild())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 忡  ʽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -820,7 +820,7 @@ ACMD(do_guildskillup)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ų    ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3 \xB7\xB9\xBA\xA7\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 }
 
@@ -893,13 +893,13 @@ ACMD(do_safebox_change_password)
 
 	if (!*arg1 || strlen(arg1)>6)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ߸ ȣ Էϼ̽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xDF\xB8\xF8\xB5\xC8 \xBE\xCF\xC8\xA3\xB8\xA6 \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (!*arg2 || strlen(arg2)>6)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ߸ ȣ Էϼ̽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xDF\xB8\xF8\xB5\xC8 \xBE\xCF\xC8\xA3\xB8\xA6 \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -912,7 +912,7 @@ ACMD(do_safebox_change_password)
 
 			if (isalpha(arg2[i]) == false)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> йȣ ڸ մϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBA\xF1\xB9\xD0\xB9\xF8\xC8\xA3\xB4\xC2 \xBF\xB5\xB9\xAE\xC0\xDA\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
 				return;
 			}
 		}
@@ -934,7 +934,7 @@ ACMD(do_mall_password)
 
 	if (!*arg1 || strlen(arg1) > 6)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ߸ ȣ Էϼ̽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xDF\xB8\xF8\xB5\xC8 \xBE\xCF\xC8\xA3\xB8\xA6 \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -942,13 +942,13 @@ ACMD(do_mall_password)
 
 	if (ch->GetMall())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> â ̹ ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB0\xA1 \xC0\xCC\xB9\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (iPulse - ch->GetMallLoadTime() < passes_per_sec * 10) // 10ʿ ѹ û 
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> â  10 ȿ   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB8\xA6 \xB4\xDD\xC0\xBA\xC1\xF6 10\xC3\xCA \xBE\xC8\xBF\xA1\xB4\xC2 \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -979,13 +979,13 @@ ACMD(do_ungroup)
 
 	if (!CPartyManager::instance().IsEnablePCParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>   Ƽ  ó   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xAD\xB9\xF6 \xB9\xAE\xC1\xA6\xB7\xCE \xC6\xC4\xC6\xBC \xB0\xFC\xB7\xC3 \xC3\xB3\xB8\xAE\xB8\xA6 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (ch->GetDungeon())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>  ȿ Ƽ   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC0\xFC \xBE\xC8\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA5 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -998,7 +998,7 @@ ACMD(do_ungroup)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ ̽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 		//pParty->SendPartyRemoveOneToAll(ch);
 		pParty->Quit(ch->GetPlayerID());
 		//pParty->SendPartyRemoveAllToOne(ch);
@@ -1037,7 +1037,7 @@ ACMD(do_war)
 	// üũѹ!
 	if (g->UnderAnyWar())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ̹ ٸ £   Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xC0\xFC\xC0\xEF\xBF\xA1 \xC2\xFC\xC0\xFC \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1063,7 +1063,7 @@ ACMD(do_war)
 	// üũ( 常 )
 	if (gm_pid != ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>    ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xB4\xEB\xC7\xD1 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1072,7 +1072,7 @@ ACMD(do_war)
 
 	if (!opp_g)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ׷ 尡 ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xB1 \xB1\xE6\xB5\xE5\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1083,7 +1083,7 @@ ACMD(do_war)
 			{
 				if (opp_g->UnderAnyWar())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  尡 ̹   Դϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
 					return;
 				}
 
@@ -1091,13 +1091,13 @@ ACMD(do_war)
 
 				if (g->GetGuildMoney() < iWarPrice)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  Ͽ    ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xFC\xBA\xF1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return;
 				}
 
 				if (opp_g->GetGuildMoney() < iWarPrice)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>    Ͽ    ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xC0\xFC\xBA\xF1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return;
 				}
 			}
@@ -1105,7 +1105,7 @@ ACMD(do_war)
 
 		case GUILD_WAR_SEND_DECLARE:
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹   Դϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xBC\xB1\xC0\xFC\xC6\xF7\xB0\xED \xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5\xC0\xD4\xB4\xCF\xB4\xD9."));
 				return;
 			}
 			break;
@@ -1114,7 +1114,7 @@ ACMD(do_war)
 			{
 				if (opp_g->UnderAnyWar())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  尡 ̹   Դϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
 					g->RequestRefuseWar(opp_g->GetID());
 					return;
 				}
@@ -1123,7 +1123,7 @@ ACMD(do_war)
 
 		case GUILD_WAR_RESERVE:
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ̹    Դϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF\xC0\xCC \xBF\xB9\xBE\xE0\xB5\xC8 \xB1\xE6\xB5\xE5 \xC0\xD4\xB4\xCF\xB4\xD9."));
 				return;
 			}
 			break;
@@ -1132,7 +1132,7 @@ ACMD(do_war)
 			return;
 
 		default:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ̹   Դϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF \xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5\xC0\xD4\xB4\xCF\xB4\xD9."));
 			g->RequestRefuseWar(opp_g->GetID());
 			return;
 	}
@@ -1142,12 +1142,12 @@ ACMD(do_war)
 		//    ִ  ʴ´.
 		if (g->GetLadderPoint() == 0)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   ڶ    ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB7\xB9\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 \xB8\xF0\xC0\xDA\xB6\xF3\xBC\xAD \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			SPDLOG_DEBUG("GuildWar.StartError.NEED_LADDER_POINT");
 		}
 		else if (g->GetMemberCount() < GUILD_WAR_MIN_MEMBER_COUNT)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ϱ ؼ ּ %d ־ մϴ."), GUILD_WAR_MIN_MEMBER_COUNT);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD8\xBC\xB1 \xC3\xD6\xBC\xD2\xC7\xD1 %d\xB8\xED\xC0\xCC \xC0\xD6\xBE\xEE\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."), GUILD_WAR_MIN_MEMBER_COUNT);
 			SPDLOG_DEBUG("GuildWar.StartError.NEED_MINIMUM_MEMBER[{}]", (int) GUILD_WAR_MIN_MEMBER_COUNT);
 		}
 		else
@@ -1161,9 +1161,9 @@ ACMD(do_war)
 	if (!opp_g->CanStartWar(GUILD_WAR_TYPE_FIELD))
 	{
 		if (opp_g->GetLadderPoint() == 0)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ڶ    ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB7\xB9\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 \xB8\xF0\xC0\xDA\xB6\xF3\xBC\xAD \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		else if (opp_g->GetMemberCount() < GUILD_WAR_MIN_MEMBER_COUNT)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     Ͽ    ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xE6\xB5\xE5\xBF\xF8 \xBC\xF6\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1177,7 +1177,7 @@ ACMD(do_war)
 		if (pCCI != NULL)
 			break;
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ƴմϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xCC \xC1\xA2\xBC\xD3\xC1\xDF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 		g->RequestRefuseWar(opp_g->GetID());
 		return;
 
@@ -1193,7 +1193,7 @@ ACMD(do_war)
 		if (pCCI != NULL)
 			break;
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ƴմϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xCC \xC1\xA2\xBC\xD3\xC1\xDF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 		g->RequestRefuseWar(opp_g->GetID());
 		return;
 
@@ -1218,7 +1218,7 @@ ACMD(do_nowar)
 
 	if (gm_pid != ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>    ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xB4\xEB\xC7\xD1 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1226,7 +1226,7 @@ ACMD(do_nowar)
 
 	if (!opp_g)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ׷ 尡 ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xB1 \xB1\xE6\xB5\xE5\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1267,7 +1267,7 @@ ACMD(do_messenger_auth)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1284,7 +1284,7 @@ ACMD(do_messenger_auth)
 		LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(arg2);
 
 		if (tch)
-			tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s   ģ  ź ߽ϴ."), ch->GetName());
+			tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xB8\xB7\xCE \xBA\xCE\xC5\xCD \xC4\xA3\xB1\xB8 \xB5\xEE\xB7\xCF\xC0\xBB \xB0\xC5\xBA\xCE \xB4\xE7\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), ch->GetName());
 	}
 
 	MessengerManager::instance().AuthToAdd(ch->GetName(), arg2, answer == 'y' ? false : true); // DENY
@@ -1317,7 +1317,7 @@ ACMD(do_unmount)
 	}
 	else
 	{
-		ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("κ丮     ϴ."));
+		ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xB0\xA1 \xB2\xCB \xC2\xF7\xBC\xAD \xB3\xBB\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 
 }
@@ -1371,7 +1371,7 @@ ACMD(do_view_equip)
 
 		   if (ch->GetSP() < iSPCost)
 		   {
-		   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŷ Ͽ ٸ     ϴ."));
+		   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA4\xBD\xC5\xB7\xC2\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB4\xD9\xB8\xA5 \xBB\xE7\xB6\xF7\xC0\xC7 \xC0\xE5\xBA\xF1\xB8\xA6 \xBA\xBC \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		   return;
 		   }
 		   ch->PointChange(POINT_SP, -iSPCost);
@@ -1384,13 +1384,13 @@ ACMD(do_party_request)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (ch->GetParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ Ƽ  Ƿ Խû   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC6\xC4\xC6\xBC\xBF\xA1 \xBC\xD3\xC7\xD8 \xC0\xD6\xC0\xB8\xB9\xC7\xB7\xCE \xB0\xA1\xC0\xD4\xBD\xC5\xC3\xBB\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1448,14 +1448,14 @@ ACMD(do_monarch_warpto)
 
 	if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 		return;
 	}
 	
 	// Ÿ ˻
 	if (!ch->IsMCOK(CHARACTER::MI_WARP))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ʰ Ÿ Դϴ."), ch->GetMCLTime(CHARACTER::MI_WARP));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_WARP));
 		return;
 	}
 
@@ -1466,7 +1466,7 @@ ACMD(do_monarch_warpto)
 	if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, WarpPrice);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
 		return;	
 	}
 
@@ -1477,7 +1477,7 @@ ACMD(do_monarch_warpto)
 
 	if (!*arg1)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(": warpto "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB\xB9\xFD: warpto "));
 		return;
 	}
 
@@ -1491,18 +1491,18 @@ ACMD(do_monarch_warpto)
 		{
 			if (pkCCI->bEmpire != ch->GetEmpire())
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Ÿ Դ ̵Ҽ ϴ"));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 				return;
 			}
 
 			if (pkCCI->bChannel != g_bChannel)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ش  %d äο ֽϴ. ( ä %d)"), pkCCI->bChannel, g_bChannel);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC0\xAF\xC0\xFA\xB4\xC2 %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE %d)"), pkCCI->bChannel, g_bChannel);
 				return;
 			}
 			if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return;
 			}
 
@@ -1513,7 +1513,7 @@ ACMD(do_monarch_warpto)
 			else
 			{
 				//ch->ChatPacket(CHAT_TYPE_INFO, "You warp to (%d, %d)", pos.x, pos.y);
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Է ̵մϴ"), arg1);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), arg1);
 				ch->WarpSet(pos.x, pos.y);
 				
 				//  谨	
@@ -1534,19 +1534,19 @@ ACMD(do_monarch_warpto)
 	{
 		if (tch->GetEmpire() != ch->GetEmpire())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ÿ Դ ̵Ҽ ϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 			return;
 		}
 		if (!IsMonarchWarpZone(tch->GetMapIndex()))
 		{
-			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 		x = tch->GetX();
 		y = tch->GetY();
 	}
 
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Է ̵մϴ"), arg1);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), arg1);
 	ch->WarpSet(x, y);
 	ch->Stop();
 
@@ -1567,20 +1567,20 @@ ACMD(do_monarch_transfer)
 
 	if (!*arg1)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(": transfer "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB\xB9\xFD: transfer "));
 		return;
 	}
 	
 	if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 		return;
 	}
 	
 	// Ÿ ˻
 	if (!ch->IsMCOK(CHARACTER::MI_TRANSFER))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ʰ Ÿ Դϴ."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
 		return;
 	}
 
@@ -1591,7 +1591,7 @@ ACMD(do_monarch_transfer)
 	if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, WarpPrice);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
 		return;	
 	}
 
@@ -1606,22 +1606,22 @@ ACMD(do_monarch_transfer)
 		{
 			if (pkCCI->bEmpire != ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ   ȯ  ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return;
 			}
 			if (pkCCI->bChannel != g_bChannel)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  %d äο   Դϴ. ( ä: %d)"), arg1, pkCCI->bChannel, g_bChannel);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC1\xA2\xBC\xD3 \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE: %d)"), arg1, pkCCI->bChannel, g_bChannel);
 				return;
 			}
 			if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return;
 			}
 			if (!IsMonarchWarpZone(ch->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ȯ  ϴ."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return;
 			}
 
@@ -1633,7 +1633,7 @@ ACMD(do_monarch_transfer)
 			pgg.lY = ch->GetY();
 
 			P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGTransfer));
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ȯϿϴ."), arg1);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), arg1);
 			
 			//  谨	
 			CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
@@ -1642,7 +1642,7 @@ ACMD(do_monarch_transfer)
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ԷϽ ̸  ڰ ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xD4\xB7\xC2\xC7\xCF\xBD\xC5 \xC0\xCC\xB8\xA7\xC0\xBB \xB0\xA1\xC1\xF8 \xBB\xE7\xBF\xEB\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 
 		return;
@@ -1651,23 +1651,23 @@ ACMD(do_monarch_transfer)
 
 	if (ch == tch)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڽ ȯ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (tch->GetEmpire() != ch->GetEmpire())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ   ȯ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 	if (!IsMonarchWarpZone(tch->GetMapIndex()))
 	{
-		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 	if (!IsMonarchWarpZone(ch->GetMapIndex()))
 	{
-		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ȯ  ϴ."));
+		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1684,24 +1684,24 @@ ACMD(do_monarch_info)
 {
 	if (CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))	
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xC0\xC7 \xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
 		TMonarchInfo * p = CMonarch::instance().GetMonarch();
 		for (int n = 1; n < 4; ++n)
 		{
 			if (n == ch->GetEmpire())
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s] : %s  ݾ %lld "), EMPIRE_NAME(n), p->name[n], p->money[n]);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  \xBA\xB8\xC0\xAF\xB1\xDD\xBE\xD7 %lld "), EMPIRE_NAME(n), p->name[n], p->money[n]);
 			else
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s] : %s  "), EMPIRE_NAME(n), p->name[n]);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
 				
 		}
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
 		TMonarchInfo * p = CMonarch::instance().GetMonarch();
 		for (int n = 1; n < 4; ++n)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s] : %s  "), EMPIRE_NAME(n), p->name[n]);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
 				
 		}
 	}
@@ -1769,7 +1769,7 @@ ACMD(do_monarch_tax)
 	//  ˻	
 	if (!ch->IsMonarch())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ Ҽ ִ Դϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 		return;
 	}
 
@@ -1778,20 +1778,20 @@ ACMD(do_monarch_tax)
 	str_to_number(tax,  arg1);
 
 	if (tax < 1 || tax > 50)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("1-50  ġ ּ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("1-50 \xBB\xE7\xC0\xCC\xC0\xC7 \xBC\xF6\xC4\xA1\xB8\xA6 \xBC\xB1\xC5\xC3\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4"));
 
 	quest::CQuestManager::instance().SetEventFlag("trade_tax", tax); 
 
 	// ֿ ޼ ϳ
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d % Ǿϴ"));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBC\xB1\xDD\xC0\xCC %d %\xB7\xCE \xBC\xB3\xC1\xA4\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"));
 
 	//  
 	char szMsg[1024];	
 
-	snprintf(szMsg, sizeof(szMsg), "   %d %%  Ǿϴ", tax);
+	snprintf(szMsg, sizeof(szMsg), "\xB1\xBA\xC1\xD6\xC0\xC7 \xB8\xED\xC0\xB8\xB7\xCE \xBC\xBC\xB1\xDD\xC0\xCC %d %% \xB7\xCE \xBA\xAF\xB0\xE6\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9", tax);
 	BroadcastNotice(szMsg);
 
-	snprintf(szMsg, sizeof(szMsg), "δ ŷ ݾ %d %%   Ե˴ϴ.", tax);
+	snprintf(szMsg, sizeof(szMsg), "\xBE\xD5\xC0\xB8\xB7\xCE\xB4\xC2 \xB0\xC5\xB7\xA1 \xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xB1\xB9\xB0\xED\xB7\xCE \xB5\xE9\xBE\xEE\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9.", tax);
 	BroadcastNotice(szMsg);
 
 	// Ÿ ʱȭ 
@@ -1832,7 +1832,7 @@ ACMD(do_monarch_mob)
 
 	if (!ch->IsMonarch())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ Ҽ ִ Դϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 		return;
 	}
 	
@@ -1849,7 +1849,7 @@ ACMD(do_monarch_mob)
 	{
 		if (mapEmpire != pcEmpire && mapEmpire != 0)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڱ 信   ִ Դϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xB1\xB9 \xBF\xB5\xC5\xE4\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 			return;
 		}
 	}
@@ -1860,7 +1860,7 @@ ACMD(do_monarch_mob)
 	//  Ÿ ˻
 	if (!ch->IsMCOK(CHARACTER::MI_SUMMON))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ʰ Ÿ Դϴ."), ch->GetMCLTime(CHARACTER::MI_SUMMON));	
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_SUMMON));	
 		return;
 	}
 	
@@ -1868,7 +1868,7 @@ ACMD(do_monarch_mob)
 	if (!CMonarch::instance().IsMoneyOk(SummonPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, SummonPrice);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, SummonPrice);
 		return;	
 	}
 
@@ -1899,7 +1899,7 @@ ACMD(do_monarch_mob)
 
 	if (0 == cs_dwMonarchMobVnums[count])
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȯҼ   Դϴ. ȯ ʹ Ȩ ϼ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC8\xAF\xC7\xD2\xBC\xF6 \xBE\xF8\xB4\xC2 \xB8\xF3\xBD\xBA\xC5\xCD \xC0\xD4\xB4\xCF\xB4\xD9. \xBC\xD2\xC8\xAF\xB0\xA1\xB4\xC9\xC7\xD1 \xB8\xF3\xBD\xBA\xC5\xCD\xB4\xC2 \xC8\xA8\xC6\xE4\xC0\xCC\xC1\xF6\xB8\xA6 \xC2\xFC\xC1\xB6\xC7\xCF\xBC\xBC\xBF\xE4"));
 		return;
 	}
 
@@ -1927,92 +1927,92 @@ static const char* FN_point_string(int apply_number)
 {
 	switch (apply_number)
 	{
-		case POINT_MAX_HP:	return LC_TEXT("ִ  +%d");
-		case POINT_MAX_SP:	return LC_TEXT("ִ ŷ +%d");
-		case POINT_HT:		return LC_TEXT("ü +%d");
-		case POINT_IQ:		return LC_TEXT(" +%d");
-		case POINT_ST:		return LC_TEXT("ٷ +%d");
-		case POINT_DX:		return LC_TEXT("ø +%d");
-		case POINT_ATT_SPEED:	return LC_TEXT("ݼӵ +%d");
-		case POINT_MOV_SPEED:	return LC_TEXT("̵ӵ %d");
-		case POINT_CASTING_SPEED:	return LC_TEXT("Ÿ -%d");
-		case POINT_HP_REGEN:	return LC_TEXT(" ȸ +%d");
-		case POINT_SP_REGEN:	return LC_TEXT("ŷ ȸ +%d");
-		case POINT_POISON_PCT:	return LC_TEXT(" %d");
-		case POINT_STUN_PCT:	return LC_TEXT(" +%d");
-		case POINT_SLOW_PCT:	return LC_TEXT("ο +%d");
-		case POINT_CRITICAL_PCT:	return LC_TEXT("%d%% Ȯ ġŸ ");
-		case POINT_RESIST_CRITICAL:	return LC_TEXT(" ġŸ Ȯ %d%% ");
-		case POINT_PENETRATE_PCT:	return LC_TEXT("%d%% Ȯ  ");
-		case POINT_RESIST_PENETRATE: return LC_TEXT("   Ȯ %d%% ");
-		case POINT_ATTBONUS_HUMAN:	return LC_TEXT("ΰ  Ÿġ +%d%%");
-		case POINT_ATTBONUS_ANIMAL:	return LC_TEXT("  Ÿġ +%d%%");
-		case POINT_ATTBONUS_ORC:	return LC_TEXT(" Ÿġ +%d%%");
-		case POINT_ATTBONUS_MILGYO:	return LC_TEXT("б Ÿġ +%d%%");
-		case POINT_ATTBONUS_UNDEAD:	return LC_TEXT("ü Ÿġ +%d%%");
-		case POINT_ATTBONUS_DEVIL:	return LC_TEXT("Ǹ Ÿġ +%d%%");
-		case POINT_STEAL_HP:		return LC_TEXT("Ÿġ %d%%   ");
-		case POINT_STEAL_SP:		return LC_TEXT("Ÿġ %d%%  ŷ ");
-		case POINT_MANA_BURN_PCT:	return LC_TEXT("%d%% Ȯ Ÿݽ  ŷ Ҹ");
-		case POINT_DAMAGE_SP_RECOVER:	return LC_TEXT("%d%% Ȯ ؽ ŷ ȸ");
-		case POINT_BLOCK:			return LC_TEXT("Ÿݽ  Ȯ %d%%");
-		case POINT_DODGE:			return LC_TEXT("Ȱ  ȸ Ȯ %d%%");
-		case POINT_RESIST_SWORD:	return LC_TEXT("Ѽհ  %d%%");
-		case POINT_RESIST_TWOHAND:	return LC_TEXT("հ  %d%%");
-		case POINT_RESIST_DAGGER:	return LC_TEXT("μհ  %d%%");
-		case POINT_RESIST_BELL:		return LC_TEXT("  %d%%");
-		case POINT_RESIST_FAN:		return LC_TEXT("ä  %d%%");
-		case POINT_RESIST_BOW:		return LC_TEXT("Ȱ  %d%%");
-		case POINT_RESIST_FIRE:		return LC_TEXT("ȭ  %d%%");
-		case POINT_RESIST_ELEC:		return LC_TEXT("  %d%%");
-		case POINT_RESIST_MAGIC:	return LC_TEXT("  %d%%");
-		case POINT_RESIST_WIND:		return LC_TEXT("ٶ  %d%%");
-		case POINT_RESIST_ICE:		return LC_TEXT("ñ  %d%%");
-		case POINT_RESIST_EARTH:	return LC_TEXT("  %d%%");
-		case POINT_RESIST_DARK:		return LC_TEXT("  %d%%");
-		case POINT_REFLECT_MELEE:	return LC_TEXT(" Ÿġ ݻ Ȯ : %d%%");
-		case POINT_REFLECT_CURSE:	return LC_TEXT(" ǵ Ȯ %d%%");
-		case POINT_POISON_REDUCE:	return LC_TEXT("  %d%%");
-		case POINT_KILL_SP_RECOVER:	return LC_TEXT("%d%% Ȯ ġ ŷ ȸ");
-		case POINT_EXP_DOUBLE_BONUS:	return LC_TEXT("%d%% Ȯ ġ ġ ߰ ");
-		case POINT_GOLD_DOUBLE_BONUS:	return LC_TEXT("%d%% Ȯ ġ  2 ");
-		case POINT_ITEM_DROP_BONUS:	return LC_TEXT("%d%% Ȯ ġ  2 ");
-		case POINT_POTION_BONUS:	return LC_TEXT("  %d%%  ");
-		case POINT_KILL_HP_RECOVERY:	return LC_TEXT("%d%% Ȯ ġ  ȸ");
-//		case POINT_IMMUNE_STUN:	return LC_TEXT("  %d%%");
-//		case POINT_IMMUNE_SLOW:	return LC_TEXT("  %d%%");
-//		case POINT_IMMUNE_FALL:	return LC_TEXT("Ѿ  %d%%");
+		case POINT_MAX_HP:	return LC_TEXT("\xC3\xD6\xB4\xEB \xBB\xFD\xB8\xED\xB7\xC2 +%d");
+		case POINT_MAX_SP:	return LC_TEXT("\xC3\xD6\xB4\xEB \xC1\xA4\xBD\xC5\xB7\xC2 +%d");
+		case POINT_HT:		return LC_TEXT("\xC3\xBC\xB7\xC2 +%d");
+		case POINT_IQ:		return LC_TEXT("\xC1\xF6\xB4\xC9 +%d");
+		case POINT_ST:		return LC_TEXT("\xB1\xD9\xB7\xC2 +%d");
+		case POINT_DX:		return LC_TEXT("\xB9\xCE\xC3\xB8 +%d");
+		case POINT_ATT_SPEED:	return LC_TEXT("\xB0\xF8\xB0\xDD\xBC\xD3\xB5\xB5 +%d");
+		case POINT_MOV_SPEED:	return LC_TEXT("\xC0\xCC\xB5\xBF\xBC\xD3\xB5\xB5 %d");
+		case POINT_CASTING_SPEED:	return LC_TEXT("\xC4\xF0\xC5\xB8\xC0\xD3 -%d");
+		case POINT_HP_REGEN:	return LC_TEXT("\xBB\xFD\xB8\xED\xB7\xC2 \xC8\xB8\xBA\xB9 +%d");
+		case POINT_SP_REGEN:	return LC_TEXT("\xC1\xA4\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9 +%d");
+		case POINT_POISON_PCT:	return LC_TEXT("\xB5\xB6\xB0\xF8\xB0\xDD %d");
+		case POINT_STUN_PCT:	return LC_TEXT("\xBD\xBA\xC5\xCF +%d");
+		case POINT_SLOW_PCT:	return LC_TEXT("\xBD\xBD\xB7\xCE\xBF\xEC +%d");
+		case POINT_CRITICAL_PCT:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC4\xA1\xB8\xED\xC5\xB8 \xB0\xF8\xB0\xDD");
+		case POINT_RESIST_CRITICAL:	return LC_TEXT("\xBB\xF3\xB4\xEB\xC0\xC7 \xC4\xA1\xB8\xED\xC5\xB8 \xC8\xAE\xB7\xFC %d%% \xB0\xA8\xBC\xD2");
+		case POINT_PENETRATE_PCT:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xB0\xFC\xC5\xEB \xB0\xF8\xB0\xDD");
+		case POINT_RESIST_PENETRATE: return LC_TEXT("\xBB\xF3\xB4\xEB\xC0\xC7 \xB0\xFC\xC5\xEB \xB0\xF8\xB0\xDD \xC8\xAE\xB7\xFC %d%% \xB0\xA8\xBC\xD2");
+		case POINT_ATTBONUS_HUMAN:	return LC_TEXT("\xC0\xCE\xB0\xA3\xB7\xF9 \xB8\xF3\xBD\xBA\xC5\xCD \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
+		case POINT_ATTBONUS_ANIMAL:	return LC_TEXT("\xB5\xBF\xB9\xB0\xB7\xF9 \xB8\xF3\xBD\xBA\xC5\xCD \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
+		case POINT_ATTBONUS_ORC:	return LC_TEXT("\xBF\xF5\xB1\xCD\xC1\xB7 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
+		case POINT_ATTBONUS_MILGYO:	return LC_TEXT("\xB9\xD0\xB1\xB3\xB7\xF9 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
+		case POINT_ATTBONUS_UNDEAD:	return LC_TEXT("\xBD\xC3\xC3\xBC\xB7\xF9 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
+		case POINT_ATTBONUS_DEVIL:	return LC_TEXT("\xBE\xC7\xB8\xB6\xB7\xF9 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
+		case POINT_STEAL_HP:		return LC_TEXT("\xC5\xB8\xB0\xDD\xC4\xA1 %d%% \xB8\xA6 \xBB\xFD\xB8\xED\xB7\xC2\xC0\xB8\xB7\xCE \xC8\xED\xBC\xF6");
+		case POINT_STEAL_SP:		return LC_TEXT("\xC5\xB8\xB7\xC2\xC4\xA1 %d%% \xB8\xA6 \xC1\xA4\xBD\xC5\xB7\xC2\xC0\xB8\xB7\xCE \xC8\xED\xBC\xF6");
+		case POINT_MANA_BURN_PCT:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC5\xB8\xB0\xDD\xBD\xC3 \xBB\xF3\xB4\xEB \xC0\xFC\xBD\xC5\xB7\xC2 \xBC\xD2\xB8\xF0");
+		case POINT_DAMAGE_SP_RECOVER:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC7\xC7\xC7\xD8\xBD\xC3 \xC1\xA4\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9");
+		case POINT_BLOCK:			return LC_TEXT("\xB9\xB0\xB8\xAE\xC5\xB8\xB0\xDD\xBD\xC3 \xBA\xED\xB7\xB0 \xC8\xAE\xB7\xFC %d%%");
+		case POINT_DODGE:			return LC_TEXT("\xC8\xB0 \xB0\xF8\xB0\xDD \xC8\xB8\xC7\xC7 \xC8\xAE\xB7\xFC %d%%");
+		case POINT_RESIST_SWORD:	return LC_TEXT("\xC7\xD1\xBC\xD5\xB0\xCB \xB9\xE6\xBE\xEE %d%%");
+		case POINT_RESIST_TWOHAND:	return LC_TEXT("\xBE\xE7\xBC\xD5\xB0\xCB \xB9\xE6\xBE\xEE %d%%");
+		case POINT_RESIST_DAGGER:	return LC_TEXT("\xB5\xCE\xBC\xD5\xB0\xCB \xB9\xE6\xBE\xEE %d%%");
+		case POINT_RESIST_BELL:		return LC_TEXT("\xB9\xE6\xBF\xEF \xB9\xE6\xBE\xEE %d%%");
+		case POINT_RESIST_FAN:		return LC_TEXT("\xBA\xCE\xC3\xA4 \xB9\xE6\xBE\xEE %d%%");
+		case POINT_RESIST_BOW:		return LC_TEXT("\xC8\xB0\xB0\xF8\xB0\xDD \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_FIRE:		return LC_TEXT("\xC8\xAD\xBF\xB0 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_ELEC:		return LC_TEXT("\xC0\xFC\xB1\xE2 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_MAGIC:	return LC_TEXT("\xB8\xB6\xB9\xFD \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_WIND:		return LC_TEXT("\xB9\xD9\xB6\xF7 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_ICE:		return LC_TEXT("\xB3\xC3\xB1\xE2 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_EARTH:	return LC_TEXT("\xB4\xEB\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_DARK:		return LC_TEXT("\xBE\xEE\xB5\xD2 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_REFLECT_MELEE:	return LC_TEXT("\xC1\xF7\xC1\xA2 \xC5\xB8\xB0\xDD\xC4\xA1 \xB9\xDD\xBB\xE7 \xC8\xAE\xB7\xFC : %d%%");
+		case POINT_REFLECT_CURSE:	return LC_TEXT("\xC0\xFA\xC1\xD6 \xB5\xC7\xB5\xB9\xB8\xAE\xB1\xE2 \xC8\xAE\xB7\xFC %d%%");
+		case POINT_POISON_REDUCE:	return LC_TEXT("\xB5\xB6 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_KILL_SP_RECOVER:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xC1\xA4\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9");
+		case POINT_EXP_DOUBLE_BONUS:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xB0\xE6\xC7\xE8\xC4\xA1 \xC3\xDF\xB0\xA1 \xBB\xF3\xBD\xC2");
+		case POINT_GOLD_DOUBLE_BONUS:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xB5\xB7 2\xB9\xE8 \xB5\xE5\xB7\xD3");
+		case POINT_ITEM_DROP_BONUS:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xBE\xC6\xC0\xCC\xC5\xDB 2\xB9\xE8 \xB5\xE5\xB7\xD3");
+		case POINT_POTION_BONUS:	return LC_TEXT("\xB9\xB0\xBE\xE0 \xBB\xE7\xBF\xEB\xBD\xC3 %d%% \xBC\xBA\xB4\xC9 \xC1\xF5\xB0\xA1");
+		case POINT_KILL_HP_RECOVERY:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xBB\xFD\xB8\xED\xB7\xC2 \xC8\xB8\xBA\xB9");
+//		case POINT_IMMUNE_STUN:	return LC_TEXT("\xB1\xE2\xC0\xFD\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBD %d%%");
+//		case POINT_IMMUNE_SLOW:	return LC_TEXT("\xB4\xC0\xB7\xC1\xC1\xF6\xC1\xF6 \xBE\xCA\xC0\xBD %d%%");
+//		case POINT_IMMUNE_FALL:	return LC_TEXT("\xB3\xD1\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xC0\xBD %d%%");
 //		case POINT_SKILL:	return LC_TEXT("");
 //		case POINT_BOW_DISTANCE:	return LC_TEXT("");
-		case POINT_ATT_GRADE_BONUS:	return LC_TEXT("ݷ +%d");
-		case POINT_DEF_GRADE_BONUS:	return LC_TEXT(" +%d");
-		case POINT_MAGIC_ATT_GRADE:	return LC_TEXT(" ݷ +%d");
-		case POINT_MAGIC_DEF_GRADE:	return LC_TEXT("  +%d");
+		case POINT_ATT_GRADE_BONUS:	return LC_TEXT("\xB0\xF8\xB0\xDD\xB7\xC2 +%d");
+		case POINT_DEF_GRADE_BONUS:	return LC_TEXT("\xB9\xE6\xBE\xEE\xB7\xC2 +%d");
+		case POINT_MAGIC_ATT_GRADE:	return LC_TEXT("\xB8\xB6\xB9\xFD \xB0\xF8\xB0\xDD\xB7\xC2 +%d");
+		case POINT_MAGIC_DEF_GRADE:	return LC_TEXT("\xB8\xB6\xB9\xFD \xB9\xE6\xBE\xEE\xB7\xC2 +%d");
 //		case POINT_CURSE_PCT:	return LC_TEXT("");
-		case POINT_MAX_STAMINA:	return LC_TEXT("ִ  +%d");
-		case POINT_ATTBONUS_WARRIOR:	return LC_TEXT("翡  +%d%%");
-		case POINT_ATTBONUS_ASSASSIN:	return LC_TEXT("ڰ  +%d%%");
-		case POINT_ATTBONUS_SURA:		return LC_TEXT("󿡰  +%d%%");
-		case POINT_ATTBONUS_SHAMAN:		return LC_TEXT("翡  +%d%%");
-		case POINT_ATTBONUS_MONSTER:	return LC_TEXT("Ϳ  +%d%%");
-		case POINT_MALL_ATTBONUS:		return LC_TEXT("ݷ +%d%%");
-		case POINT_MALL_DEFBONUS:		return LC_TEXT(" +%d%%");
-		case POINT_MALL_EXPBONUS:		return LC_TEXT("ġ %d%%");
-		case POINT_MALL_ITEMBONUS:		return LC_TEXT("  %.1f");
-		case POINT_MALL_GOLDBONUS:		return LC_TEXT("  %.1f");
-		case POINT_MAX_HP_PCT:			return LC_TEXT("ִ  +%d%%");
-		case POINT_MAX_SP_PCT:			return LC_TEXT("ִ ŷ +%d%%");
-		case POINT_SKILL_DAMAGE_BONUS:	return LC_TEXT("ų  %d%%");
-		case POINT_NORMAL_HIT_DAMAGE_BONUS:	return LC_TEXT("Ÿ  %d%%");
-		case POINT_SKILL_DEFEND_BONUS:		return LC_TEXT("ų   %d%%");
-		case POINT_NORMAL_HIT_DEFEND_BONUS:	return LC_TEXT("Ÿ   %d%%");
+		case POINT_MAX_STAMINA:	return LC_TEXT("\xC3\xD6\xB4\xEB \xC1\xF6\xB1\xB8\xB7\xC2 +%d");
+		case POINT_ATTBONUS_WARRIOR:	return LC_TEXT("\xB9\xAB\xBB\xE7\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
+		case POINT_ATTBONUS_ASSASSIN:	return LC_TEXT("\xC0\xDA\xB0\xB4\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
+		case POINT_ATTBONUS_SURA:		return LC_TEXT("\xBC\xF6\xB6\xF3\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
+		case POINT_ATTBONUS_SHAMAN:		return LC_TEXT("\xB9\xAB\xB4\xE7\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
+		case POINT_ATTBONUS_MONSTER:	return LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
+		case POINT_MALL_ATTBONUS:		return LC_TEXT("\xB0\xF8\xB0\xDD\xB7\xC2 +%d%%");
+		case POINT_MALL_DEFBONUS:		return LC_TEXT("\xB9\xE6\xBE\xEE\xB7\xC2 +%d%%");
+		case POINT_MALL_EXPBONUS:		return LC_TEXT("\xB0\xE6\xC7\xE8\xC4\xA1 %d%%");
+		case POINT_MALL_ITEMBONUS:		return LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xB5\xE5\xB7\xD3\xC0\xB2 %.1f\xB9\xE8");
+		case POINT_MALL_GOLDBONUS:		return LC_TEXT("\xB5\xB7 \xB5\xE5\xB7\xD3\xC0\xB2 %.1f\xB9\xE8");
+		case POINT_MAX_HP_PCT:			return LC_TEXT("\xC3\xD6\xB4\xEB \xBB\xFD\xB8\xED\xB7\xC2 +%d%%");
+		case POINT_MAX_SP_PCT:			return LC_TEXT("\xC3\xD6\xB4\xEB \xC1\xA4\xBD\xC5\xB7\xC2 +%d%%");
+		case POINT_SKILL_DAMAGE_BONUS:	return LC_TEXT("\xBD\xBA\xC5\xB3 \xB5\xA5\xB9\xCC\xC1\xF6 %d%%");
+		case POINT_NORMAL_HIT_DAMAGE_BONUS:	return LC_TEXT("\xC6\xF2\xC5\xB8 \xB5\xA5\xB9\xCC\xC1\xF6 %d%%");
+		case POINT_SKILL_DEFEND_BONUS:		return LC_TEXT("\xBD\xBA\xC5\xB3 \xB5\xA5\xB9\xCC\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_NORMAL_HIT_DEFEND_BONUS:	return LC_TEXT("\xC6\xF2\xC5\xB8 \xB5\xA5\xB9\xCC\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
 //		case POINT_PC_BANG_EXP_BONUS:	return LC_TEXT("");
 //		case POINT_PC_BANG_DROP_BONUS:	return LC_TEXT("");
 //		case POINT_EXTRACT_HP_PCT:	return LC_TEXT("");
-		case POINT_RESIST_WARRIOR:	return LC_TEXT("ݿ %d%% ");
-		case POINT_RESIST_ASSASSIN:	return LC_TEXT("ڰݿ %d%% ");
-		case POINT_RESIST_SURA:		return LC_TEXT("ݿ %d%% ");
-		case POINT_RESIST_SHAMAN:	return LC_TEXT("ݿ %d%% ");
+		case POINT_RESIST_WARRIOR:	return LC_TEXT("\xB9\xAB\xBB\xE7\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
+		case POINT_RESIST_ASSASSIN:	return LC_TEXT("\xC0\xDA\xB0\xB4\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
+		case POINT_RESIST_SURA:		return LC_TEXT("\xBC\xF6\xB6\xF3\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
+		case POINT_RESIST_SHAMAN:	return LC_TEXT("\xB9\xAB\xB4\xE7\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
 		default:					return NULL;
 	}
 }
@@ -2050,7 +2050,7 @@ static bool FN_hair_affect_string(LPCHARACTER ch, char *buf, size_t bufsiz)
 	mon		= ltm.tm_mon + 1;
 	day		= ltm.tm_mday;
 
-	snprintf(buf + offset, bufsiz - offset, LC_TEXT(" ( : %d %d %d)"), year, mon, day);
+	snprintf(buf + offset, bufsiz - offset, LC_TEXT(" (\xB8\xB8\xB7\xE1\xC0\xCF : %d\xB3\xE2 %d\xBF\xF9 %d\xC0\xCF)"), year, mon, day);
 
 	return true;
 }
@@ -2379,9 +2379,9 @@ ACMD(do_dice)
 	int n = Random::get(start, end);
 	
 	if (ch->GetParty())
-		ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_INFO, LC_TEXT("%s ֻ  %d Խϴ. (%d-%d)"), ch->GetName(), n, start, end);
+		ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xC0\xCC \xC1\xD6\xBB\xE7\xC0\xA7\xB8\xA6 \xB1\xBC\xB7\xC1 %d\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9. (%d-%d)"), ch->GetName(), n, start, end);
 	else
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ֻ  %d Խϴ. (%d-%d)"), n, start, end);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xCC \xC1\xD6\xBB\xE7\xC0\xA7\xB8\xA6 \xB1\xBC\xB7\xC1 %d\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9. (%d-%d)"), n, start, end);
 }
 
 ACMD(do_click_mall)
@@ -2463,7 +2463,7 @@ ACMD(do_ride)
 
 
     // Ÿų   
-    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ȯּ."));
+    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
 }
 
 #ifdef __AUCTION__
diff --git a/src/game/src/cmd_gm.cpp b/src/game/src/cmd_gm.cpp
index 1ae4d3d..15fc569 100644
--- a/src/game/src/cmd_gm.cpp
+++ b/src/game/src/cmd_gm.cpp
@@ -308,44 +308,44 @@ bool CHARACTER_GoToName(LPCHARACTER ch, BYTE empire, int mapIndex, const char* g
 
 /*
    = {
-   { "A1|",		0, 1,  4693, 9642 },
-   { "A3|ھ",		0, 3,  3608, 8776 },
+   { "A1|\xBF\xB5\xBE\xC8\xC0\xBE\xBC\xBA",		0, 1,  4693, 9642 },
+   { "A3|\xC0\xDA\xBE\xE7\xC7\xF6",		0, 3,  3608, 8776 },
 
-   { "B1|",		0, 21,  557, 1579 },
-   { "B3|",		0, 23, 1385, 2349 },
+   { "B1|\xC1\xB6\xBE\xC8\xC0\xBE\xBC\xBA",		0, 21,  557, 1579 },
+   { "B3|\xBA\xB9\xC1\xA4\xC7\xF6",		0, 23, 1385, 2349 },
 
-   { "C1|",		0, 41, 9696, 2784 },
-   { "C3|ڶ",		0, 43, 8731, 2426 },
+   { "C1|\xC6\xF2\xB9\xAB\xC0\xBE\xBC\xBA",		0, 41, 9696, 2784 },
+   { "C3|\xB9\xDA\xB6\xF3\xC7\xF6",		0, 43, 8731, 2426 },
 
 // Snow
-{ "Snow|ѻ",		1, 61, 4342, 2906 },
-{ "Snow|ѻ",		2, 61, 3752, 1749 },
-{ "Snow|ѻ",		3, 61, 4918, 1736 },
+{ "Snow|\xBC\xAD\xC7\xD1\xBB\xEA",		1, 61, 4342, 2906 },
+{ "Snow|\xBC\xAD\xC7\xD1\xBB\xEA",		2, 61, 3752, 1749 },
+{ "Snow|\xBC\xAD\xC7\xD1\xBB\xEA",		3, 61, 4918, 1736 },
 
 // Flame
-{ "Flame|ȭ|ȭ",	1, 62, 5994, 7563 },
-{ "Flame|ȭ|ȭ",	2, 62, 5978, 6222 },
-{ "Flame|ȭ|ȭ",	3, 62, 7307, 6898 },
+{ "Flame|\xB5\xB5\xBF\xB0\xC8\xAD\xC1\xF6|\xC8\xAD\xBF\xB0",	1, 62, 5994, 7563 },
+{ "Flame|\xB5\xB5\xBF\xB0\xC8\xAD\xC1\xF6|\xC8\xAD\xBF\xB0",	2, 62, 5978, 6222 },
+{ "Flame|\xB5\xB5\xBF\xB0\xC8\xAD\xC1\xF6|\xC8\xAD\xBF\xB0",	3, 62, 7307, 6898 },
 
 // Desert
-{ "Desert|縷|縷",	1, 63, 2178, 6272 },
-{ "Desert|縷|縷",	2, 63, 2219, 5027 },
-{ "Desert|縷|縷",	3, 63, 3440, 5025 },
+{ "Desert|\xBF\xB5\xBA\xF1\xBB\xE7\xB8\xB7|\xBB\xE7\xB8\xB7",	1, 63, 2178, 6272 },
+{ "Desert|\xBF\xB5\xBA\xF1\xBB\xE7\xB8\xB7|\xBB\xE7\xB8\xB7",	2, 63, 2219, 5027 },
+{ "Desert|\xBF\xB5\xBA\xF1\xBB\xE7\xB8\xB7|\xBB\xE7\xB8\xB7",	3, 63, 3440, 5025 },
 
 // Threeway
-{ "Three|·",		1, 64, 4021, 6739 },
-{ "Three|·",		2, 64, 2704, 7399 },
-{ "Three|·",		3, 64, 3213, 8080 },
+{ "Three|\xBD\xC2\xB7\xE6\xB0\xEE",		1, 64, 4021, 6739 },
+{ "Three|\xBD\xC2\xB7\xE6\xB0\xEE",		2, 64, 2704, 7399 },
+{ "Three|\xBD\xC2\xB7\xE6\xB0\xEE",		3, 64, 3213, 8080 },
 
 // б
-{ "Milgyo|б",	1, 65, 5536, 1436 },
-{ "Milgyo|б",	2, 65, 5536, 1436 },
-{ "Milgyo|б",	3, 65, 5536, 1436 },
+{ "Milgyo|\xB9\xD0\xB1\xB3\xBB\xE7\xBF\xF8",	1, 65, 5536, 1436 },
+{ "Milgyo|\xB9\xD0\xB1\xB3\xBB\xE7\xBF\xF8",	2, 65, 5536, 1436 },
+{ "Milgyo|\xB9\xD0\xB1\xB3\xBB\xE7\xBF\xF8",	3, 65, 5536, 1436 },
 
 // ŸԱ
-{ "ŸԱ",		1, 65, 5905, 1108 },
-{ "ŸԱ",		2, 65, 5905, 1108 },
-{ "ŸԱ",		3, 65, 5905, 1108 },
+{ "\xBB\xE7\xB1\xCD\xC5\xB8\xBF\xF6\xC0\xD4\xB1\xB8",		1, 65, 5905, 1108 },
+{ "\xBB\xE7\xB1\xCD\xC5\xB8\xBF\xF6\xC0\xD4\xB1\xB8",		2, 65, 5905, 1108 },
+{ "\xBB\xE7\xB1\xCD\xC5\xB8\xBF\xF6\xC0\xD4\xB1\xB8",		3, 65, 5905, 1108 },
 
 { NULL,			0,  0,    0,    0 },
 };
@@ -547,7 +547,7 @@ ACMD(do_item)
 				M2_DESTROY_ITEM(item);
 				if (!ch->DragonSoul_IsQualified())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "κ Ȱȭ  .");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xCE\xBA\xA5\xC0\xCC \xC8\xB0\xBC\xBA\xC8\xAD \xB5\xC7\xC1\xF6 \xBE\xCA\xC0\xBD.");
 				}
 				else
 					ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
@@ -1262,7 +1262,7 @@ ACMD(do_monarch_notice)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 	}
 }
 
@@ -1602,12 +1602,12 @@ ACMD(do_makeguild)
 
 	if (!check_name(cp.name))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ̸ Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xB1\xE6\xB5\xE5 \xC0\xCC\xB8\xA7 \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	gm.CreateGuild(cp);
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("(%s) 尡 Ǿϴ. [ӽ]"), cp.name);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("(%s) \xB1\xE6\xB5\xE5\xB0\xA1 \xBB\xFD\xBC\xBA\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. [\xC0\xD3\xBD\xC3]"), cp.name);
 }
 
 ACMD(do_deleteguild)
@@ -2165,7 +2165,7 @@ ACMD(do_level)
 
 ACMD(do_gwlist)
 {
-	ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("   Դϴ"));
+	ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC7\xF6\xC0\xE7 \xC0\xFC\xC0\xEF\xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5 \xC0\xD4\xB4\xCF\xB4\xD9"));
 	CGuildManager::instance().ShowGuildWarList(ch);
 }
 
@@ -2223,7 +2223,7 @@ ACMD(do_guild_state)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s:  ʴ  Դϴ."), arg1);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s: \xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xB1\xE6\xB5\xE5 \xC0\xD4\xB4\xCF\xB4\xD9."), arg1);
 	}
 }
 
@@ -2634,7 +2634,7 @@ ACMD(do_block_chat_list)
 	// GM ƴϰų block_chat_privilege   ɾ  Ұ
 	if (!ch || (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chat_privilege.block") <= 0))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׷ ɾ ϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 		return;
 	}
 
@@ -2700,7 +2700,7 @@ ACMD(do_block_chat)
 	// GM ƴϰų block_chat_privilege   ɾ  Ұ
 	if (ch && (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chat_privilege.block") <= 0))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׷ ɾ ϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 		return;
 	}
 
@@ -2722,8 +2722,8 @@ ACMD(do_block_chat)
 	{
 		if (ch)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, "߸  ðԴϴ. h, m, s ٿ  ֽʽÿ.");
-			ch->ChatPacket(CHAT_TYPE_INFO, ") 10s, 10m, 1m 30s");
+			ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xDF\xB8\xF8\xB5\xC8 \xC7\xFC\xBD\xC4\xC0\xC7 \xBD\xC3\xB0\xA3\xC0\xD4\xB4\xCF\xB4\xD9. h, m, s\xB8\xA6 \xBA\xD9\xBF\xA9\xBC\xAD \xC1\xF6\xC1\xA4\xC7\xD8 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0.");
+			ch->ChatPacket(CHAT_TYPE_INFO, "\xBF\xB9) 10s, 10m, 1m 30s");
 		}
 		return;
 	}
@@ -2831,7 +2831,7 @@ ACMD(do_build)
 				const TObjectProto * t = CManager::instance().GetObjectProto(dwVnum);
 				if (!t)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʴ ǹԴϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xB0\xC7\xB9\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return;
 				}
 
@@ -2841,7 +2841,7 @@ ACMD(do_build)
 				{
 					if (pkLand->FindObjectByGroup(t->dwGroupVnum))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("     ǹ  ֽϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xCC \xC1\xF6\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xBE\xB7\xF9\xC0\xC7 \xB0\xC7\xB9\xB0\xC0\xCC \xC1\xF6\xBE\xEE\xC1\xAE \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return;
 					}
 				}
@@ -2855,7 +2855,7 @@ ACMD(do_build)
 						// ִ°?
 						if (!pkLand->FindObjectByGroup(t->dwDependOnGroupVnum))
 						{
-							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ǽ ʿ ǹ   ʽϴ."));
+							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xBC\xB3\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xB0\xC7\xB9\xB0\xC0\xCC \xC1\xF6\xBE\xEE\xC1\xAE \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 							return;
 						}
 					}
@@ -2867,13 +2867,13 @@ ACMD(do_build)
 					// Ǽ  üũ
 					if (t->dwPrice > BUILDING_MAX_PRICE)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǹ   ̻ Ǽ ۾ ߽ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xB9\xB0 \xBA\xF1\xBF\xEB \xC1\xA4\xBA\xB8 \xC0\xCC\xBB\xF3\xC0\xB8\xB7\xCE \xB0\xC7\xBC\xB3 \xC0\xDB\xBE\xF7\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return;
 					}
 
 					if (ch->GetGold() < (int)t->dwPrice)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ǽ  մϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xBC\xB3 \xBA\xF1\xBF\xEB\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 						return;
 					}
 
@@ -2890,7 +2890,7 @@ ACMD(do_build)
 
 						if ((int) dwItemCount > ch->CountSpecifyItem(dwItemVnum))
 						{
-							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("簡 Ͽ Ǽ  ϴ."));
+							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xC0\xE7\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB0\xC7\xBC\xB3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 							return;
 						}
 					}
@@ -2903,7 +2903,7 @@ ACMD(do_build)
 				/*
 				   if (x_rot != 0.0f || y_rot != 0.0f || z_rot != 0.0f)
 				   {
-				   ch->ChatPacket(CHAT_TYPE_INFO, "ǹ ȸ    ʽϴ");
+				   ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xC7\xB9\xB0 \xC8\xB8\xC0\xFC \xB1\xE2\xB4\xC9\xC0\xBA \xBE\xC6\xC1\xF7 \xC1\xA6\xB0\xF8\xB5\xC7\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9");
 				   return;
 				   }
 				 */
@@ -2924,7 +2924,7 @@ ACMD(do_build)
 				if (!isSuccess)
 				{
 					if (test_server)
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǹ    ġԴϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xB9\xB0\xC0\xBB \xC1\xF6\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return;
 				}
 
@@ -3106,7 +3106,7 @@ ACMD(do_horse_level)
 
 	if (NULL == victim)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʴ ij Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xC4\xB3\xB8\xAF\xC5\xCD \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -3290,17 +3290,17 @@ ACMD(do_end_duel)
 	LPCHARACTER pChar = CHARACTER_MANAGER::instance().FindPC(szName);
 	if (pChar == NULL)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ʴ ij Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xC4\xB3\xB8\xAF\xC5\xCD \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (CArenaManager::instance().EndDuel(pChar->GetPlayerID()) == false)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xB0\xAD\xC1\xA6 \xC1\xBE\xB7\xE1 \xBD\xC7\xC6\xD0"));
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xB0\xAD\xC1\xA6 \xC1\xBE\xB7\xE1 \xBC\xBA\xB0\xF8"));
 	}
 }
 
@@ -3356,7 +3356,7 @@ ACMD(do_duel)
 			}
 			else
 			{
-				pChar1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ ̽ϴ."));
+				pChar1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 				pParty->Quit(pChar1->GetPlayerID());
 			}
 		}
@@ -3370,23 +3370,23 @@ ACMD(do_duel)
 			}
 			else
 			{
-				pChar2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ ̽ϴ."));
+				pChar2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 				pParty->Quit(pChar2->GetPlayerID());
 			}
 		}
 		
 		if (CArenaManager::instance().StartDuel(pChar1, pChar2, set, minute) == true)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   Ǿϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xBD\xC3\xC0\xDB \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ۿ  ֽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xC0\xDB\xBF\xA1 \xB9\xAE\xC1\xA6\xB0\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڰ ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 }
 
@@ -3401,7 +3401,7 @@ ACMD(do_stat_plus_amount)
 
 	if (ch->IsPolymorphed())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -3409,7 +3409,7 @@ ACMD(do_stat_plus_amount)
 
 	if (nRemainPoint <= 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ʈ ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBD\xBA\xC5\xC8 \xC6\xF7\xC0\xCE\xC6\xAE\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -3418,13 +3418,13 @@ ACMD(do_stat_plus_amount)
 
 	if (nRemainPoint < nPoint)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ʈ ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBD\xBA\xC5\xC8 \xC6\xF7\xC0\xCE\xC6\xAE\xB0\xA1 \xC0\xFB\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (nPoint < 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ߸ ԷϿϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAA\xC0\xBB \xC0\xDF\xB8\xF8 \xC0\xD4\xB7\xC2\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 	
@@ -3459,7 +3459,7 @@ ACMD(do_stat_plus_amount)
 			break;
 
 		default :
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ɾ  Ŀǵ尡 ߸ Ǿϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xED\xB7\xC9\xBE\xEE\xC0\xC7 \xBC\xAD\xBA\xEA \xC4\xBF\xB8\xC7\xB5\xE5\xB0\xA1 \xC0\xDF\xB8\xF8 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 			break;
 	}
@@ -3492,7 +3492,7 @@ ACMD(do_break_marriage)
 	str_to_number(pids.pid1, arg1);
 	str_to_number(pids.pid2, arg2);
 	
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("÷̾ %d  ÷̾  %d ȥŵϴ.."), pids.pid1, pids.pid2);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xC3\xB7\xB9\xC0\xCC\xBE\xEE %d \xBF\xCD \xC7\xC3\xB7\xB9\xC0\xCC\xBE\xEE  %d\xB8\xA6 \xC6\xC4\xC8\xA5\xBD\xC3\xC5\xB5\xB4\xCF\xB4\xD9.."), pids.pid1, pids.pid2);
 	db_clientdesc->DBPacket(HEADER_GD_BREAK_MARRIAGE, 0, &pids, sizeof(pids));
 }
 
@@ -3526,8 +3526,8 @@ struct FCountInMap
 
 ACMD(do_threeway_war_info)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  "));
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("    %d  %d %d %d"), GetSungziMapIndex(), GetPassMapIndex(1), GetPassMapIndex(2), GetPassMapIndex(3)); 
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA2\xC1\xA6\xB1\xB9 \xC1\xF8\xC7\xE0 \xC1\xA4\xBA\xB8"));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xC5\xC3 \xB8\xCA \xC1\xA4\xBA\xB8 \xBC\xBA\xC1\xF6 %d \xC5\xEB\xB7\xCE %d %d %d"), GetSungziMapIndex(), GetPassMapIndex(1), GetPassMapIndex(2), GetPassMapIndex(3)); 
 	ch->ChatPacket(CHAT_TYPE_INFO, "ThreewayPhase %d", CThreeWayWar::instance().GetRegenFlag());
 
 	for (int n = 1; n < 4; ++n)
@@ -3550,7 +3550,7 @@ ACMD(do_threeway_war_info)
 
 ACMD(do_threeway_war_myinfo)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ÿ "));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xC0\xC7 \xBB\xEF\xB0\xC5\xB8\xAE \xC1\xF8\xC7\xE0\xC1\xA4\xBA\xB8"));
 	ch->ChatPacket(CHAT_TYPE_INFO, "Deadcount %d",
 			CThreeWayWar::instance().GetReviveTokenForPlayer(ch->GetPlayerID()));
 }
@@ -3632,7 +3632,7 @@ ACMD(do_check_monarch_money)
 	str_to_number(empire, arg1);
 	int NationMoney = CMonarch::instance().GetMoney(empire);
 
-	ch->ChatPacket(CHAT_TYPE_INFO, ": %d ", NationMoney);
+	ch->ChatPacket(CHAT_TYPE_INFO, "\xB1\xB9\xB0\xED: %d \xBF\xF8", NationMoney);
 }
 
 ACMD(do_reset_subskill)
@@ -3911,13 +3911,13 @@ ACMD(do_set_stat)
 	{
 		if (tch->IsPolymorphed())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а ߿ ɷ ø  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
 		if (subcmd != POINT_HT && subcmd != POINT_IQ && subcmd != POINT_ST && subcmd != POINT_DX)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ɾ  Ŀǵ尡 ߸ Ǿϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xED\xB7\xC9\xBE\xEE\xC0\xC7 \xBC\xAD\xBA\xEA \xC4\xBF\xB8\xC7\xB5\xE5\xB0\xA1 \xC0\xDF\xB8\xF8 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 		int nRemainPoint = tch->GetPoint(POINT_STAT);
@@ -3971,7 +3971,7 @@ ACMD(do_set_stat)
 
 		if (nRemainPoint < nChangeAmount)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  Ʈ ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBD\xBA\xC5\xC8 \xC6\xF7\xC0\xCE\xC6\xAE\xB0\xA1 \xC0\xFB\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
@@ -4316,7 +4316,7 @@ ACMD (do_use_item)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "    .");
+		ch->ChatPacket(CHAT_TYPE_INFO, "\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xBE\xF8\xBE\xEE\xBC\xAD \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBE\xEE.");
 	}
 }
 
diff --git a/src/game/src/cmd_oxevent.cpp b/src/game/src/cmd_oxevent.cpp
index 77797e1..be58381 100644
--- a/src/game/src/cmd_oxevent.cpp
+++ b/src/game/src/cmd_oxevent.cpp
@@ -19,16 +19,16 @@ ACMD(do_oxevent_log)
 {
 	if ( COXEventManager::instance().LogWinner() == false )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX̺Ʈ  ο Ͽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX\xC0\xCC\xBA\xA5\xC6\xAE\xC0\xC7 \xB3\xAA\xB8\xD3\xC1\xF6 \xC0\xCE\xBF\xF8\xC0\xBB \xB1\xE2\xB7\xCF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX̺Ʈ  ο  ߽ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX\xC0\xCC\xBA\xA5\xC6\xAE\xC0\xC7 \xB3\xAA\xB8\xD3\xC1\xF6 \xC0\xCE\xBF\xF8 \xB1\xE2\xB7\xCF\xC0\xBB \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 }
 
 ACMD(do_oxevent_get_attender)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ڼ : %d"), COXEventManager::instance().GetAttenderCount());
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xB3\xB2\xC0\xBA \xC2\xFC\xB0\xA1\xC0\xDA\xBC\xF6 : %d"), COXEventManager::instance().GetAttenderCount());
 }
 
diff --git a/src/game/src/config.cpp b/src/game/src/config.cpp
index 0818d29..cfd83f6 100644
--- a/src/game/src/config.cpp
+++ b/src/game/src/config.cpp
@@ -38,7 +38,7 @@ WORD	teen_port	= 0;
 
 BYTE	g_bChannel = 0;
 int		passes_per_sec = 25;
-int		save_event_second_cycle = passes_per_sec * 120;	// 3
+int		save_event_second_cycle = passes_per_sec * 120;	// 3��
 int		ping_event_second_cycle = passes_per_sec * 60;
 bool	g_bNoMoreClient = false;
 bool	g_bNoRegen = false;
@@ -102,17 +102,17 @@ int SPEEDHACK_LIMIT_COUNT   = 50;
 int SPEEDHACK_LIMIT_BONUS   = 80;
 int g_iSyncHackLimitCount = 20; // 10 -> 20 2013 09 11 CYH
 
-//þ = VIEW_RANGE + VIEW_BONUS_RANGE
-//VIEW_BONUSE_RANGE : Ŭ̾Ʈ þ óʹ    ߻Ҽ־ 500CM  ׻ش.
+//�þ� = VIEW_RANGE + VIEW_BONUS_RANGE
+//VIEW_BONUSE_RANGE : Ŭ���̾�Ʈ�� �þ� ó�������ʹ� �� ��������� ������ �߻��Ҽ��־� 500CM�� ������ �׻��ش�.
 int VIEW_RANGE = 5000;
 int VIEW_BONUS_RANGE = 500;
 
 int g_server_id = 0;
 string g_strWebMallURL = "www.metin2.de";
 
-unsigned int g_uiSpamBlockDuration = 60 * 15; // ⺻ 15
-unsigned int g_uiSpamBlockScore = 100; // ⺻ 100
-unsigned int g_uiSpamReloadCycle = 60 * 10; // ⺻ 10
+unsigned int g_uiSpamBlockDuration = 60 * 15; // �⺻ 15��
+unsigned int g_uiSpamBlockScore = 100; // �⺻ 100��
+unsigned int g_uiSpamReloadCycle = 60 * 10; // �⺻ 10��
 
 bool		g_bCheckMultiHack = true;
 
@@ -121,8 +121,8 @@ int			g_iSpamBlockMaxLevel = 10;
 void		LoadStateUserCount();
 void		LoadValidCRCList();
 bool		LoadClientVersion();
-bool            g_protectNormalPlayer   = false;        // ڰ "ȭ"  Ϲ  
-bool            g_noticeBattleZone      = false;        // ߸뿡 ϸ ȳ޼ ˷
+bool            g_protectNormalPlayer   = false;        // �����ڰ� "��ȭ���" �� �Ϲ������� �������� ����
+bool            g_noticeBattleZone      = false;        // �߸����뿡 �����ϸ� �ȳ��޼����� �˷���
 
 int gPlayerMaxLevel = 99;
 
@@ -318,7 +318,7 @@ void config_init(const string& st_localeServiceName)
 	}
 
 	char db_host[2][64], db_user[2][64], db_pwd[2][64], db_db[2][64];
-	// ... ... db_port ̹ ִµ... ̹ ؾ...
+	// ... ��... db_port�� �̹� �ִµ�... ���̹� �����ؾ���...
 	int mysql_db_port[2];
 
 	for (int n = 0; n < 2; ++n)
@@ -339,9 +339,9 @@ void config_init(const string& st_localeServiceName)
 	*log_db = '\0';
 
 
-	// DB  ϱؼ ٸ ð Ǿ
-	// DB о    ٸ  ѾѴ.
-	//  ϰõ ʱȭ ƾ  ϱ .
+	// DB���� ������������ �����ϱ����ؼ��� �ٸ� ���ð����� ����Ǿ
+	// DB������ �о�� ������ ������ ���� �ٸ� ������ ������Ѿ��Ѵ�.
+	// ������ �����ϰ��õ� �ʱ�ȭ ��ƾ�� ������ �����ϱ� ����.
 
 	bool isCommonSQL = false;	
 	bool isPlayerSQL = false;
@@ -477,7 +477,7 @@ void config_init(const string& st_localeServiceName)
 		}
     }
 
-	//ó   .
+	//�� �������� ������ ����.
 	fclose(fpOnlyForDB);
 
 	// CONFIG_SQL_INFO_ERROR
@@ -503,7 +503,7 @@ void config_init(const string& st_localeServiceName)
 		exit(EXIT_FAILURE);
 	}
 
-	// Common DB  Locale   ֱ    ؾ Ѵ.
+	// Common DB �� Locale ������ ������ �ֱ� ������ ���� ���� �����ؾ� �Ѵ�.
 	AccountDB::instance().Connect(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1]);
 
 	if (false == AccountDB::instance().IsConnected())
@@ -514,8 +514,8 @@ void config_init(const string& st_localeServiceName)
 
 	SPDLOG_INFO("CommonSQL connected");
 
-	//    
-	// <>   ǹ(WHERE)  . (ٸ    ֽϴ)
+	// ������ ������ �������� 
+	// <���> �������� ���� ���ǹ�(WHERE) ���� ������. (�ٸ� �������� ������ ����� �ֽ��ϴ�)
 	{
 		char szQuery[512];
 		snprintf(szQuery, sizeof(szQuery), "SELECT mKey, mValue FROM locale");
@@ -532,7 +532,7 @@ void config_init(const string& st_localeServiceName)
 
 		while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
 		{
-			//  
+			// ������ ����
 			if (strcasecmp(row[0], "LOCALE") == 0)
 			{
 				if (LocaleService_Init(row[1]) == false)
@@ -544,15 +544,15 @@ void config_init(const string& st_localeServiceName)
 		}
 	}
 
-	//   COMMON SQL ش.
-	//  g_stLocale  LocaleService_Init() ο õȴ.
+	// ������ ������ COMMON SQL�� �������ش�.
+	// ������ g_stLocale ������ LocaleService_Init() ���ο��� ���õȴ�.
 	SPDLOG_INFO("Setting DB to locale {}", g_stLocale.c_str());
 
 	AccountDB::instance().SetLocale(g_stLocale);
 
 	AccountDB::instance().ConnectAsync(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1], g_stLocale.c_str());
 
-	// Player DB 
+	// Player DB ����
 	DBManager::instance().Connect(db_host[0], mysql_db_port[0], db_user[0], db_pwd[0], db_db[0]);
 
 	if (!DBManager::instance().IsConnected())
@@ -563,9 +563,9 @@ void config_init(const string& st_localeServiceName)
 
 	SPDLOG_INFO("PlayerSQL connected");
 
-	if (false == g_bAuthServer) //   ƴ 
+	if (false == g_bAuthServer) // ���� ������ �ƴ� ���
 	{
-		// Log DB 
+		// Log DB ����
 		LogManager::instance().Connect(log_host, log_port, log_user, log_pwd, log_db);
 
 		if (!LogManager::instance().IsConnected())
@@ -580,8 +580,8 @@ void config_init(const string& st_localeServiceName)
 	}
 
 	// SKILL_POWER_BY_LEVEL
-	// Ʈ   ؼ AccountDB::instance().SetLocale(g_stLocale) ĺ Ѵ.
-	//     ȵȴ(ؿܰ )
+	// ��Ʈ�� ���� ������ ���ؼ� AccountDB::instance().SetLocale(g_stLocale) �ĺ��� �Ѵ�.
+	// ���� ������ ���� ������ �ȵȴ�(�ؿܰ� ����)
 	{
 		char szQuery[256];
 		snprintf(szQuery, sizeof(szQuery), "SELECT mValue FROM locale WHERE mKey='SKILL_POWER_BY_LEVEL'");
@@ -621,13 +621,13 @@ void config_init(const string& st_localeServiceName)
 			}
 		}
 
-		//  ų 
+		// ������ ��ų ����
 		for (int job = 0; job < JOB_MAX_NUM * 2; ++job)
 		{
 			snprintf(szQuery, sizeof(szQuery), "SELECT mValue from locale where mKey='SKILL_POWER_BY_LEVEL_TYPE%d' ORDER BY CAST(mValue AS unsigned)", job);
 			std::unique_ptr pMsg(AccountDB::instance().DirectQuery(szQuery));
 
-			//  ȵǾ ⺻̺ Ѵ.
+			// ������ �ȵǾ������� �⺻���̺��� ����Ѵ�.
 			if (pMsg->Get()->uiNumRows == 0)
 			{
 				CTableBySkill::instance().SetSkillPowerByLevelFromType(job, aiBaseSkillPowerByLevelTable);
@@ -1002,7 +1002,7 @@ void config_init(const string& st_localeServiceName)
 		TOKEN("spam_block_reload_cycle")
 		{
 			str_to_number(g_uiSpamReloadCycle, value_string);
-			g_uiSpamReloadCycle = std::max(60, g_uiSpamReloadCycle); // ּ 1
+			g_uiSpamReloadCycle = std::max(60, g_uiSpamReloadCycle); // �ּ� 1��
 		}
 
 		TOKEN("check_multihack")
@@ -1212,7 +1212,7 @@ void CheckClientVersion()
 		//if (0 != g_stClientVersion.compare(d->GetClientVersion()) )
 		if (version > date)
 		{
-			d->GetCharacter()->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Ŭ̾Ʈ  Ʋ α׾ƿ ˴ϴ.  ġ  ϼ."));
+			d->GetCharacter()->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC5\xAC\xB6\xF3\xC0\xCC\xBE\xF0\xC6\xAE \xB9\xF6\xC0\xFC\xC0\xCC \xC6\xB2\xB7\xC1 \xB7\xCE\xB1\xD7\xBE\xC6\xBF\xF4 \xB5\xCB\xB4\xCF\xB4\xD9. \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC6\xD0\xC4\xA1 \xC8\xC4 \xC1\xA2\xBC\xD3\xC7\xCF\xBC\xBC\xBF\xE4."));
 			d->DelayedDisconnect(10);
 		}
 	}
diff --git a/src/game/src/constants.cpp b/src/game/src/constants.cpp
index 9ca411e..fe44221 100644
--- a/src/game/src/constants.cpp
+++ b/src/game/src/constants.cpp
@@ -1076,19 +1076,19 @@ const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
 
 const char * c_apszEmpireNames[EMPIRE_MAX_NUM] =
 {
-	"",
-	"ż",
-	"õ",
-	"뱹"
+	"\xC0\xFC\xC1\xA6\xB1\xB9",
+	"\xBD\xC5\xBC\xF6\xB1\xB9",
+	"\xC3\xB5\xC1\xB6\xB1\xB9",
+	"\xC1\xF8\xB3\xEB\xB1\xB9"
 };
 
 const char * c_apszPrivNames[MAX_PRIV_NUM] =
 {
 	"",
-	"  Ȯ",
-	"  Ȯ",
-	"   Ȯ",
-	"ġ ",
+	"\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xAA\xBF\xC3 \xC8\xAE\xB7\xFC",
+	"\xB5\xB7\xC0\xCC \xB3\xAA\xBF\xC3 \xC8\xAE\xB7\xFC",
+	"\xB5\xB7 \xB4\xEB\xB9\xDA\xC0\xCC \xB3\xAA\xBF\xC3 \xC8\xAE\xB7\xFC",
+	"\xB0\xE6\xC7\xE8\xC4\xA1 \xB9\xE8\xC0\xB2",
 };
 
 const int aiPolymorphPowerByLevel[SKILL_MAX_LEVEL + 1] =
diff --git a/src/game/src/cube.cpp b/src/game/src/cube.cpp
index 3205df8..474bc71 100644
--- a/src/game/src/cube.cpp
+++ b/src/game/src/cube.cpp
@@ -308,12 +308,12 @@ void Cube_open (LPCHARACTER ch)
 
 	if (ch->IsCubeOpen())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹ â ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC1\xA6\xC1\xB6\xC3\xA2\xC0\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 	if ( ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ ŷ(â,ȯ,)   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -517,7 +517,7 @@ bool Cube_make (LPCHARACTER ch)
 
 	if (!(ch)->IsCubeOpen())
 	{
-		(ch)->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("â  ʽϴ"));
+		(ch)->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6\xC3\xA2\xC0\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 		return false;
 	}
 
@@ -532,13 +532,13 @@ bool Cube_make (LPCHARACTER ch)
 
 	if (NULL == cube_proto)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ᰡ մϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9"));
 		return false;
 	}
 
 	if (ch->GetGold() < cube_proto->gold)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϰų  ڸ ϴ."));	//  ؽƮ ̹ θ ̴°Ŷ ߰ ʿ 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	//  ؽƮ ̹ θ ̴°Ŷ ߰ ʿ 
 		return false;
 	}
 
@@ -565,7 +565,7 @@ bool Cube_make (LPCHARACTER ch)
 	else
 	{
 		// 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ͽϴ."));	// 2012.11.12  ߰ ޼ (locale_string.txt  ߰ؾ )
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));	// 2012.11.12  ߰ ޼ (locale_string.txt  ߰ؾ )
 		ch->ChatPacket(CHAT_TYPE_COMMAND, "cube fail");
 		LogManager::instance().CubeLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(),
 				reward_value->vnum, 0, 0, 0);
diff --git a/src/game/src/db.cpp b/src/game/src/db.cpp
index e0a73e1..d759690 100644
--- a/src/game/src/db.cpp
+++ b/src/game/src/db.cpp
@@ -992,7 +992,7 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)
 						if (pkItem)
 						{
 							SPDLOG_DEBUG("GIVE LOTTO SUCCESS TO {} (pid {})", ch->GetName(), qi->dwIdent);
-							//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȹ: %s"), pkItem->GetName());
+							//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), pkItem->GetName());
 
 							pkItem->SetSocket(0, pMsg->Get()->uiInsertID);
 							pkItem->SetSocket(1, pdw[2]);
@@ -1179,7 +1179,7 @@ void VCardUse(LPCHARACTER CardOwner, LPCHARACTER CardTaker, LPITEM item)
 
 	db_clientdesc->DBPacket(HEADER_GD_VCARD, 0, &p, sizeof(TPacketGDVCard));
 
-	CardTaker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ð ߰ Ǿϴ. (ȣ %d)"), item->GetSocket(1) / 60, item->GetSocket(0));
+	CardTaker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xBA\xD0\xC0\xC7 \xB0\xE1\xC1\xA6\xBD\xC3\xB0\xA3\xC0\xCC \xC3\xDF\xB0\xA1 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. (\xB0\xE1\xC1\xA6\xB9\xF8\xC8\xA3 %d)"), item->GetSocket(1) / 60, item->GetSocket(0));
 
 	LogManager::instance().VCardLog(p.dwID, CardTaker->GetX(), CardTaker->GetY(), g_stHostname.c_str(),
 			CardOwner->GetName(), CardOwner->GetDesc()->GetHostName(),
diff --git a/src/game/src/desc.cpp b/src/game/src/desc.cpp
index 7be9c29..5102f73 100644
--- a/src/game/src/desc.cpp
+++ b/src/game/src/desc.cpp
@@ -552,7 +552,7 @@ void DESC::DisconnectOfSameLogin()
 		if (m_pkDisconnectEvent)
 			return;
 
-		GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ ǻͿ α Ͽ   մϴ."));
+		GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC4\xC4\xC7\xBB\xC5\xCD\xBF\xA1\xBC\xAD \xB7\xCE\xB1\xD7\xC0\xCE \xC7\xCF\xBF\xA9 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1 \xC7\xD5\xB4\xCF\xB4\xD9."));
 		DelayedDisconnect(5);
 	}
 	else
diff --git a/src/game/src/empire_text_convert.cpp b/src/game/src/empire_text_convert.cpp
index e629fe8..fd7178c 100644
--- a/src/game/src/empire_text_convert.cpp
+++ b/src/game/src/empire_text_convert.cpp
@@ -56,7 +56,7 @@ void ConvertEmpireText(DWORD dwEmpireID, char* szText, size_t len, int iPct)
 			{
 				if (g_iUseLocale)
 				{
-					static char s_cChinaTable[][3] = {"","","","","" };
+					static char s_cChinaTable[][3] = {"\xA1\xF2","\xA3\xA3","\xA3\xA4","\xA1\xF9","\xA1\xF0" };
 					int n = Random::get(0, 4);
 					pbText[0] = s_cChinaTable[n][0];
 					pbText[1] = s_cChinaTable[n][1];
diff --git a/src/game/src/exchange.cpp b/src/game/src/exchange.cpp
index 4738254..8fccdb0 100644
--- a/src/game/src/exchange.cpp
+++ b/src/game/src/exchange.cpp
@@ -53,7 +53,7 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 
 	if (IsObserverMode())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ¿ ȯ   ϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC0\xFC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB1\xB3\xC8\xAF\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -63,13 +63,13 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 	//PREVENT_TRADE_WINDOW
 	if ( IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen())
 	{
-		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("ٸ ŷâ  ŷ Ҽ ϴ." ) );
+		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC3\xA2\xC0\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xC0\xBB\xB0\xE6\xBF\xEC \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
 		return false;
 	}
 
 	if ( victim->IsOpenSafebox() || victim->GetShopOwner() || victim->GetMyShop() || victim->IsCubeOpen() )
 	{
-		ChatPacket( CHAT_TYPE_INFO, LC_TEXT(" ٸ ŷ̶ ŷ Ҽ ϴ." ) );
+		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF\xC0\xCC\xB6\xF3 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
 		return false;
 	}
 	//END_PREVENT_TRADE_WINDOW
@@ -90,7 +90,7 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 
 	if (victim->IsBlockMode(BLOCK_EXCHANGE))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȯ ź Դϴ."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB1\xB3\xC8\xAF \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -154,7 +154,7 @@ bool CExchange::AddItem(TItemPos item_pos, BYTE display_pos)
 
 	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_GIVE))
 	{
-		m_pOwner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" dz  ϴ."));
+		m_pOwner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xB0\xC7\xB3\xD7\xC1\xD9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -518,31 +518,31 @@ bool CExchange::Accept(bool bAccept)
 		//  Ѵ.
 		if (!Check(&iItemCount))
 		{
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϰų  ڸ ϴ."));
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϰų  ڸ ϴ."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			goto EXCHANGE_END;
 		}
 
 		//      ǰ  ڸ ֳ ȮѴ.
 		if (!CheckSpace())
 		{
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ǰ   ϴ."));
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǰ   ϴ."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			goto EXCHANGE_END;
 		}
 
 		// 浵 ..
 		if (!GetCompany()->Check(&iItemCount))
 		{
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ϰų  ڸ ϴ."));
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϰų  ڸ ϴ."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			goto EXCHANGE_END;
 		}
 
 		if (!GetCompany()->CheckSpace())
 		{
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ǰ   ϴ."));
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ǰ   ϴ."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			goto EXCHANGE_END;
 		}
 
@@ -565,8 +565,8 @@ bool CExchange::Accept(bool bAccept)
 					victim->Save();
 
 				// INTERNATIONAL_VERSION
-				GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ԰ ȯ  Ǿϴ."), victim->GetName());
-				victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ԰ ȯ  Ǿϴ."), GetOwner()->GetName());
+				GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xB0\xFA\xC0\xC7 \xB1\xB3\xC8\xAF\xC0\xCC \xBC\xBA\xBB\xE7 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), victim->GetName());
+				victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xB0\xFA\xC0\xC7 \xB1\xB3\xC8\xAF\xC0\xCC \xBC\xBA\xBB\xE7 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), GetOwner()->GetName());
 				// END_OF_INTERNATIONAL_VERSION
 			}
 		}
diff --git a/src/game/src/fishing.cpp b/src/game/src/fishing.cpp
index c241ec5..f636bc8 100644
--- a/src/game/src/fishing.cpp
+++ b/src/game/src/fishing.cpp
@@ -107,79 +107,79 @@ namespace fishing
 	SFishInfo fish_info[MAX_FISH] = { { "\0", }, };
 	/*
 	   {
-	   { "",		00000, 00000, 00000, {  750, 1750, 2750 },   10, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, { 0,           }, 
+	   { "\xB2\xCE",		00000, 00000, 00000, {  750, 1750, 2750 },   10, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, { 0,           }, 
 	   {0, } },
-	   { "ݹ",	50002, 00000, 00000, {   50,   50,    0 },  200, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, { 0,           }, 
+	   { "\xB1\xDD\xB9\xDD\xC1\xF6",	50002, 00000, 00000, {   50,   50,    0 },  200, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, { 0,           }, 
 	   {0, } },
-	   { "Ƕ",	27802, 00000, 00000, { 2100, 1500,   50 },   10, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_EASY,   {500, 550, 600}, 
+	   { "\xC7\xC7\xB6\xF3\xB9\xCC",	27802, 00000, 00000, { 2100, 1500,   50 },   10, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_EASY,   {500, 550, 600}, 
 	   {0, } },
-	   { "ؾ",	27803, 27833, 27863, { 2100, 1500,  100 },   13, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_EASY,   {1000,2500,2800},
+	   { "\xBA\xD8\xBE\xEE",	27803, 27833, 27863, { 2100, 1500,  100 },   13, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_EASY,   {1000,2500,2800},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27804, 27834, 27864, { 1100, 1300,  150 },   16, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, {2000,3500,3800},
+	   { "\xBD\xEE\xB0\xA1\xB8\xAE",	27804, 27834, 27864, { 1100, 1300,  150 },   16, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, {2000,3500,3800},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "ôؾ",	27805, 27835, 27865, { 1100, 1100,  200 },   20, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_SLOW, {3030,3500,4300},
+	   { "\xBF\xF9\xC3\xB4\xBA\xD8\xBE\xEE",	27805, 27835, 27865, { 1100, 1100,  200 },   20, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_SLOW, {3030,3500,4300},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "׾",	27806, 27836, 27866, { 1100,  500,  300 },   26, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, {4000,6000,10000},
+	   { "\xC0\xD7\xBE\xEE",	27806, 27836, 27866, { 1100,  500,  300 },   26, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL, {4000,6000,10000},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27807, 27837, 27867, { 1100,  450,  400 },   33, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{6000,8000,10000},
+	   { "\xBF\xAC\xBE\xEE",	27807, 27837, 27867, { 1100,  450,  400 },   33, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{6000,8000,10000},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27808, 27838, 27868, {  200,  400,  500 },   42, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{1500,3000,3800},
+	   { "\xC7\xE2\xBE\xEE",	27808, 27838, 27868, {  200,  400,  500 },   42, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{1500,3000,3800},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "۾",	27809, 27839, 27869, {  200,  300,  700 },   54, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{5000,7000,8000},
+	   { "\xBC\xDB\xBE\xEE",	27809, 27839, 27869, {  200,  300,  700 },   54, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{5000,7000,8000},
 	   {USED_NONE, USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "ι",	27810, 27840, 27870, {    0,  270, 1000 },   70, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{4000,5000,6000},
+	   { "\xB9\xCE\xB9\xB0\xC0\xE5\xBE\xEE",	27810, 27840, 27870, {    0,  270, 1000 },   70, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{4000,5000,6000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "۾",	27811, 27841, 27871, {    0,  200, 1000 },   91, FISHING_LIMIT_APPEAR,	{  0,   0,   0}, FISHING_TIME_NORMAL,{5000,7000,8000},
+	   { "\xB9\xAB\xC1\xF6\xB0\xB3\xBC\xDB\xBE\xEE",	27811, 27841, 27871, {    0,  200, 1000 },   91, FISHING_LIMIT_APPEAR,	{  0,   0,   0}, FISHING_TIME_NORMAL,{5000,7000,8000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "۾",	27812, 27842, 27872, {    0,  160, 1000 },  118, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_QUICK,{4000,6000,7000},
+	   { "\xB0\xAD\xBC\xDB\xBE\xEE",	27812, 27842, 27872, {    0,  160, 1000 },  118, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_QUICK,{4000,6000,7000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27813, 27843, 27873, {    0,  130,  700 },  153, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{4000,6000,10000},
+	   { "\xB7\xAF\xB5\xE5",	27813, 27843, 27873, {    0,  130,  700 },  153, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{4000,6000,10000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "ġ",	27814, 27844, 27874, {    0,  100,  400 },  198, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{3000,4000,5000},
+	   { "\xC6\xDB\xC4\xA1",	27814, 27844, 27874, {    0,  100,  400 },  198, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{3000,4000,5000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "ġ",	27815, 27845, 27875, {    0,   50,  300 },  257, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{3500,5500,8000},
+	   { "\xC5\xD9\xC4\xA1",	27815, 27845, 27875, {    0,   50,  300 },  257, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{3500,5500,8000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "ޱ",	27816, 27846, 27876, {    0,   30,  100 },  334, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{3000,5000,10000},
+	   { "\xB8\xDE\xB1\xE2",	27816, 27846, 27876, {    0,   30,  100 },  334, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{3000,5000,10000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "̲ٶ",	27817, 27847, 27877, {    0,   10,   64 },  434, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_QUICK,{1800,2200,3000},
+	   { "\xB9\xCC\xB2\xD9\xB6\xF3\xC1\xF6",	27817, 27847, 27877, {    0,   10,   64 },  434, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_QUICK,{1800,2200,3000},
 	   {USED_SHELLFISH, USED_NONE, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27818, 27848, 27878, {    0,    0,   15 },  564, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{5000,8000,10000},
+	   { "\xB9\xE9\xB7\xC3",	27818, 27848, 27878, {    0,    0,   15 },  564, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{5000,8000,10000},
 	   {USED_SHELLFISH, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27819, 27849, 27879, {    0,    0,    9 },  733, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{1500,3000,3800},
+	   { "\xC0\xBA\xBE\xEE",	27819, 27849, 27879, {    0,    0,    9 },  733, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{1500,3000,3800},
 	   {USED_SHELLFISH, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27820, 27850, 27880, {    0,    0,    6 },  952, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_QUICK,{1500,3000,3800},
+	   { "\xBA\xF9\xBE\xEE",	27820, 27850, 27880, {    0,    0,    6 },  952, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_QUICK,{1500,3000,3800},
 	   {USED_SHELLFISH, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "",	27821, 27851, 27881, {    0,    0,    3 }, 1237, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{1000,1500,2000},
+	   { "\xBD\xAC\xB8\xAE",	27821, 27851, 27881, {    0,    0,    3 }, 1237, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_NORMAL,{1000,1500,2000},
 	   {USED_SHELLFISH, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "׾",	27822, 27852, 27882, {    0,    0,    2 }, 1608, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_SLOW,{4000,6000,10000},
+	   { "\xBA\xF1\xB4\xC3\xC0\xD7\xBE\xEE",	27822, 27852, 27882, {    0,    0,    2 }, 1608, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_SLOW,{4000,6000,10000},
 	   {USED_SHELLFISH, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "Ȳݺؾ",	27823, 27853, 27883, {    0,    0,    1 }, 2090, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_SLOW,{1000,3000,3500},
+	   { "\xC8\xB2\xB1\xDD\xBA\xD8\xBE\xEE",	27823, 27853, 27883, {    0,    0,    1 }, 2090, FISHING_LIMIT_NONE,	{  0,   0,   0}, FISHING_TIME_SLOW,{1000,3000,3500},
 	   {USED_SHELLFISH, USED_NONE, USED_WATER_STONE, USED_TREASURE_MAP, USED_NONE, USED_NONE, USED_EARTHWARM, USED_NONE,USED_NONE,  USED_NONE } },
-	   { "Ż",     70201, 00000, 00000, { 5,    5,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xC5\xBB\xBB\xF6\xBE\xE0",     70201, 00000, 00000, { 5,    5,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { "()",  70202, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBF\xB0\xBB\xF6\xBE\xE0(\xC8\xF2\xBB\xF6)",  70202, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { "(ݻ)",  70203, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBF\xB0\xBB\xF6\xBE\xE0(\xB1\xDD\xBB\xF6)",  70203, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { "()",70204, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBF\xB0\xBB\xF6\xBE\xE0(\xBB\xA1\xB0\xA3\xBB\xF6)",70204, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { "()",  70205, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBF\xB0\xBB\xF6\xBE\xE0(\xB0\xA5\xBB\xF6)",  70205, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { "()",70206, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBF\xB0\xBB\xF6\xBE\xE0(\xB0\xCB\xC0\xBA\xBB\xF6)",70206, 00000, 00000, { 15,  15,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { " ", 70048, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xC0\xBA\xB5\xD0\xC0\xDA\xC0\xC7 \xB8\xC1\xC5\xE4", 70048, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { " ",   70049, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xC7\xE0\xBF\xEE\xC0\xC7 \xB9\xDD\xC1\xF6",   70049, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { " ǥ",   70050, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBC\xB1\xBF\xD5\xC0\xC7 \xC1\xF5\xC7\xA5",   70050, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { " 尩",   70051, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
+	   { "\xBC\xB1\xBF\xD5\xC0\xC7 \xC0\xE5\xB0\xA9",   70051, 00000, 00000, {  8,   8,  0 },   60, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_NORMAL, {0,           },
 	   {0,	}},
-	   { "ݵ",	   80008, 00000, 00000, { 20,  20,  0 },  250, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_SLOW,    {0,           },
+	   { "\xB1\xDD\xB5\xA2\xBE\xEE\xB8\xAE",	   80008, 00000, 00000, { 20,  20,  0 },  250, FISHING_LIMIT_NONE,    {  0,   0,   0}, FISHING_TIME_SLOW,    {0,           },
 	   {0, } },
-	{ "",	   50009, 00000, 00000, {300, 300, 0, },   70, FISHING_LIMIT_NONE,    { 0, 0, 0}, FISHING_TIME_NORMAL, {0,	}, {0, } },
+	{ "\xC0\xBA\xBF\xAD\xBC\xE8",	   50009, 00000, 00000, {300, 300, 0, },   70, FISHING_LIMIT_NONE,    { 0, 0, 0}, FISHING_TIME_NORMAL, {0,	}, {0, } },
 
-	{ "ݿ",	   50008, 00000, 00000, {110, 110, 0, },  100, FISHING_LIMIT_NONE,    { 0, 0, 0}, FISHING_TIME_NORMAL, {0,	}, {0, } },
+	{ "\xB1\xDD\xBF\xAD\xBC\xE8",	   50008, 00000, 00000, {110, 110, 0, },  100, FISHING_LIMIT_NONE,    { 0, 0, 0}, FISHING_TIME_NORMAL, {0,	}, {0, } },
 };
 	*/
 void Initialize()
@@ -441,11 +441,11 @@ void FishingPractice(LPCHARACTER ch)
 		if ( rod->GetRefinedVnum()>0 && rod->GetSocket(0) < rod->GetValue(2) && Random::get(1,rod->GetValue(1))==1 )
 		{
 			rod->SetSocket(0, rod->GetSocket(0) + 1);
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ô õ Ͽϴ! (%d/%d)"),rod->GetSocket(0), rod->GetValue(2));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3\xB4\xEB\xC0\xC7 \xBC\xF6\xB7\xC3\xB5\xB5\xB0\xA1 \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! (%d/%d)"),rod->GetSocket(0), rod->GetValue(2));
 			if (rod->GetSocket(0) == rod->GetValue(2))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ô밡 ִ õ Ͽϴ."));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("θ    ô ׷̵   ֽϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3\xB4\xEB\xB0\xA1 \xC3\xD6\xB4\xEB \xBC\xF6\xB7\xC3\xB5\xB5\xBF\xA1 \xB5\xB5\xB4\xDE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xEE\xBA\xCE\xB8\xA6 \xC5\xEB\xC7\xD8 \xB4\xD9\xC0\xBD \xB7\xB9\xBA\xA7\xC0\xC7 \xB3\xAC\xBD\xC3\xB4\xEB\xB7\xCE \xBE\xF7\xB1\xD7\xB7\xB9\xC0\xCC\xB5\xE5 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 		}
 	}
@@ -614,7 +614,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 			case -2: //   
 			case -3: // ̵  
 			case -1: // ð Ȯ  
-				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ⱑ ̳ ԰ ΰ Ĩϴ."));
+				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xB9\xCC\xB3\xA2\xB8\xB8 \xBB\xA9\xB8\xD4\xB0\xED \xC0\xEC\xBD\xCE\xB0\xD4 \xB5\xB5\xB8\xC1\xC4\xA8\xB4\xCF\xB4\xD9."));
 				{
 					int map_idx = ch->GetMapIndex();
 					int prob_idx = GetProbIndexByMapIndex(map_idx);
@@ -630,7 +630,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 				break;
 
 			case 0:
-				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ⱑ ϴ! (%s)"), fish_info[info->fish_id].name);
+				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xC0\xE2\xC7\xFB\xBD\xC0\xB4\xCF\xB4\xD9! (%s)"), fish_info[info->fish_id].name);
 				if (item_vnum)
 				{
 					FishingSuccess(ch);
@@ -647,7 +647,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 						item->SetSocket(0,GetFishLength(info->fish_id));
 						if (test_server)
 						{
-							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹   ̴ %.2fcm"), item->GetSocket(0)/100.f);
+							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xF8\xBF\xA1 \xC0\xE2\xC0\xBA \xB9\xB0\xB0\xED\xB1\xE2\xC0\xC7 \xB1\xE6\xC0\xCC\xB4\xC2 %.2fcm"), item->GetSocket(0)/100.f);
 						}
 
 						if (quest::CQuestManager::instance().GetEventFlag("fishevent") > 0 && (info->fish_id == 5 || info->fish_id == 6))
@@ -660,11 +660,11 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 
 							if (info->fish_id == 5)
 							{
-								strlcpy(p.szBoard, LC_TEXT("̺Ʈôؾ"), sizeof(p.szBoard));
+								strlcpy(p.szBoard, LC_TEXT("\xB3\xAC\xBD\xC3\xC0\xCC\xBA\xA5\xC6\xAE\xBF\xF9\xC3\xB4\xBA\xD8\xBE\xEE"), sizeof(p.szBoard));
 							}
 							else if (info->fish_id == 6)
 							{
-								strlcpy(p.szBoard, LC_TEXT("̺Ʈ׾"), sizeof(p.szBoard));
+								strlcpy(p.szBoard, LC_TEXT("\xB3\xAC\xBD\xC3\xC0\xCC\xBA\xA5\xC6\xAE\xC0\xD7\xBE\xEE"), sizeof(p.szBoard));
 							}
 
 							db_clientdesc->DBPacket(HEADER_GD_HIGHSCORE_REGISTER, 0, &p, sizeof(TPacketGDHighscore));
@@ -711,7 +711,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 				info->fish_id,
 				GetFishingLevel(ch),
 				7000);
-		//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ⱑ ̳ ԰ ΰ Ĩϴ."));
+		//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xB9\xCC\xB3\xA2\xB8\xB8 \xBB\xA9\xB8\xD4\xB0\xED \xC0\xEC\xBD\xCE\xB0\xD4 \xB5\xB5\xB8\xC1\xC4\xA8\xB4\xCF\xB4\xD9."));
 		FishingFail(ch);
 	}
 	else
@@ -749,9 +749,9 @@ void Simulation(int level, int count, int prob_idx, LPCHARACTER ch)
 	}
 
 	for (std::map::iterator it = fished.begin(); it != fished.end(); ++it)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s : %d "), it->first.c_str(), it->second);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s : %d \xB8\xB6\xB8\xAE"), it->first.c_str(), it->second);
 
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d  %d  "), fished.size(), total_count);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC1\xBE\xB7\xF9 %d \xB8\xB6\xB8\xAE \xB3\xAC\xC0\xBD"), fished.size(), total_count);
 }
 
 void UseFish(LPCHARACTER ch, LPITEM item)
@@ -788,7 +788,7 @@ void UseFish(LPCHARACTER ch, LPITEM item)
 			case USED_TREASURE_MAP:	// 3
 			case USED_NONE:		// 0
 			case USED_WATER_STONE:	// 2
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ⱑ   ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xC8\xE7\xC0\xFB\xB5\xB5 \xBE\xF8\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 				break;
 
 			case USED_SHELLFISH:	// 1
@@ -797,12 +797,12 @@ void UseFish(LPCHARACTER ch, LPITEM item)
 					if ( Random::get(0, 2) != 2 ) return;
 				}
 
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ӿ  Խϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xE8 \xBC\xD3\xBF\xA1\xBC\xAD \xC1\xB6\xB0\xB3\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 				ch->AutoGiveItem(SHELLFISH_VNUM);
 				break;
 
 			case USED_EARTHWARM:	// 4
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ӿ ̰ Խϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xE8 \xBC\xD3\xBF\xA1\xBC\xAD \xC1\xF6\xB7\xB7\xC0\xCC\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 				ch->AutoGiveItem(EARTHWORM_VNUM);
 				break;
 
@@ -833,7 +833,7 @@ void Grill(LPCHARACTER ch, LPITEM item)
 
 	int count = item->GetCount();
 
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ϴ."), item->GetName());
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB8\xA6 \xB1\xB8\xBF\xFC\xBD\xC0\xB4\xCF\xB4\xD9."), item->GetName());
 	item->SetCount(0);
 	ch->AutoGiveItem(fish_info[idx].grill_vnum, count);
 }
diff --git a/src/game/src/guild.cpp b/src/game/src/guild.cpp
index a0eed4a..c08bf83 100644
--- a/src/game/src/guild.cpp
+++ b/src/game/src/guild.cpp
@@ -63,12 +63,12 @@ CGuild::CGuild(TGuildCreateParameter & cp)
 
 	strlcpy(m_data.name, cp.name, sizeof(m_data.name));
 	m_data.master_pid = cp.master->GetPlayerID();
-	strlcpy(m_data.grade_array[0].grade_name, LC_TEXT(""), sizeof(m_data.grade_array[0].grade_name));
+	strlcpy(m_data.grade_array[0].grade_name, LC_TEXT("\xB1\xE6\xB5\xE5\xC0\xE5"), sizeof(m_data.grade_array[0].grade_name));
 	m_data.grade_array[0].auth_flag = GUILD_AUTH_ADD_MEMBER | GUILD_AUTH_REMOVE_MEMBER | GUILD_AUTH_NOTICE | GUILD_AUTH_USE_SKILL;
 
 	for (int i = 1; i < GUILD_GRADE_COUNT; ++i)
 	{
-		strlcpy(m_data.grade_array[i].grade_name, LC_TEXT(""), sizeof(m_data.grade_array[i].grade_name));
+		strlcpy(m_data.grade_array[i].grade_name, LC_TEXT("\xB1\xE6\xB5\xE5\xBF\xF8"), sizeof(m_data.grade_array[i].grade_name));
 		m_data.grade_array[i].auth_flag = 0;
 	}
 
@@ -920,7 +920,7 @@ bool CGuild::OfferExp(LPCHARACTER ch, int amount)
 
 	if (ch->GetExp() < (DWORD) amount)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ϰ ϴ ġ  ġ ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xA6\xB0\xF8\xC7\xCF\xB0\xED\xC0\xDA \xC7\xCF\xB4\xC2 \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB3\xB2\xC0\xBA \xB0\xE6\xC7\xE8\xC4\xA1\xBA\xB8\xB4\xD9 \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
@@ -1031,7 +1031,7 @@ void CGuild::DeleteComment(LPCHARACTER ch, DWORD comment_id)
 		pmsg = DBManager::instance().DirectQuery("DELETE FROM guild_comment%s WHERE id = %u AND guild_id = %u AND name = '%s'",get_table_postfix(), comment_id, m_data.guild_id, ch->GetName());
 
 	if (pmsg->Get()->uiAffectedRows == 0 || pmsg->Get()->uiAffectedRows == (uint32_t)-1)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>    Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xE8\xC1\xA6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB1\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 	else
 		RefreshCommentForce(ch->GetPlayerID());
 
@@ -1282,7 +1282,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 	if (GetSP() < iNeededSP)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ŷ մϴ. (%d, %d)"), GetSP(), iNeededSP);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBF\xEB\xBD\xC5\xB7\xC2\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. (%d, %d)"), GetSP(), iNeededSP);
 		return;
 	}
 
@@ -1291,7 +1291,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 	if (!abSkillUsable[dwRealVnum])
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> Ÿ  ʾ  ų   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xB3\xA1\xB3\xAA\xC1\xF6 \xBE\xCA\xBE\xC6 \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1310,7 +1310,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 	//GuildPointChange(POINT_SP, -iNeededSP);
 
 	if (test_server)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> %d ų  (%d, %d) to %u"), dwVnum, GetSP(), iNeededSP, pid);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %d \xBD\xBA\xC5\xB3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD4 (%d, %d) to %u"), dwVnum, GetSP(), iNeededSP, pid);
 
 	switch (dwVnum)
 	{
@@ -1331,7 +1331,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 					if (pcci->bChannel != g_bChannel)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 밡 %d äο ֽϴ. ( ä %d)"), pcci->bChannel, g_bChannel);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB0\xA1 %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE %d)"), pcci->bChannel, g_bChannel);
 					}
 					else
 					{
@@ -1344,7 +1344,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 					}
 				}
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 밡 ¶ ° ƴմϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB0\xA1 \xBF\xC2\xB6\xF3\xC0\xCE \xBB\xF3\xC5\xC2\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 			}
 			break;
 
@@ -1358,13 +1358,13 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 			{
 				/*if (ch->GetPlayerID() != GetMasterPID())
 				  {
-				  ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 常  ų   ֽϴ."));
+				  ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xB8\xB8 \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 				  return;
 				  }*/
 
 				if (!UnderAnyWar())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ų  ߿   ֽϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3\xC0\xBA \xB1\xE6\xB5\xE5\xC0\xFC \xC1\xDF\xBF\xA1\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return;
 				}
 
@@ -1731,7 +1731,7 @@ bool CGuild::ChargeSP(LPCHARACTER ch, int iSP)
 
 	SendDBSkillUpdate(iSP);
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> %u ŷ ȸϿϴ."), iSP);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %u\xC0\xC7 \xBF\xEB\xBD\xC5\xB7\xC2\xC0\xBB \xC8\xB8\xBA\xB9\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), iSP);
 	}
 	return true;
 }
@@ -1805,7 +1805,7 @@ void CGuild::RequestDepositMoney(LPCHARACTER ch, int iGold)
 {
 	if (false==ch->CanDeposit())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> Ŀ ֽ̿ʽÿ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xE1\xBD\xC3\xC8\xC4\xBF\xA1 \xC0\xCC\xBF\xEB\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0"));
 		return;
 	}
 
@@ -1832,19 +1832,19 @@ void CGuild::RequestWithdrawMoney(LPCHARACTER ch, int iGold)
 {
 	if (false==ch->CanDeposit())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> Ŀ ֽ̿ʽÿ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xE1\xBD\xC3\xC8\xC4\xBF\xA1 \xC0\xCC\xBF\xEB\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0"));
 		return;
 	}
 
 	if (ch->GetPlayerID() != GetMasterPID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ݰ 常   ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xB1\xDD\xB0\xED\xBF\xA1\xBC\xB1 \xB1\xE6\xB5\xE5\xC0\xE5\xB8\xB8 \xC3\xE2\xB1\xDD\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (m_data.gold < iGold)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ִ  մϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xB4\xC2 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1939,7 +1939,7 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 {
 	if (quest::CQuestManager::instance().GetPCForce(pchInviter->GetPlayerID())->IsRunning() == true)
 	{
-	    pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ʴ û    Դϴ."));
+	    pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC3\xCA\xB4\xEB \xBD\xC5\xC3\xBB\xC0\xBB \xB9\xDE\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 	    return;
 	}
 
@@ -1949,17 +1949,17 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 
 	if ( pchInvitee->IsBlockMode( BLOCK_GUILD_INVITE ) ) 
 	{
-		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<>   ʴ ź Դϴ.") );
+		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB1\xE6\xB5\xE5 \xC3\xCA\xB4\xEB \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9.") );
 		return;
 	} 
 	else if ( !HasGradeAuth( GetMember( pchInviter->GetPlayerID() )->grade, GUILD_AUTH_ADD_MEMBER ) ) 
 	{
-		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<>  ʴ  ϴ.") );
+		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xC3\xCA\xB4\xEB\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.") );
 		return;
 	} 
 	else if ( pchInvitee->GetEmpire() != pchInviter->GetEmpire() ) 
 	{
-		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<> ٸ   忡 ʴ  ϴ.") );
+		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xBB\xE7\xB6\xF7\xC0\xBB \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.") );
 		return;
 	}
 
@@ -1969,18 +1969,18 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 		case GERR_NONE: break;
 		case GERR_WITHDRAWPENALTY:
 						pchInviter->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<> Ż  %d    忡 ʴ  ϴ."), 
+								LC_TEXT("<\xB1\xE6\xB5\xE5> \xC5\xBB\xC5\xF0\xC7\xD1 \xC8\xC4 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_withdraw_delay" ) );
 						return;
 		case GERR_COMMISSIONPENALTY:
 						pchInviter->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<> 带 ػ  %d    忡 ʴ  ϴ."), 
+								LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB8\xA6 \xC7\xD8\xBB\xEA\xC7\xD1 \xC1\xF6 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_disband_delay") );
 						return;
-		case GERR_ALREADYJOIN:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ̹ ٸ 忡 ֽϴ.")); return;
-		case GERR_GUILDISFULL:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ִ   ʰ߽ϴ.")); return;
-		case GERR_GUILD_IS_IN_WAR : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<>  尡   Դϴ.") ); return;
-		case GERR_INVITE_LIMIT : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<>  ű    Դϴ.") ); return;
+		case GERR_ALREADYJOIN:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
+		case GERR_GUILDISFULL:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC3\xD6\xB4\xEB \xB1\xE6\xB5\xE5\xBF\xF8 \xBC\xF6\xB8\xA6 \xC3\xCA\xB0\xFA\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
+		case GERR_GUILD_IS_IN_WAR : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
+		case GERR_INVITE_LIMIT : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xBD\xC5\xB1\xD4 \xB0\xA1\xC0\xD4 \xC1\xA6\xC7\xD1 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
 
 		default: SPDLOG_ERROR("ignore guild join error({})", (int) errcode ); return;
 	}
@@ -2034,18 +2034,18 @@ void CGuild::InviteAccept( LPCHARACTER pchInvitee )
 		case GERR_NONE: break;
 		case GERR_WITHDRAWPENALTY:
 						pchInvitee->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<> Ż  %d    忡 ʴ  ϴ."), 
+								LC_TEXT("<\xB1\xE6\xB5\xE5> \xC5\xBB\xC5\xF0\xC7\xD1 \xC8\xC4 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_withdraw_delay" ) );
 						return;
 		case GERR_COMMISSIONPENALTY:
 						pchInvitee->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<> 带 ػ  %d    忡 ʴ  ϴ."), 
+								LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB8\xA6 \xC7\xD8\xBB\xEA\xC7\xD1 \xC1\xF6 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_disband_delay") );
 						return;
-		case GERR_ALREADYJOIN:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ̹ ٸ 忡 ֽϴ.")); return;
-		case GERR_GUILDISFULL:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ִ   ʰ߽ϴ.")); return;
-		case GERR_GUILD_IS_IN_WAR : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<>  尡   Դϴ.") ); return;
-		case GERR_INVITE_LIMIT : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<>  ű    Դϴ.") ); return;
+		case GERR_ALREADYJOIN:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
+		case GERR_GUILDISFULL:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC3\xD6\xB4\xEB \xB1\xE6\xB5\xE5\xBF\xF8 \xBC\xF6\xB8\xA6 \xC3\xCA\xB0\xFA\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
+		case GERR_GUILD_IS_IN_WAR : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
+		case GERR_INVITE_LIMIT : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xBD\xC5\xB1\xD4 \xB0\xA1\xC0\xD4 \xC1\xA6\xC7\xD1 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
 
 		default: SPDLOG_ERROR("ignore guild join error({})", (int) errcode); return;
 	}
diff --git a/src/game/src/guild_manager.cpp b/src/game/src/guild_manager.cpp
index 5768cd8..ff38535 100644
--- a/src/game/src/guild_manager.cpp
+++ b/src/game/src/guild_manager.cpp
@@ -77,7 +77,7 @@ DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
 
 	if (!check_name(gcp.name))
 	{
-		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ̸  ʽϴ."));
+		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xC0\xCC\xB8\xA7\xC0\xCC \xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return 0;
 	}
 
@@ -90,13 +90,13 @@ DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
 
 		if (!(row[0] && row[0][0] == '0'))
 		{
-			gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ̹  ̸ 尡 ֽϴ."));
+			gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xB0\xB0\xC0\xBA \xC0\xCC\xB8\xA7\xC0\xC7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 	}
 	else
 	{
-		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 带   ϴ."));
+		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB8\xA6 \xBB\xFD\xBC\xBA\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return 0;
 	}
 
@@ -541,7 +541,7 @@ void CGuildManager::DeclareWar(DWORD guild_id1, DWORD guild_id2, BYTE bType)
 		if (false == LC_IsGermany())
 		{
 			char buf[256];
-			snprintf(buf, sizeof(buf), LC_TEXT("%s 尡 %s 忡  Ͽϴ!"), TouchGuild(guild_id1)->GetName(), TouchGuild(guild_id2)->GetName());
+			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xB1\xC0\xFC\xC6\xF7\xB0\xED\xB8\xA6 \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9!"), TouchGuild(guild_id1)->GetName(), TouchGuild(guild_id2)->GetName());
 			SendNotice(buf);
 		}
 	}
@@ -555,7 +555,7 @@ void CGuildManager::RefuseWar(DWORD guild_id1, DWORD guild_id2)
 	if (g1 && g2)
 	{
 		if (g2->GetMasterCharacter())
-			g2->GetMasterCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> %s 尡  źϿϴ."), g1->GetName());
+			g2->GetMasterCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %s \xB1\xE6\xB5\xE5\xB0\xA1 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xB0\xC5\xBA\xCE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName());
 	}
 
 	if ( g1 != NULL )
@@ -579,7 +579,7 @@ void CGuildManager::WaitStartWar(DWORD guild_id1, DWORD guild_id2)
 	if (g1->WaitStartWar(guild_id2) || g2->WaitStartWar(guild_id1) )
 	{
 		char buf[256];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s  %s 尡    մϴ!"), g1->GetName(), g2->GetName());
+		snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xE1\xBD\xC3 \xC8\xC4 \xC0\xFC\xC0\xEF\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9!"), g1->GetName(), g2->GetName());
 		SendNotice(buf);
 	}
 }
@@ -627,7 +627,7 @@ void CGuildManager::StartWar(DWORD guild_id1, DWORD guild_id2)
 	g2->StartWar(guild_id1);
 
 	char buf[256];
-	snprintf(buf, sizeof(buf), LC_TEXT("%s  %s 尡  Ͽϴ!"), g1->GetName(), g2->GetName());
+	snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9!"), g1->GetName(), g2->GetName());
 	SendNotice(buf);
 
 	if (guild_id1 > guild_id2)
@@ -645,17 +645,17 @@ void SendGuildWarOverNotice(CGuild* g1, CGuild* g2, bool bDraw)
 
 		if (bDraw)
 		{
-			snprintf(buf, sizeof(buf), LC_TEXT("%s  %s    ºη ϴ."), g1->GetName(), g2->GetName());
+			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5 \xBB\xE7\xC0\xCC\xC0\xC7 \xC0\xFC\xC0\xEF\xC0\xCC \xB9\xAB\xBD\xC2\xBA\xCE\xB7\xCE \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName(), g2->GetName());
 		}
 		else
 		{
 			if ( g1->GetWarScoreAgainstTo( g2->GetID() ) > g2->GetWarScoreAgainstTo( g1->GetID() ) )
 			{
-				snprintf(buf, sizeof(buf), LC_TEXT("%s 尡 %s  £ ¸ ߽ϴ."), g1->GetName(), g2->GetName());
+				snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xBF\xCD\xC0\xC7 \xC0\xFC\xC0\xEF\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName(), g2->GetName());
 			}
 			else
 			{
-				snprintf(buf, sizeof(buf), LC_TEXT("%s 尡 %s  £ ¸ ߽ϴ."), g2->GetName(), g1->GetName());
+				snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xBF\xCD\xC0\xC7 \xC0\xFC\xC0\xEF\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), g2->GetName(), g1->GetName());
 			}
 		}
 
@@ -739,7 +739,7 @@ void CGuildManager::CancelWar(DWORD guild_id1, DWORD guild_id2)
 		LPCHARACTER master1 = g1->GetMasterCharacter();
 
 		if (master1)
-			master1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   Ǿϴ."));
+			master1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 
 	if (g2)
@@ -747,13 +747,13 @@ void CGuildManager::CancelWar(DWORD guild_id1, DWORD guild_id2)
 		LPCHARACTER master2 = g2->GetMasterCharacter();
 
 		if (master2)
-			master2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   Ǿϴ."));
+			master2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 
 	if (g1 && g2)
 	{
 		char buf[256+1];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s  %s    ҵǾϴ."), g1->GetName(), g2->GetName());
+		snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5 \xBB\xE7\xC0\xCC\xC0\xC7 \xC0\xFC\xC0\xEF\xC0\xCC \xC3\xEB\xBC\xD2\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName(), g2->GetName());
 		SendNotice(buf);
 	}
 }
diff --git a/src/game/src/guild_war.cpp b/src/game/src/guild_war.cpp
index f8b5486..8cdcb9a 100644
--- a/src/game/src/guild_war.cpp
+++ b/src/game/src/guild_war.cpp
@@ -43,7 +43,7 @@ void CGuild::GuildWarPacket(DWORD dwOppGID, BYTE bWarType, BYTE bWarState)
 		LPCHARACTER ch = *it;
 
 		if (bWarState == GUILD_WAR_ON_WAR)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ߿ ɿ   ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC1\xDF\xBF\xA1\xB4\xC2 \xBB\xE7\xB3\xC9\xBF\xA1 \xB5\xFB\xB8\xA5 \xC0\xCC\xC0\xCD\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 		LPDESC d = ch->GetDesc();
 
@@ -313,7 +313,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 					GetID(), dwOppGID, type, GuildWar_GetTypeMapIndex(type));
 
 			map_allow_log();
-			NotifyGuildMaster(LC_TEXT("   ʾ    ϴ."));
+			NotifyGuildMaster(LC_TEXT("\xC0\xFC\xC0\xEF \xBC\xAD\xB9\xF6\xB0\xA1 \xBF\xAD\xB7\xC1\xC0\xD6\xC1\xF6 \xBE\xCA\xBE\xC6 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
@@ -353,7 +353,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 							GetID(), dwOppGID, type, GuildWar_GetTypeMapIndex(type));
 
 					map_allow_log();
-					NotifyGuildMaster(LC_TEXT("   ʾ    ϴ."));
+					NotifyGuildMaster(LC_TEXT("\xC0\xFC\xC0\xEF \xBC\xAD\xB9\xF6\xB0\xA1 \xBF\xAD\xB7\xC1\xC0\xD6\xC1\xF6 \xBE\xCA\xBE\xC6 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return;
 				}
 
@@ -379,7 +379,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 			break;
 		case GUILD_WAR_SEND_DECLARE:
 			{
-				NotifyGuildMaster(LC_TEXT("̹   Դϴ."));
+				NotifyGuildMaster(LC_TEXT("\xC0\xCC\xB9\xCC \xBC\xB1\xC0\xFC\xC6\xF7\xB0\xED \xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5\xC0\xD4\xB4\xCF\xB4\xD9."));
 			}
 			break;
 		default:
@@ -651,7 +651,7 @@ void CGuild::GuildWarEntryAccept(DWORD dwOppGID, LPCHARACTER ch)
 
 	if (gw.state != GUILD_WAR_ON_WAR)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̹  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF\xC0\xCC \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -727,7 +727,7 @@ void CGuild::SetLadderPoint(int point)
 	if (m_data.ladder_point != point)
 	{
 		char buf[256];
-		snprintf(buf, sizeof(buf), LC_TEXT("<>   %d  Ǿϴ"), point);
+		snprintf(buf, sizeof(buf), LC_TEXT("<\xB1\xE6\xB5\xE5> \xB7\xA1\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 %d \xC1\xA1\xC0\xCC \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"), point);
 		for (itertype(m_memberOnline) it = m_memberOnline.begin(); it!=m_memberOnline.end();++it)
 		{
 			LPCHARACTER ch = (*it);
diff --git a/src/game/src/input_db.cpp b/src/game/src/input_db.cpp
index a50047a..1d4d125 100644
--- a/src/game/src/input_db.cpp
+++ b/src/game/src/input_db.cpp
@@ -1157,7 +1157,7 @@ void CInputDB::SafeboxLoad(LPDESC d, const char * c_pData)
 	//PREVENT_TRADE_WINDOW
 	if (ch->GetShopOwner() || ch->GetExchange() || ch->GetMyShop() || ch->IsCubeOpen() )
 	{
-		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸŷâ ¿ â  ϴ." ) );
+		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5\xB0\xC5\xB7\xA1\xC3\xA2\xC0\xCC \xBF\xAD\xB8\xB0\xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAD\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
 		d->GetCharacter()->CancelSafeboxLoad();
 		return;
 	}
@@ -1218,11 +1218,11 @@ void CInputDB::SafeboxChangePasswordAnswer(LPDESC d, const char* c_pData)
 	TSafeboxChangePasswordPacketAnswer* p = (TSafeboxChangePasswordPacketAnswer*) c_pData;
 	if (p->flag)
 	{
-		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> â йȣ Ǿϴ."));
+		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED \xBA\xF1\xB9\xD0\xB9\xF8\xC8\xA3\xB0\xA1 \xBA\xAF\xB0\xE6\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	else
 	{
-		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â>  йȣ ƲȽϴ."));
+		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xB1\xE2\xC1\xB8 \xBA\xF1\xB9\xD0\xB9\xF8\xC8\xA3\xB0\xA1 \xC6\xB2\xB7\xC8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 }
 
@@ -1884,7 +1884,7 @@ void CInputDB::BillingExpire(const char * c_pData)
 			d->SetBillingExpireSecond(p->dwRemainSeconds);
 
 			if (ch)
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ⱓ %d   ˴ϴ."), (p->dwRemainSeconds / 60));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE1\xC0\xE7\xB1\xE2\xB0\xA3\xC0\xCC %d\xBA\xD0 \xC8\xC4 \xB8\xB8\xB7\xE1 \xB5\xCB\xB4\xCF\xB4\xD9."), (p->dwRemainSeconds / 60));
 		}
 	}
 }
@@ -2530,7 +2530,7 @@ void CInputDB::AddMonarchMoney(LPDESC d, const char * data )
 	if (ch)
 	{
 		if (Random::get(1, 100) > 95)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %s  %u   ֽϴ"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 %s \xB1\xB9\xB0\xED\xBF\xA1\xB4\xC2 %u \xC0\xC7 \xB5\xB7\xC0\xCC \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
 	}
 }
 	
@@ -2550,7 +2550,7 @@ void CInputDB::DecMonarchMoney(LPDESC d, const char * data)
 
 	if (ch)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %s  %d   ֽϴ"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 %s \xB1\xB9\xB0\xED\xBF\xA1\xB4\xC2 %d \xC0\xC7 \xB5\xB7\xC0\xCC \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
 	}
 }
 
@@ -2571,14 +2571,14 @@ void CInputDB::TakeMonarchMoney(LPDESC d, const char * data)
 			return;
 
 		LPCHARACTER ch = d->GetCharacter();
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ϰų  ü  ȲԴϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xB5\xB7\xC0\xBB \xB0\xA1\xC1\xAE\xBF\xC3\xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC8\xB2\xC0\xD4\xB4\xCF\xB4\xD9"));
 	}
 }
 
 void CInputDB::ChangeMonarchLord(TPacketChangeMonarchLordACK* info)
 {
 	char notice[256];
-	snprintf(notice, sizeof(notice), LC_TEXT("%s ְ %s  üǾϴ."), EMPIRE_NAME(info->bEmpire), info->szName);
+	snprintf(notice, sizeof(notice), LC_TEXT("%s\xC0\xC7 \xB1\xBA\xC1\xD6\xB0\xA1 %s \xB4\xD4\xC0\xB8\xB7\xCE \xB1\xB3\xC3\xBC\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(info->bEmpire), info->szName);
 	SendNotice(notice);
 }
 
diff --git a/src/game/src/input_login.cpp b/src/game/src/input_login.cpp
index d9a600a..ea2e739 100644
--- a/src/game/src/input_login.cpp
+++ b/src/game/src/input_login.cpp
@@ -45,22 +45,22 @@ static void _send_bonus_info(LPCHARACTER ch)
 	if (item_drop_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT(" ӷ  %d%% ߰ ̺Ʈ Դϴ."), item_drop_bonus);
+				LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xB5\xE5\xB7\xD3\xB7\xFC  %d%% \xC3\xDF\xB0\xA1 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), item_drop_bonus);
 	}
 	if (gold_drop_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT(" ӷ %d%% ߰ ̺Ʈ Դϴ."), gold_drop_bonus);
+				LC_TEXT("\xB0\xF1\xB5\xE5 \xB5\xE5\xB7\xD3\xB7\xFC %d%% \xC3\xDF\xB0\xA1 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), gold_drop_bonus);
 	}
 	if (gold10_drop_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT("ڰ ӷ %d%% ߰ ̺Ʈ Դϴ."), gold10_drop_bonus);
+				LC_TEXT("\xB4\xEB\xB9\xDA\xB0\xF1\xB5\xE5 \xB5\xE5\xB7\xD3\xB7\xFC %d%% \xC3\xDF\xB0\xA1 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), gold10_drop_bonus);
 	}
 	if (exp_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT("ġ %d%% ߰ ȹ ̺Ʈ Դϴ."), exp_bonus);
+				LC_TEXT("\xB0\xE6\xC7\xE8\xC4\xA1 %d%% \xC3\xDF\xB0\xA1 \xC8\xB9\xB5\xE6 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), exp_bonus);
 	}
 }
 
@@ -655,7 +655,7 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 				//if (0 != g_stClientVersion.compare(d->GetClientVersion()))
 				if (version > date)
 				{
-					ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Ŭ̾Ʈ  Ʋ α׾ƿ ˴ϴ.  ġ  ϼ."));
+					ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC5\xAC\xB6\xF3\xC0\xCC\xBE\xF0\xC6\xAE \xB9\xF6\xC0\xFC\xC0\xCC \xC6\xB2\xB7\xC1 \xB7\xCE\xB1\xD7\xBE\xC6\xBF\xF4 \xB5\xCB\xB4\xCF\xB4\xD9. \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC6\xD0\xC4\xA1 \xC8\xC4 \xC1\xA2\xBC\xD3\xC7\xCF\xBC\xBC\xBF\xE4."));
 					d->DelayedDisconnect(10);
 					LogManager::instance().HackLog("VERSION_CONFLICT", ch);
 
@@ -795,9 +795,9 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 	{
 		if (FN_is_battle_zone(ch))
 		{
-			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ʿ     ֽϴ."));
-			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ׿  "));
-			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ּ  μ ưñ ٶϴ."));
+			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC0\xCC \xB8\xCA\xBF\xA1\xBC\xB1 \xB0\xAD\xC1\xA6\xC0\xFB\xC0\xCE \xB4\xEB\xC0\xFC\xC0\xCC \xC0\xD6\xC0\xBB\xBC\xF6 \xB5\xB5 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC0\xCC \xC1\xB6\xC7\xD7\xBF\xA1 \xB5\xBF\xC0\xC7\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBB\xBD\xC3"));
+			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xBA\xBB\xC0\xCE\xC0\xC7 \xC1\xD6\xBC\xBA \xB9\xD7 \xBA\xCE\xBC\xBA\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA1\xBD\xC3\xB1\xE2 \xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
 		}
 	}
 }
diff --git a/src/game/src/input_main.cpp b/src/game/src/input_main.cpp
index dd137e6..f94d866 100644
--- a/src/game/src/input_main.cpp
+++ b/src/game/src/input_main.cpp
@@ -52,7 +52,7 @@ void SendBlockChatInfo(LPCHARACTER ch, int sec)
 {
 	if (sec <= 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ä  Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xC6\xC3 \xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -65,13 +65,13 @@ void SendBlockChatInfo(LPCHARACTER ch, int sec)
 	char buf[128+1];
 
 	if (hour > 0 && min > 0)
-		snprintf(buf, sizeof(buf), LC_TEXT("%d ð %d  %d   äñ Դϴ"), hour, min, sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d \xBD\xC3\xB0\xA3 %d \xBA\xD0 %d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), hour, min, sec);
 	else if (hour > 0 && min == 0)
-		snprintf(buf, sizeof(buf), LC_TEXT("%d ð %d   äñ Դϴ"), hour, sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d \xBD\xC3\xB0\xA3 %d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), hour, sec);
 	else if (hour == 0 && min > 0)
-		snprintf(buf, sizeof(buf), LC_TEXT("%d  %d   äñ Դϴ"), min, sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d \xBA\xD0 %d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), min, sec);
 	else
-		snprintf(buf, sizeof(buf), LC_TEXT("%d   äñ Դϴ"), sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), sec);
 
 	ch->ChatPacket(CHAT_TYPE_INFO, buf);
 }
@@ -295,7 +295,7 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 	if (ch->FindAffect(AFFECT_BLOCK_CHAT))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ä  Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xC6\xC3 \xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return (iExtraLen);
 	}
 
@@ -446,9 +446,9 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 						char buf[128];
 						int len;
 						if (3==processReturn) //ȯ
-							len = snprintf(buf, sizeof(buf), LC_TEXT("ٸ ŷ(â,ȯ,) λ   ϴ."), pTable->szLocaleName);
+							len = snprintf(buf, sizeof(buf), LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
 						else
-							len = snprintf(buf, sizeof(buf), LC_TEXT("%s ʿմϴ."), pTable->szLocaleName);
+							len = snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
 						
 
 						if (len < 0 || len >= (int) sizeof(buf))
@@ -711,9 +711,9 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		if (NULL != pTable)
 		{
 			if (3==processReturn) //ȯ
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ ŷ(â,ȯ,) λ   ϴ."), pTable->szLocaleName);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
 			else
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ʿմϴ."), pTable->szLocaleName);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
 						
 		}
 
@@ -726,7 +726,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 		if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ġ  %d ̻   մϴ."), SHOUT_LIMIT_LEVEL);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xDC\xC4\xA1\xB1\xE2\xB4\xC2 \xB7\xB9\xBA\xA7 %d \xC0\xCC\xBB\xF3\xB8\xB8 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9 \xC7\xD5\xB4\xCF\xB4\xD9."), SHOUT_LIMIT_LEVEL);
 			return (iExtraLen);
 		}
 
@@ -789,7 +789,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		case CHAT_TYPE_PARTY:
 			{
 				if (!ch->GetParty())
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ƽ  ƴմϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC4\xC6\xBC \xC1\xDF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 				else
 				{
 					TEMP_BUFFER tbuf;
@@ -806,7 +806,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		case CHAT_TYPE_GUILD:
 			{
 				if (!ch->GetGuild())
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡  ʾҽϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xE6\xB5\xE5\xBF\xA1 \xB0\xA1\xC0\xD4\xC7\xCF\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
 				else
 					ch->GetGuild()->Chat(chatbuf);
 			}
@@ -930,7 +930,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 				if (ch_companion->IsBlockMode(BLOCK_MESSENGER_INVITE))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ޽ ߰ ź Դϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB8\xDE\xBD\xC5\xC1\xAE \xC3\xDF\xB0\xA1 \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return sizeof(TPacketCGMessengerAddByVID);
 				}
 
@@ -941,7 +941,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 				if (ch->GetGMLevel() == GM_PLAYER && ch_companion->GetGMLevel() != GM_PLAYER)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<޽> ڴ ޽ ߰  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> \xBF\xEE\xBF\xB5\xC0\xDA\xB4\xC2 \xB8\xDE\xBD\xC5\xC1\xAE\xBF\xA1 \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return sizeof(TPacketCGMessengerAddByVID);
 				}
 
@@ -963,14 +963,14 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 				if (ch->GetGMLevel() == GM_PLAYER && gm_get_level(name) != GM_PLAYER)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<޽> ڴ ޽ ߰  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> \xBF\xEE\xBF\xB5\xC0\xDA\xB4\xC2 \xB8\xDE\xBD\xC5\xC1\xAE\xBF\xA1 \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return CHARACTER_NAME_MAX_LEN;
 				}
 
 				LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(name);
 
 				if (!tch)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ӵ  ʽϴ."), name);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA \xC1\xA2\xBC\xD3\xB5\xC7 \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."), name);
 				else
 				{
 					if (tch == ch) // ڽ ߰  .
@@ -978,7 +978,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 					if (tch->IsBlockMode(BLOCK_MESSENGER_INVITE) == true)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ޽ ߰ ź Դϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB8\xDE\xBD\xC5\xC1\xAE \xC3\xDF\xB0\xA1 \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 					}
 					else
 					{
@@ -1097,7 +1097,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 	{
 		if (iPulse - to_ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
-			to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŷ  %d ̳ â  ϴ."), g_nPortalLimitTime);
+			to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1 \xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAD\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 			return;
 		}
 
@@ -1111,7 +1111,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 	if (iPulse - ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ŷ  %d ̳ â  ϴ."), g_nPortalLimitTime);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1 \xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAD\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 		return;
 	}
 
@@ -1127,14 +1127,14 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 					/*
 					if (to_ch->IsMonarch() || ch->IsMonarch())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ֿʹ ŷ Ҽ ϴ"), g_nPortalLimitTime);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xBF\xCD\xB4\xC2 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"), g_nPortalLimitTime);
 						return;
 					}
 					//END_MONARCH_LIMIT
 					*/
 					if (iPulse - ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("â  %d ̳ ŷ Ҽ ϴ."), g_nPortalLimitTime);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 
 						if (test_server)
 							ch->ChatPacket(CHAT_TYPE_INFO, "[TestOnly][Safebox]Pulse %d LoadTime %d PASS %d", iPulse, ch->GetSafeboxLoadTime(), PASSES_PER_SEC(g_nPortalLimitTime));
@@ -1143,7 +1143,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 					if (iPulse - to_ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 					{
-						to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("â  %d ̳ ŷ Ҽ ϴ."), g_nPortalLimitTime);
+						to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
 
 
 						if (test_server)
@@ -1153,7 +1153,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 					if (ch->GetGold() >= GOLD_MAX)
 					{	
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("׼ 20  ʰϿ ŷ Ҽ ϴ.."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xD7\xBC\xF6\xB0\xA1 20\xBE\xEF \xB3\xC9\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xA9 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.."));
 
 						SPDLOG_ERROR("[OVERFLOG_GOLD] START ({}) id {} name {} ", ch->GetGold(), ch->GetPlayerID(), ch->GetName());
 						return;
@@ -1171,7 +1171,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 					if (ch->GetMyShop() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ ŷϰ λ  ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF\xC0\xCF\xB0\xE6\xBF\xEC \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return;
 					}
 
@@ -1203,7 +1203,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 				if (GOLD_MAX <= nTotalGold)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ѱݾ 20  ʰϿ ŷ Ҽ ϴ.."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xC3\xD1\xB1\xDD\xBE\xD7\xC0\xCC 20\xBE\xEF \xB3\xC9\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xA9 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.."));
 
 					SPDLOG_ERROR("[OVERFLOW_GOLD] ELK_ADD ({}) id {} name {} ",
 							ch->GetExchange()->GetCompany()->GetOwner()->GetGold(),
@@ -2052,31 +2052,31 @@ void CInputMain::SafeboxCheckin(LPCHARACTER ch, const char * c_pData)
 
 	if (pkItem->GetCell() >= INVENTORY_MAX_NUM && IS_SET(pkItem->GetFlag(), ITEM_FLAG_IRREMOVABLE))
 	{
-	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> â ű    Դϴ."));
+	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB7\xCE \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB \xC0\xD4\xB4\xCF\xB4\xD9."));
 	    return;
 	}
 
 	if (!pkSafebox->IsEmpty(p->bSafePos, pkItem->GetSize()))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ű   ġԴϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (pkItem->GetVnum() == UNIQUE_ITEM_SAFEBOX_EXPAND)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â>     ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB3\xD6\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if( IS_SET(pkItem->GetAntiFlag(), ITEM_ANTIFLAG_SAFEBOX) )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â>     ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB3\xD6\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (true == pkItem->isLocked())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â>     ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB3\xD6\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2127,7 +2127,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 
 		if (DRAGON_SOUL_INVENTORY != p->ItemPos.window_type)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ű   ġԴϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
 			return;
 		}
 		
@@ -2137,7 +2137,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 			int iCell = ch->GetEmptyDragonSoulInventory(pkItem);
 			if (iCell < 0)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ű   ġԴϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
 				return ;
 			}
 			DestPos = TItemPos (DRAGON_SOUL_INVENTORY, iCell);
@@ -2151,7 +2151,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 	{
 		if (DRAGON_SOUL_INVENTORY == p->ItemPos.window_type)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<â> ű   ġԴϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
 			return;
 		}
 
@@ -2203,7 +2203,7 @@ void CInputMain::PartyInvite(LPCHARACTER ch, const char * c_pData)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2224,7 +2224,7 @@ void CInputMain::PartyInviteAnswer(LPCHARACTER ch, const char * c_pData)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2235,7 +2235,7 @@ void CInputMain::PartyInviteAnswer(LPCHARACTER ch, const char * c_pData)
 	// pInviter  ch  Ƽ û ߾.
 
 	if (!pInviter)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽû  ij͸ ã ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xE4\xC3\xBB\xC0\xBB \xC7\xD1 \xC4\xB3\xB8\xAF\xC5\xCD\xB8\xA6 \xC3\xA3\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	else if (!p->accept)
 		pInviter->PartyInviteDeny(ch->GetPlayerID());
 	else
@@ -2247,7 +2247,7 @@ void CInputMain::PartySetState(LPCHARACTER ch, const char* c_pData)
 {
 	if (!CPartyManager::instance().IsEnablePCParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>   Ƽ  ó   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xAD\xB9\xF6 \xB9\xAE\xC1\xA6\xB7\xCE \xC6\xC4\xC6\xBC \xB0\xFC\xB7\xC3 \xC3\xB3\xB8\xAE\xB8\xA6 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2258,13 +2258,13 @@ void CInputMain::PartySetState(LPCHARACTER ch, const char* c_pData)
 
 	if (ch->GetParty()->GetLeaderPID() != ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>    ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB8\xAE\xB4\xF5\xB8\xB8 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (!ch->GetParty()->IsMember(p->pid))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> ¸ Ϸ  Ƽ ƴմϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBB\xF3\xC5\xC2\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xCF\xB7\xC1\xB4\xC2 \xBB\xE7\xB6\xF7\xC0\xCC \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2292,7 +2292,7 @@ void CInputMain::PartySetState(LPCHARACTER ch, const char* c_pData)
 				db_clientdesc->DBPacket(HEADER_GD_PARTY_STATE_CHANGE, 0, &pack, sizeof(pack));
 			}
 			/* else
-			   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ŀ  Ͽϴ.")); */
+			   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBE\xEE\xC5\xC2\xC4\xBF \xBC\xB3\xC1\xA4\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9.")); */
 			break;
 
 		default:
@@ -2305,19 +2305,19 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("忡 Ͻ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (!CPartyManager::instance().IsEnablePCParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>   Ƽ  ó   ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xAD\xB9\xF6 \xB9\xAE\xC1\xA6\xB7\xCE \xC6\xC4\xC6\xBC \xB0\xFC\xB7\xC3 \xC3\xB3\xB8\xAE\xB8\xA6 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (ch->GetDungeon())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>  ȿ Ƽ ߹  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC0\xFC \xBE\xC8\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xC3\xDF\xB9\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2331,7 +2331,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 	{
 		if (ch->GetDungeon())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>  Ƽ ߹  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC1\xAF\xB3\xBB\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xBB \xC3\xDF\xB9\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 		else
 		{
@@ -2347,7 +2347,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 				if (B)
 				{
 					//pParty->SendPartyRemoveOneToAll(B);
-					B->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ ߹ϼ̽ϴ."));
+					B->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xC3\xDF\xB9\xE6\xB4\xE7\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 					//pParty->Unlink(B);
 					//CPartyManager::instance().SetPartyMember(B->GetPlayerID(), NULL);
 				}
@@ -2362,7 +2362,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 		{
 			if (ch->GetDungeon())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>  Ƽ   ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC1\xAF\xB3\xBB\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xB8\xA6 \xB3\xAA\xB0\xA5 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			else
 			{
@@ -2373,7 +2373,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 				}
 				else
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ ̽ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
 					//pParty->SendPartyRemoveOneToAll(ch);
 					pParty->Quit(ch->GetPlayerID());
 					//pParty->SendPartyRemoveAllToOne(ch);
@@ -2383,7 +2383,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> ٸ Ƽ Żų  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xD9\xB8\xA5 \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xBB \xC5\xBB\xC5\xF0\xBD\xC3\xC5\xB3 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 	}
 }
@@ -2398,7 +2398,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 	if (get_global_time() - ch->GetQuestFlag("guild_manage.new_disband_time") <
 			CGuildManager::instance().GetDisbandDelay())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ػ  %d ̳ 带   ϴ."), 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xD8\xBB\xEA\xC7\xD1 \xC8\xC4 %d\xC0\xCF \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xE6\xB5\xE5\xB8\xA6 \xB8\xB8\xB5\xE9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
 				quest::CQuestManager::instance().GetEventFlag("guild_disband_delay"));
 		return;
 	}
@@ -2406,7 +2406,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 	if (get_global_time() - ch->GetQuestFlag("guild_manage.new_withdraw_time") <
 			CGuildManager::instance().GetWithdrawDelay())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> Ż  %d ̳ 带   ϴ."), 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC5\xBB\xC5\xF0\xC7\xD1 \xC8\xC4 %d\xC0\xCF \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xE6\xB5\xE5\xB8\xA6 \xB8\xB8\xB5\xE9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
 				quest::CQuestManager::instance().GetEventFlag("guild_withdraw_delay"));
 		return;
 	}
@@ -2424,7 +2424,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 
 	if (cp.name[0] == 0 || !check_name(cp.name))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ̸ Դϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xB1\xE6\xB5\xE5 \xC0\xCC\xB8\xA7 \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2432,7 +2432,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 
 	if (dwGuildID)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> [%s] 尡 Ǿϴ."), cp.name);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> [%s] \xB1\xE6\xB5\xE5\xB0\xA1 \xBB\xFD\xBC\xBA\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), cp.name);
 
 		int GuildCreateFee;
 
@@ -2457,7 +2457,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 		//ch->SendGuildName(dwGuildID);
 	}
 	else
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   Ͽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xBB\xFD\xBC\xBA\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 }
 
 void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData)
@@ -2468,7 +2468,7 @@ void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData)
 
 	if (ch->GetPlayerID() != ch->GetParty()->GetLeaderPID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ  Ƽ常   ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC \xB1\xE2\xBC\xFA\xC0\xBA \xC6\xC4\xC6\xBC\xC0\xE5\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -2483,7 +2483,7 @@ void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData)
 				if (pch)
 					ch->GetParty()->SummonToLeader(pch->GetPlayerID());
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> ȯϷ  ã  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xD2\xC8\xAF\xC7\xCF\xB7\xC1\xB4\xC2 \xB4\xEB\xBB\xF3\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			break;
 	}
@@ -2545,7 +2545,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 	{
 		if (SubHeader != GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 忡  ʽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return SubPacketLen;
 		}
 	}
@@ -2561,13 +2561,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (gold < 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ߸ ݾԴϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xDF\xB8\xF8\xB5\xC8 \xB1\xDD\xBE\xD7\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return SubPacketLen;
 				}
 
 				if (ch->GetGold() < gold)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ִ  մϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xB4\xC2 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 					return SubPacketLen;
 				}
 
@@ -2584,7 +2584,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (gold < 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ߸ ݾԴϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xDF\xB8\xF8\xB5\xC8 \xB1\xDD\xBE\xD7\xC0\xD4\xB4\xCF\xB4\xD9."));
 					return SubPacketLen;
 				}
 
@@ -2599,7 +2599,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (!newmember)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ׷  ã  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xAF\xC7\xD1 \xBB\xE7\xB6\xF7\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return SubPacketLen;
 				}
 
@@ -2610,7 +2610,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 				{
 					if (newmember->GetQuestFlag("change_guild_master.be_other_member") > get_global_time())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ijԴϴ"));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBE\xC6\xC1\xF7 \xB0\xA1\xC0\xD4\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC4\xB3\xB8\xAF\xC5\xCD\xC0\xD4\xB4\xCF\xB4\xD9"));
 						return SubPacketLen;
 					}
 				}
@@ -2623,7 +2623,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 			{
 				if (pGuild->UnderAnyWar() != 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ߿  Żų  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC \xC1\xDF\xBF\xA1\xB4\xC2 \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xC5\xBB\xC5\xF0\xBD\xC3\xC5\xB3 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return SubPacketLen;
 				}
 
@@ -2639,13 +2639,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 				{
 					if (member->GetGuild() != pGuild)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   尡 ƴմϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB0\xB0\xC0\xBA \xB1\xE6\xB5\xE5\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
 						return SubPacketLen;
 					}
 
 					if (!pGuild->HasGradeAuth(m->grade, GUILD_AUTH_REMOVE_MEMBER))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   Ż ų  ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xB0\xAD\xC1\xA6 \xC5\xBB\xC5\xF0 \xBD\xC3\xC5\xB3 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return SubPacketLen;
 					}
 
@@ -2661,14 +2661,14 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 				{
 					if (!pGuild->HasGradeAuth(m->grade, GUILD_AUTH_REMOVE_MEMBER))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   Ż ų  ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xB0\xAD\xC1\xA6 \xC5\xBB\xC5\xF0 \xBD\xC3\xC5\xB3 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 						return SubPacketLen;
 					}
 
 					if (pGuild->RequestRemoveMember(pid))
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   Ż ׽ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xB0\xAD\xC1\xA6 \xC5\xBB\xC5\xF0 \xBD\xC3\xC4\xD7\xBD\xC0\xB4\xCF\xB4\xD9."));
 					else
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ׷  ã  ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xAF\xC7\xD1 \xBB\xE7\xB6\xF7\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 			}
 			return SubPacketLen;
@@ -2685,15 +2685,15 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (m->grade != GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ̸   ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xF7\xC0\xA7 \xC0\xCC\xB8\xA7\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else if (*c_pData == GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>   ̸   ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xC7 \xC1\xF7\xC0\xA7 \xC0\xCC\xB8\xA7\xC0\xBA \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else if (!check_name(gradename))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>    ̸ Դϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xC1\xF7\xC0\xA7 \xC0\xCC\xB8\xA7 \xC0\xD4\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
@@ -2711,11 +2711,11 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (m->grade != GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xF7\xC0\xA7 \xB1\xC7\xC7\xD1\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else if (*c_pData == GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xC7 \xB1\xC7\xC7\xD1\xC0\xBA \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
@@ -2730,7 +2730,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (pGuild->GetLevel() >= GUILD_MAX_LEVEL && LC_IsHongKong() == false)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 尡 ̹ ְ Դϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xCC\xB9\xCC \xC3\xD6\xB0\xED \xB7\xB9\xBA\xA7\xC0\xD4\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
@@ -2739,11 +2739,11 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 					if (pGuild->OfferExp(ch, offer))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> %u ġ Ͽϴ."), offer);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %u\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC5\xF5\xC0\xDA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), offer);
 					}
 					else
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ġ ڿ Ͽϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xE6\xC7\xE8\xC4\xA1 \xC5\xF5\xC0\xDA\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 					}
 				}
 			}
@@ -2756,13 +2756,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (offer < 0 || gold < offer || gold < 0 || ch->GetGold() < gold)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  մϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
 					return SubPacketLen;
 				}
 
 				if (!pGuild->ChargeSP(ch, offer))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ŷ ȸ Ͽϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBF\xEB\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 			}
 			return SubPacketLen;
@@ -2789,7 +2789,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (length && !pGuild->HasGradeAuth(m->grade, GUILD_AUTH_NOTICE) && *(c_pData + 1) == '!')
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>  ۼ  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xF8\xC1\xF6\xB1\xDB\xC0\xBB \xC0\xDB\xBC\xBA\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
@@ -2822,11 +2822,11 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 					return -1;
 
 				if (m->grade != GUILD_LEADER_GRADE)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>    ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xF7\xC0\xA7\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				else if (ch->GetPlayerID() == pid)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xC7 \xC1\xF7\xC0\xA7\xB4\xC2 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				else if (grade == 1)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<>     ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xB8\xB7\xCE \xC1\xF7\xC0\xA7\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				else
 					pGuild->ChangeMemberGrade(pid, grade);
 			}
@@ -2851,13 +2851,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (m->grade != GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> 屺   ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xE5\xB1\xBA\xC0\xBB \xC1\xF6\xC1\xA4\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 				else
 				{
 					if (!pGuild->ChangeMemberGeneral(pid, is_general))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<> ̻    ϴ."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB4\xF5\xC0\xCC\xBB\xF3 \xC0\xE5\xBC\xF6\xB8\xA6 \xC1\xF6\xC1\xA4\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					}
 				}
 			}
@@ -2901,7 +2901,7 @@ void CInputMain::ItemGive(LPCHARACTER ch, const char* c_pData)
 	if (to_ch)
 		ch->GiveItem(to_ch, p->ItemPos);
 	else
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" dz  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xB0\xC7\xB3\xD7\xC1\xD9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 }
 
 int CInputMain::MyShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes)
@@ -2914,7 +2914,7 @@ int CInputMain::MyShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes)
 
 	if (ch->GetGold() >= GOLD_MAX)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  20 Ѿ ŷ ۼ ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC0\xAF \xB5\xB7\xC0\xCC 20\xBE\xEF\xB3\xC9\xC0\xBB \xB3\xD1\xBE\xEE \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xDB\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
         SPDLOG_DEBUG("MyShop ==> OverFlow Gold id {} name {} ", ch->GetPlayerID(), ch->GetName());
 		return (iExtraLen);
 	}
@@ -2924,7 +2924,7 @@ int CInputMain::MyShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes)
 
 	if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ ŷϰ λ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF\xC0\xCF\xB0\xE6\xBF\xEC \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return (iExtraLen);
 	}
 
@@ -2939,7 +2939,7 @@ void CInputMain::Refine(LPCHARACTER ch, const char* c_pData)
 
 	if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->GetMyShop() || ch->IsCubeOpen())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("â,ŷâ  ¿  Ҽ ϴ"));
+		ch->ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("\xC3\xA2\xB0\xED,\xB0\xC5\xB7\xA1\xC3\xA2\xB5\xEE\xC0\xCC \xBF\xAD\xB8\xB0 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB0\xB3\xB7\xAE\xC0\xBB \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 		ch->ClearRefineMode();
 		return;
 	}
@@ -2996,7 +2996,7 @@ void CInputMain::Refine(LPCHARACTER ch, const char* c_pData)
 				}
 				else
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, " Ÿ Ϸ  ѹ 밡մϴ.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "\xBB\xE7\xB1\xCD \xC5\xB8\xBF\xF6 \xBF\xCF\xB7\xE1 \xBA\xB8\xBB\xF3\xC0\xBA \xC7\xD1\xB9\xF8\xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9.");
 				}
 			}
 		}
@@ -3060,7 +3060,7 @@ int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 					//if (0 != g_stClientVersion.compare(d->GetClientVersion()))
 					if (version > date)
 					{
-						ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Ŭ̾Ʈ  Ʋ α׾ƿ ˴ϴ.  ġ  ϼ."));
+						ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC5\xAC\xB6\xF3\xC0\xCC\xBE\xF0\xC6\xAE \xB9\xF6\xC0\xFC\xC0\xCC \xC6\xB2\xB7\xC1 \xB7\xCE\xB1\xD7\xBE\xC6\xBF\xF4 \xB5\xCB\xB4\xCF\xB4\xD9. \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC6\xD0\xC4\xA1 \xC8\xC4 \xC1\xA2\xBC\xD3\xC7\xCF\xBC\xBC\xBF\xE4."));
 						d->DelayedDisconnect(10);
 						LogManager::instance().HackLog("VERSION_CONFLICT", d->GetAccountTable().login, ch->GetName(), d->GetHostName());
 					}
diff --git a/src/game/src/input_teen.cpp b/src/game/src/input_teen.cpp
index db8327b..91a2760 100644
--- a/src/game/src/input_teen.cpp
+++ b/src/game/src/input_teen.cpp
@@ -95,32 +95,32 @@ static void __proc_teen_notice(char *login, int hour)
 		case 1:
 		case 2:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("  ¶ ð ̹ %dð ϴ."), hour);
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xCC \xC0\xCC\xB9\xCC %d\xBD\xC3\xB0\xA3\xC0\xCC \xC1\xF6\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), hour);
 				SET_OVER_TIME(ch, OT_NONE);
 			}
 			break;
 		case 3:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("  ¶ ð ̹ %dð Ǿϴ,"), hour);
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("  Ͻ  ǰ  ޽ ֽñٶϴ."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xCC \xC0\xCC\xB9\xCC %d\xBD\xC3\xB0\xA3\xC0\xCC \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9,"), hour);
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC1\xB6\xBC\xD3\xC8\xF7 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBD\xC5 \xC8\xC4 \xB0\xC7\xB0\xAD\xC0\xBB \xC0\xA7\xC7\xD8 \xC8\xDE\xBD\xC4\xC0\xBB \xC3\xEB\xC7\xD8\xC1\xD6\xBD\xC3\xB1\xE2\xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
 				SET_OVER_TIME(ch, OT_3HOUR);
 			}
 			break;
 		case 4:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ̹  Ƿ ¿ ,"));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("   ġ 50% ˴ϴ."));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ǰ    Ͻð"));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("޽  о ֽʽÿ."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xBA \xC0\xCC\xB9\xCC \xB0\xD4\xC0\xD3 \xC7\xC7\xB7\xCE \xBB\xF3\xC5\xC2\xBF\xA1 \xB5\xE9\xBE\xEE\xBC\xB9\xC0\xB8\xB8\xE7,"));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB0\xD4\xC0\xD3 \xB3\xBB\xC0\xC7 \xBC\xF6\xC0\xCD\xC0\xCC \xC1\xA4\xBB\xF3\xC4\xA1\xC0\xC7 50%\xB7\xCE \xC7\xCF\xC7\xE2\xB5\xCB\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB0\xC7\xB0\xAD\xC0\xBB \xC0\xA7\xC7\xD8 \xC1\xB6\xBC\xD3\xC8\xF7 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBD\xC3\xB0\xED"));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC8\xDE\xBD\xC4 \xB9\xD7 \xC7\xD0\xBE\xF7\xBF\xA1 \xBF\xAD\xC1\xDF\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 				SET_OVER_TIME(ch, OT_3HOUR);
 			}
 			break;
 		default:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT(" ̹    ð ϴ."));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("ǰ    Ͻ  ޽ ֽʽÿ,"));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("׷  ǰ  ظ      ġ 0 ˴ϴ."));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("  ð 5ð Ǹ  ƿɴϴ."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xBA \xC0\xCC\xB9\xCC \xBF\xC2\xC0\xFC\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xD1 \xB0\xD4\xC0\xD3 \xBD\xC3\xB0\xA3\xBF\xA1 \xB5\xE9\xBE\xEE\xBC\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB0\xC7\xB0\xAD\xC0\xBB \xC0\xA7\xC7\xD8 \xC1\xB6\xBC\xD3\xC8\xF7 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBD\xC5 \xC8\xC4 \xC8\xDE\xBD\xC4\xC0\xBB \xC3\xEB\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0,"));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB1\xD7\xB7\xB8\xC1\xF6 \xBE\xCA\xC0\xB8\xB8\xE9 \xB0\xC7\xB0\xAD \xBB\xF3\xBF\xA1 \xC7\xC7\xC7\xD8\xB8\xA6 \xC0\xD4\xC0\xBB \xBC\xF6 \xC0\xD6\xC0\xB8\xB8\xE7 \xB0\xD4\xC0\xD3 \xB3\xBB\xC0\xC7 \xBC\xF6\xC4\xA1\xB4\xC2 0\xC0\xCC \xB5\xCB\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xA9\xC0\xFB \xBF\xC0\xC7\xC1\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xCC 5\xBD\xC3\xB0\xA3\xC0\xCC \xB5\xC7\xB8\xE9 \xC1\xA4\xBB\xF3\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xBF\xC9\xB4\xCF\xB4\xD9."));
 				SET_OVER_TIME(ch, OT_5HOUR);
 			}
 			break;
@@ -133,9 +133,9 @@ static inline void __sec_to_timestring(int sec, char *buf, size_t buflen)
 	int min		= (sec/60);
 
 	if (hour>0)
-		snprintf(buf, buflen, LC_TEXT("%dð"), hour);
+		snprintf(buf, buflen, LC_TEXT("%d\xBD\xC3\xB0\xA3"), hour);
 	else
-		snprintf(buf, buflen, LC_TEXT("%d"), min);
+		snprintf(buf, buflen, LC_TEXT("%d\xBA\xD0"), min);
 }
 
 static void __proc_login_notice(char *login, int on_time, int off_time)
@@ -156,13 +156,13 @@ static void __proc_login_notice(char *login, int on_time, int off_time)
 
 	if (0==on_time)
 	{
-		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("   ð %sԴϴ."), off_time_string);
-		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("  ¶ ð 0 Ǿϴ. 100% ȿ   ֽϴ."));
+		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC0\xC7\xC1\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA %s\xC0\xD4\xB4\xCF\xB4\xD9."), off_time_string);
+		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA 0\xC0\xCC \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. 100% \xC8\xBF\xB0\xFA\xB8\xA6 \xBE\xF2\xC0\xB8\xBD\xC7 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("   ð %s̸,  ¶ ð %sԴϴ."),
+		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC0\xC7\xC1\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA %s\xC0\xCC\xB8\xE7, \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA %s\xC0\xD4\xB4\xCF\xB4\xD9."),
 				off_time_string, on_time_string);
 	}
 }
diff --git a/src/game/src/item.cpp b/src/game/src/item.cpp
index 116b996..481f9ba 100644
--- a/src/game/src/item.cpp
+++ b/src/game/src/item.cpp
@@ -1544,7 +1544,7 @@ void CItem::SetAccessorySocketDownGradeTime(DWORD time)
 	SetSocket(2, time); 
 
 	if (test_server && GetOwner())
-		GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s    ð %d"), GetName(), time);
+		GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xBF\xA1\xBC\xAD \xBC\xD2\xC4\xCF \xBA\xFC\xC1\xFA\xB6\xA7\xB1\xEE\xC1\xF6 \xB3\xB2\xC0\xBA \xBD\xC3\xB0\xA3 %d"), GetName(), time);
 }
 
 EVENTFUNC(accessory_socket_expire_event)
@@ -1692,7 +1692,7 @@ void CItem::AccessorySocketDegrade()
 
 		if (ch)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s ִ  ϴ."), GetName());
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xBF\xA1 \xB9\xDA\xC7\xF4\xC0\xD6\xB4\xF8 \xBA\xB8\xBC\xAE\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."), GetName());
 		}
 
 		ModifyPoints(false);
diff --git a/src/game/src/item_manager.cpp b/src/game/src/item_manager.cpp
index 90e0d53..a11c2a1 100644
--- a/src/game/src/item_manager.cpp
+++ b/src/game/src/item_manager.cpp
@@ -1482,7 +1482,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	//
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2006_drop") >= Random::get(1, iRandRange))
 	{
-        SPDLOG_DEBUG(" DROP EVENT ");
+        SPDLOG_DEBUG("\xC0\xB0\xB0\xA2\xBA\xB8\xC7\xD5 DROP EVENT ");
 
 		const static DWORD dwVnum = 50037;
 
@@ -1494,7 +1494,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	//+
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2007_drop") >= Random::get(1, iRandRange))
 	{
-        SPDLOG_DEBUG(" DROP EVENT ");
+        SPDLOG_DEBUG("\xC0\xB0\xB0\xA2\xBA\xB8\xC7\xD5 DROP EVENT ");
 
 		const static DWORD dwVnum = 50043;
 
diff --git a/src/game/src/item_manager_read_tables.cpp b/src/game/src/item_manager_read_tables.cpp
index 819be0c..7c97ad9 100644
--- a/src/game/src/item_manager_read_tables.cpp
+++ b/src/game/src/item_manager_read_tables.cpp
@@ -78,7 +78,7 @@ bool ITEM_MANAGER::ReadCommonDropItemFile(const char * c_pszFileName)
 
 			if (!ITEM_MANAGER::instance().GetVnumByOriginalName(d[i].szItemName, dwItemVnum))
 			{
-				// ̸ ã ȣ ˻
+				// �̸����� ��ã���� ��ȣ�� �˻�
 				str_to_number(dwItemVnum, d[i].szItemName);
 				if (!ITEM_MANAGER::instance().GetTable(dwItemVnum))
 				{
@@ -223,7 +223,7 @@ bool ITEM_MANAGER::ReadSpecialDropItemFile(const char * c_pszFileName)
 
 					if (!GetVnumByOriginalName(name.c_str(), dwVnum))
 					{
-						if (name == "ġ" || name == "exp")
+						if (name == "\xB0\xE6\xC7\xE8\xC4\xA1" || name == "exp")
 						{
 							dwVnum = CSpecialItemGroup::EXP;
 						}
@@ -372,7 +372,7 @@ bool ITEM_MANAGER::ConvSpecialDropItemFile()
 
 				if (!GetVnumByOriginalName(name.c_str(), dwVnum))
 				{
-					if (	name == "ġ" ||
+					if (	name == "\xB0\xE6\xC7\xE8\xC4\xA1" ||
 						name == "mob" ||
 						name == "slow" ||
 						name == "drain_hp" ||
@@ -405,7 +405,7 @@ bool ITEM_MANAGER::ConvSpecialDropItemFile()
 					str_to_number(iRarePct, pTok->at(3).c_str());
 				}
 
-				//    1   " ü"   1   100
+				//    1   "��� ���ü�"   1   100
 				if (0 == dwVnum)
 					fprintf(fp, "	%d	%s	%d	%d\n", k, name.c_str(), iCount, iProb);
 				else
diff --git a/src/game/src/main.cpp b/src/game/src/main.cpp
index 7380068..8cd2b42 100644
--- a/src/game/src/main.cpp
+++ b/src/game/src/main.cpp
@@ -166,11 +166,11 @@ void ShutdownOnFatalError()
 		{
 			char buf[256];
 
-			strlcpy(buf, LC_TEXT(" ġ  ߻Ͽ ڵ õ˴ϴ."), sizeof(buf));
+			strlcpy(buf, LC_TEXT("\xBC\xAD\xB9\xF6\xBF\xA1 \xC4\xA1\xB8\xED\xC0\xFB\xC0\xCE \xBF\xC0\xB7\xF9\xB0\xA1 \xB9\xDF\xBB\xFD\xC7\xCF\xBF\xA9 \xC0\xDA\xB5\xBF\xC0\xB8\xB7\xCE \xC0\xE7\xBA\xCE\xC6\xC3\xB5\xCB\xB4\xCF\xB4\xD9."), sizeof(buf));
 			SendNotice(buf);
-			strlcpy(buf, LC_TEXT("10 ڵ  Ǹ,"), sizeof(buf));
+			strlcpy(buf, LC_TEXT("10\xC3\xCA\xC8\xC4 \xC0\xDA\xB5\xBF\xC0\xB8\xB7\xCE \xC1\xA2\xBC\xD3\xC0\xCC \xC1\xBE\xB7\xE1\xB5\xC7\xB8\xE7,"), sizeof(buf));
 			SendNotice(buf);
-			strlcpy(buf, LC_TEXT("5 Ŀ  ϽǼ ֽϴ."), sizeof(buf));
+			strlcpy(buf, LC_TEXT("5\xBA\xD0 \xC8\xC4\xBF\xA1 \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC1\xA2\xBC\xD3\xC7\xCF\xBD\xC7\xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), sizeof(buf));
 			SendNotice(buf);
 		}
 
diff --git a/src/game/src/messenger_manager.cpp b/src/game/src/messenger_manager.cpp
index e30b7b5..7762566 100644
--- a/src/game/src/messenger_manager.cpp
+++ b/src/game/src/messenger_manager.cpp
@@ -119,7 +119,7 @@ void MessengerManager::RequestToAdd(LPCHARACTER ch, LPCHARACTER target)
 	
 	if (quest::CQuestManager::instance().GetPCForce(ch->GetPlayerID())->IsRunning() == true)
 	{
-	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ģ ߰    Դϴ."));
+	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC4\xA3\xB1\xB8 \xC3\xDF\xB0\xA1\xB8\xA6 \xB9\xDE\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
 	    return;
 	}
 
@@ -172,7 +172,7 @@ void MessengerManager::__AddToList(MessengerManager::keyA account, MessengerMana
 
 	if (d)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<޽> %s  ģ ߰Ͽϴ."), companion.c_str());
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> %s \xB4\xD4\xC0\xBB \xC4\xA3\xB1\xB8\xB7\xCE \xC3\xDF\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), companion.c_str());
 	}
 
 	LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(companion.c_str());
@@ -214,7 +214,7 @@ void MessengerManager::__RemoveFromList(MessengerManager::keyA account, Messenge
 	LPDESC d = ch ? ch->GetDesc() : NULL;
 
 	if (d)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<޽> %s  ޽ Ͽϴ."), companion.c_str());
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> %s \xB4\xD4\xC0\xBB \xB8\xDE\xBD\xC5\xC0\xFA\xBF\xA1\xBC\xAD \xBB\xE8\xC1\xA6\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), companion.c_str());
 }
 
 void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
diff --git a/src/game/src/mining.cpp b/src/game/src/mining.cpp
index ba92d93..d035b17 100644
--- a/src/game/src/mining.cpp
+++ b/src/game/src/mining.cpp
@@ -292,7 +292,7 @@ namespace mining
 		CItem& pick = *item;
 		Pick_MaxCurExp(pick);
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" õ ִ(%d) Ǿϴ."), Pick_GetCurExp(pick));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC \xBC\xF6\xB7\xC3\xB5\xB5\xB0\xA1 \xC3\xD6\xB4\xEB(%d)\xB0\xA1 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), Pick_GetCurExp(pick));
 	}
 
 	void PracticePick(LPCHARACTER ch, LPITEM item)
@@ -312,20 +312,20 @@ namespace mining
 
 			if (Pick_Refinable(pick))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̰ ִ õ Ͽϴ."));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("۸    ̷ ׷̵   ֽϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xB0\xA1 \xC3\xD6\xB4\xEB \xBC\xF6\xB7\xC3\xB5\xB5\xBF\xA1 \xB5\xB5\xB4\xDE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xB9\xAB\xB2\xDB\xB8\xA6 \xC5\xEB\xC7\xD8 \xB4\xD9\xC0\xBD \xB7\xB9\xBA\xA7\xC0\xC7 \xB0\xEE\xB1\xAA\xC0\xCC\xB7\xCE \xBE\xF7\xB1\xD7\xB7\xB9\xC0\xCC\xB5\xE5 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			else
 			{
 				Pick_IncCurExp(pick);	
 
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" õ Ͽϴ! (%d/%d)"),
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xC0\xC7 \xBC\xF6\xB7\xC3\xB5\xB5\xB0\xA1 \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! (%d/%d)"),
 						Pick_GetCurExp(pick), Pick_GetMaxExp(pick));
 
 				if (Pick_Refinable(pick))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̰ ִ õ Ͽϴ."));
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("۸    ̷ ׷̵   ֽϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xB0\xA1 \xC3\xD6\xB4\xEB \xBC\xF6\xB7\xC3\xB5\xB5\xBF\xA1 \xB5\xB5\xB4\xDE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xB9\xAB\xB2\xDB\xB8\xA6 \xC5\xEB\xC7\xD8 \xB4\xD9\xC0\xBD \xB7\xB9\xBA\xA7\xC0\xC7 \xB0\xEE\xB1\xAA\xC0\xCC\xB7\xCE \xBE\xF7\xB1\xD7\xB7\xB9\xC0\xCC\xB5\xE5 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 				}
 			}
 		}
@@ -355,14 +355,14 @@ namespace mining
 		// REFINE_PICK
 		if (!pick || !Pick_Check(*pick))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̸   ʾƼ Ķ  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xB8\xA6 \xB5\xE9\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBE\xC6\xBC\xAD \xC4\xB6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 		// END_OF_REFINE_PICK
 
 		if (!load)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("̻ ij  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5\xC0\xCC\xBB\xF3 \xC4\xB3\xB3\xBE \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 
@@ -371,11 +371,11 @@ namespace mining
 		if (Random::get(1, 100) <= iPct)
 		{
 			OreDrop(ch, load->GetRaceNum());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ä Ͽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xB1\xA4\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ä Ͽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xB1\xA4\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 
 		PracticePick(ch, pick);
diff --git a/src/game/src/monarch.cpp b/src/game/src/monarch.cpp
index 27a9be6..a2c79da 100644
--- a/src/game/src/monarch.cpp
+++ b/src/game/src/monarch.cpp
@@ -40,7 +40,7 @@ struct FHealMyEmpire
 
 			if (ch->IsPC() && m_bEmpire == ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ְ  ູ    äϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB0\xA1 \xB3\xBB\xB8\xB0 \xC3\xE0\xBA\xB9\xC0\xB8\xB7\xCE \xB8\xF0\xB5\xE7 \xBF\xA1\xB3\xCA\xC1\xF6\xB0\xA1 \xB0\xA1\xB5\xE6 \xC3\xA4\xBF\xF6\xC1\xFD\xB4\xCF\xB4\xD9"));
 				ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
 				ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
 				ch->EffectPacket(SE_SPUP_BLUE);
@@ -61,7 +61,7 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 	{
 		if (!ch->IsGM())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 			SPDLOG_ERROR("No Monarch pid {} ", pid);
 			return 0;
 		}
@@ -69,14 +69,14 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 
 	if (!ch->IsMCOK(CHARACTER::MI_HEAL))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d  Ŀ  ູ   ֽϴ"), ch->GetMCLTime(CHARACTER::MI_HEAL));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA \xC8\xC4\xBF\xA1 \xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), ch->GetMCLTime(CHARACTER::MI_HEAL));
 
 		return 0;
 	}
 
 	if (!IsMoneyOk(price, Empire)) 
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), GetMoney(Empire), price);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), GetMoney(Empire), price);
 		return 0;
 	}
 
@@ -93,7 +93,7 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 	ch->SetMC(CHARACTER::MI_HEAL);
 
 	if (test_server)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[TEST_ONLY]  : %d "), GetMoney(Empire) - price);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[TEST_ONLY]\xC7\xF6\xC0\xE7 \xB1\xB9\xB0\xED : %d "), GetMoney(Empire) - price);
 	return 1;
 }
 
diff --git a/src/game/src/party.cpp b/src/game/src/party.cpp
index eab00a7..902958c 100644
--- a/src/game/src/party.cpp
+++ b/src/game/src/party.cpp
@@ -323,7 +323,7 @@ void CParty::Destroy()
 				p.header = HEADER_GC_PARTY_REMOVE;
 				p.pid = rMember.pCharacter->GetPlayerID();
 				rMember.pCharacter->GetDesc()->Packet(&p, sizeof(p));
-				rMember.pCharacter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ ػ Ǿϴ."));
+				rMember.pCharacter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xB0\xA1 \xC7\xD8\xBB\xEA \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 			else
 			{
@@ -1121,7 +1121,7 @@ void CParty::SummonToLeader(DWORD pid)
 
 	if (m_memberMap.find(pid) == m_memberMap.end())
 	{
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> ȯϷ  ã  ϴ."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xD2\xC8\xAF\xC7\xCF\xB7\xC1\xB4\xC2 \xB4\xEB\xBB\xF3\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1129,13 +1129,13 @@ void CParty::SummonToLeader(DWORD pid)
 
 	if (!ch)
 	{
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> ȯϷ  ã  ϴ."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xD2\xC8\xAF\xC7\xCF\xB7\xC1\xB4\xC2 \xB4\xEB\xBB\xF3\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
 	if (!ch->CanSummon(m_iLeadership))
 	{
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ>  ȯ  ϴ."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xEB\xBB\xF3\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -1152,7 +1152,7 @@ void CParty::SummonToLeader(DWORD pid)
 	}
 
 	if (n == 0)
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ƽ> Ƽ  ġ ȯ  ϴ."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xBB \xC7\xF6\xC0\xE7 \xC0\xA7\xC4\xA1\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 	else
 	{
 		int i = Random::get(0, n - 1);
@@ -1371,7 +1371,7 @@ void CParty::Update()
 			continue;
 
 		if (bLongTimeExpBonusChanged && ch->GetDesc())
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ƽ   ݺ ߰ ġ ʽ ޽ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC4\xC6\xBC\xC0\xC7 \xC7\xF9\xB5\xBF\xB7\xC2\xC0\xCC \xB3\xF4\xBE\xC6\xC1\xAE \xC1\xF6\xB1\xDD\xBA\xCE\xC5\xCD \xC3\xDF\xB0\xA1 \xB0\xE6\xC7\xE8\xC4\xA1 \xBA\xB8\xB3\xCA\xBD\xBA\xB8\xA6 \xB9\xDE\xBD\xC0\xB4\xCF\xB4\xD9."));
 
 		bool bNear = it->second.bNear;
 
diff --git a/src/game/src/polymorph.cpp b/src/game/src/polymorph.cpp
index 48448b3..b600af5 100644
--- a/src/game/src/polymorph.cpp
+++ b/src/game/src/polymorph.cpp
@@ -69,14 +69,14 @@ bool CPolymorphUtils::PolymorphCharacter(LPCHARACTER pChar, LPITEM pItem, const
 
 	if (iPolyPercent <= 0)
 	{
-		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а  Ͽϴ"));
+		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xBF\xA1 \xBD\xC7\xC6\xD0 \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
 		return false;
 	}
 	else
 	{
 		if (Random::get(1, 100) > iPolyPercent)
 		{
-			pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а  Ͽϴ"));
+			pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xBF\xA1 \xBD\xC7\xC6\xD0 \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
 			return false;
 		}
 	}
@@ -116,7 +116,7 @@ bool CPolymorphUtils::UpdateBookPracticeGrade(LPCHARACTER pChar, LPITEM pItem)
 	if (pItem->GetSocket(1) > 0)
 		pItem->SetSocket(1, pItem->GetSocket(1) - 1);
 	else
-		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("а  úϴ. ż ãư."));
+		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xBC\xAD \xBC\xF6\xB7\xC3\xC0\xBB \xB8\xB6\xC3\xBA\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xC5\xBC\xB1\xBF\xA1\xB0\xD4 \xC3\xA3\xBE\xC6\xB0\xA1\xBC\xBC\xBF\xE4."));
 
 	return true;
 }
diff --git a/src/game/src/priv_manager.cpp b/src/game/src/priv_manager.cpp
index 8a52c2c..6662cc6 100644
--- a/src/game/src/priv_manager.cpp
+++ b/src/game/src/priv_manager.cpp
@@ -105,13 +105,13 @@ void CPrivManager::GiveGuildPriv(DWORD guild_id, BYTE type, int value, BYTE bLog
 		if (value)
 		{
 			char buf[100];
-			snprintf(buf, sizeof(buf), LC_TEXT("%s  %s %d%% ߽ϴ!"), g->GetName(), GetPrivName(type), value);
+			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xC0\xC7 %s\xC0\xCC %d%% \xC1\xF5\xB0\xA1\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9!"), g->GetName(), GetPrivName(type), value);
 			SendNotice(buf);
 		}
 		else
 		{
 			char buf[100];
-			snprintf(buf, sizeof(buf), LC_TEXT("%s  %s  ƿԽϴ."), g->GetName(), GetPrivName(type));
+			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xC0\xC7 %s\xC0\xCC \xC1\xA4\xBB\xF3\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), g->GetName(), GetPrivName(type));
 			SendNotice(buf);
 		}
 
@@ -160,7 +160,7 @@ void CPrivManager::GiveEmpirePriv(BYTE empire, BYTE type, int value, BYTE bLog,
 	if (value)
 	{
 		char buf[100];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s %s %d%% ߽ϴ!"), GetEmpireName(empire), GetPrivName(type), value);
+		snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xC7 %s\xC0\xCC %d%% \xC1\xF5\xB0\xA1\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9!"), GetEmpireName(empire), GetPrivName(type), value);
 
 		if (empire)
 			SendNotice(buf);
@@ -170,7 +170,7 @@ void CPrivManager::GiveEmpirePriv(BYTE empire, BYTE type, int value, BYTE bLog,
 	else
 	{
 		char buf[100];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s %s  ƿԽϴ."), GetEmpireName(empire), GetPrivName(type));
+		snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xC7 %s\xC0\xCC \xC1\xA4\xBB\xF3\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), GetEmpireName(empire), GetPrivName(type));
 
 		if (empire)
 			SendNotice(buf);
diff --git a/src/game/src/pvp.cpp b/src/game/src/pvp.cpp
index 364c28c..0c30046 100644
--- a/src/game/src/pvp.cpp
+++ b/src/game/src/pvp.cpp
@@ -183,8 +183,8 @@ void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 		//    ٷ ο!
 		if (pkPVP->Agree(pkChr->GetPlayerID()))
 		{
-			pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s԰  !"), pkChr->GetName());
-			pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s԰  !"), pkVictim->GetName());
+			pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xB0\xFA\xC0\xC7 \xB4\xEB\xB0\xE1 \xBD\xC3\xC0\xDB!"), pkChr->GetName());
+			pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xB0\xFA\xC0\xC7 \xB4\xEB\xB0\xE1 \xBD\xC3\xC0\xDB!"), pkVictim->GetName());
 		}
 		return;
 	}
@@ -202,10 +202,10 @@ void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 	pkPVP->Packet();
 
 	char msg[CHAT_MAX_LEN + 1];
-	snprintf(msg, sizeof(msg), LC_TEXT("%s û ߽ϴ. ³Ϸ ᵿǸ ϼ."), pkChr->GetName());
+	snprintf(msg, sizeof(msg), LC_TEXT("%s\xB4\xD4\xC0\xCC \xB4\xEB\xB0\xE1\xBD\xC5\xC3\xBB\xC0\xBB \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xC2\xB3\xAB\xC7\xCF\xB7\xC1\xB8\xE9 \xB4\xEB\xB0\xE1\xB5\xBF\xC0\xC7\xB8\xA6 \xC7\xCF\xBC\xBC\xBF\xE4."), pkChr->GetName());
 
 	pkVictim->ChatPacket(CHAT_TYPE_INFO, msg);
-	pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s û ߽ϴ."), pkVictim->GetName());
+	pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xBF\xA1\xB0\xD4 \xB4\xEB\xB0\xE1\xBD\xC5\xC3\xBB\xC0\xBB \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), pkVictim->GetName());
 
 	// NOTIFY_PVP_MESSAGE
 	LPDESC pkVictimDesc = pkVictim->GetDesc();
diff --git a/src/game/src/questlua_global.cpp b/src/game/src/questlua_global.cpp
index 50daeba..a67c558 100644
--- a/src/game/src/questlua_global.cpp
+++ b/src/game/src/questlua_global.cpp
@@ -938,7 +938,7 @@ namespace quest
 
 		event_create(warp_all_to_village_event, info, PASSES_PER_SEC(iSec));
 
-		SendNoticeMap(LC_TEXT("   ̵˴ϴ."), iMapIndex, false);
+		SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3\xC8\xC4 \xB8\xF0\xB5\xCE \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xB5\xCB\xB4\xCF\xB4\xD9."), iMapIndex, false);
 
 		return 0;
 	}
diff --git a/src/game/src/questlua_monarch.cpp b/src/game/src/questlua_monarch.cpp
index 53142fe..d806b12 100644
--- a/src/game/src/questlua_monarch.cpp
+++ b/src/game/src/questlua_monarch.cpp
@@ -137,7 +137,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -151,10 +151,10 @@ namespace quest
 		{
 			char szNotice[256];
 			snprintf(szNotice, sizeof(szNotice),
-					LC_TEXT(" ູ  %s  HP,SP  äϴ."), EMPIRE_NAME(ch->GetEmpire()));
+					LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 HP,SP\xB0\xA1 \xB8\xF0\xB5\xCE \xC3\xA4\xBF\xF6\xC1\xFD\xB4\xCF\xB4\xD9."), EMPIRE_NAME(ch->GetEmpire()));
 			SendNoticeMap(szNotice, ch->GetMapIndex(), false);
 
-			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ູ Ͽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 		}
 
 		return 1;
@@ -173,7 +173,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -184,14 +184,14 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, money_need);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, money_need);
 			return 0;
 		}
 
 		if (!CMonarch::instance().CheckPowerUpCT(ch->GetEmpire()))
 		{
 			int	next_sec = CMonarch::instance().GetPowerUpCT(ch->GetEmpire()) / passes_per_sec;
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ÿ   %d  밡"), next_sec);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF0\xC5\xB8\xC0\xD3 \xC0\xFB\xBF\xEB\xC1\xDF  %d \xC8\xC4 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9"), next_sec);
 			return 0;
 		}
 
@@ -210,7 +210,7 @@ namespace quest
 		CMonarch::instance().SendtoDBDecMoney(5000000, ch->GetEmpire(), ch);
 		
 		char szNotice[256];
-		snprintf(szNotice, sizeof(szNotice), LC_TEXT("    %s  3а 10 %%  ݷ  ˴ϴ"), EMPIRE_NAME(ch->GetEmpire()));
+		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xBB\xE7\xC0\xDA\xC8\xC4 \xBF\xB5\xC7\xE2\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 3\xBA\xD0\xB0\xA3 10 %% \xC0\xC7 \xB0\xF8\xB0\xDD\xB7\xC2\xC0\xCC  \xC1\xF5\xB0\xA1\xB5\xCB\xB4\xCF\xB4\xD9"), EMPIRE_NAME(ch->GetEmpire()));
 		
 		SendNoticeMap(szNotice, ch->GetMapIndex(), false);
 
@@ -231,7 +231,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -241,14 +241,14 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, money_need);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, money_need);
 			return 0;
 		}
 	
 		if (!CMonarch::instance().CheckDefenseUpCT(ch->GetEmpire()))
 		{
 			int	next_sec = CMonarch::instance().GetDefenseUpCT(ch->GetEmpire()) / passes_per_sec;
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ÿ   %d  밡"), next_sec);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF0\xC5\xB8\xC0\xD3 \xC0\xFB\xBF\xEB\xC1\xDF  %d \xC8\xC4 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9"), next_sec);
 			return 0;
 		}	
 		
@@ -267,7 +267,7 @@ namespace quest
 		CMonarch::instance().SendtoDBDecMoney(5000000, ch->GetEmpire(), ch);
 		
 		char szNotice[256];
-		snprintf(szNotice, sizeof(szNotice), LC_TEXT(" ݰ   %s  3а 10 %%    ˴ϴ"), EMPIRE_NAME(ch->GetEmpire()));
+		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xB1\xDD\xB0\xAD\xB1\xC7 \xBF\xB5\xC7\xE2\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 3\xBA\xD0\xB0\xA3 10 %% \xC0\xC7 \xB9\xE6\xBE\xEE\xB7\xC2\xC0\xCC  \xC1\xF5\xB0\xA1\xB5\xCB\xB4\xCF\xB4\xD9"), EMPIRE_NAME(ch->GetEmpire()));
 
 		SendNoticeMap(szNotice, ch->GetMapIndex(), false);
 
@@ -311,7 +311,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -332,7 +332,7 @@ namespace quest
 				if (!CMonarch::instance().IsMoneyOk(CASTLE_FROG_PRICE, ch->GetEmpire()))
 				{
 					int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, CASTLE_FROG_PRICE);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, CASTLE_FROG_PRICE);
 					return 0;
 				}
 
@@ -399,7 +399,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -407,7 +407,7 @@ namespace quest
 
 		if (false==castle_is_my_castle(ch->GetEmpire(), ch->GetMapIndex()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ִ Դϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 
@@ -421,7 +421,7 @@ namespace quest
 			if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 			{
 				int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, money_need);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, money_need);
 				return 0;
 			}
 			guard_leader = castle_spawn_guard(ch->GetEmpire(), group_vnum, region_index);
@@ -448,7 +448,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT(" ڰ   ʽϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -457,14 +457,14 @@ namespace quest
 		if (castle_frog_to_empire_money(ch))
 		{
 			int empire_money = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : Ȳݵβ  ȯǾϴ."));
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST :   : %d"), empire_money);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : \xC8\xB2\xB1\xDD\xB5\xCE\xB2\xA8\xBA\xF1\xB0\xA1 \xB1\xB9\xB0\xED\xB7\xCE \xC8\xAF\xBF\xF8\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : \xC7\xF6\xC0\xE7 \xB1\xB9\xB0\xED : %d"), empire_money);
 			castle_save();
 			return 1;
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : Ȳݵβ  ȯ  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : \xC8\xB2\xB1\xDD\xB5\xCE\xB2\xA8\xBA\xF1\xB8\xA6 \xB1\xB9\xB0\xED\xB7\xCE \xC8\xAF\xBF\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 	}
@@ -487,14 +487,14 @@ namespace quest
 		
 		if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 			return 0;
 		}
 
 		// Ÿ ˻
 		if (!ch->IsMCOK(CHARACTER::MI_WARP))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ʰ Ÿ Դϴ."), ch->GetMCLTime(CHARACTER::MI_WARP));	
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_WARP));	
 			return 0;
 		}
 
@@ -506,7 +506,7 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, WarpPrice);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
 			return 0;	
 		}
 
@@ -522,18 +522,18 @@ namespace quest
 			{
 				if (pkCCI->bEmpire != ch->GetEmpire())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ÿ Դ ̵Ҽ ϴ"));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 					return 0;
 				}
 				if (pkCCI->bChannel != g_bChannel)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ش  %d äο ֽϴ. ( ä %d)"), pkCCI->bChannel, g_bChannel);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC0\xAF\xC0\xFA\xB4\xC2 %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE %d)"), pkCCI->bChannel, g_bChannel);
 					return 0;
 				}
 	
 				if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));	
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	
 					return 0;
 				}
 
@@ -544,7 +544,7 @@ namespace quest
 				else
 				{
 					//ch->ChatPacket(CHAT_TYPE_INFO, "You warp to (%d, %d)", pos.x, pos.y);
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Է ̵մϴ"), name.c_str());
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), name.c_str());
 					ch->WarpSet(pos.x, pos.y);
 
 					//  谨	
@@ -566,13 +566,13 @@ namespace quest
 		{
 			if (tch->GetEmpire() != ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ÿ Դ ̵Ҽ ϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 				return 0;
 			}
 
 			if (!IsMonarchWarpZone(tch->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return 0;
 			}
 
@@ -580,7 +580,7 @@ namespace quest
 			y = tch->GetY();
 		}
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Է ̵մϴ"), name.c_str());
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), name.c_str());
 		ch->WarpSet(x,y);
 		ch->Stop();
 
@@ -604,22 +604,22 @@ namespace quest
 
 		if (CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))	
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("  "));
+			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("\xB3\xAA\xC0\xC7 \xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
 		
 			for (int n = 1; n < 4; ++n)
 			{
 				if (n == ch->GetEmpire())
-					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s] : %s  ݾ %lld "), EMPIRE_NAME(n), p->name[n], p->money[n]);
+					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  \xBA\xB8\xC0\xAF\xB1\xDD\xBE\xD7 %lld "), EMPIRE_NAME(n), p->name[n], p->money[n]);
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s] : %s  "), EMPIRE_NAME(n), p->name[n]);
+					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
 			}
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT(" "));
+			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("\xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
 
 			for (int n = 1; n < 4; ++n)
-				ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s] : %s  "), EMPIRE_NAME(n), p->name[n]);
+				ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
 		}
 
 		return 0;
@@ -642,14 +642,14 @@ namespace quest
 
 		if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 			return 0;
 		}
 
 		//  Ÿ ˻
 		if (!ch->IsMCOK(CHARACTER::MI_TRANSFER))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ʰ Ÿ Դϴ."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
 			return 0;
 		}
 
@@ -660,7 +660,7 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, WarpPrice);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
 			return 0;	
 		}
 
@@ -674,24 +674,24 @@ namespace quest
 			{
 				if (pkCCI->bEmpire != ch->GetEmpire())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ   ȯ  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return 0;
 				}
 
 				if (pkCCI->bChannel != g_bChannel)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  %d äο   Դϴ. ( ä: %d)"), name.c_str(), pkCCI->bChannel, g_bChannel);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC1\xA2\xBC\xD3 \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE: %d)"), name.c_str(), pkCCI->bChannel, g_bChannel);
 					return 0;
 				}
 
 				if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));	
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	
 					return 0;
 				}
 				if (!IsMonarchWarpZone(ch->GetMapIndex()))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ȯ  ϴ."));
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return 0;
 				}
 
@@ -703,7 +703,7 @@ namespace quest
 				pgg.lY = ch->GetY();
 
 				P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGTransfer));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ȯϿϴ."), name.c_str());
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), name.c_str());
 
 				//   谨
 				CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
@@ -713,7 +713,7 @@ namespace quest
 			}
 			else
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ԷϽ ̸  ڰ ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xD4\xB7\xC2\xC7\xCF\xBD\xC5 \xC0\xCC\xB8\xA7\xC0\xBB \xB0\xA1\xC1\xF8 \xBB\xE7\xBF\xEB\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
 
 			return 0;
@@ -721,24 +721,24 @@ namespace quest
 
 		if (ch == tch)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڽ ȯ  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 
 		if (tch->GetEmpire() != ch->GetEmpire())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ   ȯ  ϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 
 		if (!IsMonarchWarpZone(tch->GetMapIndex()))
 		{
-			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 		if (!IsMonarchWarpZone(ch->GetMapIndex()))
 		{
-			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ȯ  ϴ."));
+			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 			return 0;
 		}
 		tch->WarpSet(ch->GetX(), ch->GetY(), ch->GetMapIndex());
@@ -762,7 +762,7 @@ namespace quest
 		
 		if (ch->IsMonarch() == false)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 			return 0;
 		}
 
@@ -826,13 +826,13 @@ namespace quest
 
 		if (CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()) == false)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ָ   Դϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 			return 0;
 		}
 
 		if (ch->IsMCOK(CHARACTER::MI_TRANSFER) == false)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ʰ Ÿ Դϴ."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));
 			return 0;
 		}
 		
@@ -841,7 +841,7 @@ namespace quest
 		if (CMonarch::instance().IsMoneyOk(ciTransferCost, ch->GetEmpire()) == false)
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  մϴ.  : %u ʿݾ : %u"), NationMoney, ciTransferCost);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, ciTransferCost);
 			return 0;
 		}
 
@@ -857,25 +857,25 @@ namespace quest
 			{
 				if (pCCI->bEmpire != ch->GetEmpire())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ   ȯ  ϴ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return 0;
 				}
 
 				if (pCCI->bChannel != g_bChannel)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  %d äο Դϴ. ( ä: %d)"),
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC1\xA2\xBC\xD3\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE: %d)"),
 						   strTargetName.c_str(), pCCI->bChannel, g_bChannel);
 					return 0;
 				}
 
 				if (!IsMonarchWarpZone(pCCI->lMapIndex))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return 0;
 				}
 				if (!IsMonarchWarpZone(ch->GetMapIndex()))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ȯ  ϴ."));
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 					return 0;
 				}
 
@@ -886,14 +886,14 @@ namespace quest
 				packet.y = ch->GetY();
 
 				P2P_MANAGER::instance().Send(&packet, sizeof(TPacketMonarchGGTransfer));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȯ û ½ϴ"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC8\xAF \xBF\xE4\xC3\xBB\xC0\xBB \xBA\xB8\xB3\xC2\xBD\xC0\xB4\xCF\xB4\xD9"));
 
 				CMonarch::instance().SendtoDBDecMoney(ciTransferCost, ch->GetEmpire(), ch);
 				ch->SetMC(CHARACTER::MI_TRANSFER);
 			}
 			else
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ԷϽ ̸  ڰ ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xD4\xB7\xC2\xC7\xCF\xBD\xC5 \xC0\xCC\xB8\xA7\xC0\xBB \xB0\xA1\xC1\xF8 \xBB\xE7\xBF\xEB\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return 0;
 			}
 		}
@@ -901,30 +901,30 @@ namespace quest
 		{
 			if (pTargetChar == ch)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڽ ȯ  ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return 0;
 			}
 
 			if (pTargetChar->GetEmpire() != ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ   ȯ  ϴ."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return 0;
 			}
 
 			if (DISTANCE_APPROX(pTargetChar->GetX() - ch->GetX(), pTargetChar->GetY() - ch->GetY()) <= 5000)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s  ó ֽϴ"), pTargetChar->GetName());
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA \xB1\xD9\xC3\xB3\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), pTargetChar->GetName());
 				return 0;
 			}
 
 			if (!IsMonarchWarpZone(pTargetChar->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ̵  ϴ."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return 0;
 			}
 			if (!IsMonarchWarpZone(ch->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("ش  ȯ  ϴ."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 				return 0;
 			}
 
@@ -937,7 +937,7 @@ namespace quest
 
 			event_create(monarch_transfer2_event, info, 1);
 
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ȯ û ½ϴ"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC8\xAF \xBF\xE4\xC3\xBB\xC0\xBB \xBA\xB8\xB3\xC2\xBD\xC0\xB4\xCF\xB4\xD9"));
 
 			CMonarch::instance().SendtoDBDecMoney(ciTransferCost, ch->GetEmpire(), ch);
 			ch->SetMC(CHARACTER::MI_TRANSFER);
diff --git a/src/game/src/questlua_pc.cpp b/src/game/src/questlua_pc.cpp
index d7c2f64..a413b57 100644
--- a/src/game/src/questlua_pc.cpp
+++ b/src/game/src/questlua_pc.cpp
@@ -227,7 +227,7 @@ namespace quest
 		int iPulse = thecore_pulse();	
 		if ( pkChr->GetExchange() || pkChr->GetMyShop() || pkChr->GetShopOwner() || pkChr->IsOpenSafebox() )
 		{
-			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("ŷâ,â   ¿ ٸ ̵Ҽ ϴ" ));
+			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB4\xD9\xB8\xA5\xB0\xF7\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9" ));
 
 			return;
 		}
@@ -235,7 +235,7 @@ namespace quest
 		//ȯ  ðüũ
 		if ( iPulse - pkChr->GetExchangeTime()  < PASSES_PER_SEC(60) )
 		{
-			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("ŷ  1 ̳ ٸ ̵   ϴ." ) );
+			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xB8\xA5\xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
 			return;
 		}
 		//END_PREVENT_PORTAL_AFTER_EXCHANGE
@@ -243,7 +243,7 @@ namespace quest
 		{
 			if ( iPulse - pkChr->GetMyShopTime() < PASSES_PER_SEC(60) )
 			{
-				pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("ŷ  1 ̳ ٸ ̵   ϴ." ) );
+				pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xB8\xA5\xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
 				return;
 			}
 
@@ -400,12 +400,12 @@ namespace quest
 			{
 				if (dwVnums[i] == 1)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %d  ȹ߽ϴ."), dwCounts[i]);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 				}
 				else if (dwVnums[i] == 2)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("  ź  ɴϴ."));
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d ġ ȹ߽ϴ."), dwCounts[i]);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xB9\xAB\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
 				}
 			}
 		}
@@ -1864,16 +1864,16 @@ namespace quest
 				DWORD y;
 			} ws[TOWN_NUM] = 
 			{
-				{"",	4743,	9548},
-				{"",		3235,	9086},
-				{"ھ",		3531,	8829},
-				{"",	638,	1664},
-				{"·",		1745,	1909},
-				{"",		1455,	2400},
-				{"",	9599,	2692},
-				{"",		8036,	2984},
-				{"ڶ",		8639,	2460},
-				{"ѻ",		4350,	2143},
+				{"\xBF\xB5\xBE\xC8\xC0\xBE\xBC\xBA",	4743,	9548},
+				{"\xC0\xD3\xC1\xF6\xB0\xEE",		3235,	9086},
+				{"\xC0\xDA\xBE\xE7\xC7\xF6",		3531,	8829},
+				{"\xC1\xB6\xBE\xC8\xC0\xBE\xBC\xBA",	638,	1664},
+				{"\xBD\xC2\xB7\xE6\xB0\xEE",		1745,	1909},
+				{"\xBA\xB9\xC1\xA4\xC7\xF6",		1455,	2400},
+				{"\xC6\xF2\xB9\xAB\xC0\xBE\xBC\xBA",	9599,	2692},
+				{"\xB9\xE6\xBB\xEA\xB0\xEE",		8036,	2984},
+				{"\xB9\xDA\xB6\xF3\xC7\xF6",		8639,	2460},
+				{"\xBC\xAD\xC7\xD1\xBB\xEA",		4350,	2143},
 			};
 			int idx  = (int)lua_tonumber(L, 1);
 
diff --git a/src/game/src/questmanager.cpp b/src/game/src/questmanager.cpp
index e9ceb2f..0cf51c7 100644
--- a/src/game/src/questmanager.cpp
+++ b/src/game/src/questmanager.cpp
@@ -577,7 +577,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 
 				if (ch)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 
 				return;
 			}
@@ -602,7 +602,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 				}
 				return;
 			}
@@ -627,7 +627,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 				}
 				return false;
 			}
@@ -654,7 +654,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 				}
 				return false;
 			}
@@ -696,7 +696,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 				}
 				return false;
 			}
@@ -750,7 +750,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 
 				if (ch)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 
 				return false;
 			}
@@ -1753,7 +1753,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ʈ εϴ Դϴ. ø ٷ ֽʽÿ."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
 				}
 				return false;
 			}
diff --git a/src/game/src/questnpc.cpp b/src/game/src/questnpc.cpp
index 864912f..6e5d20b 100644
--- a/src/game/src/questnpc.cpp
+++ b/src/game/src/questnpc.cpp
@@ -917,7 +917,7 @@ namespace quest
 			{
 				os << ",\"" << ScriptToString(AvailScript[i]->arg.c_str()) << '"';
 			}
-			os << ", '"<ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<Ʈ>      ־ ٽ  ʽϴ."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC4\xF9\xBD\xBA\xC6\xAE> \xC0\xCC\xC0\xFC\xBF\xA1 \xB0\xB0\xC0\xBA \xBA\xB8\xBB\xF3\xC0\xBB \xB9\xDE\xC0\xBA \xC0\xFB\xC0\xCC \xC0\xD6\xBE\xEE \xB4\xD9\xBD\xC3 \xB9\xDE\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
 			m_bIsGivenReward = false;
 		}
 
diff --git a/src/game/src/shop.cpp b/src/game/src/shop.cpp
index 1224556..5821224 100644
--- a/src/game/src/shop.cpp
+++ b/src/game/src/shop.cpp
@@ -378,7 +378,7 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos)
 		m_pkPC->PointChange(POINT_GOLD, dwPrice, false);
 
 		if (iVal > 0)
-			m_pkPC->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ǹűݾ %d %%   Ե˴ϴ"), iVal);
+			m_pkPC->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC7\xB8\xC5\xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xBC\xBC\xB1\xDD\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9"), iVal);
 
 		CMonarch::instance().SendtoDBAddMoney(dwTax, m_pkPC->GetEmpire(), m_pkPC);
 	}
diff --git a/src/game/src/shop_manager.cpp b/src/game/src/shop_manager.cpp
index e8cdace..20a1e10 100644
--- a/src/game/src/shop_manager.cpp
+++ b/src/game/src/shop_manager.cpp
@@ -112,7 +112,7 @@ bool CShopManager::StartShopping(LPCHARACTER pkChr, LPCHARACTER pkChrShopKeeper,
 	//PREVENT_TRADE_WINDOW
 	if (pkChr->IsOpenSafebox() || pkChr->GetExchange() || pkChr->GetMyShop() || pkChr->IsCubeOpen())
 	{
-		pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ٸ ŷâ ¿ ŷ Ҽ  ϴ."));
+		pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC3\xA2\xC0\xCC \xBF\xAD\xB8\xB0\xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBB\xF3\xC1\xA1\xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 	//END_PREVENT_TRADE_WINDOW
@@ -214,7 +214,7 @@ void CShopManager::Buy(LPCHARACTER ch, BYTE pos)
 
 	if (DISTANCE_APPROX(ch->GetX() - ch->GetShopOwner()->GetX(), ch->GetY() - ch->GetShopOwner()->GetY()) > 2000)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ÿ ʹ ־    ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC1\xA1\xB0\xFA\xC0\xC7 \xB0\xC5\xB8\xAE\xB0\xA1 \xB3\xCA\xB9\xAB \xB8\xD6\xBE\xEE \xB9\xB0\xB0\xC7\xC0\xBB \xBB\xEC \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -271,7 +271,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 
 	if (DISTANCE_APPROX(ch->GetX()-ch->GetShopOwner()->GetX(), ch->GetY()-ch->GetShopOwner()->GetY())>2000)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" Ÿ ʹ ־    ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC1\xA1\xB0\xFA\xC0\xC7 \xB0\xC5\xB8\xAE\xB0\xA1 \xB3\xCA\xB9\xAB \xB8\xD6\xBE\xEE \xB9\xB0\xB0\xC7\xC0\xBB \xC6\xC8 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 	
@@ -282,7 +282,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 
 	if (item->IsEquipped() == true)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   Ǹ  ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC2\xF8\xBF\xEB \xC1\xDF\xC0\xCE \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xC6\xC7\xB8\xC5\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -335,7 +335,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 	if (GOLD_MAX <= nTotalMoney)
 	{
 		SPDLOG_ERROR("[OVERFLOW_GOLD] id {} name {} gold {}", ch->GetPlayerID(), ch->GetName(), ch->GetGold());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20 ʰϿ ǰ ȼ ϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20\xBE\xEF\xB3\xC9\xC0\xCC \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xA9 \xB9\xB0\xC7\xB0\xC0\xBB \xC6\xC8\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
@@ -343,7 +343,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 	SPDLOG_DEBUG("SHOP: SELL: {} item name: {}(x{}):{} price: {}", ch->GetName(), item->GetName(), bCount, item->GetID(), dwPrice);
 
 	if (iVal > 0)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ǹűݾ %d %%   Ե˴ϴ"), iVal);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC7\xB8\xC5\xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xBC\xBC\xB1\xDD\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9"), iVal);
 
 	DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), dwPrice);
 
diff --git a/src/game/src/start_position.cpp b/src/game/src/start_position.cpp
index c191102..6d6dcae 100644
--- a/src/game/src/start_position.cpp
+++ b/src/game/src/start_position.cpp
@@ -5,14 +5,14 @@
 char g_nation_name[4][32] =
 {
 	"",
-	"ż",
-	"õ",
-	"뱹",
+	"\xBD\xC5\xBC\xF6\xB1\xB9",
+	"\xC3\xB5\xC1\xB6\xB1\xB9",
+	"\xC1\xF8\xB3\xEB\xB1\xB9",
 };
 
-//	LC_TEXT("ż")
-//	LC_TEXT("õ")
-//	LC_TEXT("뱹")
+//	LC_TEXT("\xBD\xC5\xBC\xF6\xB1\xB9")
+//	LC_TEXT("\xC3\xB5\xC1\xB6\xB1\xB9")
+//	LC_TEXT("\xC1\xF8\xB3\xEB\xB1\xB9")
 
 int g_start_map[4] =
 {
diff --git a/src/game/src/threeway_war.cpp b/src/game/src/threeway_war.cpp
index 611d8d7..e75a211 100644
--- a/src/game/src/threeway_war.cpp
+++ b/src/game/src/threeway_war.cpp
@@ -340,7 +340,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 	{
 		char szBuf[64 + 1];
 
-		snprintf(szBuf, sizeof(szBuf), LC_TEXT(" ھ ż:%d õ:%d 뱹:%d"),
+		snprintf(szBuf, sizeof(szBuf), LC_TEXT("\xC7\xF6\xC0\xE7 \xBD\xBA\xC4\xDA\xBE\xEE \xBD\xC5\xBC\xF6\xB1\xB9:%d \xC3\xB5\xC1\xB6\xB1\xB9:%d \xC1\xF8\xB3\xEB\xB1\xB9:%d"),
 				GetKillScore(1), GetKillScore(2), GetKillScore(3));
 
 		SendNoticeMap(szBuf, GetSungziMapIndex(), false);
@@ -406,9 +406,9 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		//----------------------
 		const std::string Nation(EMPIRE_NAME(bLoseEmpire));
 		const std::string Script(
-				LC_TEXT(" :  ") +
+				LC_TEXT("\xBC\xBA\xC1\xF6\xC0\xC7 \xB8\xB6\xBF\xD5: \xB3\xCA\xC8\xF1 ") +
 				Nation +
-				LC_TEXT("༮ ̰   ڰ Ҿ.   Ŷ~~[ENTER][ENTER] 10 Ŀ   ̵ϰ ˴ϴ. ") +
+				LC_TEXT("\xB3\xE0\xBC\xAE\xB5\xE9\xC0\xBA \xC0\xCC\xB0\xF7 \xBC\xBA\xC1\xF6\xBF\xA1 \xC0\xD6\xC0\xBB \xC0\xDA\xB0\xDD\xC0\xBB \xC0\xD2\xBE\xFA\xB4\xD9. \xB8\xF0\xB5\xCE \xBC\xBA\xC1\xF6\xBF\xA1\xBC\xAD \xB9\xB0\xB7\xAF\xB3\xAA\xB0\xC5\xB6\xF3~~[ENTER][ENTER] 10\xC3\xCA \xC8\xC4\xBF\xA1 \xB8\xF0\xB5\xCE \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xCF\xB0\xD4 \xB5\xCB\xB4\xCF\xB4\xD9. ") +
 				"[ENTER][DONE]"
 				);
 
@@ -418,7 +418,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		//  ѹ .
 		//----------------------
 		char szNotice[512+1];
-		snprintf(szNotice, sizeof(szNotice), LC_TEXT("Ÿ  %s   Ż Ͽϴ"), Nation.c_str());
+		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xBB\xEF\xB0\xC5\xB8\xAE \xC0\xFC\xC5\xF5\xBF\xA1\xBC\xAD %s \xB1\xB9\xB0\xA1\xB0\xA1 \xB0\xA1\xC0\xE5\xB8\xD5\xC0\xFA \xC5\xBB\xB6\xF4\xC0\xBB \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"), Nation.c_str());
 		BroadcastNotice(szNotice);
 
 		snprintf(szNotice, sizeof(szNotice), "First Step: %s exclusion", Nation.c_str());
@@ -496,7 +496,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		//------------------------------
 		{
 			char szBuf[64 + 1];
-			snprintf(szBuf, sizeof(szBuf), LC_TEXT(" ھ ż:%d õ:%d 뱹:%d"),
+			snprintf(szBuf, sizeof(szBuf), LC_TEXT("\xC7\xF6\xC0\xE7 \xBD\xBA\xC4\xDA\xBE\xEE \xBD\xC5\xBC\xF6\xB1\xB9:%d \xC3\xB5\xC1\xB6\xB1\xB9:%d \xC1\xF8\xB3\xEB\xB1\xB9:%d"),
 					GetKillScore(1), GetKillScore(2), GetKillScore(3));
 
 			SendNoticeMap(szBuf, GetSungziMapIndex(), false);
@@ -510,7 +510,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 			const std::string EmpireName(EMPIRE_NAME(nVictoryEmpireIndex));
 			const std::string Script(
 					EmpireName +
-					LC_TEXT(".   ȣڸ  ȴٸ    ȴ.[ENTER][ENTER] ") +
+					LC_TEXT(". \xB3\xCA\xC8\xF1\xB0\xA1 \xBC\xBA\xC1\xF6\xC0\xC7 \xBC\xF6\xC8\xA3\xC0\xDA\xB8\xA6 \xC0\xE2\xB0\xD4 \xB5\xC8\xB4\xD9\xB8\xE9 \xB3\xCA\xC8\xF1\xB4\xC2 \xBC\xBA\xC1\xF6\xC0\xC7 \xC1\xD6\xC0\xCE\xC0\xCC \xB5\xC8\xB4\xD9.[ENTER][ENTER] ") +
 					"[ENTER][DONE]");
 
 			struct packet_script pack_script;
diff --git a/src/game/src/war_map.cpp b/src/game/src/war_map.cpp
index 87cdb14..a1b10b8 100644
--- a/src/game/src/war_map.cpp
+++ b/src/game/src/war_map.cpp
@@ -382,8 +382,8 @@ void CWarMap::IncMember(LPCHARACTER ch)
 		++m_iObserverCount; 
 		SPDLOG_DEBUG("WarMap +o {}", m_iObserverCount);
 		ch->SetObserverMode(true);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("   ϼ̽ϴ."));
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ڽ Ͻø    ִ < > ư ɴϴ."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC0\xFC \xB8\xF0\xB5\xE5\xB7\xCE \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xC2\xFC\xB0\xA1\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xB1\xC5\xC3\xC7\xCF\xBD\xC3\xB8\xE9 \xB9\xDB\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA5 \xBC\xF6 \xC0\xD6\xB4\xC2 <\xB0\xFC\xB6\xF7 \xC1\xBE\xB7\xE1> \xB9\xF6\xC6\xB0\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
 	}
 
 	UpdateUserCount();
@@ -480,8 +480,8 @@ void CWarMap::CheckWarEnd()
 		if (m_pkTimeoutEvent)
 			return;
 
-		Notice(LC_TEXT("    ƹ ϴ."));
-		Notice(LC_TEXT("1 ̳ ƹ    ڵ ˴ϴ."));
+		Notice(LC_TEXT("\xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xC2\xFC\xB0\xA1\xC7\xD1 \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xCC \xBE\xC6\xB9\xAB\xB5\xB5 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		Notice(LC_TEXT("1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1 \xBE\xC6\xB9\xAB\xB5\xB5 \xC1\xA2\xBC\xD3\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xB8\xB8\xE9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC0\xDA\xB5\xBF \xC1\xBE\xB7\xE1\xB5\xCB\xB4\xCF\xB4\xD9."));
 
 		SPDLOG_DEBUG("CheckWarEnd: Timeout begin {} vs {}", m_TeamData[0].dwID, m_TeamData[1].dwID);
 
@@ -523,7 +523,7 @@ void CWarMap::Timeout()
 
 	if (get_dword_time() - m_dwStartTime < 60000 * 5)
 	{
-		Notice(LC_TEXT("  Ǿ ºη  Ǿϴ. (5  )"));
+		Notice(LC_TEXT("\xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC0\xCF\xC2\xEF \xC1\xBE\xB7\xE1\xB5\xC7\xBE\xEE \xB9\xAB\xBD\xC2\xBA\xCE\xB7\xCE \xC6\xC7\xC1\xA4 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. (5\xBA\xD0\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBD)"));
 		dwWinner = 0;
 		dwLoser = 0;
 	}
diff --git a/src/game/src/wedding.cpp b/src/game/src/wedding.cpp
index be15a3a..4b14d36 100644
--- a/src/game/src/wedding.cpp
+++ b/src/game/src/wedding.cpp
@@ -78,8 +78,8 @@ namespace marriage
 
 		m_pEndEvent = event_create(wedding_end_event, info, PASSES_PER_SEC(5));
 
-		Notice(LC_TEXT("ȥ ˴ϴ."));
-		Notice(LC_TEXT("ڵ Ե˴ϴ."));
+		Notice(LC_TEXT("\xB0\xE1\xC8\xA5\xBD\xC4\xC0\xCC \xC1\xBE\xB7\xE1\xB5\xCB\xB4\xCF\xB4\xD9."));
+		Notice(LC_TEXT("\xC0\xDA\xB5\xBF\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9."));
 
 		for (itertype(m_set_pkChr) it = m_set_pkChr.begin(); it != m_set_pkChr.end(); ++it)
 		{

From eacc8083663ff760b8b47284ca78a00fb18f4e01 Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Fri, 5 Apr 2024 23:34:45 +0200
Subject: [PATCH 10/21] convert comments to utf-8

---
 src/game/src/DragonLair.cpp               |   2 +-
 src/game/src/DragonSoul.cpp               |  80 +--
 src/game/src/MarkConvert.cpp              |  20 +-
 src/game/src/MarkImage.cpp                |  14 +-
 src/game/src/MarkManager.cpp              |  10 +-
 src/game/src/OXEvent.cpp                  |   4 +-
 src/game/src/PetSystem.cpp                |  80 +--
 src/game/src/SpeedServer.cpp              |   8 +-
 src/game/src/ani.cpp                      |  30 +-
 src/game/src/arena.cpp                    |  10 +-
 src/game/src/auction_manager.cpp          |  12 +-
 src/game/src/banword.cpp                  |   2 +-
 src/game/src/battle.cpp                   |  40 +-
 src/game/src/blend_item.cpp               |   8 +-
 src/game/src/block_country.cpp            |   2 +-
 src/game/src/buff_on_attributes.cpp       |  16 +-
 src/game/src/building.cpp                 |  20 +-
 src/game/src/castle.cpp                   | 110 ++---
 src/game/src/char.cpp                     | 348 ++++++-------
 src/game/src/char_affect.cpp              |  70 +--
 src/game/src/char_battle.cpp              | 322 ++++++------
 src/game/src/char_change_empire.cpp       |  24 +-
 src/game/src/char_dragonsoul.cpp          |  16 +-
 src/game/src/char_horse.cpp               |  24 +-
 src/game/src/char_item.cpp                | 564 +++++++++++-----------
 src/game/src/char_manager.cpp             |  38 +-
 src/game/src/char_quickslot.cpp           |   4 +-
 src/game/src/char_resist.cpp              |   8 +-
 src/game/src/char_skill.cpp               | 190 ++++----
 src/game/src/char_state.cpp               | 122 ++---
 src/game/src/cmd.cpp                      |  38 +-
 src/game/src/cmd_emotion.cpp              |   6 +-
 src/game/src/cmd_general.cpp              | 166 +++----
 src/game/src/cmd_gm.cpp                   |  82 ++--
 src/game/src/config.cpp                   |  52 +-
 src/game/src/constants.cpp                |  50 +-
 src/game/src/cube.cpp                     | 136 +++---
 src/game/src/db.cpp                       |  12 +-
 src/game/src/desc.cpp                     |  10 +-
 src/game/src/desc_client.cpp              |   6 +-
 src/game/src/desc_manager.cpp             |   4 +-
 src/game/src/dragon_soul_table.cpp        |   4 +-
 src/game/src/dungeon.cpp                  |   4 +-
 src/game/src/entity.cpp                   |   2 +-
 src/game/src/entity_view.cpp              |  28 +-
 src/game/src/event.cpp                    |  30 +-
 src/game/src/event_queue.cpp              |   4 +-
 src/game/src/exchange.cpp                 |  46 +-
 src/game/src/file_loader.cpp              |   2 +-
 src/game/src/fishing.cpp                  |  40 +-
 src/game/src/gm.cpp                       |   2 +-
 src/game/src/group_text_parse_tree.cpp    |   4 +-
 src/game/src/guild.cpp                    |  34 +-
 src/game/src/guild_manager.cpp            |   4 +-
 src/game/src/guild_war.cpp                |  30 +-
 src/game/src/horse_rider.cpp              |  20 +-
 src/game/src/input.cpp                    |  18 +-
 src/game/src/input_auth.cpp               |   6 +-
 src/game/src/input_db.cpp                 |  54 +--
 src/game/src/input_login.cpp              |  48 +-
 src/game/src/input_main.cpp               | 200 ++++----
 src/game/src/input_p2p.cpp                |  10 +-
 src/game/src/item.cpp                     | 104 ++--
 src/game/src/item_addon.cpp               |   2 +-
 src/game/src/item_attribute.cpp           |  10 +-
 src/game/src/item_manager.cpp             | 138 +++---
 src/game/src/item_manager_read_tables.cpp |   4 +-
 src/game/src/locale.cpp                   |   2 +-
 src/game/src/locale_service.cpp           |  40 +-
 src/game/src/main.cpp                     |  14 +-
 src/game/src/marriage.cpp                 |  68 +--
 src/game/src/matrix_card.cpp              |   2 +-
 src/game/src/messenger_manager.cpp        |   6 +-
 src/game/src/monarch.cpp                  |  20 +-
 src/game/src/motion.cpp                   |   2 +-
 src/game/src/p2p.cpp                      |   2 +-
 src/game/src/panama.cpp                   |   2 +-
 src/game/src/party.cpp                    |  34 +-
 src/game/src/polymorph.cpp                |  14 +-
 src/game/src/priv_manager.cpp             |   4 +-
 src/game/src/pvp.cpp                      |  36 +-
 src/game/src/questevent.cpp               |   4 +-
 src/game/src/questlua.cpp                 |  14 +-
 src/game/src/questlua_affect.cpp          |  10 +-
 src/game/src/questlua_dungeon.cpp         |   8 +-
 src/game/src/questlua_global.cpp          |   4 +-
 src/game/src/questlua_guild.cpp           |  44 +-
 src/game/src/questlua_horse.cpp           |  12 +-
 src/game/src/questlua_item.cpp            |   2 +-
 src/game/src/questlua_marriage.cpp        |   2 +-
 src/game/src/questlua_monarch.cpp         |  62 +--
 src/game/src/questlua_party.cpp           |   6 +-
 src/game/src/questlua_pc.cpp              |  70 +--
 src/game/src/questlua_pet.cpp             |  10 +-
 src/game/src/questlua_quest.cpp           |  12 +-
 src/game/src/questlua_target.cpp          |   4 +-
 src/game/src/questmanager.cpp             |  84 ++--
 src/game/src/questnpc.cpp                 |  14 +-
 src/game/src/questpc.cpp                  |   4 +-
 src/game/src/regen.cpp                    |  18 +-
 src/game/src/safebox.cpp                  |   6 +-
 src/game/src/sectree.cpp                  |   2 +-
 src/game/src/sectree_manager.cpp          |  50 +-
 src/game/src/shop.cpp                     |  16 +-
 src/game/src/shopEx.cpp                   |   2 +-
 src/game/src/shop_manager.cpp             |  24 +-
 src/game/src/skill.cpp                    |   4 +-
 src/game/src/start_position.cpp           |  18 +-
 src/game/src/threeway_war.cpp             |  26 +-
 src/game/src/trigger.cpp                  |   6 +-
 src/game/src/utils.cpp                    |   8 +-
 src/game/src/war_map.cpp                  |   6 +-
 src/game/src/wedding.cpp                  |   8 +-
 src/game/src/xmas_event.cpp               |  14 +-
 114 files changed, 2214 insertions(+), 2214 deletions(-)

diff --git a/src/game/src/DragonLair.cpp b/src/game/src/DragonLair.cpp
index d31a61f..1ec3659 100644
--- a/src/game/src/DragonLair.cpp
+++ b/src/game/src/DragonLair.cpp
@@ -237,7 +237,7 @@ void CDragonLairManager::OnDragonDead(LPCHARACTER pDragon, DWORD KillerGuildID)
 
 	iter->second->OnDragonDead( pDragon );
 
-	// ֵ     ֱ
+	// 애들 다 집으로 보내고 맵 없애기
 
 	tag_DragonLair_Collapse_EventInfo* info;
 	info = AllocEventInfo();
diff --git a/src/game/src/DragonSoul.cpp b/src/game/src/DragonSoul.cpp
index f508546..104fd43 100644
--- a/src/game/src/DragonSoul.cpp
+++ b/src/game/src/DragonSoul.cpp
@@ -31,7 +31,7 @@ int Gamble(std::vector& vec_probs)
 	return -1;
 }
 
-// ġ ̺(prob_lst) ޾ random_set.size() index Ͽ random_set return
+// 가중치 테이블(prob_lst)을 받아 random_set.size()개의 index를 선택하여 random_set을 return
 bool MakeDistinctRandomNumberSet(std::list  prob_lst, OUT std::vector& random_set)
 {
 	int size = prob_lst.size();
@@ -67,11 +67,11 @@ bool MakeDistinctRandomNumberSet(std::list  prob_lst, OUT std::vectorGetApplyNumSettings(ds_type, grade_idx, basic_apply_num, add_min, add_max))
 	{
@@ -315,7 +315,7 @@ int DSManager::GetDuration(const LPITEM pItem) const
 	return pItem->GetDuration();
 }
 
-// ȥ ޾Ƽ  ϴ Լ
+// 용혼석을 받아서 용심을 추출하는 함수
 bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtractor)
 {
 	if (NULL == ch || NULL == pItem)
@@ -397,7 +397,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 	}
 }
 
-// Ư ȥ â    θ ϰ, н λ깰 ִ Լ.
+// 특정 용혼석을 장비창에서 제거할 때에 성공 여부를 결정하고, 실패시 부산물을 주는 함수.
 bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM pExtractor)
 {
 	if (NULL == ch || NULL == pItem)
@@ -406,7 +406,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 		return false;
 	}
 
-	// ǥ ġ valid ˻ , valid ʴٸ    ã´.
+	// 목표 위치가 valid한지 검사 후, valid하지 않다면 임의의 빈 공간을 찾는다.
 	if (!IsValidCellForThisItem(pItem, DestCell))
 	{
 		int iEmptyCell = ch->GetEmptyDragonSoulInventory(pItem);
@@ -430,14 +430,14 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 	int iBonus = 0;
 	float fProb;
 	float fDice;
-	// ȥ    .
+	// 용혼석 추출 성공 여부 결정.
 	{
 		DWORD dwVnum = pItem->GetVnum(); 
 
 		BYTE ds_type, grade_idx, step_idx, strength_idx;
 		GetDragonSoulInfo(pItem->GetVnum(), ds_type, grade_idx, step_idx, strength_idx);
 
-		//   ٸ ϴ  ϴ ̶ .
+		// 추출 정보가 없다면 일단 무조건 성공하는 것이라 생각하자.
 		if (!m_pTable->GetDragonSoulExtValues(ds_type, grade_idx, fProb, dwByProduct))
 		{
 			pItem->AddToCharacter(ch, DestCell);
@@ -454,7 +454,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 		bSuccess = fDice <= (fProb * (100 + iBonus) / 100.f);
 	}
 
-	// ij ȥ   ߰ Ȥ . λ깰 .
+	// 캐릭터의 용혼석 추출 및 추가 혹은 제거. 부산물 제공.
 	{
 		char buf[128];
 
@@ -519,8 +519,8 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		return false;
 	}
 
-	// Ȥó  ߺǴ item pointer ֱ ؼ set 
-	// ̻ Ŷ  , ߺ TItemPos   ְ, ߸ TItemPos   ִ.
+	// 혹시나 모를 중복되는 item pointer 없애기 위해서 set 사용
+	// 이상한 패킷을 보낼 경우, 중복된 TItemPos가 있을 수도 있고, 잘못된 TItemPos가 있을 수도 있다.
 	std::set  set_items;
 	for (int i = 0; i < DRAGON_SOUL_REFINE_GRID_SIZE; i++)
 	{
@@ -529,7 +529,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		LPITEM pItem = ch->GetItem(aItemPoses[i]);
 		if (NULL != pItem)
 		{
-			// ȥ ƴ  â   .
+			// 용혼석이 아닌 아이템이 개량창에 있을 수 없다.
 			if (!pItem->IsDragonSoul())
 			{
 				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
@@ -557,7 +557,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 	BYTE ds_type, grade_idx, step_idx, strength_idx;
 	int result_grade;
 
-	//  ó  ȭ  ´.
+	// 가장 처음 것을 강화의 기준으로 삼는다.
 	std::set ::iterator it = set_items.begin();
 	{
 		LPITEM pItem = *it;
@@ -576,8 +576,8 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 	{
 		LPITEM pItem = *it;
 
-		// Ŭ ui   â ø   ұ ,
-		//  ˸ ó .
+		// 클라 ui에서 장착한 아이템은 개량창에 올릴 수 없도록 막았기 때문에,
+		// 별도의 알림 처리는 안함.
 		if (pItem->IsEquipped())
 		{
 			return false;
@@ -592,7 +592,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		}
 	}
 
-	// Ŭ󿡼 ѹ  üũ ϱ  count != need_count invalid Ŭ ɼ ũ.
+	// 클라에서 한번 갯수 체크를 하기 때문에 count != need_count라면 invalid 클라일 가능성이 크다.
 	if (count != need_count)
 	{
 		SPDLOG_ERROR("Possiblity of invalid client. Name {}", ch->GetName());
@@ -679,15 +679,15 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		return false;
 	}
 
-	// Ȥó  ߺǴ item pointer ֱ ؼ set 
-	// ̻ Ŷ  , ߺ TItemPos   ְ, ߸ TItemPos   ִ.
+	// 혹시나 모를 중복되는 item pointer 없애기 위해서 set 사용
+	// 이상한 패킷을 보낼 경우, 중복된 TItemPos가 있을 수도 있고, 잘못된 TItemPos가 있을 수도 있다.
 	std::set  set_items;
 	for (int i = 0; i < DRAGON_SOUL_REFINE_GRID_SIZE; i++)
 	{
 		LPITEM pItem = ch->GetItem(aItemPoses[i]);
 		if (NULL != pItem)
 		{
-			// ȥ ƴ  â   .
+			// 용혼석이 아닌 아이템이 개량창에 있을 수 없다.
 			if (!pItem->IsDragonSoul())
 			{
 				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
@@ -713,7 +713,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 	BYTE ds_type, grade_idx, step_idx, strength_idx;
 	int result_step;
 
-	//  ó  ȭ  ´.
+	// 가장 처음 것을 강화의 기준으로 삼는다.
 	std::set ::iterator it = set_items.begin(); 
 	{
 		LPITEM pItem = *it;
@@ -730,8 +730,8 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 	while(++it != set_items.end())
 	{
 		LPITEM pItem = *it;
-		// Ŭ ui   â ø   ұ ,
-		//  ˸ ó .
+		// 클라 ui에서 장착한 아이템은 개량창에 올릴 수 없도록 막았기 때문에,
+		// 별도의 알림 처리는 안함.
 		if (pItem->IsEquipped())
 		{
 			return false;
@@ -744,7 +744,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		}
 	}
 
-	// Ŭ󿡼 ѹ  üũ ϱ  count != need_count invalid Ŭ ɼ ũ.
+	// 클라에서 한번 갯수 체크를 하기 때문에 count != need_count라면 invalid 클라일 가능성이 크다.
 	if (count != need_count)
 	{
 		SPDLOG_ERROR("Possiblity of invalid client. Name {}", ch->GetName());
@@ -840,8 +840,8 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		return false;
 	}
 
-	// Ȥó  ߺǴ item pointer ֱ ؼ set 
-	// ̻ Ŷ  , ߺ TItemPos   ְ, ߸ TItemPos   ִ.
+	// 혹시나 모를 중복되는 item pointer 없애기 위해서 set 사용
+	// 이상한 패킷을 보낼 경우, 중복된 TItemPos가 있을 수도 있고, 잘못된 TItemPos가 있을 수도 있다.
 	std::set  set_items;
 	for (int i = 0; i < DRAGON_SOUL_REFINE_GRID_SIZE; i++)
 	{
@@ -863,15 +863,15 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 	for (std::set ::iterator it = set_items.begin(); it != set_items.end(); it++)
 	{
 		LPITEM pItem = *it;
-		// Ŭ ui   â ø   ұ ,
-		//  ˸ ó .
+		// 클라 ui에서 장착한 아이템은 개량창에 올릴 수 없도록 막았기 때문에,
+		// 별도의 알림 처리는 안함.
 		if (pItem->IsEquipped())
 		{
 			return false;
 		}
 
-		// ȥ ȭ â   ִ.
-		// ׸ ϳ ־Ѵ.
+		// 용혼석과 강화석만이 개량창에 있을 수 있다.
+		// 그리고 하나씩만 있어야한다.
 		if (pItem->IsDragonSoul())
 		{
 			if (pDragonSoul != NULL)
@@ -912,14 +912,14 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		GetDragonSoulInfo(pDragonSoul->GetVnum(), bType, bGrade, bStep, bStrength);
 
 		float fWeight = 0.f;
-		// ġ  ٸ ȭ   ȥ
+		// 가중치 값이 없다면 강화할 수 없는 용혼석
 		if (!m_pTable->GetWeight(bType, bGrade, bStep, bStrength + 1, fWeight))
 		{
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 			return false;
 		}
-		// ȭ  ġ 0̶  ̻ ȭǼ ȵȴ.
+		// 강화했을 때 가중치가 0이라면 더 이상 강화되서는 안된다.
 		if (fWeight < FLT_EPSILON)
 		{
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
@@ -988,7 +988,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 
 		char buf[128];
 		sprintf(buf, "STRENGTH : %d -> %d", bStrength, bStrength - 1);
-		// strengthȭ н   ־,    α׸ .
+		// strength강화는 실패시 깨질 수도 있어, 원본 아이템을 바탕으로 로그를 남김.
 		LogManager::instance().ItemLog(ch, pDragonSoul, "DS_STRENGTH_REFINE_FAIL", buf);
 
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -1029,12 +1029,12 @@ int DSManager::LeftTime(LPITEM pItem) const
 	if (pItem == NULL)
 		return false;
 
-	// ϴ timer based on wear ȥ ð  Ǿ  .
+	// 일단은 timer based on wear인 용혼석만 시간 다 되어도 안 없어진다.
 	if (pItem->GetProto()->cLimitTimerBasedOnWearIndex >= 0)
 	{
 		return pItem->GetSocket(ITEM_SOCKET_REMAIN_SEC);
 	}
-	// ٸ limit type ȥ ð Ǹ       ϴ ð Ҵٰ Ǵ.
+	// 다른 limit type인 용혼석들은 시간 되면 모두 사라지기 때문에 여기 들어온 아이템은 일단 시간이 남았다고 판단.
 	else
 	{
 		return INT_MAX;
@@ -1046,12 +1046,12 @@ bool DSManager::IsTimeLeftDragonSoul(LPITEM pItem) const
 	if (pItem == NULL)
 		return false;
 
-	// ϴ timer based on wear ȥ ð  Ǿ  .
+	// 일단은 timer based on wear인 용혼석만 시간 다 되어도 안 없어진다.
 	if (pItem->GetProto()->cLimitTimerBasedOnWearIndex >= 0)
 	{
 		return pItem->GetSocket(ITEM_SOCKET_REMAIN_SEC) > 0;
 	}
-	// ٸ limit type ȥ ð Ǹ       ϴ ð Ҵٰ Ǵ.
+	// 다른 limit type인 용혼석들은 시간 되면 모두 사라지기 때문에 여기 들어온 아이템은 일단 시간이 남았다고 판단.
 	else
 	{
 		return true;
diff --git a/src/game/src/MarkConvert.cpp b/src/game/src/MarkConvert.cpp
index 3ac11b0..06473b8 100644
--- a/src/game/src/MarkConvert.cpp
+++ b/src/game/src/MarkConvert.cpp
@@ -30,14 +30,14 @@ static Pixel * LoadOldGuildMarkImageFile()
 
 bool GuildMarkConvert(const std::vector & vecGuildID)
 {
-	//  
+	// 폴더 생성
 #ifndef __WIN32__
 	mkdir("mark", S_IRWXU);
 #else
 	_mkdir("mark");
 #endif
 
-	// ε  ֳ? 
+	// 인덱스 파일이 있나? 
 #ifndef __WIN32__
 	if (0 != access(OLD_MARK_INDEX_FILENAME, F_OK))
 #else
@@ -45,13 +45,13 @@ bool GuildMarkConvert(const std::vector & vecGuildID)
 #endif
 		return true;
 
-	// ε  
+	// 인덱스 파일 열기
 	FILE* fp = fopen(OLD_MARK_INDEX_FILENAME, "r");
 
 	if (NULL == fp)
 		return false;
 
-	// ̹  
+	// 이미지 파일 열기
 	Pixel * oldImagePtr = LoadOldGuildMarkImageFile();
 
 	if (NULL == oldImagePtr)
@@ -61,8 +61,8 @@ bool GuildMarkConvert(const std::vector & vecGuildID)
 	}
 
 	/*
-	// guild_mark.tga  targa  ƴϰ, 512 * 512 * 4 ũ raw ̴.
-	//  Ȯϱ   targa Ϸ .
+	// guild_mark.tga가 실제 targa 파일이 아니고, 512 * 512 * 4 크기의 raw 파일이다.
+	// 눈으로 확인하기 위해 실제 targa 파일로 만든다.
 	CGuildMarkImage * pkImage = new CGuildMarkImage;
 	pkImage->Build("guild_mark_real.tga");
 	pkImage->Load("guild_mark_real.tga");
@@ -86,7 +86,7 @@ bool GuildMarkConvert(const std::vector & vecGuildID)
 			continue;
 		}
 
-		// mark id -> ̹ ġ ã
+		// mark id -> 이미지에서의 위치 찾기
 		uint row = mark_id / 32;
 		uint col = mark_id % 32;
 
@@ -102,7 +102,7 @@ bool GuildMarkConvert(const std::vector & vecGuildID)
 		Pixel * src = oldImagePtr + sy * 512 + sx;
 		Pixel * dst = mark;
 
-		//  ̹ ũ Ѱ 
+		// 옛날 이미지에서 마크 한개 복사
 		for (int y = 0; y != SGuildMark::HEIGHT; ++y)
 		{
 			for (int x = 0; x != SGuildMark::WIDTH; ++x)
@@ -111,7 +111,7 @@ bool GuildMarkConvert(const std::vector & vecGuildID)
 			src += 512;
 		}
 
-		//   ũ ýۿ ִ´.
+		// 새 길드 마크 시스템에 넣는다.
 		CGuildMarkManager::instance().SaveMark(guild_id, (BYTE *) mark);
 		line[0] = '\0';
 	}
@@ -119,7 +119,7 @@ bool GuildMarkConvert(const std::vector & vecGuildID)
 	free(oldImagePtr);
 	fclose(fp);
 
-	// Ʈ ѹ ϸǹǷ  Űش.
+	// 컨버트는 한번만 하면되므로 파일을 옮겨준다.
 #ifndef __WIN32__
 	system("mv -f guild_mark.idx guild_mark.idx.removable");
 	system("mv -f guild_mark.tga guild_mark.tga.removable");
diff --git a/src/game/src/MarkImage.cpp b/src/game/src/MarkImage.cpp
index fe493c6..0b53e97 100644
--- a/src/game/src/MarkImage.cpp
+++ b/src/game/src/MarkImage.cpp
@@ -129,10 +129,10 @@ void CGuildMarkImage::GetData(UINT x, UINT y, UINT width, UINT height, void * da
 	ilCopyPixels(x, y, 0, width, height, 1, IL_BGRA, IL_UNSIGNED_BYTE, data);	
 }
 
-// ̹ = 512x512
-//    = ũ 4 x 4
-//   ũ = 16 x 12
-//  ̹  = 8 x 10
+// 이미지 = 512x512
+//   블럭 = 마크 4 x 4
+//   마크 = 16 x 12
+// 한 이미지의 블럭 = 8 x 10
 
 // SERVER
 bool CGuildMarkImage::SaveMark(DWORD posMark, BYTE * pbImage)
@@ -143,14 +143,14 @@ bool CGuildMarkImage::SaveMark(DWORD posMark, BYTE * pbImage)
 		return false;
 	}
 
-	// ũ ü ̹ ׸.
+	// 마크를 전체 이미지에 그린다.
 	DWORD colMark = posMark % MARK_COL_COUNT;
 	DWORD rowMark = posMark / MARK_COL_COUNT;
 
 	printf("PutMark pos %u %ux%u\n", posMark, colMark * SGuildMark::WIDTH, rowMark * SGuildMark::HEIGHT);
 	PutData(colMark * SGuildMark::WIDTH, rowMark * SGuildMark::HEIGHT, SGuildMark::WIDTH, SGuildMark::HEIGHT, pbImage);
 
-	// ׷   Ʈ
+	// 그려진 곳의 블럭을 업데이트
 	DWORD rowBlock = rowMark / SGuildMarkBlock::MARK_PER_BLOCK_HEIGHT;
 	DWORD colBlock = colMark / SGuildMarkBlock::MARK_PER_BLOCK_WIDTH;
 
@@ -197,7 +197,7 @@ bool CGuildMarkImage::SaveBlockFromCompressedData(DWORD posBlock, const BYTE * p
 	return true;
 }
 
-void CGuildMarkImage::BuildAllBlocks() // ̹ ü ȭ
+void CGuildMarkImage::BuildAllBlocks() // 이미지 전체를 블럭화
 {
 	Pixel apxBuf[SGuildMarkBlock::SIZE];
 	SPDLOG_INFO("GuildMarkImage::BuildAllBlocks");
diff --git a/src/game/src/MarkManager.cpp b/src/game/src/MarkManager.cpp
index 70b9088..3faa160 100644
--- a/src/game/src/MarkManager.cpp
+++ b/src/game/src/MarkManager.cpp
@@ -15,7 +15,7 @@ void CGuildMarkManager::__DeleteImage(CGuildMarkImage * pkImgDel)
 
 CGuildMarkManager::CGuildMarkManager()
 {
-	//  mark id  . ()
+	// 남은 mark id 셋을 만든다. (서버용)
 	for (DWORD i = 0; i < MAX_IMAGE_COUNT * CGuildMarkImage::MARK_TOTAL_COUNT; ++i)
 		m_setFreeMarkID.insert(i);
 }
@@ -44,7 +44,7 @@ void CGuildMarkManager::SetMarkPathPrefix(const char * prefix)
 	m_pathPrefix = prefix;
 }
 
-// ũ ε ҷ ( )
+// 마크 인덱스 불러오기 (서버에서만 사용)
 bool CGuildMarkManager::LoadMarkIndex()
 {
 	char buf[64];
@@ -177,7 +177,7 @@ DWORD CGuildMarkManager::__AllocMarkID(DWORD guildID)
 	DWORD markID = *it;
 	
 	DWORD imgIdx = markID / CGuildMarkImage::MARK_TOTAL_COUNT;
-	CGuildMarkImage * pkImage = __GetImage(imgIdx); // ̹ ٸ   
+	CGuildMarkImage * pkImage = __GetImage(imgIdx); // 이미지가 없다면 만들기 위해 
 
 	if (pkImage && AddMarkIDByGuildID(guildID, markID))
 		return markID;
@@ -263,7 +263,7 @@ void CGuildMarkManager::GetDiffBlocks(DWORD imgIdx, const DWORD * crcList, std::
 {
 	mapDiffBlocks.clear();
 
-	// Ŭ̾Ʈ   ̹ û  .
+	// 클라이언트에서 서버에 없는 이미지를 요청할 수는 없다.
 	if (m_mapIdx_Image.end() == m_mapIdx_Image.find(imgIdx))
 	{
 		SPDLOG_ERROR("invalid idx {}", imgIdx);
@@ -290,7 +290,7 @@ bool CGuildMarkManager::SaveBlockFromCompressedData(DWORD imgIdx, DWORD posBlock
 // CLIENT
 bool CGuildMarkManager::GetBlockCRCList(DWORD imgIdx, DWORD * crcList)
 {
-	// Ŭ̾Ʈ   ̹ û  .
+	// 클라이언트에서 서버에 없는 이미지를 요청할 수는 없다.
 	if (m_mapIdx_Image.end() == m_mapIdx_Image.find(imgIdx))
 	{
 		SPDLOG_ERROR("invalid idx {}", imgIdx);
diff --git a/src/game/src/OXEvent.cpp b/src/game/src/OXEvent.cpp
index 24a0f95..7a45639 100644
--- a/src/game/src/OXEvent.cpp
+++ b/src/game/src/OXEvent.cpp
@@ -318,11 +318,11 @@ bool COXEventManager::CheckAnswer(bool answer)
 				int len = snprintf(chatbuf, sizeof(chatbuf), 
 						"%s %u %u", Random::get(0, 1) == 1 ? "cheer1" : "cheer2", (DWORD)pkChar->GetVID(), 0);
 
-				// ϰ sizeof(chatbuf) ̻  truncateǾٴ ..
+				// 리턴값이 sizeof(chatbuf) 이상일 경우 truncate되었다는 뜻..
 				if (len < 0 || len >= (int) sizeof(chatbuf))
 					len = sizeof(chatbuf) - 1;
 
-				// \0  
+				// \0 문자 포함
 				++len;
 
 				TPacketGCChat pack_chat;
diff --git a/src/game/src/PetSystem.cpp b/src/game/src/PetSystem.cpp
index f801850..278eaa5 100644
--- a/src/game/src/PetSystem.cpp
+++ b/src/game/src/PetSystem.cpp
@@ -18,13 +18,13 @@ EVENTINFO(petsystem_event_info)
 	CPetSystem* pPetSystem;
 };
 
-// PetSystem update ִ event.
-// PetSystem CHRACTER_MANAGER  FSM update ִ  chracters ޸,
-// Owner STATE update   _UpdateFollowAI Լ update ش.
-// ׷ owner state update CHRACTER_MANAGER ֱ ,
-// petsystem updateϴٰ pet unsummonϴ κп  .
-// (CHRACTER_MANAGER update ϸ chracter destroy pendingǾ, CPetSystem dangling ͸  ְ ȴ.)
-//  PetSystem Ʈ ִ event ߻Ŵ.
+// PetSystem을 update 해주는 event.
+// PetSystem은 CHRACTER_MANAGER에서 기존 FSM으로 update 해주는 기존 chracters와 달리,
+// Owner의 STATE를 update 할 때 _UpdateFollowAI 함수로 update 해준다.
+// 그런데 owner의 state를 update를 CHRACTER_MANAGER에서 해주기 때문에,
+// petsystem을 update하다가 pet을 unsummon하는 부분에서 문제가 생겼다.
+// (CHRACTER_MANAGER에서 update 하면 chracter destroy가 pending되어, CPetSystem에서는 dangling 포인터를 가지고 있게 된다.)
+// 따라서 PetSystem만 업데이트 해주는 event를 발생시킴.
 EVENTFUNC(petsystem_update_event)
 {
 	petsystem_event_info* info = dynamic_cast( event->info );
@@ -41,12 +41,12 @@ EVENTFUNC(petsystem_update_event)
 
 	
 	pPetSystem->Update(0);
-	// 0.25ʸ .
+	// 0.25초마다 갱신.
 	return PASSES_PER_SEC(1) / 4;
 }
 
-/// NOTE: 1ijͰ     ִ ... ij͸  ٸ ҰŶ  ֵ... ..
-///   ִ  ÿ ȯ  ִ  Ʋ  ִµ ̷ ȹ  ϴ 
+/// NOTE: 1캐릭터가 몇개의 펫을 가질 수 있는지 제한... 캐릭터마다 개수를 다르게 할거라면 변수로 넣등가... 음..
+/// 가질 수 있는 개수와 동시에 소환할 수 있는 개수가 틀릴 수 있는데 이런건 기획 없으니 일단 무시
 const float PET_COUNT_LIMIT = 3;
 
 ///////////////////////////////////////////////////////////////////////////////////////
@@ -119,7 +119,7 @@ void CPetActor::Unsummon()
 {
 	if (true == this->IsSummoned())
 	{
-		//  
+		// 버프 삭제
 		this->ClearBuff();
 		this->SetSummonItem(NULL);
 		if (NULL != m_pkOwner)
@@ -175,14 +175,14 @@ DWORD CPetActor::Summon(const char* petName, LPITEM pSummonItem, bool bSpawnFar)
 //	m_pkOwner->DetailLog();
 //	m_pkChar->DetailLog();
 
-	//    .
+	//펫의 국가를 주인의 국가로 설정함.
 	m_pkChar->SetEmpire(m_pkOwner->GetEmpire());
 
 	m_dwVID = m_pkChar->GetVID();
 
 	this->SetName(petName);
 
-	// SetSummonItem(pSummonItem) θ Ŀ ComputePoints θ  .
+	// SetSummonItem(pSummonItem)를 부른 후에 ComputePoints를 부르면 버프 적용됨.
 	this->SetSummonItem(pSummonItem);
 	m_pkOwner->ComputePoints();
 	m_pkChar->Show(m_pkOwner->GetMapIndex(), x, y, z);
@@ -197,11 +197,11 @@ bool CPetActor::_UpdatAloneActionAI(float fMinDist, float fMaxDist)
 	float dest_x = GetOwner()->GetX() + fDist * cos(r);
 	float dest_y = GetOwner()->GetY() + fDist * sin(r);
 
-	//m_pkChar->SetRotation(Random::get(0, 359));        //   
+	//m_pkChar->SetRotation(Random::get(0, 359));        // 방향은 랜덤으로 설정
 
 	//GetDeltaByDegree(m_pkChar->GetRotation(), fDist, &fx, &fy);
 
-	//   Ӽ üũ;  ġ ߰ ġ ٸ  ʴ´.
+	// 느슨한 못감 속성 체크; 최종 위치와 중간 위치가 갈수없다면 가지 않는다.
 	//if (!(SECTREE_MANAGER::instance().IsMovablePosition(m_pkChar->GetMapIndex(), m_pkChar->GetX() + (int) fx, m_pkChar->GetY() + (int) fy) 
 	//			&& SECTREE_MANAGER::instance().IsMovablePosition(m_pkChar->GetMapIndex(), m_pkChar->GetX() + (int) fx/2, m_pkChar->GetY() + (int) fy/2)))
 	//	return true;
@@ -218,7 +218,7 @@ bool CPetActor::_UpdatAloneActionAI(float fMinDist, float fMaxDist)
 	return true;
 }
 
-// char_state.cpp StateHorseԼ ׳ C&P -_-;
+// char_state.cpp StateHorse함수 그냥 C&P -_-;
 bool CPetActor::_UpdateFollowAI()
 {
 	if (0 == m_pkChar->m_pkMobData)
@@ -227,9 +227,9 @@ bool CPetActor::_UpdateFollowAI()
 		return false;
 	}
 	
-	// NOTE: ij()  ̵ ӵ ˾ƾ ϴµ, ش (m_pkChar->m_pkMobData->m_table.sMovingSpeed)  ؼ ˾Ƴ  
-	// m_pkChar->m_pkMobData  invalid 찡  ߻.  ð   ľϰ ϴ m_pkChar->m_pkMobData  ƿ  ʵ .
-	// ⼭ Ź ˻ϴ   ʱȭ       쵵 .. -_-;; ФФФФФФФФ
+	// NOTE: 캐릭터(펫)의 원래 이동 속도를 알아야 하는데, 해당 값(m_pkChar->m_pkMobData->m_table.sMovingSpeed)을 직접적으로 접근해서 알아낼 수도 있지만
+	// m_pkChar->m_pkMobData 값이 invalid한 경우가 자주 발생함. 현재 시간관계상 원인은 다음에 파악하고 일단은 m_pkChar->m_pkMobData 값을 아예 사용하지 않도록 함.
+	// 여기서 매번 검사하는 이유는 최초 초기화 할 때 정상 값을 제대로 못얻어오는 경우도 있음.. -_-;; ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
 	if (0 == m_originalMoveSpeed)
 	{
 		const CMob* mobData = CMobManager::Instance().Get(m_dwVnum);
@@ -237,14 +237,14 @@ bool CPetActor::_UpdateFollowAI()
 		if (0 != mobData)
 			m_originalMoveSpeed = mobData->m_table.sMovingSpeed;
 	}
-	float	START_FOLLOW_DISTANCE = 300.0f;		//  Ÿ ̻  Ѿư 
-	float	START_RUN_DISTANCE = 900.0f;		//  Ÿ ̻  پ Ѿư.
+	float	START_FOLLOW_DISTANCE = 300.0f;		// 이 거리 이상 떨어지면 쫓아가기 시작함
+	float	START_RUN_DISTANCE = 900.0f;		// 이 거리 이상 떨어지면 뛰어서 쫓아감.
 
-	float	RESPAWN_DISTANCE = 4500.f;			//  Ÿ ̻ ־   ȯ.
-	int		APPROACH = 200;						//  Ÿ
+	float	RESPAWN_DISTANCE = 4500.f;			// 이 거리 이상 멀어지면 주인 옆으로 소환함.
+	int		APPROACH = 200;						// 접근 거리
 
-	bool bDoMoveAlone = true;					// ijͿ    ȥ  ϰ  -_-;
-	bool bRun = false;							// پ ϳ?
+	bool bDoMoveAlone = true;					// 캐릭터와 가까이 있을 때 혼자 여기저기 움직일건지 여부 -_-;
+	bool bRun = false;							// 뛰어야 하나?
 
 	DWORD currentTime = get_dword_time();
 
@@ -272,7 +272,7 @@ bool CPetActor::_UpdateFollowAI()
 			bRun = true;
 		}
 
-		m_pkChar->SetNowWalking(!bRun);		// NOTE: Լ ̸ ߴ° ˾Ҵµ SetNowWalking(false) ϸ ٴ°.. -_-;
+		m_pkChar->SetNowWalking(!bRun);		// NOTE: 함수 이름보고 멈추는건줄 알았는데 SetNowWalking(false) 하면 뛰는거임.. -_-;
 		
 		Follow(APPROACH);
 
@@ -288,7 +288,7 @@ bool CPetActor::_UpdateFollowAI()
 	//		m_dwLastActionTime = currentTime;
 	//	}
 	//}
-	// Follow  ΰ  Ÿ ̳ ٸ 
+	// Follow 중이지만 주인과 일정 거리 이내로 가까워졌다면 멈춤
 	else 
 		m_pkChar->SendMovePacket(FUNC_WAIT, 0, 0, 0, 0);
 	//else if (currentTime - m_dwLastActionTime > Random::get(5000, 12000))
@@ -303,8 +303,8 @@ bool CPetActor::Update(DWORD deltaTime)
 {
 	bool bResult = true;
 
-	//   ׾ų, ȯ  ° ̻ϴٸ  . (NOTE:  ̷   ȯ  DEAD ¿  찡 -_-;)
-	//  ȯ  ų,   ° ƴ϶  .
+	// 펫 주인이 죽었거나, 소환된 펫의 상태가 이상하다면 펫을 없앰. (NOTE: 가끔가다 이런 저런 이유로 소환된 펫이 DEAD 상태에 빠지는 경우가 있음-_-;)
+	// 펫을 소환한 아이템이 없거나, 내가 가진 상태가 아니라면 펫을 없앰.
 	if (m_pkOwner->IsDead() || (IsSummoned() && m_pkChar->IsDead()) 
 		|| NULL == ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())
 		|| ITEM_MANAGER::instance().FindByVID(this->GetSummonItemVID())->GetOwner() != this->GetOwner()
@@ -320,10 +320,10 @@ bool CPetActor::Update(DWORD deltaTime)
 	return bResult;
 }
 
-//NOTE : !!! MinDistance ũ   ŭ ȭ follow ʴ´,
+//NOTE : 주의!!! MinDistance를 크게 잡으면 그 변위만큼의 변화동안은 follow하지 않는다,
 bool CPetActor::Follow(float fMinDistance)
 {
-	//  ġ ٶ Ѵ.
+	// 가려는 위치를 바라봐야 한다.
 	if( !m_pkOwner || !m_pkChar) 
 		return false;
 
@@ -367,7 +367,7 @@ void CPetActor::SetSummonItem (LPITEM pItem)
 
 void CPetActor::GiveBuff()
 {
-	// Ȳ    ߻.
+	// 파황 펫 버프는 던전에서만 발생함.
 	if (34004 == m_dwVnum || 34009 == m_dwVnum)
 	{
 		if (NULL == m_pkOwner->GetDungeon())
@@ -432,15 +432,15 @@ void CPetSystem::Destroy()
 	m_petActorMap.clear();
 }
 
-///  ý Ʈ. ϵ  AI ó  .
+/// 펫 시스템 업데이트. 등록된 펫들의 AI 처리 등을 함.
 bool CPetSystem::Update(DWORD deltaTime)
 {
 	bool bResult = true;
 
 	DWORD currentTime = get_dword_time();
 
-	// CHARACTER_MANAGER ijͷ Update  Ű ִ (Pulse Ǿִ)  Ӱ ð ˾Ҵµ
-	//  ٸ ̶-_-; ⿡ Է  deltaTime ǹ̰ Ф	
+	// CHARACTER_MANAGER에서 캐릭터류 Update할 때 매개변수로 주는 (Pulse라고 되어있는)값이 이전 프레임과의 시간차이인줄 알았는데
+	// 전혀 다른 값이라서-_-; 여기에 입력으로 들어오는 deltaTime은 의미가 없음ㅠㅠ	
 	
 	if (m_dwUpdatePeriod > currentTime - m_dwLastUpdateTime)
 		return true;
@@ -473,7 +473,7 @@ bool CPetSystem::Update(DWORD deltaTime)
 	return bResult;
 }
 
-///  Ͽ  
+/// 관리 목록에서 펫을 지움
 void CPetSystem::DeletePet(DWORD mobVnum)
 {
 	TPetActorMap::iterator iter = m_petActorMap.find(mobVnum);
@@ -494,7 +494,7 @@ void CPetSystem::DeletePet(DWORD mobVnum)
 	m_petActorMap.erase(iter);	
 }
 
-///  Ͽ  
+/// 관리 목록에서 펫을 지움
 void CPetSystem::DeletePet(CPetActor* petActor)
 {
 	for (TPetActorMap::iterator iter = m_petActorMap.begin(); iter != m_petActorMap.end(); ++iter)
@@ -542,7 +542,7 @@ CPetActor* CPetSystem::Summon(DWORD mobVnum, LPITEM pSummonItem, const char* pet
 {
 	CPetActor* petActor = this->GetByVnum(mobVnum);
 
-	// ϵ  ƴ϶     Ͽ .
+	// 등록된 펫이 아니라면 새로 생성 후 관리 목록에 등록함.
 	if (0 == petActor)
 	{
 		petActor = M2_NEW CPetActor(m_pkOwner, mobVnum, options);
@@ -557,7 +557,7 @@ CPetActor* CPetSystem::Summon(DWORD mobVnum, LPITEM pSummonItem, const char* pet
 
 		info->pPetSystem = this;
 
-		m_pkPetSystemUpdateEvent = event_create(petsystem_update_event, info, PASSES_PER_SEC(1) / 4);	// 0.25	
+		m_pkPetSystemUpdateEvent = event_create(petsystem_update_event, info, PASSES_PER_SEC(1) / 4);	// 0.25초	
 	}
 
 	return petActor;
@@ -589,7 +589,7 @@ CPetActor* CPetSystem::GetByVID(DWORD vid) const
 	return bFound ? petActor : 0;
 }
 
-///    ߿ ־  VNUM  ͸ ȯϴ Լ.
+/// 등록 된 펫 중에서 주어진 몹 VNUM을 가진 액터를 반환하는 함수.
 CPetActor* CPetSystem::GetByVnum(DWORD vnum) const
 {
 	CPetActor* petActor = 0;
diff --git a/src/game/src/SpeedServer.cpp b/src/game/src/SpeedServer.cpp
index bd8c503..962359b 100644
--- a/src/game/src/SpeedServer.cpp
+++ b/src/game/src/SpeedServer.cpp
@@ -3,7 +3,7 @@
 #include "SpeedServer.h"
 #include "locale_service.h"
 
-// 赵  ʽ ġ ý
+// 쾌도 서버 보너스 경험치 시스템
 // by rtsummit
 
 CSpeedServerManager::CSpeedServerManager()
@@ -361,13 +361,13 @@ HME CSpeedServerEmpireExp::GetCurrentExpPriv(int &duration, bool &is_change)
 
 	HME hme;
 
-	//  ¥ holiday̸ holiday bonus Ѵ.
+	// 현재 날짜가 holiday이면 holiday bonus를 도입한다.
 	if (holi_it != holiday_map.end())
 	{
 		for (std::list ::iterator it = holi_it->second.begin();
 				it != wday_exp_table[datetime->tm_wday].end(); it++)
 		{
-			//  ð ð  ȿ ԵǸ,
+			// 현재 시각이 시간 구간 안에 포함되면,
 			if (total_sec < (it->hour * 3600 + it->min * 60 ))
 			{
 				hme = *it;
@@ -380,7 +380,7 @@ HME CSpeedServerEmpireExp::GetCurrentExpPriv(int &duration, bool &is_change)
 		for (std::list ::iterator it =  wday_exp_table[datetime->tm_wday].begin();
 				it != wday_exp_table[datetime->tm_wday].end(); it++)
 		{
-			//  ð ð  ȿ ԵǸ,
+			// 현재 시각이 시간 구간 안에 포함되면,
 			if (total_sec < (it->hour * 3600 + it->min * 60 ))
 			{
 				hme = *it;
diff --git a/src/game/src/ani.cpp b/src/game/src/ani.cpp
index 7f2469d..d49599b 100644
--- a/src/game/src/ani.cpp
+++ b/src/game/src/ani.cpp
@@ -55,7 +55,7 @@ const char* FN_weapon_type(int weapon)
 class ANI
 {
 	protected:
-		// [][Ϲ0Ż1][][޺]
+		// [종족][일반0탈것1][무기][콤보]
 		DWORD m_speed[MAIN_RACE_MAX_NUM][2][WEAPON_NUM_TYPES][9];
 
 	public:
@@ -126,14 +126,14 @@ ANI::ANI()
 bool ANI::load()
 {
 	const char*	dir_name[MAIN_RACE_MAX_NUM] = {
-		"data/pc/warrior",		// ()
-		"data/pc/assassin",		// ڰ()
-		"data/pc/sura",			// ()
-		"data/pc/shaman",		// ()
-		"data/pc2/warrior",		// ()
-		"data/pc2/assassin",	// ڰ()
-		"data/pc2/sura",		// ()
-		"data/pc2/shaman"		// ()
+		"data/pc/warrior",		// 무사(남)
+		"data/pc/assassin",		// 자객(여)
+		"data/pc/sura",			// 수라(남)
+		"data/pc/shaman",		// 무당(여)
+		"data/pc2/warrior",		// 무사(여)
+		"data/pc2/assassin",	// 자객(남)
+		"data/pc2/sura",		// 수라(여)
+		"data/pc2/shaman"		// 무당(남)
 	};
 
 	for (int race = 0; race GetPoint(POINT_ATT_SPEED));
 	*/
 
-	/* ڵ ҵ  ↓ݰ ¸ */
-	/*   Ѽհ ӵ        */
+	/* 투핸디드 소드의 경우 삼연참공격과 승마시 */
+	/* 오류가 많아 한손검 속도로 생각하자       */
 	if (weapon == WEAPON_TWO_HANDED)
 		weapon = WEAPON_SWORD;
 
diff --git a/src/game/src/arena.cpp b/src/game/src/arena.cpp
index 33068d4..ce3e994 100644
--- a/src/game/src/arena.cpp
+++ b/src/game/src/arena.cpp
@@ -290,7 +290,7 @@ EVENTFUNC(ready_to_start_event)
 				duelStart.header = HEADER_GC_DUEL_START;
 				duelStart.wSize = sizeof(TPacketGCDuelStart) + 4;
 
-				DWORD dwOppList[8]; // ִ Ƽ 8 ̹Ƿ..
+				DWORD dwOppList[8]; // 최대 파티원 8명 이므로..
 
 				dwOppList[0] = (DWORD)chB->GetVID();
 				TEMP_BUFFER buf;
@@ -339,7 +339,7 @@ EVENTFUNC(ready_to_start_event)
 
 				TEMP_BUFFER buf;
 				TEMP_BUFFER buf2;
-				DWORD dwOppList[8]; // ִ Ƽ 8 ̹Ƿ..
+				DWORD dwOppList[8]; // 최대 파티원 8명 이므로..
 				TPacketGCDuelStart duelStart;
 				duelStart.header = HEADER_GC_DUEL_START;
 				duelStart.wSize = sizeof(TPacketGCDuelStart) + 4;
@@ -678,7 +678,7 @@ bool CArenaMap::CanAttack(LPCHARACTER pCharAttacker, LPCHARACTER pCharVictim)
 
 bool CArena::CanAttack(DWORD dwPIDA, DWORD dwPIDB)
 {
-	// 1:1  ٴ    ʿ
+	// 1:1 전용 다대다 할 경우 수정 필요
 	if (m_dwPIDA == dwPIDA && m_dwPIDB == dwPIDB) return true;
 	if (m_dwPIDA == dwPIDB && m_dwPIDB == dwPIDA) return true;
 
@@ -728,7 +728,7 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 
 	if (pCharA == NULL && pCharB == NULL)
 	{
-		// Ѵ   ?!
+		// 둘다 접속이 끊어졌다 ?!
 		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
 		restart = false;
 	}
@@ -811,7 +811,7 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	}
 	else
 	{
-		//  ȵȴ ?!
+		// 오면 안된다 ?!
 	}
 
 	if (restart == false)
diff --git a/src/game/src/auction_manager.cpp b/src/game/src/auction_manager.cpp
index 12a405c..801a657 100644
--- a/src/game/src/auction_manager.cpp
+++ b/src/game/src/auction_manager.cpp
@@ -215,7 +215,7 @@ void AuctionBoard::YourItemInfoList (TItemInfoVec& vec, DWORD player_id, int sta
 }
 
 // 0~1, 2~3, 4~5, 6~7, 8~9
-// ¦ descending, Ȧ accending.
+// 짝수면 descending, 홀수면 accending.
 struct FCheckGradeSatisfied
 {
 	BYTE grade;
@@ -796,7 +796,7 @@ void AuctionManager::YourBidItemInfoList (AuctionBoard::TItemInfoVec& vec, DWORD
 		}
 		else
 		{
-			// expired  ⼭ ־Ѵ.
+			// expired 만들고 여기서 넣어야한다.
 		}
 	}
 }
@@ -975,7 +975,7 @@ void AuctionManager::bid (LPCHARACTER ch, DWORD item_id, int bid_price)
 }
 
 // fixme
-// ݵ !!!
+// 반드시 돈!!!
 void AuctionManager::immediate_purchase (LPCHARACTER ch, DWORD item_id)
 {
 	TAuctionItemInfo* item_info = GetAuctionItemInfo (item_id);
@@ -1005,7 +1005,7 @@ void AuctionManager::immediate_purchase (LPCHARACTER ch, DWORD item_id)
 	db_clientdesc->DBPacket(HEADER_GD_COMMAND_AUCTION, ch->GetPlayerID(), &pack_impur, sizeof(TPacketGDCommnadAuction));
 }
 
-// 
+// 시작
 void AuctionManager::get_auctioned_item (LPCHARACTER ch, DWORD item_id, DWORD item_num)
 {
 	TItemTable* proto = ITEM_MANAGER::instance().GetTable(item_num);
@@ -1120,7 +1120,7 @@ void AuctionManager::bid_cancel (LPCHARACTER ch, DWORD item_id)
 	db_clientdesc->DBPacket(HEADER_GD_COMMAND_AUCTION, ch->GetPlayerID(), &pack_bc, sizeof(TPacketGDCommnadAuction));
 }
 
-// 
+// 끝
 void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuction* cmd_result)
 {
 	LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(commander_id);
@@ -1354,7 +1354,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 		}
 		else
 		{
-			// insertϸ lock Ǯ.
+			// insert하면 lock이 풀린다.
 			DWORD item_id = cmd_result->target;
 			cmd_result++;
 			TAuctionItemInfo* auction_info = (TAuctionItemInfo*)cmd_result;
diff --git a/src/game/src/banword.cpp b/src/game/src/banword.cpp
index 816b7c1..5fb782a 100644
--- a/src/game/src/banword.cpp
+++ b/src/game/src/banword.cpp
@@ -3,7 +3,7 @@
 #include "banword.h"
 #include "config.h"
 
-extern void SendLog(const char * c_pszBuf);		// ڿԸ 
+extern void SendLog(const char * c_pszBuf);		// 운영자에게만 공지
 
 CBanwordManager::CBanwordManager()
 {
diff --git a/src/game/src/battle.cpp b/src/game/src/battle.cpp
index 8f9bf3a..b689003 100644
--- a/src/game/src/battle.cpp
+++ b/src/game/src/battle.cpp
@@ -46,7 +46,7 @@ bool timed_event_cancel(LPCHARACTER ch)
 	}
 
 	/* RECALL_DELAY
-	      ȯ ̰  Ǿ   ּ 
+	   차후 전투로 인해 귀환부 딜레이가 취소 되어야 할 경우 주석 해제
 	   if (ch->m_pk_RecallEvent)
 	   {
 	   event_cancel(&ch->m_pkRecallEvent);
@@ -59,11 +59,11 @@ bool timed_event_cancel(LPCHARACTER ch)
 
 bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)
 {
-	//  ׾ ߴѴ.
+	// 상대방이 죽었으면 중단한다.
 	if (victim->IsDead())
 		return false;
 
-	//  ߴ
+	// 안전지대면 중단
 	{
 		SECTREE	*sectree = NULL;
 
@@ -77,7 +77,7 @@ bool battle_is_attackable(LPCHARACTER ch, LPCHARACTER victim)
 	}
 	
 
-	//  ׾ ߴѴ.
+	// 내가 죽었으면 중단한다.
 	if (ch->IsStun() || ch->IsDead())
 		return false;
 
@@ -119,7 +119,7 @@ int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
 	if (test_server&&ch->IsPC())
         SPDLOG_TRACE("battle_melee_attack : [{}] attack to [{}]", ch->GetName(), victim->GetName());
 
-	// Ÿ üũ
+	// 거리 체크
 	int distance = DISTANCE_APPROX(ch->GetX() - victim->GetX(), ch->GetY() - victim->GetY());
 
 	if (!victim->IsBuilding())
@@ -128,12 +128,12 @@ int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
 	
 		if (false == ch->IsPC())
 		{
-			//     Ÿ 
+			// 몬스터의 경우 몬스터 공격 거리를 사용
 			max = (int) (ch->GetMobAttackRange() * 1.15f);
 		}
 		else
 		{
-			// PC  밡 melee     Ÿ ִ  Ÿ
+			// PC일 경우 상대가 melee 몹일 경우 몹의 공격 거리가 최대 공격 거리
 			if (false == victim->IsPC() && BATTLE_TYPE_MELEE == victim->GetMobBattleType())
 				max = std::max(300, (int) (victim->GetMobAttackRange() * 1.15f));
 		}
@@ -161,7 +161,7 @@ int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
 	return battle_hit(ch, victim);
 }
 
-//  GET_BATTLE_VICTIM NULL  ̺Ʈ ĵ Ų.
+// 실제 GET_BATTLE_VICTIM을 NULL로 만들고 이벤트를 캔슬 시킨다.
 void battle_end_ex(LPCHARACTER ch)
 {
 	if (ch->IsPosition(POS_FIGHTING))
@@ -208,7 +208,7 @@ float CalcAttackRating(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, bool bIgnor
 	int iARSrc;
 	int iERSrc;
 
-	if (LC_IsYMIR()) // õ
+	if (LC_IsYMIR()) // 천마
 	{
 		iARSrc = std::min(90, pkAttacker->GetPolymorphPoint(POINT_DX));
 		iERSrc = std::min(90, pkVictim->GetPolymorphPoint(POINT_DX));
@@ -238,11 +238,11 @@ float CalcAttackRating(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, bool bIgnor
 
 int CalcAttBonus(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, int iAtk)
 {
-	// PvP 
+	// PvP에는 적용하지않음
 	if (!pkVictim->IsPC())
 		iAtk += pkAttacker->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_ATTACK_BONUS);
 
-	// PvP 
+	// PvP에는 적용하지않음
 	if (!pkAttacker->IsPC())
 	{
 		int iReduceDamagePct = pkVictim->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_TRANSFER_DAMAGE);
@@ -327,9 +327,9 @@ int CalcAttBonus(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, int iAtk)
 		}
 	}
 
-	//[ mob -> PC ]  Ӽ  
+	//[ mob -> PC ] 원소 속성 방어 적용
 	//2013/01/17
-	// Ӽ  30% شϴ ġ  .
+	//몬스터 속성공격 데미지의 30%에 해당하는 수치에만 저항이 적용됨.
 	if (pkAttacker->IsNPC() && pkVictim->IsPC())
 	{
 		if (pkAttacker->IsRaceFlag(RACE_FLAG_ATT_ELEC))
@@ -553,7 +553,7 @@ int CalcArrowDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, LPITEM pkBow,
 	if (!pkArrow)
 		return 0;
 
-	// Ÿġ 
+	// 타격치 계산부
 	int iDist = (int) (DISTANCE_SQRT(pkAttacker->GetX() - pkVictim->GetX(), pkAttacker->GetY() - pkVictim->GetY()));
 	//int iGap = (iDist / 100) - 5 - pkBow->GetValue(5) - pkAttacker->GetPoint(POINT_BOW_DISTANCE);
 	int iGap = (iDist / 100) - 5 - pkAttacker->GetPoint(POINT_BOW_DISTANCE);
@@ -613,7 +613,7 @@ int CalcArrowDamage(LPCHARACTER pkAttacker, LPCHARACTER pkVictim, LPITEM pkBow,
 
 void NormalAttackAffect(LPCHARACTER pkAttacker, LPCHARACTER pkVictim)
 {
-	//   ƯϹǷ Ư ó
+	// 독 공격은 특이하므로 특수 처리
 	if (pkAttacker->GetPoint(POINT_POISON_PCT) && !pkVictim->IsAffectFlag(AFF_POISON))
 	{
 		if (Random::get(1, 100) <= pkAttacker->GetPoint(POINT_POISON_PCT))
@@ -637,7 +637,7 @@ int battle_hit(LPCHARACTER pkAttacker, LPCHARACTER pkVictim)
 
 	NormalAttackAffect(pkAttacker, pkVictim);
 
-	//  
+	// 데미지 계산
 	//iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST)) / 100;
 	LPITEM pkWeapon = pkAttacker->GetWear(WEAR_WEAPON);
 
@@ -670,7 +670,7 @@ int battle_hit(LPCHARACTER pkAttacker, LPCHARACTER pkVictim)
 		}
 
 
-	//  . (2011 2  հŹ̿Ը .)
+	//최종적인 데미지 보정. (2011년 2월 현재 대왕거미에게만 적용.)
 	float attMul = pkAttacker->GetAttMul();
 	float tempIDam = iDam;
 	iDam = attMul * tempIDam + 0.5f;
@@ -691,19 +691,19 @@ DWORD GET_ATTACK_SPEED(LPCHARACTER ch)
         return 1000;
 
 	LPITEM item = ch->GetWear(WEAR_WEAPON);	
-	DWORD default_bonus = SPEEDHACK_LIMIT_BONUS * 3;    // θ (⺻ 80) (Ϲ  speed hack  ɸ    *3 ߰. 2013.09.11 CYH)
+	DWORD default_bonus = SPEEDHACK_LIMIT_BONUS * 3;    // 유두리 공속(기본 80) (일반 유저가 speed hack 에 걸리는 것을 막기 위해 *3 추가. 2013.09.11 CYH)
 	DWORD riding_bonus = 0;
 
 	if (ch->IsRiding())
 	{
-		//   ߰ 50
+		// 뭔가를 탔으면 추가공속 50
 		riding_bonus = 50;
 	}
 
 	DWORD ani_speed = ani_attack_speed(ch);
     DWORD real_speed = (ani_speed * 100) / (default_bonus + ch->GetPoint(POINT_ATT_SPEED) + riding_bonus);
 
-	// ܰ   2
+	// 단검의 경우 공속 2배
 	if (item && item->GetSubType() == WEAPON_DAGGER)
 		real_speed /= 2;
 
diff --git a/src/game/src/blend_item.cpp b/src/game/src/blend_item.cpp
index d803ca5..71fe401 100644
--- a/src/game/src/blend_item.cpp
+++ b/src/game/src/blend_item.cpp
@@ -170,10 +170,10 @@ static int FN_random_index()
 	return 0;
 }
 
-// ȯ Ȯ ̺
-// blend.txt Ȯ ޵ ġ ϰ
-//  󺰷 item proto   ϹǷ,
-// ȥ   ־ ̷ ߰Ѵ.
+// 충기환의 확률 테이블
+// blend.txt에서 확률도 받도록 고치면 깔끔하겠지만
+// 각 나라별로 item proto 등을 따로 관리하므로,
+// 혼란이 올 수 있어 이렇게 추가한다.
 // by rtsummit
 
 static int FN_ECS_random_index()
diff --git a/src/game/src/block_country.cpp b/src/game/src/block_country.cpp
index 6a1b70a..38951d8 100644
--- a/src/game/src/block_country.cpp
+++ b/src/game/src/block_country.cpp
@@ -119,7 +119,7 @@ bool is_blocked_country_ip(const char *user_ip)
 #endif
 	{
 		SPDLOG_INFO("BLOCKED_COUNTRY_IP ({}) : YES", user_ip);
-		return true;	// ǰ ϴ ϴ ó
+		return true;	// 아이피가 괴상하니 일단 블럭처리
 	}
 	ip_number = htonl(st_addr.s_addr);
 
diff --git a/src/game/src/buff_on_attributes.cpp b/src/game/src/buff_on_attributes.cpp
index 1a44446..4a91f8a 100644
--- a/src/game/src/buff_on_attributes.cpp
+++ b/src/game/src/buff_on_attributes.cpp
@@ -39,8 +39,8 @@ void CBuffOnAttributes::RemoveBuffFromItem(LPITEM pItem)
 		{
 			TPlayerItemAttribute attr = pItem->GetAttribute(j);
 			TMapAttr::iterator it = m_map_additional_attrs.find(attr.bType);
-			// m_map_additional_attrs ش attribute type   ϰ,
-			//   (m_bBuffValue)%ŭ  ȿ 
+			// m_map_additional_attrs에서 해당 attribute type에 대한 값을 제거하고,
+			// 변경된 값의 (m_bBuffValue)%만큼의 버프 효과 감소
 			if (it != m_map_additional_attrs.end())
 			{
 				int& sum_of_attr_value = it->second;
@@ -76,15 +76,15 @@ void CBuffOnAttributes::AddBuffFromItem(LPITEM pItem)
 			TPlayerItemAttribute attr = pItem->GetAttribute(j);
 			TMapAttr::iterator it = m_map_additional_attrs.find(attr.bType);
 			
-			// m_map_additional_attrs ش attribute type   ٸ ߰.
-			// ߰  (m_bBuffValue)%ŭ  ȿ ߰
+			// m_map_additional_attrs에서 해당 attribute type에 대한 값이 없다면 추가.
+			// 추가된 값의 (m_bBuffValue)%만큼의 버프 효과 추가
 			if (it == m_map_additional_attrs.end())
 			{
 				m_pBuffOwner->ApplyPoint(attr.bType, attr.sValue * m_bBuffValue / 100);
 				m_map_additional_attrs.insert(TMapAttr::value_type(attr.bType, attr.sValue));
 			}
-			// m_map_additional_attrs ش attribute type   ִٸ,   Ű,
-			//   (m_bBuffValue)%ŭ  ȿ ߰
+			// m_map_additional_attrs에서 해당 attribute type에 대한 값이 있다면, 그 값을 증가시키고,
+			// 변경된 값의 (m_bBuffValue)%만큼의 버프 효과 추가
 			else
 			{
 				int& sum_of_attr_value = it->second;
@@ -105,8 +105,8 @@ void CBuffOnAttributes::ChangeBuffValue(BYTE bNewValue)
 		Off();
 	else
 	{
-		// , m_map_additional_attrs  (m_bBuffValue)%ŭ   ־Ƿ,
-		// (bNewValue)%ŭ  .
+		// 기존에, m_map_additional_attrs의 값의 (m_bBuffValue)%만큼이 버프로 들어가 있었으므로,
+		// (bNewValue)%만큼으로 값을 변경함.
 		for (TMapAttr::iterator it = m_map_additional_attrs.begin(); it != m_map_additional_attrs.end(); it++)
 		{
 			int& sum_of_attr_value = it->second;
diff --git a/src/game/src/building.cpp b/src/game/src/building.cpp
index 509f518..9773964 100644
--- a/src/game/src/building.cpp
+++ b/src/game/src/building.cpp
@@ -112,7 +112,7 @@ void CObject::EncodeInsertPacket(LPENTITY entity)
 	pack.z              = GetZ();
 	pack.wRaceNum       = m_data.dwVnum;
 
-	//  ȸ (϶  ġ) ȯ
+	// 빌딩 회전 정보(벽일때는 문 위치)를 변환
 	pack.dwAffectFlag[0] = unsigned(m_data.xRot);
 	pack.dwAffectFlag[1] = unsigned(m_data.yRot);
 
@@ -298,7 +298,7 @@ void CObject::RegenNPC()
 
 	m_chNPC->SetGuild(pGuild);
 
-	//      渶 س´
+	// 힘의 신전일 경우 길드 레벨을 길마에게 저장해놓는다
 	if ( m_pProto->dwVnum == 14061 || m_pProto->dwVnum == 14062 || m_pProto->dwVnum == 14063 )
 	{
 		quest::PC* pPC = quest::CQuestManager::instance().GetPC(pGuild->GetMasterPID());
@@ -690,10 +690,10 @@ TObjectProto * CManager::GetObjectProto(DWORD dwVnum)
 
 bool CManager::LoadLand(TLand * pTable) // from DB
 {
-	// MapAllow    load ؾѴ.
-	//	ǹ(object)  忡  ִ ˱ ؼ ǹ     Ҽ ˾Ѵ.
-	//	  load    ǹ  忡 Ҽӵ   ؼ
-	//	 ǹ     Ѵ.
+	// MapAllow에 없는 맵의 땅일지라도 load를 해야한다.
+	//	건물(object)이 어느 길드에 속해 있는지 알기 위해서는 건물이 세위진 땅이 어느 길드 소속인지 알아한다.
+	//	만약 땅을 load해 놓지 않으면 길드 건물이 어느 길드에 소속된 건지 알지 못해서
+	//	길드 건물에 의한 길드 버프를 받지 못한다.
 	//if (!map_allow_find(pTable->lMapIndex))
 	//	return false;
 
@@ -1098,7 +1098,7 @@ bool CLand::RequestCreateWall(int nMapIndex, float rot)
 	int wall_half_w = 1000;
 	int wall_half_h = 1362;
 
-	if (rot == 0.0f) 		//  
+	if (rot == 0.0f) 		// 남쪽 문
 	{
 		int door_x = wall_x;
 		int door_y = wall_y + wall_half_h;
@@ -1107,7 +1107,7 @@ bool CLand::RequestCreateWall(int nMapIndex, float rot)
 		RequestCreateObject(WALL_LEFT_VNUM,	nMapIndex, wall_x - wall_half_w, wall_y, door_x, door_y,   0.0f, WALL_ANOTHER_CHECKING_ENABLE);
 		RequestCreateObject(WALL_RIGHT_VNUM,	nMapIndex, wall_x + wall_half_w, wall_y, door_x, door_y,   0.0f, WALL_ANOTHER_CHECKING_ENABLE);
 	}	
-	else if (rot == 180.0f)		//  
+	else if (rot == 180.0f)		// 북쪽 문
 	{
 		int door_x = wall_x;
 		int door_y = wall_y - wall_half_h;
@@ -1116,7 +1116,7 @@ bool CLand::RequestCreateWall(int nMapIndex, float rot)
 		RequestCreateObject(WALL_LEFT_VNUM,	nMapIndex, wall_x - wall_half_w, wall_y, door_x, door_y,   0.0f, WALL_ANOTHER_CHECKING_ENABLE);
 		RequestCreateObject(WALL_RIGHT_VNUM,	nMapIndex, wall_x + wall_half_w, wall_y, door_x, door_y,   0.0f, WALL_ANOTHER_CHECKING_ENABLE);
 	}
-	else if (rot == 90.0f)		//   
+	else if (rot == 90.0f)		// 동쪽 문 
 	{
 		int door_x = wall_x + wall_half_h;
 		int door_y = wall_y;
@@ -1125,7 +1125,7 @@ bool CLand::RequestCreateWall(int nMapIndex, float rot)
 		RequestCreateObject(WALL_LEFT_VNUM,	nMapIndex, wall_x, wall_y - wall_half_w, door_x, door_y,  90.0f, WALL_ANOTHER_CHECKING_ENABLE);
 		RequestCreateObject(WALL_RIGHT_VNUM,	nMapIndex, wall_x, wall_y + wall_half_w, door_x, door_y,  90.0f, WALL_ANOTHER_CHECKING_ENABLE);
 	}
-	else if (rot == 270.0f)		//   
+	else if (rot == 270.0f)		// 서쪽 문 
 	{
 		int door_x = wall_x - wall_half_h;
 		int door_y = wall_y;
diff --git a/src/game/src/castle.cpp b/src/game/src/castle.cpp
index ff6e96d..bd673e2 100644
--- a/src/game/src/castle.cpp
+++ b/src/game/src/castle.cpp
@@ -3,8 +3,8 @@
  * file        : castle.cpp
  * author      : mhh
  * description : 
- * ȭ ȣ   : 11506 - 11510
- * ƾ ȣ : 8012 - 8014, 8024-8027
+ * 봉화 번호   : 11506 - 11510
+ * 메틴석 번호 : 8012 - 8014, 8024-8027
  */
 
 #define _castle_cpp_
@@ -21,13 +21,13 @@
 #include "char.h"
 #include "sectree_manager.h"
 
-#define EMPIRE_NONE		0	// ƹ ƴ
-#define EMPIRE_RED		1	// ż
-#define EMPIRE_YELLOW	2	// õ
-#define EMPIRE_BLUE		3	// 
+#define EMPIRE_NONE		0	// 아무국가 아님
+#define EMPIRE_RED		1	// 신수
+#define EMPIRE_YELLOW	2	// 천조
+#define EMPIRE_BLUE		3	// 진노
 
 
-#define SIEGE_EVENT_PULSE	PASSES_PER_SEC(60*5)	// 5
+#define SIEGE_EVENT_PULSE	PASSES_PER_SEC(60*5)	// 5분
 
 
 #define GET_CAHR_MANAGER()								CHARACTER_MANAGER::instance()
@@ -171,7 +171,7 @@ static POSITION	s_frog_pos[4][MAX_CASTLE_FROG] = {
 };
 
 
-/*  񱸿 */
+/* 경비병 경비구역 */
 struct GUARD_REGION
 {
 	int	sx, sy, ex, ey;
@@ -247,7 +247,7 @@ EVENTFUNC(castle_siege_event)
 
 	info->pulse += SIEGE_EVENT_PULSE;
 
-	//   30 ̳ ȳ 
+	// 공성 시작후 30분 이내라면 안내만 하자
 	if (info->pulse < PASSES_PER_SEC(30*60))
 	{
 		snprintf(buf, sizeof(buf), LC_TEXT("%s\xBF\xA1\xBC\xAD \xBA\xC0\xC8\xAD\xB8\xA6 \xB5\xD1\xB7\xAF\xBD\xCE\xB0\xED \xC0\xFC\xC5\xF5\xB0\xA1 \xC1\xF8\xC7\xE0\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."),
@@ -272,7 +272,7 @@ EVENTFUNC(castle_siege_event)
 
 				GET_SIEGE_STATE() = CASTLE_SIEGE_END;
 
-				return PASSES_PER_SEC(60*30);	// 30
+				return PASSES_PER_SEC(60*30);	// 30분
 			}
 			break;
 		case CASTLE_SIEGE_END:
@@ -331,7 +331,7 @@ EVENTFUNC(castle_stone_event)
 	if (NULL == sectree_map)
 		return 0;
 
-	/* 15  2 ȯ */
+	/* 15마리씩  2번 소환 */
 	const int SPAWN_COUNT = 15;
 
 	if (info->spawn_count < (SPAWN_COUNT * 2))
@@ -351,7 +351,7 @@ EVENTFUNC(castle_stone_event)
 		info->spawn_count += SPAWN_COUNT;
 
 		if (info->spawn_count < (SPAWN_COUNT * 2))
-			return PASSES_PER_SEC(30 * 60);	// 30
+			return PASSES_PER_SEC(30 * 60);	// 30분
 		else
 			return 0;
 	}
@@ -598,24 +598,24 @@ void castle_start_siege(int empire, int tower_count)
 
 	castle_spawn_tower(empire, tower_count);
 
-	/*  Ÿ̸  */
+	/* 공성 타이머 시작 */
 	{
 		castle_event_info* info = AllocEventInfo();
 
 		info->empire = empire;
 		info->pulse	= 0;
 
-		GET_SIEGE_EVENT(empire) = event_create(castle_siege_event, info, /*5*/SIEGE_EVENT_PULSE);
+		GET_SIEGE_EVENT(empire) = event_create(castle_siege_event, info, /*5분*/SIEGE_EVENT_PULSE);
 	}
 
-	/* ƾ ȯ Ÿ̸  */
+	/* 메틴석 소환 타이머 시작 */
 	{
 		castle_stone_event_info* info = AllocEventInfo();
 
 		info->spawn_count = 0;
 		info->empire = empire;
 
-		GET_STONE_EVENT(empire) = event_create(castle_stone_event, info, /* 1 */PASSES_PER_SEC(1));
+		GET_STONE_EVENT(empire) = event_create(castle_stone_event, info, /* 1초 */PASSES_PER_SEC(1));
 	}
 }
 
@@ -649,7 +649,7 @@ LPCHARACTER castle_spawn_frog(int empire)
 	int		dir = 1;
 	int	map_index	= FN_castle_map_index(empire);
 
-	/* Ȳݵβ ȯ  ֳ? */
+	/* 황금두꺼비 소환할 곳이 있나? */
 	POSITION	*empty_pos = FN_empty_frog_pos(empire);
 	if (NULL == empty_pos)
 		return NULL;
@@ -667,7 +667,7 @@ LPCHARACTER castle_spawn_frog(int empire)
 	{
 		frog->SetEmpire(empire);
 		int empty_index	= FN_empty_frog_index(empire);
-		// 
+		// 스폰성공
 		GET_FROG(empire, empty_index) = frog;
 		return frog;
 	}
@@ -778,7 +778,7 @@ bool castle_spawn_tower(int empire, int tower_count)
 	if (NULL == sectree_map)
 		return false;
 
-	// ʱȭ
+	// 초기화
 	DO_ALL_TOWER(i)
 	{
 		if (GET_TOWER(empire, i))
@@ -786,7 +786,7 @@ bool castle_spawn_tower(int empire, int tower_count)
 		GET_TOWER(empire, i) = NULL;
 	}
 
-	int	spawn_count = std::clamp(tower_count, MIN_CASTLE_TOWER, MAX_CASTLE_TOWER);	// 5 ~ 10
+	int	spawn_count = std::clamp(tower_count, MIN_CASTLE_TOWER, MAX_CASTLE_TOWER);	// 5 ~ 10마리
 
 	for (int j = 0; j < spawn_count; ++j)
 	{
@@ -802,7 +802,7 @@ bool castle_spawn_tower(int empire, int tower_count)
 	return true;
 }
 
-/* 񺴸  ܼϰ Ը . */
+/* 경비병리더가 죽으면 단순하게 슬롯만 비운다. */
 void castle_guard_die(LPCHARACTER ch, LPCHARACTER killer)
 {
 	int	empire = ch->GetEmpire();
@@ -823,7 +823,7 @@ void castle_guard_die(LPCHARACTER ch, LPCHARACTER killer)
 }
 
 
-/* Ȳ β  killer 1õ */
+/* 황금 두꺼비가 죽으면 killer에게 1천만냥 */
 void castle_frog_die(LPCHARACTER ch, LPCHARACTER killer)
 {
 	if (NULL == ch || NULL == killer)
@@ -837,15 +837,15 @@ void castle_frog_die(LPCHARACTER ch, LPCHARACTER killer)
 		{
 			GET_FROG(empire, i) = NULL;
 
-			killer->PointChange(POINT_GOLD, 10000000 /*1õ*/, true);
-			//CMonarch::instance().SendtoDBAddMoney(30000000/*3õ*/, killer->GetEmpire(), killer);
+			killer->PointChange(POINT_GOLD, 10000000 /*1천만*/, true);
+			//CMonarch::instance().SendtoDBAddMoney(30000000/*3천만*/, killer->GetEmpire(), killer);
 			castle_save();
 			return;
 		}
 	}
 }
 
-/* ȭ  (?)   */
+/* 봉화가 모두 죽으면(?) 공성전이 끝난다 */
 void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
 {
 	char	buf[1024] = {0};
@@ -929,27 +929,27 @@ bool castle_is_guard_vnum(DWORD vnum)
 {
 	switch (vnum)
 	{
-		/*  â */
+		/* 상급 창경비병 */
 		case 11112:
 		case 11114:
 		case 11116:
-		/* ߱ â */
+		/* 중급 창경비병 */
 		case 11106:
 		case 11108:
 		case 11110:
-		/* ϱ â */
+		/* 하급 창경비병 */
 		case 11100:
 		case 11102:
 		case 11104:
-		/*  Ȱ */
+		/* 상급 활경비병 */
 		case 11113:
 		case 11115:
 		case 11117:
-		/* ߱ Ȱ */
+		/* 중급 활경비병 */
 		case 11107:
 		case 11109:
 		case 11111:
-		/* ϱ Ȱ */
+		/* 하급 활경비병 */
 		case 11101:
 		case 11103:
 		case 11105:
@@ -963,34 +963,34 @@ int castle_cost_of_hiring_guard(DWORD group_vnum)
 {
 	switch (group_vnum)
 	{
-		/* ϱ */
-		case 9501:	/* ż â */
-		case 9511:	/*  â */
-		case 9521:	/* õ â */
+		/* 하급 */
+		case 9501:	/* 신수 창경비 */
+		case 9511:	/* 진노 창경비 */
+		case 9521:	/* 천조 창경비 */
 
-		case 9502:	/* ż Ȱ */
-		case 9512:	/*  Ȱ */
-		case 9522:	/* õ Ȱ */
+		case 9502:	/* 신수 활경비 */
+		case 9512:	/* 진노 활경비 */
+		case 9522:	/* 천조 활경비 */
 			return (100*10000);
 
-		/* ߱ */
-		case 9503:	/* ż â */
-		case 9513:	/*  â */
-		case 9523:	/* õ â */
+		/* 중급 */
+		case 9503:	/* 신수 창경비 */
+		case 9513:	/* 진노 창경비 */
+		case 9523:	/* 천조 창경비 */
 
-		case 9504:	/* ż Ȱ */
-		case 9514:	/*  Ȱ */
-		case 9524:	/* õ Ȱ */
+		case 9504:	/* 신수 활경비 */
+		case 9514:	/* 진노 활경비 */
+		case 9524:	/* 천조 활경비 */
 			return (300*10000);
 
-		/*  */
-		case 9505:	/* ż â */
-		case 9515:	/*  â */
-		case 9525:	/* õ â */
+		/* 상급 */
+		case 9505:	/* 신수 창경비 */
+		case 9515:	/* 진노 창경비 */
+		case 9525:	/* 천조 창경비 */
 
-		case 9506:	/* ż Ȱ */
-		case 9516:	/*  Ȱ */
-		case 9526:	/* õ Ȱ */
+		case 9506:	/* 신수 활경비 */
+		case 9516:	/* 진노 활경비 */
+		case 9526:	/* 천조 활경비 */
 			return (1000*10000);
 	}
 
@@ -1010,7 +1010,7 @@ bool castle_can_attack(LPCHARACTER ch, LPCHARACTER victim)
 
 	if (CASTLE_SIEGE_END == GET_SIEGE_STATE())
 	{
-		//     ȭ ĥ  
+		// 수성에 성공했을때 같은 제국만 봉화를 칠 수 있음
 		if (castle_is_tower_vnum(victim->GetRaceNum()))
 		{
 			if (ch->GetEmpire() == victim->GetEmpire())
@@ -1020,7 +1020,7 @@ bool castle_can_attack(LPCHARACTER ch, LPCHARACTER victim)
 		}
 	}
 
-	//   ı Ұ
+	// 같은 제국은 파괴 불가
 	if (ch->GetEmpire() == victim->GetEmpire())
 		return false;
 
@@ -1044,7 +1044,7 @@ bool castle_frog_to_empire_money(LPCHARACTER ch)
 		if (false == CMonarch::instance().SendtoDBAddMoney(CASTLE_FROG_PRICE, empire, ch))
 			return false;
 
-		GET_FROG(empire, i) = NULL; // 
+		GET_FROG(empire, i) = NULL; // 등록해제
 		npc->Dead(/*killer*/NULL, /*immediate_dead*/true);
 		return true;
 	}
diff --git a/src/game/src/char.cpp b/src/game/src/char.cpp
index 4218c31..d95176b 100644
--- a/src/game/src/char.cpp
+++ b/src/game/src/char.cpp
@@ -465,7 +465,7 @@ void CHARACTER::Destroy()
 				party->Quit(GetVID());
 		}
 
-		SetParty(NULL); // ���ص� ������ �����ϰ�.
+		SetParty(NULL); // 안해도 되지만 안전하게.
 	}
 
 	if (m_pkMobInst)
@@ -563,16 +563,16 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 		return;
 	}
 
-	if (GetMyShop())	// �̹� ���� ���� ������ �ݴ´�.
+	if (GetMyShop())	// 이미 샵이 열려 있으면 닫는다.
 	{
 		CloseMyShop();
 		return;
 	}
 
-	// �������� ����Ʈ�� ������ ������ �� �� ����.
+	// 진행중인 퀘스트가 있으면 상점을 열 수 없다.
 	quest::PC * pPC = quest::CQuestManager::instance().GetPCForce(GetPlayerID());
 
-	// GetPCForce�� NULL�� �� �����Ƿ� ���� Ȯ������ ����
+	// GetPCForce는 NULL일 수 없으므로 따로 확인하지 않음
 	if (pPC->IsRunning())
 		return;
 
@@ -613,7 +613,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	}
 
 	// MYSHOP_PRICE_LIST
-	std::map itemkind;  // ������ ������ ����, first: vnum, second: ���� ���� ����
+	std::map itemkind;  // 아이템 종류별 가격, first: vnum, second: 단일 수량 가격
 	// END_OF_MYSHOP_PRICE_LIST	
 
 	std::set cont;
@@ -659,11 +659,11 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	}
 
 	// MYSHOP_PRICE_LIST
-	// ������ ������ ���ҽ�Ų��. 
-	if (CountSpecifyItem(71049)) { // ��� �������� ������ �ʰ� ���������� �����Ѵ�.
+	// 보따리 개수를 감소시킨다. 
+	if (CountSpecifyItem(71049)) { // 비단 보따리는 없애지 않고 가격정보를 저장한다.
 
 		//
-		// ������ ���������� �����ϱ� ���� ������ �������� ��Ŷ�� ����� DB ij�ÿ� ������.
+		// 아이템 가격정보를 저장하기 위해 아이템 가격정보 패킷을 만들어 DB 캐시에 보낸다.
 		//
 		TPacketMyshopPricelistHeader header;
 		TItemPriceInfo info;
@@ -688,7 +688,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	else if (CountSpecifyItem(50200))
 		RemoveSpecifyItem(50200, 1);
 	else
-		return; // �������� ������ �ߴ�.
+		return; // 보따리가 없으면 중단.
 
 	if (m_pkExchange)
 		m_pkExchange->Cancel();
@@ -712,8 +712,8 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	{
 		HorseSummon( false, true );
 	}
-	// new mount �̿� �߿�, ���� ���� ���� �ڵ� unmount
-	// StopRiding���� ������Ʈ���� ó���ϸ� ������ �� �׷��� ���س����� �� �� ����.
+	// new mount 이용 중에, 개인 상점 열면 자동 unmount
+	// StopRiding으로 뉴마운트까지 처리하면 좋은데 왜 그렇게 안해놨는지 알 수 없다.
 	else if (GetMountVnum())
 	{
 		RemoveAffect(AFFECT_MOUNT);
@@ -796,7 +796,7 @@ void CHARACTER::RestartAtSamePos()
 }
 
 
-// Entity�� ���� ��Ÿ���ٰ� ��Ŷ�� ������.
+// Entity에 내가 나타났다고 패킷을 보낸다.
 void CHARACTER::EncodeInsertPacket(LPENTITY entity)
 {
 
@@ -805,10 +805,10 @@ void CHARACTER::EncodeInsertPacket(LPENTITY entity)
 	if (!(d = entity->GetDesc()))
 		return;
 
-	// ����̸� ���� ���� �ڵ�
+	// 길드이름 버그 수정 코드
 	LPCHARACTER ch = (LPCHARACTER) entity;
 	ch->SendGuildName(GetGuild());
-	// ����̸� ���� ���� �ڵ�
+	// 길드이름 버그 수정 코드
 
 	TPacketGCCharacterAdd pack;
 
@@ -1267,7 +1267,7 @@ void CHARACTER::SaveReal()
 
 void CHARACTER::FlushDelayedSaveItem()
 {
-	// ���� �ȵ� ����ǰ�� ���� �����Ų��.
+	// 저장 안된 소지품을 전부 저장시킨다.
 	LPITEM item;
 
 	for (int i = 0; i < INVENTORY_AND_EQUIP_SLOT_MAX; ++i)
@@ -1335,7 +1335,7 @@ void CHARACTER::Disconnect(const char * c_pszReason)
 	if (GetParty())
 		GetParty()->Unlink(this);
 
-	// �׾��� �� ���Ӳ����� ����ġ �ٰ� �ϱ�
+	// 죽었을 때 접속끊으면 경험치 줄게 하기
 	if (IsStun() || IsDead())
 	{
 		DeathPenalty(0);
@@ -1353,7 +1353,7 @@ void CHARACTER::Disconnect(const char * c_pszReason)
 	SaveAffect();
 	m_bIsLoadedAffect = false;
 
-	m_bSkipSave = true; // �� ���Ŀ��� ���̻� �����ϸ� �ȵȴ�.
+	m_bSkipSave = true; // 이 이후에는 더이상 저장하면 안된다.
 
 	quest::CQuestManager::instance().DisconnectPC(this);
 
@@ -1783,7 +1783,7 @@ void CHARACTER::SetPlayerProto(const TPlayerTable * t)
 	SetSP(t->sp);
 	SetStamina(t->stamina);
 
-	//GM�϶� ��ȣ���  
+	//GM일때 보호모드  
 	if (!test_server)
 	{
 		if (GetGMLevel() > GM_LOW_WIZARD)
@@ -1816,7 +1816,7 @@ void CHARACTER::SetPlayerProto(const TPlayerTable * t)
 	}
 
 #ifdef __PET_SYSTEM__
-	// NOTE: �ϴ� ij���Ͱ� PC�� ��쿡�� PetSystem�� ������ ��. ���� �ӽŴ� �޸� ���������� NPC���� �ϱ� ��..
+	// NOTE: 일단 캐릭터가 PC인 경우에만 PetSystem을 갖도록 함. 유럽 머신당 메모리 사용률때문에 NPC까지 하긴 좀..
 	if (m_petSystem)
 	{
 		m_petSystem->Destroy();
@@ -1903,9 +1903,9 @@ void CHARACTER::SetProto(const CMob * pkMob)
 		else
 			SetPoint(POINT_DEF_GRADE_BONUS, 15);
 
-		//��Ÿ��
+		//산타용
 		//m_dwPlayStartTime = get_dword_time() + 10 * 60 * 1000;
-		//�ż��� ���� 
+		//신선자 노해 
 		m_dwPlayStartTime = get_dword_time() + 30 * 1000;
 		if (test_server)
 			m_dwPlayStartTime = get_dword_time() + 30 * 1000;
@@ -1980,7 +1980,7 @@ float CHARACTER::GetMobDamageMultiply() const
 	float fDamMultiply = GetMobTable().fDamMultiply;
 
 	if (IsBerserk())
-		fDamMultiply = fDamMultiply * 2.0f; // BALANCE: ����ȭ �� �ι�
+		fDamMultiply = fDamMultiply * 2.0f; // BALANCE: 광폭화 시 두배
 
 	return fDamMultiply;
 }
@@ -2013,7 +2013,7 @@ DWORD CHARACTER::GetMonsterDrainSPPoint() const
 BYTE CHARACTER::GetMobRank() const
 {
 	if (!m_pkMobData)
-		return MOB_RANK_KNIGHT;	// PC�� ��� KNIGHT��
+		return MOB_RANK_KNIGHT;	// PC일 경우 KNIGHT급
 
 	return m_pkMobData->m_table.bRank;
 }
@@ -2076,7 +2076,7 @@ void CHARACTER::ComputeBattlePoints()
 		SetPoint(POINT_MAGIC_DEF_GRADE, GetPoint(POINT_DEF_GRADE));
 
 		//
-		// �⺻ ATK = 2lev + 2str, ������ ���� 2str�� �ٲ� �� ����
+		// 기본 ATK = 2lev + 2str, 직업에 마다 2str은 바뀔 수 있음
 		//
 		int iAtk = GetLevel() * 2;
 		int iStatAtk = 0;
@@ -2102,14 +2102,14 @@ void CHARACTER::ComputeBattlePoints()
 				break;
 		}
 
-		// ���� Ÿ�� �ְ�, �������� ���� ���ݷ��� ST*2 ���� ������ ST*2�� �Ѵ�.
-		// ������ �߸� ���� ��� ���ݷ��� �� ���� �ʰ� �ϱ� ���ؼ���.
+		// 말을 타고 있고, 스탯으로 인한 공격력이 ST*2 보다 낮으면 ST*2로 한다.
+		// 스탯을 잘못 찍은 사람 공격력이 더 낮지 않게 하기 위해서다.
 		if (GetMountVnum() && iStatAtk < 2 * GetPoint(POINT_ST))
 			iStatAtk = (2 * GetPoint(POINT_ST));
 
 		iAtk += iStatAtk;
 
-		// �¸�(��) : �˼��� ������ ����  
+		// 승마(말) : 검수라 데미지 감소  
 		if (GetMountVnum())
 		{
 			if (GetJob() == JOB_SURA && GetSkillGroup() == 1)
@@ -2130,7 +2130,7 @@ void CHARACTER::ComputeBattlePoints()
 		PointChange(POINT_ATT_GRADE, iAtk);
 
 		// DEF = LEV + CON + ARMOR
-		int iShowDef = GetLevel() + GetPoint(POINT_HT); // For Ymir(õ��)
+		int iShowDef = GetLevel() + GetPoint(POINT_HT); // For Ymir(천마)
 		int iDef = GetLevel() + (int) (GetPoint(POINT_HT) / 1.25); // For Other
 		int iArmor = 0;
 
@@ -2146,7 +2146,7 @@ void CHARACTER::ComputeBattlePoints()
 				}
 			}
 
-		// �� Ÿ�� ���� �� ������ ���� ���� ���º��� ������ ���� �������� ����
+		// 말 타고 있을 때 방어력이 말의 기준 방어력보다 낮으면 기준 방어력으로 설정
 		if( true == IsHorseRiding() )
 		{
 			if (iArmor < GetHorseArmor())
@@ -2252,7 +2252,7 @@ void CHARACTER::ComputePoints()
 
 	if (IsPC())
 	{
-		// �ִ� �����/���ŷ�
+		// 최대 생명력/정신력
 		iMaxHP = JobInitialPoints[GetJob()].max_hp + m_points.iRandomHP + GetPoint(POINT_HT) * JobInitialPoints[GetJob()].hp_per_ht;
 		iMaxSP = JobInitialPoints[GetJob()].max_sp + m_points.iRandomSP + GetPoint(POINT_IQ) * JobInitialPoints[GetJob()].sp_per_iq;
 		iMaxStamina = JobInitialPoints[GetJob()].max_stamina + GetPoint(POINT_HT) * JobInitialPoints[GetJob()].stamina_per_con;
@@ -2268,7 +2268,7 @@ void CHARACTER::ComputePoints()
 			}
 		}
 
-		// �⺻ ����
+		// 기본 값들
 		SetPoint(POINT_MOV_SPEED,	100);
 		SetPoint(POINT_ATT_SPEED,	100);
 		PointChange(POINT_ATT_SPEED, GetPoint(POINT_PARTY_HASTE_BONUS));
@@ -2287,9 +2287,9 @@ void CHARACTER::ComputePoints()
 
 	if (IsPC())
 	{
-		// �� Ÿ�� ���� ���� �⺻ ������ ���� ���� ���Ⱥ��� ������ ���� �����.
-		// ���� ���� ���� ������ ���� �����̹Ƿ�, ����/������ ��ü ���� ����
-		// ��ä������ �� �ö󰡰� �� ���̴�.
+		// 말 타고 있을 때는 기본 스탯이 말의 기준 스탯보다 낮으면 높게 만든다.
+		// 따라서 말의 기준 스탯이 무사 기준이므로, 수라/무당은 전체 스탯 합이
+		// 대채적으로 더 올라가게 될 것이다.
 		if (GetMountVnum()) 
 		{
 			if (GetHorseST() > GetPoint(POINT_ST))
@@ -2309,17 +2309,17 @@ void CHARACTER::ComputePoints()
 
 	ComputeBattlePoints();
 
-	// �⺻ HP/SP ����
+	// 기본 HP/SP 설정
 	if (iMaxHP != GetMaxHP())
 	{
-		SetRealPoint(POINT_MAX_HP, iMaxHP); // �⺻HP�� RealPoint�� ������ ���´�.
+		SetRealPoint(POINT_MAX_HP, iMaxHP); // 기본HP를 RealPoint에 저장해 놓는다.
 	}
 
 	PointChange(POINT_MAX_HP, 0);
 
 	if (iMaxSP != GetMaxSP())
 	{
-		SetRealPoint(POINT_MAX_SP, iMaxSP); // �⺻SP�� RealPoint�� ������ ���´�.
+		SetRealPoint(POINT_MAX_SP, iMaxSP); // 기본SP를 RealPoint에 저장해 놓는다.
 	}
 
 	PointChange(POINT_MAX_SP, 0);
@@ -2338,10 +2338,10 @@ void CHARACTER::ComputePoints()
 		}
 	}
 
-	// ��ȥ�� �ý���
-	// ComputePoints������ �ɸ����� ��� �Ӽ����� �ʱ�ȭ�ϰ�,
-	// ������, ���� � ���õ� ��� �Ӽ����� �����ϱ� ������,
-	// ��ȥ�� �ý��۵� ActiveDeck�� �ִ� ��� ��ȥ���� �Ӽ����� �ٽ� ������Ѿ� �Ѵ�.
+	// 용혼석 시스템
+	// ComputePoints에서는 케릭터의 모든 속성값을 초기화하고,
+	// 아이템, 버프 등에 관련된 모든 속성값을 재계산하기 때문에,
+	// 용혼석 시스템도 ActiveDeck에 있는 모든 용혼석의 속성값을 다시 적용시켜야 한다.
 	if (DragonSoul_IsDeckActivated())
 	{
 		for (int i = WEAR_MAX_NUM + DS_SLOT_MAX * DragonSoul_GetActiveDeck(); 
@@ -2379,9 +2379,9 @@ void CHARACTER::ComputePoints()
 	UpdatePacket();
 }
 
-// m_dwPlayStartTime�� ������ milisecond��. �����ͺ��̽����� �д����� ����ϱ�
-// ������ �÷��̽ð��� ����� �� / 60000 ���� ������ �ϴµ�, �� ������ ���� ����
-// �� �� ���⿡ dwTimeRemain���� �־ ����� ���ǵ��� ���־�� �Ѵ�.
+// m_dwPlayStartTime의 단위는 milisecond다. 데이터베이스에는 분단위로 기록하기
+// 때문에 플레이시간을 계산할 때 / 60000 으로 나눠서 하는데, 그 나머지 값이 남았
+// 을 때 여기에 dwTimeRemain으로 넣어서 제대로 계산되도록 해주어야 한다.
 void CHARACTER::ResetPlayTime(DWORD dwTimeRemain)
 {
 	m_dwPlayStartTime = get_dword_time() - dwTimeRemain;
@@ -2407,7 +2407,7 @@ EVENTFUNC(recovery_event)
 	if (!ch->IsPC())
 	{
 		//
-		// ���� ȸ��
+		// 몬스터 회복
 		//
 		if (ch->IsAffectFlag(AFF_POISON))
 			return PASSES_PER_SEC(std::max(1, ch->GetMobTable().bRegenCycle));
@@ -2465,23 +2465,23 @@ EVENTFUNC(recovery_event)
 	else
 	{
 		//
-		// PC ȸ��
+		// PC 회복
 		//
 		ch->CheckTarget();
-		//ch->UpdateSectree(); // ���⼭ �̰� ������?
+		//ch->UpdateSectree(); // 여기서 이걸 왜하지?
 		ch->UpdateKillerMode();
 
 		if (ch->IsAffectFlag(AFF_POISON) == true)
 		{
-			// �ߵ��� ��� �ڵ�ȸ�� ����
-			// �Ĺ����� ��� �ڵ�ȸ�� ����
+			// 중독인 경우 자동회복 금지
+			// 파법술인 경우 자동회복 금지
 			return 3;
 		}
 
 		int iSec = (get_dword_time() - ch->GetLastMoveTime()) / 3000;
 
-		// SP ȸ�� ��ƾ.
-		// �� �̰ɷ� �ؼ� �Լ��� �����°� ?!
+		// SP 회복 루틴.
+		// 왜 이걸로 해서 함수로 빼놨는가 ?!
 		ch->DistributeSP(ch);
 
 		if (ch->GetMaxHP() <= ch->GetHP())
@@ -2512,7 +2512,7 @@ void CHARACTER::StartRecoveryEvent()
 	if (IsDead() || IsStun())
 		return;
 
-	if (IsNPC() && GetHP() >= GetMaxHP()) // ���ʹ� ü���� �� �������� ���� ���Ѵ�.
+	if (IsNPC() && GetHP() >= GetMaxHP()) // 몬스터는 체력이 다 차있으면 시작 안한다.
 		return;
 
 	char_event_info* info = AllocEventInfo();
@@ -2562,7 +2562,7 @@ void CHARACTER::SetRotation(float fRot)
 	m_pointsInstant.fRot = fRot;
 }
 
-// x, y �������� ���� ����.
+// x, y 방향으로 보고 선다.
 void CHARACTER::SetRotationToXY(int x, int y)
 {
 	SetRotation(GetDegreeFromPositionXY(GetX(), GetY(), x, y));
@@ -2578,10 +2578,10 @@ bool CHARACTER::CanMove() const
 	if (CannotMoveByAffect())
 		return false;
 
-	if (GetMyShop())	// ���� �� ���¿����� ������ �� ����
+	if (GetMyShop())	// 상점 연 상태에서는 움직일 수 없음
 		return false;
 
-	// 0.2�� ���̶�� ������ �� ����.
+	// 0.2초 전이라면 움직일 수 없다.
 	/*
 	   if (get_float_time() - m_fSyncTime < 0.2f)
 	   return false;
@@ -2589,7 +2589,7 @@ bool CHARACTER::CanMove() const
 	return true;
 }
 
-// ������ x, y ��ġ�� �̵� ��Ų��.
+// 무조건 x, y 위치로 이동 시킨다.
 bool CHARACTER::Sync(int x, int y)
 {
 	if (!GetSectree())
@@ -2618,7 +2618,7 @@ bool CHARACTER::Sync(int x, int y)
 
 	if (GetDungeon())
 	{
-		// ������ �̺�Ʈ �Ӽ� ��ȭ
+		// 던젼용 이벤트 속성 변화
 		int iLastEventAttr = m_iEventAttr;
 		m_iEventAttr = new_tree->GetEventAttribute(x, y);
 
@@ -2669,8 +2669,8 @@ void CHARACTER::Stop()
 
 bool CHARACTER::Goto(int x, int y)
 {
-	// TODO �Ÿ�üũ �ʿ�
-	// ���� ��ġ�� �̵��� �ʿ� ���� (�ڵ� ����)
+	// TODO 거리체크 필요
+	// 같은 위치면 이동할 필요 없음 (자동 성공)
 	if (GetX() == x && GetY() == y)
 		return false;
 
@@ -2800,14 +2800,14 @@ void CHARACTER::CalculateMoveDuration()
 	m_dwMoveStartTime = get_dword_time();
 }
 
-// x y ��ġ�� �̵� �Ѵ�. (�̵��� �� �ִ� �� ���� ���� Ȯ�� �ϰ� Sync �޼ҵ�� ���� �̵� �Ѵ�)
-// ������ char�� x, y ���� �ٷ� �ٲ�����,
-// Ŭ�󿡼��� ���� ��ġ���� �ٲ� x, y���� interpolation�Ѵ�.
-// �Ȱų� �ٴ� ���� char�� m_bNowWalking�� �޷��ִ�.
-// Warp�� �ǵ��� ���̶�� Show�� ����� ��.
+// x y 위치로 이동 한다. (이동할 수 있는 가 없는 가를 확인 하고 Sync 메소드로 실제 이동 한다)
+// 서버는 char의 x, y 값을 바로 바꾸지만,
+// 클라에서는 이전 위치에서 바꾼 x, y까지 interpolation한다.
+// 걷거나 뛰는 것은 char의 m_bNowWalking에 달려있다.
+// Warp를 의도한 것이라면 Show를 사용할 것.
 bool CHARACTER::Move(int x, int y)
 {
-	// ���� ��ġ�� �̵��� �ʿ� ���� (�ڵ� ����)
+	// 같은 위치면 이동할 필요 없음 (자동 성공)
 	if (GetX() == x && GetY() == y)
 		return true;
 
@@ -2969,7 +2969,7 @@ void CHARACTER::SetPoint(BYTE type, int val)
 
 	m_pointsInstant.points[type] = val;
 
-	// ���� �̵��� �� �ȳ����ٸ� �̵� �ð� ����� �ٽ� �ؾ� �Ѵ�.
+	// 아직 이동이 다 안끝났다면 이동 시간 계산을 다시 해야 한다.
 	if (type == POINT_MOV_SPEED && get_dword_time() < m_dwMoveStartTime + m_dwMoveDuration)
 	{
 		CalculateMoveDuration();
@@ -3035,7 +3035,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 
 		case POINT_NEXT_EXP:
 			val = GetNextExp();
-			bAmount = false;	// ������ bAmount�� false ���� �Ѵ�.
+			bAmount = false;	// 무조건 bAmount는 false 여야 한다.
 			break;
 
 		case POINT_EXP:
@@ -3043,7 +3043,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 				DWORD exp = GetExp();
 				DWORD next_exp = GetNextExp();
 
-				// û�ҳ⺸ȣ
+				// 청소년보호
 				if (LC_IsNewCIBN())
 				{
 					if (IsOverTime(OT_NONE))
@@ -3062,7 +3062,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 					}
 				}
 
-				// exp�� 0 ���Ϸ� ���� �ʵ��� �Ѵ�
+				// exp가 0 이하로 가지 않도록 한다
 				if (amount < 0 && exp < -amount)
 				{
 					SPDLOG_DEBUG("{} AMOUNT < 0 {}, CUR EXP: {}", GetName(), -amount, exp);
@@ -3081,7 +3081,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 
 					DWORD iExpBalance = 0;
 
-					// ���� ��!
+					// 레벨 업!
 					if (exp + amount >= next_exp)
 					{
 						iExpBalance = (exp + amount) - next_exp;
@@ -3099,7 +3099,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 					DWORD q = DWORD(next_exp / 4.0f);
 					int iLevStep = GetRealPoint(POINT_LEVEL_STEP);
 
-					// iLevStep�� 4 �̻��̸� ������ �ö���� �ϹǷ� ���⿡ �� �� ���� ���̴�.
+					// iLevStep이 4 이상이면 레벨이 올랐어야 하므로 여기에 올 수 없는 값이다.
 					if (iLevStep >= 4)
 					{
 						SPDLOG_ERROR("{} LEVEL_STEP bigger than 4! ({})", GetName(), iLevStep);
@@ -3239,16 +3239,16 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 				
 				if (val == 0)
 				{
-					// Stamina�� ������ ����!
+					// Stamina가 없으니 걷자!
 					SetNowWalking(true);
 				}
 				else if (prev_val == 0)
 				{
-					// ���� ���׹̳��� �������� ���� ��� ����
+					// 없던 스테미나가 생겼으니 이전 모드 복귀
 					ResetWalking();
 				}
 
-				if (amount < 0 && val != 0) // ���Ҵ� �������ʴ´�.
+				if (amount < 0 && val != 0) // 감소는 보내지않는다.
 					return;
 			}
 			break;
@@ -3258,7 +3258,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 				SetPoint(type, GetPoint(type) + amount);
 
 				//SetMaxHP(GetMaxHP() + amount);
-				// �ִ� ����� = (�⺻ �ִ� ����� + �߰�) * �ִ�����%
+				// 최대 생명력 = (기본 최대 생명력 + 추가) * 최대생명력%
 				int hp = GetRealPoint(POINT_MAX_HP);
 				int add_hp = std::min(3500, hp * GetPoint(POINT_MAX_HP_PCT) / 100);
 				add_hp += GetPoint(POINT_MAX_HP);
@@ -3275,7 +3275,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 				SetPoint(type, GetPoint(type) + amount);
 
 				//SetMaxSP(GetMaxSP() + amount);
-				// �ִ� ���ŷ� = (�⺻ �ִ� ���ŷ� + �߰�) * �ִ����ŷ�%
+				// 최대 정신력 = (기본 최대 정신력 + 추가) * 최대정신력%
 				int sp = GetRealPoint(POINT_MAX_SP);
 				int add_sp = std::min(800, sp * GetPoint(POINT_MAX_SP_PCT) / 100);
 				add_sp += GetPoint(POINT_MAX_SP);
@@ -3317,7 +3317,7 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 					return;
 				}
 
-				// û�ҳ⺸ȣ
+				// 청소년보호
 				if (LC_IsNewCIBN() && amount > 0)
 				{
 					if (IsOverTime(OT_NONE))
@@ -3380,12 +3380,12 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 		case POINT_HP_RECOVERY:
 		case POINT_SP_RECOVERY:
 
-		case POINT_ATTBONUS_HUMAN:	// 42 ����� ����
-		case POINT_ATTBONUS_ANIMAL:	// 43 �������� ������ % ����
-		case POINT_ATTBONUS_ORC:		// 44 ���Ϳ��� ������ % ����
-		case POINT_ATTBONUS_MILGYO:	// 45 ����� ������ % ����
-		case POINT_ATTBONUS_UNDEAD:	// 46 ��ü���� ������ % ����
-		case POINT_ATTBONUS_DEVIL:	// 47 ����(�Ǹ�)���� ������ % ����
+		case POINT_ATTBONUS_HUMAN:	// 42 인간에게 강함
+		case POINT_ATTBONUS_ANIMAL:	// 43 동물에게 데미지 % 증가
+		case POINT_ATTBONUS_ORC:		// 44 웅귀에게 데미지 % 증가
+		case POINT_ATTBONUS_MILGYO:	// 45 밀교에게 데미지 % 증가
+		case POINT_ATTBONUS_UNDEAD:	// 46 시체에게 데미지 % 증가
+		case POINT_ATTBONUS_DEVIL:	// 47 마귀(악마)에게 데미지 % 증가
 
 		case POINT_ATTBONUS_MONSTER:
 		case POINT_ATTBONUS_SURA:
@@ -3406,11 +3406,11 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 		case POINT_RESIST_PENETRATE:
 		case POINT_CURSE_PCT:
 
-		case POINT_STEAL_HP:		// 48 ����� ���
-		case POINT_STEAL_SP:		// 49 ���ŷ� ���
+		case POINT_STEAL_HP:		// 48 생명력 흡수
+		case POINT_STEAL_SP:		// 49 정신력 흡수
 
-		case POINT_MANA_BURN_PCT:	// 50 ���� ��
-		case POINT_DAMAGE_SP_RECOVER:	// 51 ���ݴ��� �� ���ŷ� ȸ�� Ȯ��
+		case POINT_MANA_BURN_PCT:	// 50 마나 번
+		case POINT_DAMAGE_SP_RECOVER:	// 51 공격당할 시 정신력 회복 확률
 		case POINT_RESIST_NORMAL_DAMAGE:
 		case POINT_RESIST_SWORD:
 		case POINT_RESIST_TWOHAND:
@@ -3425,10 +3425,10 @@ void CHARACTER::PointChange(BYTE type, int amount, bool bAmount, bool bBroadcast
 		case POINT_RESIST_ICE:
 		case POINT_RESIST_EARTH:
 		case POINT_RESIST_DARK:
-		case POINT_REFLECT_MELEE:	// 67 ���� �ݻ�
-		case POINT_REFLECT_CURSE:	// 68 ���� �ݻ�
-		case POINT_POISON_REDUCE:	// 69 �������� ����
-		case POINT_KILL_SP_RECOVER:	// 70 �� �Ҹ�� MP ȸ��
+		case POINT_REFLECT_MELEE:	// 67 공격 반사
+		case POINT_REFLECT_CURSE:	// 68 저주 반사
+		case POINT_POISON_REDUCE:	// 69 독데미지 감소
+		case POINT_KILL_SP_RECOVER:	// 70 적 소멸시 MP 회복
 		case POINT_KILL_HP_RECOVERY:	// 75  
 		case POINT_HIT_HP_RECOVERY:
 		case POINT_HIT_SP_RECOVERY:
@@ -3656,7 +3656,7 @@ void CHARACTER::ApplyPoint(BYTE bApplyType, int iVal)
 		case APPLY_SKILL:
 			// SKILL_DAMAGE_BONUS
 			{
-				// �ֻ��� ��Ʈ �������� 8��Ʈ vnum, 9��Ʈ add, 15��Ʈ change
+				// 최상위 비트 기준으로 8비트 vnum, 9비트 add, 15비트 change
 				// 00000000 00000000 00000000 00000000
 				// ^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^
 				// vnum     ^ add       change
@@ -3766,11 +3766,11 @@ void CHARACTER::ApplyPoint(BYTE bApplyType, int iVal)
 		case APPLY_RESIST_ASSASSIN :
 		case APPLY_RESIST_SURA :
 		case APPLY_RESIST_SHAMAN :	
-		case APPLY_ENERGY:					// 82 ���
-		case APPLY_DEF_GRADE:				// 83 ����. DEF_GRADE_BONUS�� Ŭ�󿡼� �ι�� �������� �ǵ��� ����(...)�� �ִ�.
-		case APPLY_COSTUME_ATTR_BONUS:		// 84 �ڽ�Ƭ �����ۿ� ���� �Ӽ�ġ ���ʽ�
-		case APPLY_MAGIC_ATTBONUS_PER:		// 85 ���� ���ݷ� +x%
-		case APPLY_MELEE_MAGIC_ATTBONUS_PER:			// 86 ���� + �и� ���ݷ� +x%
+		case APPLY_ENERGY:					// 82 기력
+		case APPLY_DEF_GRADE:				// 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다.
+		case APPLY_COSTUME_ATTR_BONUS:		// 84 코스튬 아이템에 붙은 속성치 보너스
+		case APPLY_MAGIC_ATTBONUS_PER:		// 85 마법 공격력 +x%
+		case APPLY_MELEE_MAGIC_ATTBONUS_PER:			// 86 마법 + 밀리 공격력 +x%
 			PointChange(aApplyInfo[bApplyType].bPointType, iVal);
 			break;
 
@@ -3855,7 +3855,7 @@ void CHARACTER::MonsterLog(const char* format, ...)
 	else
 		len += len2;
 
-	// \0 ���� ����
+	// \0 문자 포함
 	++len;
 
 	va_end(args);
@@ -3945,9 +3945,9 @@ void CHARACTER::mining(LPCHARACTER chLoad)
 		return;
 	}
 
-	int count = Random::get(5, 15); // ���� Ƚ��, �� ���۴� 2��
+	int count = Random::get(5, 15); // 동작 횟수, 한 동작당 2초
 
-	// � ������ ������
+	// 채광 동작을 보여줌
 	TPacketGCDigMotion p;
 	p.header = HEADER_GC_DIG_MOTION;
 	p.vid = GetVID();
@@ -3968,7 +3968,7 @@ void CHARACTER::fishing()
 		return;
 	}
 
-	// ���� �Ӽ����� ���ø� �õ��Ѵ�?
+	// 못감 속성에서 낚시를 시도한다?
 	{
 		LPSECTREE_MAP pkSectreeMap = SECTREE_MANAGER::instance().GetMap(GetMapIndex());
 
@@ -3987,7 +3987,7 @@ void CHARACTER::fishing()
 
 	LPITEM rod = GetWear(WEAR_WEAPON);
 
-	// ���ô� ����
+	// 낚시대 장착
 	if (!rod || rod->GetType() != ITEM_ROD)
 	{
 		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCF\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
@@ -4066,7 +4066,7 @@ void CHARACTER::SetNextStatePulse(int iNextPulse)
 }
 
 
-// ij���� �ν��Ͻ� ������Ʈ �Լ�.
+// 캐릭터 인스턴스 업데이트 함수.
 void CHARACTER::UpdateCharacter(DWORD dwPulse)
 {
 	CFSM::Update();
@@ -4105,7 +4105,7 @@ WORD CHARACTER::GetOriginalPart(BYTE bPartPos) const
 	switch (bPartPos)
 	{
 		case PART_MAIN:
-			if (!IsPC()) // PC�� �ƴ� ��� ���� ��Ʈ�� �״�� ����
+			if (!IsPC()) // PC가 아닌 경우 현재 파트를 그대로 리턴
 				return GetPart(PART_MAIN);
 			else
 				return m_pointsInstant.bBasePart;
@@ -4146,7 +4146,7 @@ bool CHARACTER::SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList)
 		if (m_pkChrSyncOwner)
 			SPDLOG_DEBUG("SyncRelease {} {} from {}", GetName(), (void*) this, m_pkChrSyncOwner->GetName());
 
-		// ����Ʈ���� �������� �ʴ��� �����ʹ� NULL�� ���õǾ�� �Ѵ�.
+		// 리스트에서 제거하지 않더라도 포인터는 NULL로 셋팅되어야 한다.
 		m_pkChrSyncOwner = NULL;
 	}
 	else
@@ -4154,12 +4154,12 @@ bool CHARACTER::SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList)
 		if (!IsSyncOwner(ch))
 			return false;
 
-		// �Ÿ��� 200 �̻��̸� SyncOwner�� �� �� ����.
+		// 거리가 200 이상이면 SyncOwner가 될 수 없다.
 		if (DISTANCE_APPROX(GetX() - ch->GetX(), GetY() - ch->GetY()) > 250)
 		{
 			SPDLOG_DEBUG("SetSyncOwner distance over than 250 {} {}", GetName(), ch->GetName());
 
-			// SyncOwner�� ��� Owner�� ǥ���Ѵ�.
+			// SyncOwner일 경우 Owner로 표시한다.
 			if (m_pkChrSyncOwner == ch)
 				return true;
 
@@ -4177,7 +4177,7 @@ bool CHARACTER::SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList)
 			m_pkChrSyncOwner = ch;
 			m_pkChrSyncOwner->m_kLst_pkChrSyncOwned.push_back(this);
 
-			// SyncOwner�� �ٲ�� LastSyncTime�� �ʱ�ȭ�Ѵ�.
+			// SyncOwner가 바뀌면 LastSyncTime을 초기화한다.
 			static const timeval zero_tv = {0, 0};
 			SetLastSyncTime(zero_tv);
 
@@ -4187,9 +4187,9 @@ bool CHARACTER::SetSyncOwner(LPCHARACTER ch, bool bRemoveFromList)
 		m_fSyncTime = get_float_time();
 	}
 
-	// TODO: Sync Owner�� ������ ��� ��Ŷ�� ������ �����Ƿ�,
-	//       ����ȭ �� �ð��� 3�� �̻� ������ �� Ǯ���ִ� ��Ŷ��
-	//       ������ ������� �ϸ� ��Ŷ�� ���� �� �ִ�.
+	// TODO: Sync Owner가 같더라도 계속 패킷을 보내고 있으므로,
+	//       동기화 된 시간이 3초 이상 지났을 때 풀어주는 패킷을
+	//       보내는 방식으로 하면 패킷을 줄일 수 있다.
 	TPacketGCOwnership pack;
 
 	pack.bHeader	= HEADER_GC_OWNERSHIP;
@@ -4205,7 +4205,7 @@ struct FuncClearSync
 	void operator () (LPCHARACTER ch)
 	{
 		assert(ch != NULL);
-		ch->SetSyncOwner(NULL, false);	// false �÷��׷� �ؾ� for_each �� ����� ����.
+		ch->SetSyncOwner(NULL, false);	// false 플래그로 해야 for_each 가 제대로 돈다.
 	}
 };
 
@@ -4213,7 +4213,7 @@ void CHARACTER::ClearSync()
 {
 	SetSyncOwner(NULL);
 
-	// �Ʒ� for_each���� ���� m_pkChrSyncOwner�� ���� �ڵ��� �����͸� NULL�� �Ѵ�.
+	// 아래 for_each에서 나를 m_pkChrSyncOwner로 가진 자들의 포인터를 NULL로 한다.
 	std::for_each(m_kLst_pkChrSyncOwned.begin(), m_kLst_pkChrSyncOwned.end(), FuncClearSync());
 	m_kLst_pkChrSyncOwned.clear();
 }
@@ -4223,8 +4223,8 @@ bool CHARACTER::IsSyncOwner(LPCHARACTER ch) const
 	if (m_pkChrSyncOwner == ch)
 		return true;
 
-	// ���������� ����ȭ �� �ð��� 3�� �̻� �����ٸ� �������� �ƹ����Ե�
-	// ����. ���� �ƹ��� SyncOwner�̹Ƿ� true ����
+	// 마지막으로 동기화 된 시간이 3초 이상 지났다면 소유권이 아무에게도
+	// 없다. 따라서 아무나 SyncOwner이므로 true 리턴
 	if (get_float_time() - m_fSyncTime >= 3.0f)
 		return true;
 
@@ -4257,11 +4257,11 @@ void CHARACTER::SetParty(LPPARTY pkParty)
 }
 
 // PARTY_JOIN_BUG_FIX
-/// ��Ƽ ���� event ����
+/// 파티 가입 event 정보
 EVENTINFO(TPartyJoinEventInfo)
 {
-	DWORD	dwGuestPID;		///< ��Ƽ�� ������ ij������ PID
-	DWORD	dwLeaderPID;		///< ��Ƽ ������ PID
+	DWORD	dwGuestPID;		///< 파티에 참여할 캐릭터의 PID
+	DWORD	dwLeaderPID;		///< 파티 리더의 PID
 
 	TPartyJoinEventInfo() 
 	: dwGuestPID( 0 )
@@ -4451,8 +4451,8 @@ void CHARACTER::AcceptToParty(LPCHARACTER member)
 }
 
 /**
- * ��Ƽ �ʴ� event callback �Լ�.
- * event �� �ߵ��ϸ� �ʴ� ������ ó���Ѵ�.
+ * 파티 초대 event callback 함수.
+ * event 가 발동하면 초대 거절로 처리한다.
  */
 EVENTFUNC(party_invite_event)
 {
@@ -4540,7 +4540,7 @@ void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)
 		return;
 
 	//
-	// EventMap �� �̺�Ʈ �߰�
+	// EventMap 에 이벤트 추가
 	// 
 	TPartyJoinEventInfo* info = AllocEventInfo();
 
@@ -4550,7 +4550,7 @@ void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)
 	m_PartyInviteEventMap.insert(EventMap::value_type(pchInvitee->GetPlayerID(), event_create(party_invite_event, info, PASSES_PER_SEC(10))));
 
 	//
-	// �ʴ� �޴� character ���� �ʴ� ��Ŷ ����
+	// 초대 받는 character 에게 초대 패킷 전송
 	// 
 
 	TPacketGCPartyInvite p;
@@ -4624,7 +4624,7 @@ void CHARACTER::PartyInviteAccept(LPCHARACTER pchInvitee)
 	}
 
 	//
-	// ��Ƽ ���� ó��
+	// 파티 가입 처리
 	// 
 
 	if (GetParty())
@@ -4837,9 +4837,9 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 	DWORD vid = GetVID();
 	SPDLOG_DEBUG("OnClick {}[vnum {} ServerUniqueID {}, pid {}] by {}", GetName(), GetRaceNum(), vid, GetPlayerID(), pkChrCauser->GetName());
 
-	// ������ �����·� ����Ʈ�� ������ �� ����.
+	// 상점을 연상태로 퀘스트를 진행할 수 없다.
 	{
-		// ��, �ڽ��� �ڽ��� ������ Ŭ���� �� �ִ�.
+		// 단, 자신은 자신의 상점을 클릭할 수 있다.
 		if (pkChrCauser->GetMyShop() && pkChrCauser != this) 
 		{
 			SPDLOG_ERROR("OnClick Fail ({}->{}) - pc has shop", pkChrCauser->GetName(), GetName());
@@ -4847,7 +4847,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 		}
 	}
 
-	// ��ȯ���϶� ����Ʈ�� ������ �� ����.
+	// 교환중일때 퀘스트를 진행할 수 없다.
 	{
 		if (pkChrCauser->GetExchange())
 		{
@@ -4858,16 +4858,16 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 
 	if (IsPC())
 	{
-		// Ÿ������ ������ ���� PC�� ���� Ŭ���� ����Ʈ�� ó���ϵ��� �մϴ�.
+		// 타겟으로 설정된 경우는 PC에 의한 클릭도 퀘스트로 처리하도록 합니다.
 		if (!CTargetManager::instance().GetTargetInfo(pkChrCauser->GetPlayerID(), TARGET_TYPE_VID, GetVID()))
 		{
-			// 2005.03.17.myevan.Ÿ���� �ƴ� ���� ���� ���� ó�� ����� �۵���Ų��.
+			// 2005.03.17.myevan.타겟이 아닌 경우는 개인 상점 처리 기능을 작동시킨다.
 			if (GetMyShop())
 			{
 				if (pkChrCauser->IsDead() == true) return;
 
 				//PREVENT_TRADE_WINDOW
-				if (pkChrCauser == this) // �ڱ�� ����
+				if (pkChrCauser == this) // 자기는 가능
 				{
 					if ((GetExchange() || IsOpenSafebox() || GetShopOwner()) || IsCubeOpen())
 					{
@@ -4875,16 +4875,16 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 						return;
 					}
 				}
-				else // �ٸ� ����� Ŭ��������
+				else // 다른 사람이 클릭했을때
 				{
-					// Ŭ���� ����� ��ȯ/â��/���λ���/�����̿����̶�� �Ұ�
+					// 클릭한 사람이 교환/창고/개인상점/상점이용중이라면 불가
 					if ((pkChrCauser->GetExchange() || pkChrCauser->IsOpenSafebox() || pkChrCauser->GetMyShop() || pkChrCauser->GetShopOwner()) || pkChrCauser->IsCubeOpen() )
 					{
 						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD(\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD)\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
 						return;
 					}
 
-					// Ŭ���� ����� ��ȯ/â��/�����̿����̶�� �Ұ�
+					// 클릭한 대상이 교환/창고/상점이용중이라면 불가
 					//if ((GetExchange() || IsOpenSafebox() || GetShopOwner()))
 					if ((GetExchange() || IsOpenSafebox() || IsCubeOpen()))
 					{
@@ -4911,7 +4911,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 		}
 	}
 
-	// û�ҳ��� ����Ʈ ����
+	// 청소년은 퀘스트 못함
 	if (LC_IsNewCIBN())
 	{
 		if (pkChrCauser->IsOverTime(OT_3HOUR))
@@ -4935,12 +4935,12 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 	}
 
 
-	// NPC ���� ��� ���� : ���� ���� ��
+	// NPC 전용 기능 수행 : 상점 열기 등
 	if (!IsPC())
 	{
 		if (!m_triggerOnClick.pFunc)
 		{
-			// NPC Ʈ���� �ý��� �α� ����
+			// NPC 트리거 시스템 로그 보기
 			SPDLOG_ERROR("{}.OnClickFailure({}) : triggerOnClick.pFunc is EMPTY(pid={})",
 						pkChrCauser->GetName(),
 						GetName(),
@@ -5005,7 +5005,7 @@ void CHARACTER::ClearStone()
 {
 	if (!m_set_pkChrSpawnedBy.empty())
 	{
-		// ���� ������Ų ���͵��� ��� ���δ�.
+		// 내가 스폰시킨 몬스터들을 모두 죽인다.
 		FuncDeadSpawnedByStone f;
 		std::for_each(m_set_pkChrSpawnedBy.begin(), m_set_pkChrSpawnedBy.end(), f);
 		m_set_pkChrSpawnedBy.clear();
@@ -5181,9 +5181,9 @@ void CHARACTER::ExitToSavedLocation()
 }
 
 // fixme 
-// ���ݱ��� privateMapIndex �� ���� �� �ε����� ������ üũ �ϴ� ���� �ܺο��� �ϰ�,
-// �ٸ��� warpset�� �ҷ��µ�
-// �̸� warpset ������ ����.
+// 지금까진 privateMapIndex 가 현재 맵 인덱스와 같은지 체크 하는 것을 외부에서 하고,
+// 다르면 warpset을 불렀는데
+// 이를 warpset 안으로 넣자.
 bool CHARACTER::WarpSet(int x, int y, int lPrivateMapIndex)
 {
 	if (!IsPC())
@@ -5279,7 +5279,7 @@ void CHARACTER::WarpEnd()
 
 	if (!map_allow_find(index))
 	{
-		// �� ������ ������ �� �����Ƿ� �����ϱ� �� ��ǥ�� �ǵ�����.
+		// 이 곳으로 워프할 수 없으므로 워프하기 전 좌표로 되돌리자.
 		SPDLOG_ERROR("location {} {} not allowed to login this server", m_posWarp.x, m_posWarp.y);
 		GetDesc()->SetPhase(PHASE_CLOSE);
 		return;
@@ -5352,14 +5352,14 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 	// TRENT_MONSTER
 	if (IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE))
 	{
-		if (pkChr->IsPC()) // �Ѿư��� ��밡 PC�� ��
+		if (pkChr->IsPC()) // 쫓아가는 상대가 PC일 때
 		{
 			// If i'm in a party. I must obey party leader's AI.
 			if (!GetParty() || !GetParty()->GetLeader() || GetParty()->GetLeader() == this)
 			{
-				if (get_dword_time() - m_pkMobInst->m_dwLastAttackedTime >= 15000) // ���������� ���ݹ����� 15�ʰ� ������
+				if (get_dword_time() - m_pkMobInst->m_dwLastAttackedTime >= 15000) // 마지막으로 공격받은지 15초가 지났고
 				{
-					// ������ ���� ������ ���� 50���� �̻� ���̳��� �����ϰ� ���ư���.
+					// 마지막 맞은 곳으로 부터 50미터 이상 차이나면 포기하고 돌아간다.
 					if (m_pkMobData->m_table.wAttackRange < DISTANCE_APPROX(pkChr->GetX() - GetX(), pkChr->GetY() - GetY()))
 						if (Return())
 							return true;
@@ -5373,14 +5373,14 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 	int x = pkChr->GetX();
 	int y = pkChr->GetY();
 
-	if (pkChr->IsPC()) // �Ѿư��� ��밡 PC�� ��
+	if (pkChr->IsPC()) // 쫓아가는 상대가 PC일 때
 	{
 		// If i'm in a party. I must obey party leader's AI.
 		if (!GetParty() || !GetParty()->GetLeader() || GetParty()->GetLeader() == this)
 		{
-			if (get_dword_time() - m_pkMobInst->m_dwLastAttackedTime >= 15000) // ���������� ���ݹ����� 15�ʰ� ������
+			if (get_dword_time() - m_pkMobInst->m_dwLastAttackedTime >= 15000) // 마지막으로 공격받은지 15초가 지났고
 			{
-				// ������ ���� ������ ���� 50���� �̻� ���̳��� �����ϰ� ���ư���.
+				// 마지막 맞은 곳으로 부터 50미터 이상 차이나면 포기하고 돌아간다.
 				if (5000 < DISTANCE_APPROX(m_pkMobInst->m_posLastAttacked.x - GetX(), m_pkMobInst->m_posLastAttacked.y - GetY()))
 					if (Return())
 						return true;
@@ -5400,9 +5400,9 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 		GetMobBattleType() != BATTLE_TYPE_MAGIC &&
 		false == IsPet())
 	{
-		// ����� �̵����̸� ���� �̵��� �Ѵ�
-		// ���� ������ �ӵ����� �Ÿ��κ��� ���� �ð��� ������ ��
-		// ������ �� �ð����� �������� �̵��Ѵٰ� �����Ͽ� �ű�� �̵��Ѵ�.
+		// 대상이 이동중이면 예측 이동을 한다
+		// 나와 상대방의 속도차와 거리로부터 만날 시간을 예상한 후
+		// 상대방이 그 시간까지 직선으로 이동한다고 가정하여 거기로 이동한다.
 		float rot = pkChr->GetRotation();
 		float rot_delta = GetDegreeDelta(rot, GetDegreeFromPositionXY(GetX(), GetY(), pkChr->GetX(), pkChr->GetY()));
 
@@ -5434,7 +5434,7 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 		}
 	}
 
-	// ������ ��ġ�� �ٶ���� �Ѵ�.
+	// 가려는 위치를 바라봐야 한다.
 	SetRotationToXY(x, y);
 
 	float fDist = DISTANCE_SQRT(x - GetX(), y - GetY());
@@ -5446,7 +5446,7 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 
 	if (IsChangeAttackPosition(pkChr) && GetMobRank() < MOB_RANK_BOSS)
 	{
-		// ���� �ֺ� ������ ������ �̵�
+		// 상대방 주변 랜덤한 곳으로 이동
 		SetChangeAttackPositionTime();
 
 		int retry = 16;
@@ -5477,7 +5477,7 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 	}
 	else
 	{
-		// ���� ���󰡱�
+		// 직선 따라가기
 		float fDistToGo = fDist - fMinDistance;
 		GetDeltaByDegree(GetRotation(), fDistToGo, &fx, &fy);
 
@@ -6150,11 +6150,11 @@ void CHARACTER::SetPolymorph(DWORD dwRaceNum, bool bMaintainStat)
 		PointChange(POINT_HT, 0);
 	}
 
-	// �������� ���¿��� �״� ���, ���������� Ǯ���� �Ǵµ�
-	// ���� ���� ���ķ� valid combo interval�� �ٸ��� ������
-	// Combo �� �Ǵ� Hacker�� �ν��ϴ� ��찡 �ִ�.
-	// ���� ���������� Ǯ�ų� �������� �ϰ� �Ǹ�,
-	// valid combo interval�� reset�Ѵ�.
+	// 폴리모프 상태에서 죽는 경우, 폴리모프가 풀리게 되는데
+	// 폴리 모프 전후로 valid combo interval이 다르기 때문에
+	// Combo 핵 또는 Hacker로 인식하는 경우가 있다.
+	// 따라서 폴리모프를 풀거나 폴리모프 하게 되면,
+	// valid combo interval을 reset한다.
 	SetValidComboInterval(0);
 	SetComboSequence(0);
 
@@ -6218,7 +6218,7 @@ void CHARACTER::DetermineDropMetinStone()
 				else
 				{
 					iGradePct -= iLevelGradePortion;
-					m_dwDropMetinStone += 100; // �� +a -> +(a+1)�� �ɶ����� 100�� ����
+					m_dwDropMetinStone += 100; // 돌 +a -> +(a+1)이 될때마다 100씩 증가
 				}
 			}
 		}
@@ -6266,9 +6266,9 @@ void CHARACTER::MountVnum(DWORD vnum)
 	if (m_bIsObserver)
 		return;
 
-	//NOTE : Mount�Ѵٰ� �ؼ� Client Side�� ��ü�� �������� �ʴ´�.
-	//�׸��� ����Side���� ������ ��ġ �̵��� ���� �ʴ´�. �ֳ��ϸ� Client Side���� Coliision Adjust�� �Ҽ� �ִµ�
-	//��ü�� �Ҹ���״ٰ� ������ġ�� �̵���Ű�� �̶� collision check�� ������ �����Ƿ� ��濡 ���ų� �հ� ������ ������ �����Ѵ�.
+	//NOTE : Mount한다고 해서 Client Side의 객체를 삭제하진 않는다.
+	//그리고 서버Side에서 탔을때 위치 이동은 하지 않는다. 왜냐하면 Client Side에서 Coliision Adjust를 할수 있는데
+	//객체를 소멸시켰다가 서버위치로 이동시키면 이때 collision check를 하지는 않으므로 배경에 끼거나 뚫고 나가는 문제가 존재한다.
 	m_posDest.x = m_posStart.x = GetX();
 	m_posDest.y = m_posStart.y = GetY();
 	//EncodeRemovePacket(this);
@@ -6280,7 +6280,7 @@ void CHARACTER::MountVnum(DWORD vnum)
 	{
 		LPENTITY entity = (it++)->first;
 
-		//Mount�Ѵٰ� �ؼ� Client Side�� ��ü�� �������� �ʴ´�.
+		//Mount한다고 해서 Client Side의 객체를 삭제하진 않는다.
 		//EncodeRemovePacket(entity);
 		//if (!m_bIsObserver)
 		EncodeInsertPacket(entity);
@@ -6526,10 +6526,10 @@ bool CHARACTER::WarpToPID(DWORD dwPID)
 	}
 	else
 	{
-		// �ٸ� ������ �α��ε� ����� ���� -> �޽��� ���� ��ǥ�� �޾ƿ���
-		// 1. A.pid, B.pid �� �Ѹ�
-		// 2. B.pid�� ���� ������ �Ѹ��������� A.pid, ��ǥ �� ����
-		// 3. ����
+		// 다른 서버에 로그인된 사람이 있음 -> 메시지 보내 좌표를 받아오자
+		// 1. A.pid, B.pid 를 뿌림
+		// 2. B.pid를 가진 서버가 뿌린서버에게 A.pid, 좌표 를 보냄
+		// 3. 워프
 		CCI * pcci = P2P_MANAGER::instance().FindByPID(dwPID);
 
 		if (!pcci)
@@ -6590,7 +6590,7 @@ int CHARACTER::ComputeRefineFee(int iCost, int iMultiply) const
 		if (pGuild == GetGuild())
 			return iCost * iMultiply * 9 / 10;
 
-		// �ٸ� ���� ����� �õ��ϴ� ��� �߰��� 3�� ��
+		// 다른 제국 사람이 시도하는 경우 추가로 3배 더
 		LPCHARACTER chRefineNPC = CHARACTER_MANAGER::instance().Find(m_dwRefineNPCVID);
 		if (chRefineNPC && chRefineNPC->GetEmpire() != GetEmpire())
 			return iCost * iMultiply * 3;
@@ -6610,7 +6610,7 @@ void CHARACTER::PayRefineFee(int iTotalMoney)
 
 	if (pGuild)
 	{
-		// �ڱ� ����̸� iTotalMoney�� �̹� 10%�� ���ܵǾ��ִ�
+		// 자기 길드이면 iTotalMoney에 이미 10%가 제외되어있다
 		if (pGuild != GetGuild())
 		{
 			pGuild->RequestDepositMoney(this, iFee);
@@ -6622,7 +6622,7 @@ void CHARACTER::PayRefineFee(int iTotalMoney)
 }
 // END_OF_ADD_REFINE_BUILDING
 
-//Hack ������ ���� üũ.
+//Hack 방지를 위한 체크.
 bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 {
 	const int iPulse = thecore_pulse();
@@ -6630,7 +6630,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (test_server)
 		bSendMsg = true;
 
-	//â�� ���� üũ
+	//창고 연후 체크
 	if (iPulse - GetSafeboxLoadTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
@@ -6641,7 +6641,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 		return true; 
 	}
 
-	//�ŷ����� â üũ
+	//거래관련 창 체크
 	if (bCheckShopOwner)
 	{
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
@@ -6664,7 +6664,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	}
 
 	//PREVENT_PORTAL_AFTER_EXCHANGE
-	//��ȯ �� �ð�üũ
+	//교환 후 시간체크
 	if (iPulse - GetExchangeTime()  < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
@@ -7148,7 +7148,7 @@ BYTE CHARACTER::GetChatCounter() const
 	return m_bChatCounter;
 }
 
-// ���̳� �ٸ����� Ÿ�� �ֳ�?
+// 말이나 다른것을 타고 있나?
 bool CHARACTER::IsRiding() const
 {
 	return IsHorseRiding() || GetMountVnum();
@@ -7188,4 +7188,4 @@ DWORD CHARACTER::GetNextExp() const
 int	CHARACTER::GetSkillPowerByLevel(int level, bool bMob) const
 {
 	return CTableBySkill::instance().GetSkillPowerByLevelFromType(GetJob(), GetSkillGroup(), std::clamp(level, 0, SKILL_MAX_LEVEL), bMob);
-}
\ No newline at end of file
+}
diff --git a/src/game/src/char_affect.cpp b/src/game/src/char_affect.cpp
index b9638e3..a82c41c 100644
--- a/src/game/src/char_affect.cpp
+++ b/src/game/src/char_affect.cpp
@@ -84,13 +84,13 @@ EVENTFUNC(affect_event)
 	if (!ch->UpdateAffect())
 		return 0;
 	else
-		return passes_per_sec; // 1
+		return passes_per_sec; // 1초
 }
 
 bool CHARACTER::UpdateAffect()
 {
-	// affect_event  ó  ƴ, 1¥ ̺Ʈ óϴ 
-	// ̰ ̶ ⼭  ó Ѵ.
+	// affect_event 에서 처리할 일은 아니지만, 1초짜리 이벤트에서 처리하는 것이
+	// 이것 뿐이라 여기서 물약 처리를 한다.
 	if (GetPoint(POINT_HP_RECOVERY) > 0)
 	{
 		if (GetMaxHP() <= GetHP())
@@ -146,7 +146,7 @@ bool CHARACTER::UpdateAffect()
 	AutoRecoveryItemProcess( AFFECT_AUTO_HP_RECOVERY );
 	AutoRecoveryItemProcess( AFFECT_AUTO_SP_RECOVERY );
 
-	// ׹̳ ȸ
+	// 스테미나 회복
 	if (GetMaxStamina() > GetStamina())
 	{
 		int iSec = (get_dword_time() - GetStopTime()) / 3000;
@@ -155,7 +155,7 @@ bool CHARACTER::UpdateAffect()
 	}
 
 
-	// ProcessAffect affect  true Ѵ.
+	// ProcessAffect는 affect가 없으면 true를 리턴한다.
 	if (ProcessAffect())
 		if (GetPoint(POINT_HP_RECOVERY) == 0 && GetPoint(POINT_SP_RECOVERY) == 0 && GetStamina() == GetMaxStamina())
 		{
@@ -226,7 +226,7 @@ int CHARACTER::ProcessAffect()
 	CAffect	*pkAff	= NULL;
 
 	//
-	// ̾ ó
+	// 프리미엄 처리
 	//
 	for (int i = 0; i <= PREMIUM_MAX_NUM; ++i)
 	{
@@ -300,8 +300,8 @@ int CHARACTER::ProcessAffect()
 		}
 
 		// AFFECT_DURATION_BUG_FIX
-		//  ȿ ۵ ð δ.
-		// ð ſ ũ     ̶ .
+		// 무한 효과 아이템도 시간을 줄인다.
+		// 시간을 매우 크게 잡기 때문에 상관 없을 것이라 생각됨.
 		if ( --pkAff->lDuration <= 0 )
 		{
 			bEnd = true;
@@ -470,7 +470,7 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements)
 
 	for (DWORD i = 0; i < dwCount; ++i, ++pElements)
 	{
-		//  εʴ´.
+		// 무영진은 로드하지않는다.
 		if (pElements->dwType == SKILL_MUYEONG)
 			continue;
 
@@ -524,7 +524,7 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements)
 
 	m_bIsLoadedAffect = true;
 
-	// ȥ  ε  ʱȭ
+	// 용혼석 셋팅 로드 및 초기화
 	DragonSoul_Initialize();
 }
 
@@ -562,10 +562,10 @@ bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, int lApplyValue, DWORD dw
 		}
 	}
 
-	// ̹ ִ ȿ   ó
+	// 이미 있는 효과를 덮어 쓰는 처리
 	if (pkAff && bOverride)
 	{
-		ComputeAffect(pkAff, false); // ϴ ȿ ϰ
+		ComputeAffect(pkAff, false); // 일단 효과를 삭제하고
 
 		if (GetDesc())
 			SendAffectRemovePacket(GetDesc(), GetPlayerID(), pkAff->dwType, pkAff->bApplyOn);
@@ -573,9 +573,9 @@ bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, int lApplyValue, DWORD dw
 	else
 	{
 		//
-		//  带 ߰
+		// 새 에펙를 추가
 		//
-		// NOTE:   type ε  Ʈ   ִ.
+		// NOTE: 따라서 같은 type 으로도 여러 에펙트를 붙을 수 있다.
 		// 
 		pkAff = CAffect::Acquire();
 		m_list_pkAffect.push_back(pkAff);
@@ -677,15 +677,15 @@ bool CHARACTER::RemoveAffect(CAffect * pkAff)
 
 	ComputeAffect(pkAff, false);
 
-	//   .
-	//  ״  ų ->а-> (AFFECT_REVIVE_INVISIBLE)  ٷ   쿡 ߻Ѵ.
-	//  а ϴ ,  ų ȿ ϰ а ȿ ǰ Ǿִµ,
-	//    ٷ ϸ RemoveAffect Ҹ ǰ, ComputePointsϸ鼭 а ȿ +  ų ȿ ȴ.
-	// ComputePoints а ¸  ų ȿ   ϸ DZ ϴµ,
-	// ComputePoints ϰ ǰ ־ ū ȭ ִ  .( side effect ߻ ˱ .)
-	//  AFFECT_REVIVE_INVISIBLE RemoveAffect Ǵ 츸 Ѵ.
-	// ð  Ǿ  ȿ Ǯ  װ ߻ Ƿ ׿ Ȱ .
-	//		(ProcessAffect  ð  Ǿ Affect Ǵ , ComputePoints θ ʴ´.)
+	// 백기 버그 수정.
+	// 백기 버그는 버프 스킬 시전->둔갑->백기 사용(AFFECT_REVIVE_INVISIBLE) 후 바로 공격 할 경우에 발생한다.
+	// 원인은 둔갑을 시전하는 시점에, 버프 스킬 효과를 무시하고 둔갑 효과만 적용되게 되어있는데,
+	// 백기 사용 후 바로 공격하면 RemoveAffect가 불리게 되고, ComputePoints하면서 둔갑 효과 + 버프 스킬 효과가 된다.
+	// ComputePoints에서 둔갑 상태면 버프 스킬 효과 안 먹히도록 하면 되긴 하는데,
+	// ComputePoints는 광범위하게 사용되고 있어서 큰 변화를 주는 것이 꺼려진다.(어떤 side effect가 발생할지 알기 힘들다.)
+	// 따라서 AFFECT_REVIVE_INVISIBLE가 RemoveAffect로 삭제되는 경우만 수정한다.
+	// 시간이 다 되어 백기 효과가 풀리는 경우는 버그가 발생하지 않으므로 그와 똑같이 함.
+	//		(ProcessAffect를 보면 시간이 다 되어서 Affect가 삭제되는 경우, ComputePoints를 부르지 않는다.)
 	if (AFFECT_REVIVE_INVISIBLE != pkAff->dwType)
 	{
 		ComputePoints();
@@ -795,41 +795,41 @@ bool CHARACTER::IsGoodAffect(BYTE bAffectType) const
 void CHARACTER::RemoveBadAffect()
 {
 	SPDLOG_DEBUG("RemoveBadAffect {}", GetName());
-	// 
+	// 독
 	RemovePoison();
 	RemoveFire();
 
-	//            : Value%  5ʰ Ӹ   ư. ( 1/2 Ȯ Ǯ)               AFF_STUN
+	// 스턴           : Value%로 상대방을 5초간 머리 위에 별이 돌아간다. (때리면 1/2 확률로 풀림)               AFF_STUN
 	RemoveAffect(AFFECT_STUN);
 
-	// ο         : Value%  /̼  . õ  ޶    쿡   AFF_SLOW
+	// 슬로우         : Value%로 상대방의 공속/이속 모두 느려진다. 수련도에 따라 달라짐 기술로 사용 한 경우에   AFF_SLOW
 	RemoveAffect(AFFECT_SLOW);
 
-	// Ӹ
+	// 투속마령
 	RemoveAffect(SKILL_TUSOK);
 
-	// 
+	// 저주
 	//RemoveAffect(SKILL_CURSE);
 
-	// Ĺ
+	// 파법술
 	//RemoveAffect(SKILL_PABUP);
 
-	//            : Value%  Ų. 2                                                       AFF_FAINT
+	// 기절           : Value%로 상대방을 기절시킨다. 2초                                                       AFF_FAINT
 	//RemoveAffect(AFFECT_FAINT);
 
-	// ٸ       : Value%  ̵ӵ Ʈ. 5ʰ -40                                      AFF_WEB
+	// 다리묶임       : Value%로 상대방의 이동속도를 떨어트린다. 5초간 -40                                      AFF_WEB
 	//RemoveAffect(AFFECT_WEB);
 
-	//          : Value%  10ʰ . ( Ǯ)                                        AFF_SLEEP
+	// 잠들기         : Value%로 상대방을 10초간 잠재운다. (때리면 풀림)                                        AFF_SLEEP
 	//RemoveAffect(AFFECT_SLEEP);
 
-	//            : Value%  /  Ʈ. õ  ޶    쿡 AFF_CURSE
+	// 저주           : Value%로 상대방의 공등/방등 모두 떨어트린다. 수련도에 따라 달라짐 기술로 사용 한 경우에 AFF_CURSE
 	//RemoveAffect(AFFECT_CURSE);
 
-	//            : Value%  4ʰ Ų.                                                     AFF_PARA
+	// 마비           : Value%로 상대방을 4초간 마비시킨다.                                                     AFF_PARA
 	//RemoveAffect(AFFECT_PARALYZE);
 
-	// εں       :  
+	// 부동박부       : 무당 기술
 	//RemoveAffect(SKILL_BUDONG);
 }
 
diff --git a/src/game/src/char_battle.cpp b/src/game/src/char_battle.cpp
index d41103e..aef7aff 100644
--- a/src/game/src/char_battle.cpp
+++ b/src/game/src/char_battle.cpp
@@ -147,7 +147,7 @@ void CHARACTER::DistributeSP(LPCHARACTER pkKiller, int iMethod)
 			else if (bMoving)
 				iAmount = 3 + GetMaxSP() * 2 / 100;
 			else
-				iAmount = 10 + GetMaxSP() * 3 / 100; // 
+				iAmount = 10 + GetMaxSP() * 3 / 100; // 평상시
 
 			iAmount += (iAmount * pkKiller->GetPoint(POINT_SP_REGEN)) / 100;
 			pkKiller->PointChange(POINT_SP, iAmount);
@@ -162,11 +162,11 @@ void CHARACTER::DistributeSP(LPCHARACTER pkKiller, int iMethod)
 				iAmount = 2 + pkKiller->GetMaxSP() / 100;
 			else
 			{
-				// 
+				// 평상시
 				if (pkKiller->GetHP() < pkKiller->GetMaxHP())
-					iAmount = 2 + (pkKiller->GetMaxSP() / 100); //   á
+					iAmount = 2 + (pkKiller->GetMaxSP() / 100); // 피 다 안찼을때
 				else
-					iAmount = 9 + (pkKiller->GetMaxSP() / 100); // ⺻
+					iAmount = 9 + (pkKiller->GetMaxSP() / 100); // 기본
 			}
 
 			iAmount += (iAmount * pkKiller->GetPoint(POINT_SP_REGEN)) / 100;
@@ -213,7 +213,7 @@ bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
 	if (bType == 0)
 	{
 		//
-		// Ϲ 
+		// 일반 공격
 		//
 		switch (GetMobBattleType())
 		{
@@ -302,7 +302,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 		REMOVE_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_DEATH_PENALTY);
 
 		// NO_DEATH_PENALTY_BUG_FIX 
-		if (LC_IsYMIR()) // õ    ȣ  üũѴ.
+		if (LC_IsYMIR()) // 천마 버전에서는 언제나 용신의 가호 아이템을 체크한다.
 		{
 			if (FindAffect(AFFECT_NO_DEATH_PENALTY))
 			{
@@ -312,7 +312,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 				return;
 			}
 		}
-		else if (!bTown) //   ڸ Ȱø  ȣ Ѵ. ( ͽô ġ гƼ )
+		else if (!bTown) // 국제 버전에서는 제자리 부활시만 용신의 가호를 사용한다. (마을 복귀시는 경험치 패널티 없음)
 		{
 			if (FindAffect(AFFECT_NO_DEATH_PENALTY))
 			{
@@ -411,7 +411,7 @@ void CHARACTER::Stun()
 
 	CloseMyShop();
 
-	event_cancel(&m_pkRecoveryEvent); // ȸ ̺Ʈ δ.
+	event_cancel(&m_pkRecoveryEvent); // 회복 이벤트를 죽인다.
 
 	TPacketGCStun pack;
 	pack.header	= HEADER_GC_STUN;
@@ -535,7 +535,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 	bool isAutoLoot = 
 		(pkAttacker->GetPremiumRemainSeconds(PREMIUM_AUTOLOOT) > 0 ||
 		 pkAttacker->IsEquipUniqueGroup(UNIQUE_GROUP_AUTOLOOT))
-		? true : false; // 3 
+		? true : false; // 제3의 손
 	// END_OF_ADD_PREMIUM
 
 	PIXEL_POSITION pos;
@@ -546,7 +546,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 
 	int iTotalGold = 0;
 	//
-	// ---------   Ȯ  ----------
+	// --------- 돈 드롭 확률 계산 ----------
 	//
 	int iGoldPercent = MobRankStats[GetMobRank()].iGoldPercent;
 
@@ -580,35 +580,35 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 
 	int iGoldMultipler = GetGoldMultipler();
 
-	if (1 == Random::get(1, 50000)) // 1/50000 Ȯ  10
+	if (1 == Random::get(1, 50000)) // 1/50000 확률로 돈이 10배
 		iGoldMultipler *= 10;
-	else if (1 == Random::get(1, 10000)) // 1/10000 Ȯ  5
+	else if (1 == Random::get(1, 10000)) // 1/10000 확률로 돈이 5배
 		iGoldMultipler *= 5;
 
-	//  
+	// 개인 적용
 	if (pkAttacker->GetPoint(POINT_GOLD_DOUBLE_BONUS))
 		if (Random::get(1, 100) <= pkAttacker->GetPoint(POINT_GOLD_DOUBLE_BONUS))
 			iGoldMultipler *= 2;
 
 	//
-	// ---------     ----------
+	// --------- 돈 드롭 배수 결정 ----------
 	//
 	if (test_server)
 		pkAttacker->ChatPacket(CHAT_TYPE_PARTY, "gold_mul %d rate %d", iGoldMultipler, CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker));
 
 	//
-	// ---------   ó -------------
+	// --------- 실제 드롭 처리 -------------
 	// 
 	LPITEM item;
 
 	int iGold10DropPct = 100;
 	iGold10DropPct = (iGold10DropPct * 100) / (100 + CPrivManager::instance().GetPriv(pkAttacker, PRIV_GOLD10_DROP));
 
-	// MOB_RANK BOSS   ź
+	// MOB_RANK가 BOSS보다 높으면 무조건 돈폭탄
 	if (GetMobRank() >= MOB_RANK_BOSS && !IsStone() && GetMobTable().dwGoldMax != 0)
 	{
 		if (1 == Random::get(1, iGold10DropPct))
-			iGoldMultipler *= 10; // 1% Ȯ  10
+			iGoldMultipler *= 10; // 1% 확률로 돈 10배
 
 		int iSplitCount = Random::get(25, 35);
 
@@ -627,7 +627,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 			SPDLOG_TRACE("Drop Moeny MobGoldAmountRate {} {}", CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker), iGoldMultipler);
             SPDLOG_TRACE("Drop Money gold {} GoldMin {} GoldMax {}", iGold, GetMobTable().dwGoldMax, GetMobTable().dwGoldMax);
 
-			// NOTE:  ź  3  ó  
+			// NOTE: 돈 폭탄은 제 3의 손 처리를 하지 않음
 			if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
 			{
 				pos.x = GetX() + ((Random::get(-14, 14) + Random::get(-14, 14)) * 23);
@@ -640,11 +640,11 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 			}
 		}
 	}
-	// 1% Ȯ  10  ߸. (10 )
+	// 1% 확률로 돈을 10개 떨어 뜨린다. (10배 드롭임)
 	else if (1 == Random::get(1, iGold10DropPct))
 	{
 		//
-		//  ź 
+		// 돈 폭탄식 드롭
 		//
 		for (int i = 0; i < 10; ++i)
 		{
@@ -657,7 +657,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 				continue;
 			}
 
-			// NOTE:  ź  3  ó  
+			// NOTE: 돈 폭탄은 제 3의 손 처리를 하지 않음
 			if ((item = ITEM_MANAGER::instance().CreateItem(1, iGold)))
 			{
 				pos.x = GetX() + (Random::get(-7, 7) * 20);
@@ -673,7 +673,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 	else
 	{
 		//
-		// Ϲ   
+		// 일반적인 방식의 돈 드롭
 		//
 		int iGold = Random::get(GetMobTable().dwGoldMin, GetMobTable().dwGoldMax);
 		iGold = iGold * CHARACTER_MANAGER::instance().GetMobGoldAmountRate(pkAttacker) / 100;
@@ -720,7 +720,7 @@ void CHARACTER::RewardGold(LPCHARACTER pkAttacker)
 
 void CHARACTER::Reward(bool bItemDrop)
 {
-	if (GetRaceNum() == 5001) // ֱ   
+	if (GetRaceNum() == 5001) // 왜구는 돈을 무조건 드롭
 	{
 		PIXEL_POSITION pos;
 
@@ -807,7 +807,7 @@ void CHARACTER::Reward(bool bItemDrop)
 		return;
 
 	//
-	//  
+	// 돈 드롭
 	//
 	//PROF_UNIT pu2("r2");
     SPDLOG_TRACE("Drop money : Attacker {}", pkAttacker->GetName());
@@ -815,7 +815,7 @@ void CHARACTER::Reward(bool bItemDrop)
 	//pu2.Pop();
 
 	//
-	//  
+	// 아이템 드롭
 	//
 	//PROF_UNIT pu3("r3");
 	LPITEM item;
@@ -878,7 +878,7 @@ void CHARACTER::Reward(bool bItemDrop)
 
 			if (v.empty())
 			{
-				//  Ư      
+				// 데미지를 특별히 많이 준 사람이 없으니 소유권 없음
 				while (iItemIdx >= 0)
 				{
 					item = s_vec_item[iItemIdx--];
@@ -890,7 +890,7 @@ void CHARACTER::Reward(bool bItemDrop)
 					}
 
 					item->AddToGround(GetMapIndex(), pos);
-					// 10%     Ǿ
+					// 10% 이하 데미지 준 사람끼리는 소유권없음
 					//item->SetOwnership(pkAttacker);
 					item->StartDestroyEvent();
 
@@ -904,7 +904,7 @@ void CHARACTER::Reward(bool bItemDrop)
 			}
 			else
 			{
-				//       
+				// 데미지 많이 준 사람들 끼리만 소유권 나눠가짐
 				std::vector::iterator it = v.begin();
 
 				while (iItemIdx >= 0)
@@ -960,20 +960,20 @@ struct TItemDropPenalty
 
 TItemDropPenalty aItemDropPenalty_kor[9] =
 {
-	{   0,   0,  0,  0 },	// 
-	{   0,   0,  0,  0 },	// 
-	{   0,   0,  0,  0 },	// 
-	{   0,   0,  0,  0 },	// 
-	{   0,   0,  0,  0 },	// 
-	{  25,   1,  5,  1 },	// 
-	{  50,   2, 10,  1 },	// 
-	{  75,   4, 15,  1 },	// 
-	{ 100,   8, 20,  1 },	// п
+	{   0,   0,  0,  0 },	// 선왕
+	{   0,   0,  0,  0 },	// 영웅
+	{   0,   0,  0,  0 },	// 성자
+	{   0,   0,  0,  0 },	// 지인
+	{   0,   0,  0,  0 },	// 양민
+	{  25,   1,  5,  1 },	// 낭인
+	{  50,   2, 10,  1 },	// 악인
+	{  75,   4, 15,  1 },	// 마두
+	{ 100,   8, 20,  1 },	// 패왕
 };
 
 void CHARACTER::ItemDropPenalty(LPCHARACTER pkKiller)
 {
-	// λ  ¿   ʴ´.
+	// 개인상점을 연 상태에서는 아이템을 드롭하지 않는다.
 	if (GetMyShop())
 		return;
 
@@ -1204,7 +1204,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 	if (!pkKiller && m_dwKillerPID)
 		pkKiller = CHARACTER_MANAGER::instance().FindByPID(m_dwKillerPID);
 
-	m_dwKillerPID = 0; // ݵ ʱȭ ؾ DO NOT DELETE THIS LINE UNLESS YOU ARE 1000000% SURE
+	m_dwKillerPID = 0; // 반드시 초기화 해야함 DO NOT DELETE THIS LINE UNLESS YOU ARE 1000000% SURE
 
 	bool isAgreedPVP = false;
 	bool isUnderGuildWar = false;
@@ -1304,7 +1304,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 
 				if (GetPoint(POINT_EMPIRE_POINT) < 10)
 				{
-					// TODO : Ա  ڵ带 ־ Ѵ.
+					// TODO : 입구로 날리는 코드를 넣어야 한다.
 				}
 
 				char buf[256];
@@ -1371,7 +1371,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 
 	ClearSync();
 
-	event_cancel(&m_pkStunEvent); //  ̺Ʈ δ.
+	event_cancel(&m_pkStunEvent); // 기절 이벤트는 죽인다.
 
 	if (IsPC())
 	{
@@ -1381,12 +1381,12 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 	}
 	else
 	{
-		// 忡 ݹ ʹ   Ѵ.
+		// 가드에게 공격받은 몬스터는 보상이 없어야 한다.
 		if (!IS_SET(m_pointsInstant.instant_flag, INSTANT_FLAG_NO_REWARD))
 		{
 			if (!(pkKiller && pkKiller->IsPC() && pkKiller->GetGuild() && pkKiller->GetGuild()->UnderAnyWar(GUILD_WAR_TYPE_FIELD)))
 			{
-				// Ȱϴ ʹ   ʴ´.
+				// 부활하는 몬스터는 보상을 주지 않는다.
 				if (GetMobTable().dwResurrectionVnum)
 				{
 					// DUNGEON_MONSTER_REBIRTH_BUG_FIX
@@ -1438,10 +1438,10 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 
 	REMOVE_BIT(m_pointsInstant.instant_flag, INSTANT_FLAG_STUN);
 
-	// ÷̾ ij̸
+	// 플레이어 캐릭터이면
 	if (GetDesc() != NULL) {
 		//
-		// Ŭ̾Ʈ Ʈ Ŷ ٽ .
+		// 클라이언트에 에펙트 패킷을 다시 보낸다.
 		//
 		itertype(m_list_pkAffect) it = m_list_pkAffect.begin();
 
@@ -1450,11 +1450,11 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 	}
 
 	//
-	// Dead ̺Ʈ ,
+	// Dead 이벤트 생성,
 	//
-	// Dead ̺Ʈ    Ŀ Destroy ǵ ָ,
-	// PC  3 ִٰ    ش. 3  κ
-	//   , ⼭    ޴´.
+	// Dead 이벤트에서는 몬스터의 경우 몇초 후에 Destroy 되도록 해주며,
+	// PC의 경우 3분 있다가 마을에서 나오도록 해 준다. 3분 내에는 유저로부터
+	// 마을에서 시작할 건지, 여기서 시작할 건지 결정을 받는다.
 	if (isDuel == false)
 	{
 		if (m_pkDeadEvent)
@@ -1578,12 +1578,12 @@ void CHARACTER::SendDamagePacket(LPCHARACTER pAttacker, int Damage, BYTE DamageF
 }
 
 //
-// CHARACTER::Damage ޼ҵ this  ԰ Ѵ.
+// CHARACTER::Damage 메소드는 this가 데미지를 입게 한다.
 //
 // Arguments
-//    pAttacker		: 
-//    dam		: 
-//    EDamageType	:   ΰ?
+//    pAttacker		: 공격자
+//    dam		: 데미지
+//    EDamageType	: 어떤 형식의 공격인가?
 //    
 // Return value
 //    true		: dead
@@ -1656,7 +1656,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		}
 	}
 
-	// Ÿ ƴ   ó
+	// 평타가 아닐 때는 공포 처리
 	if (type != DAMAGE_TYPE_NORMAL && type != DAMAGE_TYPE_NORMAL_RANGE)
 	{
 		if (IsAffectFlag(AFF_TERROR))
@@ -1688,19 +1688,19 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	//PROF_UNIT puAttr("Attr");
 
 	//
-	//  ų,  ų(ڰ) ũƼð,   Ѵ.
-	//   ʾƾ ϴµ Nerf(ٿ뷱)ġ    ũƼð
-	//     ʰ, /2 ̻Ͽ Ѵ.
+	// 마법형 스킬과, 레인지형 스킬은(궁자객) 크리티컬과, 관통공격 계산을 한다.
+	// 원래는 하지 않아야 하는데 Nerf(다운밸런스)패치를 할 수 없어서 크리티컬과
+	// 관통공격의 원래 값을 쓰지 않고, /2 이상하여 적용한다.
 	// 
-	//  ̾߱Ⱑ Ƽ и ų ߰
+	// 무사 이야기가 많아서 밀리 스킬도 추가
 	//
-	// 20091109 : 簡  û   г,     70% 
+	// 20091109 : 무사가 결과적으로 엄청나게 강해진 것으로 결론남, 독일 기준 무사 비율 70% 육박
 	//
 	if (type == DAMAGE_TYPE_MELEE || type == DAMAGE_TYPE_RANGE || type == DAMAGE_TYPE_MAGIC)
 	{
 		if (pAttacker)
 		{
-			// ũƼ
+			// 크리티컬
 			int iCriticalPct = pAttacker->GetPoint(POINT_CRITICAL_PCT);
 
 			if (!IsPC())
@@ -1708,12 +1708,12 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 
 			if (iCriticalPct)
 			{
-				if (iCriticalPct >= 10) // 10 ũ 5% + (4 1% ),  ġ 50̸ 20%
+				if (iCriticalPct >= 10) // 10보다 크면 5% + (4마다 1%씩 증가), 따라서 수치가 50이면 20%
 					iCriticalPct = 5 + (iCriticalPct - 10) / 4;
-				else // 10  ܼ  , 10 = 5%
+				else // 10보다 작으면 단순히 반으로 깎음, 10 = 5%
 					iCriticalPct /= 2;
 
-				//ũƼ   .
+				//크리티컬 저항 값 적용.
 				iCriticalPct -= GetPoint(POINT_RESIST_CRITICAL);
 
 				if (Random::get(1, 100) <= iCriticalPct)
@@ -1729,7 +1729,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// 
+			// 관통공격
 			int iPenetratePct = pAttacker->GetPoint(POINT_PENETRATE_PCT);
 
 			if (!IsPC())
@@ -1751,16 +1751,16 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 
 				if (iPenetratePct >= 10)
 				{
-					// 10 ũ 5% + (4 1% ),  ġ 50̸ 20%
+					// 10보다 크면 5% + (4마다 1%씩 증가), 따라서 수치가 50이면 20%
 					iPenetratePct = 5 + (iPenetratePct - 10) / 4;
 				}
 				else
 				{
-					// 10  ܼ  , 10 = 5%
+					// 10보다 작으면 단순히 반으로 깎음, 10 = 5%
 					iPenetratePct /= 2;
 				}
 
-				//Ÿ   .
+				//관통타격 저항 값 적용.
 				iPenetratePct -= GetPoint(POINT_RESIST_PENETRATE);
 
 				if (Random::get(1, 100) <= iPenetratePct)
@@ -1781,13 +1781,13 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		}
 	}
 	// 
-	// ޺ , Ȱ ,  Ÿ   Ӽ  Ѵ.
+	// 콤보 공격, 활 공격, 즉 평타 일 때만 속성값들을 계산을 한다.
 	//
 	else if (type == DAMAGE_TYPE_NORMAL || type == DAMAGE_TYPE_NORMAL_RANGE)
 	{
 		if (type == DAMAGE_TYPE_NORMAL)
 		{
-			//  Ÿ    
+			// 근접 평타일 경우 막을 수 있음
 			if (GetPoint(POINT_BLOCK) && Random::get(1, 100) <= GetPoint(POINT_BLOCK))
 			{
 				if (test_server)
@@ -1802,7 +1802,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		}
 		else if (type == DAMAGE_TYPE_NORMAL_RANGE)
 		{
-			// Ÿ Ÿ    
+			// 원거리 평타의 경우 피할 수 있음
 			if (GetPoint(POINT_DODGE) && Random::get(1, 100) <= GetPoint(POINT_DODGE))
 			{
 				if (test_server)
@@ -1826,19 +1826,19 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			dam = dam * (100 - GetPoint(POINT_RESIST_NORMAL_DAMAGE)) / 100;
 
 		//
-		//  Ӽ 
+		// 공격자 속성 적용
 		//
 		if (pAttacker)
 		{
 			if (type == DAMAGE_TYPE_NORMAL)
 			{
-				// ݻ
+				// 반사
 				if (GetPoint(POINT_REFLECT_MELEE))
 				{
 					int reflectDamage = dam * GetPoint(POINT_REFLECT_MELEE) / 100;
 
-					// NOTE: ڰ IMMUNE_REFLECT Ӽ ִٸ ݻ縦  ϴ  
-					// ƴ϶ 1/3  ؼ  ȹ û.
+					// NOTE: 공격자가 IMMUNE_REFLECT 속성을 갖고있다면 반사를 안 하는 게 
+					// 아니라 1/3 데미지로 고정해서 들어가도록 기획에서 요청.
 					if (pAttacker->IsImmune(IMMUNE_REFLECT))
 						reflectDamage = int(reflectDamage / 3.0f + 0.5f);
 
@@ -1846,7 +1846,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// ũƼ
+			// 크리티컬
 			int iCriticalPct = pAttacker->GetPoint(POINT_CRITICAL_PCT);
 
 			if (!IsPC())
@@ -1854,7 +1854,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 
 			if (iCriticalPct)
 			{
-				//ũƼ   .
+				//크리티컬 저항 값 적용.
 				iCriticalPct -= GetPoint(POINT_RESIST_CRITICAL);
 
 				if (Random::get(1, 100) <= iCriticalPct)
@@ -1865,7 +1865,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// 
+			// 관통공격
 			int iPenetratePct = pAttacker->GetPoint(POINT_PENETRATE_PCT);
 
 			if (!IsPC())
@@ -1886,7 +1886,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			if (iPenetratePct)
 			{
 				
-				//Ÿ   .
+				//관통타격 저항 값 적용.
 				iPenetratePct -= GetPoint(POINT_RESIST_PENETRATE);
 
 				if (Random::get(1, 100) <= iPenetratePct)
@@ -1899,7 +1899,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// HP ƿ
+			// HP 스틸
 			if (pAttacker->GetPoint(POINT_STEAL_HP))
 			{
 				int pct = 1;
@@ -1917,7 +1917,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// SP ƿ
+			// SP 스틸
 			if (pAttacker->GetPoint(POINT_STEAL_SP))
 			{
 				int pct = 1;
@@ -1944,7 +1944,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			//  ƿ
+			// 돈 스틸
 			if (pAttacker->GetPoint(POINT_STEAL_GOLD))
 			{
 				if (Random::get(1, 100) <= pAttacker->GetPoint(POINT_STEAL_GOLD))
@@ -1955,8 +1955,8 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// ĥ  HPȸ
-			if (pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) && Random::get(0, 4) > 0) // 80% Ȯ
+			// 칠 때마다 HP회복
+			if (pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) && Random::get(0, 4) > 0) // 80% 확률
 			{
 				int i = std::min(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_HP_RECOVERY) / 100;
 
@@ -1967,8 +1967,8 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			// ĥ  SPȸ
-			if (pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) && Random::get(0, 4) > 0) // 80% Ȯ
+			// 칠 때마다 SP회복
+			if (pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) && Random::get(0, 4) > 0) // 80% 확률
 			{
 				int i = std::min(dam, iCurHP) * pAttacker->GetPoint(POINT_HIT_SP_RECOVERY) / 100;
 
@@ -1979,7 +1979,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 				}
 			}
 
-			//   ش.
+			// 상대방의 마나를 없앤다.
 			if (pAttacker->GetPoint(POINT_MANA_BURN_PCT))
 			{
 				if (Random::get(1, 100) <= pAttacker->GetPoint(POINT_MANA_BURN_PCT))
@@ -1989,7 +1989,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	}
 
 	//
-	// Ÿ Ǵ ų  ʽ / 
+	// 평타 또는 스킬로 인한 보너스 피해/방어 계산
 	// 
 	switch (type)
 	{
@@ -2020,16 +2020,16 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	}
 
 	//
-	// (żȣ)
+	// 마나쉴드(흑신수호)
 	//
 	if (IsAffectFlag(AFF_MANASHIELD))
 	{
-		// POINT_MANASHIELD  ۾ 
+		// POINT_MANASHIELD 는 작아질수록 좋다
 		int iDamageSPPart = dam / 3;
 		int iDamageToSP = iDamageSPPart * GetPoint(POINT_MANASHIELD) / 100;
 		int iSP = GetSP();
 
-		// SP     
+		// SP가 있으면 무조건 데미지 절반 감소
 		if (iDamageToSP <= iSP)
 		{
 			PointChange(POINT_SP, -iDamageToSP);
@@ -2037,14 +2037,14 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		}
 		else
 		{
-			// ŷ ڶ ǰ  ←??
+			// 정신력이 모자라서 피가 더 깍여야할??
 			PointChange(POINT_SP, -GetSP());
 			dam -= iSP * 100 / std::max(GetPoint(POINT_MANASHIELD), 1);
 		}
 	}
 
 	//
-	// ü   ( )
+	// 전체 방어력 상승 (몰 아이템)
 	// 
 	if (GetPoint(POINT_MALL_DEFBONUS) > 0)
 	{
@@ -2055,7 +2055,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	if (pAttacker)
 	{
 		//
-		// ü ݷ  ( )
+		// 전체 공격력 상승 (몰 아이템)
 		//
 		if (pAttacker->GetPoint(POINT_MALL_ATTBONUS) > 0)
 		{
@@ -2064,7 +2064,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		}
 
 		//
-		//   ʽ (ѱ õ  )
+		// 제국으로 인한 보너스 (한국 올드 버전만 적용)
 		//
 		int iEmpire = GetEmpire();
 		int lMapIndex = GetMapIndex();
@@ -2084,7 +2084,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			lMapIndex = pAttacker->GetMapIndex();
 			iMapEmpire = SECTREE_MANAGER::instance().GetEmpireFromMapIndex(lMapIndex);
 
-			// ٸ     10% 
+			// 다른 제국 사람인 경우 데미지 10% 감소
 			if (iEmpire && iMapEmpire && iEmpire != iMapEmpire)
 			{
 				int percent = 10;
@@ -2129,17 +2129,17 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		}
 
 		//
-		//  ݰ &  
+		// 군주의 금강권 & 사자후 
 		//
 		if (pAttacker->IsPC() && CMonarch::instance().IsPowerUp(pAttacker->GetEmpire()))
 		{
-			// 10%  
+			// 10% 피해 증가
 			dam += dam / 10;
 		}
 
 		if (IsPC() && CMonarch::instance().IsDefenceUp(GetEmpire()))
 		{
-			// 10%  
+			// 10% 피해 감소
 			dam -= dam / 10;
 		}
 	}
@@ -2155,7 +2155,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		else
 			SetLastAttacked(get_dword_time());
 
-		//   :  
+		// 몬스터 대사 : 맞을 때
 		MonsterChat(MONSTER_CHAT_ATTACKED);
 	}
 
@@ -2168,7 +2168,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	if (IsDead())
 		return true;
 
-	//    ʵ .
+	// 독 공격으로 죽지 않도록 함.
 	if (type == DAMAGE_TYPE_POISON)
 	{
 		if (GetHP() - dam <= 0)
@@ -2178,7 +2178,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	}
 
 	// ------------------------
-	//  ̾  
+	// 독일 프리미엄 모드 
 	// -----------------------
 	if (LC_IsGermany() && pAttacker && pAttacker->IsPC())
 	{
@@ -2186,7 +2186,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		dam = dam * iDmgPct / 100;
 	}
 
-	// STONE SKIN :   
+	// STONE SKIN : 피해 반으로 감소
 	if (IsMonster() && IsStoneSkinner())
 	{
 		if (GetHPPct() < GetMobTable().bStoneSkinPoint)
@@ -2196,7 +2196,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	//PROF_UNIT puRest1("Rest1");
 	if (pAttacker)
 	{
-		// DEATH BLOW : Ȯ  4  (!?  ̺Ʈ  ͸ )
+		// DEATH BLOW : 확률 적으로 4배 피해 (!? 현재 이벤트나 공성전용 몬스터만 사용함)
 		if (pAttacker->IsMonster() && pAttacker->IsDeathBlower())
 		{
 			if (pAttacker->IsDeathBlow())
@@ -2225,7 +2225,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			damageFlag |= DAMAGE_PENETRATE;
 
 
-		//  
+		//최종 데미지 보정
 		float damMul = this->GetDamMul();
 		float tempDam = dam;
 		dam = tempDam * damMul + 0.5f;
@@ -2265,7 +2265,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 	}
 
 	//
-	// !!!!!!!!!  HP ̴ κ !!!!!!!!!
+	// !!!!!!!!! 실제 HP를 줄이는 부분 !!!!!!!!!
 	//
 	if (!cannot_dead)
 	{
@@ -2292,7 +2292,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 		//puRest20.Pop();
 
 		//PROF_UNIT puRest21("Rest21");
-		StartRecoveryEvent(); // ʹ   ȸ Ѵ.
+		StartRecoveryEvent(); // 몬스터는 데미지를 입으면 회복을 시작한다.
 		//puRest21.Pop();
 
 		//PROF_UNIT puRest22("Rest22");
@@ -2317,40 +2317,40 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 
 void CHARACTER::DistributeHP(LPCHARACTER pkKiller)
 {
-	if (pkKiller->GetDungeon()) //  ΰʴ´
+	if (pkKiller->GetDungeon()) // 던젼내에선 만두가나오지않는다
 		return;
 }
 
 static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
 {
-	//  ġ 
+	// 레벨차 경험치 가감비율
 	iExp = CALCULATE_VALUE_LVDELTA(to->GetLevel(), from->GetLevel(), iExp);
 
-	// ܺ ׽Ʈ  ġ 3 ʽ
+	// 외부 테스트 서버 경험치 3배 보너스
 	if (distribution_test_server)
 		iExp *= 3;
 
 	int iBaseExp = iExp;
 
-	// , ȸ ġ ̺Ʈ 
+	// 점술, 회사 경험치 이벤트 적용
 	iExp = iExp * (100 + CPrivManager::instance().GetPriv(to, PRIV_EXP_PCT)) / 100;
 
-	// ӳ ⺻ Ǵ ġ ʽ
+	// 게임내 기본 제공되는 경험치 보너스
 	{
-		// 뵿 ޴
+		// 노동절 메달
 		if (to->IsEquipUniqueItem(UNIQUE_ITEM_LARBOR_MEDAL))
 			iExp += iExp * 20 /100;
 
-		// Ÿ ġ ʽ
+		// 사귀타워 경험치 보너스
 		if (to->GetMapIndex() >= 660000 && to->GetMapIndex() < 670000) 
-			iExp += iExp * 20 / 100; // 1.2 (20%)
+			iExp += iExp * 20 / 100; // 1.2배 (20%)
 
-		//  ġ ι Ӽ
+		// 아이템 경험치 두배 속성
 		if (to->GetPoint(POINT_EXP_DOUBLE_BONUS))
 			if (Random::get(1, 100) <= to->GetPoint(POINT_EXP_DOUBLE_BONUS))
-				iExp += iExp * 30 / 100; // 1.3 (30%)
+				iExp += iExp * 30 / 100; // 1.3배 (30%)
 
-		//   (2ð¥)
+		// 경험의 반지 (2시간짜리)
 		if (to->IsEquipUniqueItem(UNIQUE_ITEM_DOUBLE_EXP))
 			iExp += iExp * 50 / 100;
 
@@ -2374,16 +2374,16 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
 			case 20123:
 			case 20124:
 			case 20125:
-				//  ġ ʽ
+				// 백사자 경험치 보너스
 				iExp += iExp * 30 / 100;
 				break;
 		}
 	}
 
-	//   Ǹ ġ ʽ
+	// 아이템 몰 판매 경험치 보너스
 	if (LC_IsHongKong() || LC_IsEurope() || LC_IsCanada())
 	{
-		//  : ġ 
+		// 아이템 몰: 경험치 결제
 		if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0)
 		{
 			iExp += (iExp * 50 / 100);
@@ -2394,19 +2394,19 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
 			iExp += (iExp * 50 / 100);
 		}
 
-		// PC  ġ ʽ
+		// PC방 아템 경치 보너스
 		if (to->GetPoint(POINT_PC_BANG_EXP_BONUS) > 0)
 		{
 			if (to->IsPCBang() == true)
 				iExp += (iExp * to->GetPoint(POINT_PC_BANG_EXP_BONUS)/100);
 		}
 
-		// ȥ ʽ
+		// 결혼 보너스
 		iExp += iExp * to->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_EXP_BONUS) / 100;
 	}
 	else if (/*LC_IsNewCIBN() || */LC_IsBrazil())
 	{
-		//  : ġ 
+		// 아이템 몰: 경험치 결제
 		if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0)
 		{
 			iExp += iExp;
@@ -2417,19 +2417,19 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
 			iExp += iExp;
 		}
 
-		// PC  ġ ʽ
+		// PC방 아템 경치 보너스
 		if (to->GetPoint(POINT_PC_BANG_EXP_BONUS) > 0)
 		{
 			if (to->IsPCBang() == true)
 				iExp += (iExp * to->GetPoint(POINT_PC_BANG_EXP_BONUS)/100);
 		}
 
-		// ȥ ʽ
+		// 결혼 보너스
 		iExp += iExp * to->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_EXP_BONUS) / 100;
 	}
 	else
 	{
-		//  : ġ 
+		// 아이템 몰: 경험치 결제
 		if (to->GetPremiumRemainSeconds(PREMIUM_EXP) > 0)
 		{
 			iExp += (iExp * 20 / 100);
@@ -2440,14 +2440,14 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
 			iExp += (iExp * 20 / 100);
 		}
 
-		// PC  ġ ʽ
+		// PC방 아템 경치 보너스
 		if (to->GetPoint(POINT_PC_BANG_EXP_BONUS) > 0)
 		{
 			if (to->IsPCBang() == true)
 				iExp += (iExp * to->GetPoint(POINT_PC_BANG_EXP_BONUS)/100);
 		}
 
-		// ȥ ʽ
+		// 결혼 보너스
 		iExp += iExp * to->GetMarriageBonus(UNIQUE_ITEM_MARRIAGE_EXP_BONUS) / 100;
 	}
 
@@ -2468,10 +2468,10 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
         to->GetPoint(POINT_EXP)
     );
 
-	// ȹ  2005.04.21  85%
+	// 기획측 조정값 2005.04.21 현재 85%
 	iExp = iExp * CHARACTER_MANAGER::instance().GetMobExpRate(to) / 100;
 
-	// ġ ѹ ȹ淮 
+	// 경험치 한번 획득량 제한
 	iExp = std::min(to->GetNextExp() / 10, iExp);
 
 	if (test_server)
@@ -2487,10 +2487,10 @@ static void GiveExp(LPCHARACTER from, LPCHARACTER to, int iExp)
 
 	{
 		LPCHARACTER you = to->GetMarryPartner();
-		// κΰ  Ƽ̸ ݽ 
+		// 부부가 서로 파티중이면 금슬이 오른다
 		if (you)
 		{
-			// 1 100%
+			// 1억이 100%
 			DWORD dwUpdatePoint = 2000*iExp/to->GetLevel()/to->GetLevel()/3;
 
 			if (to->GetPremiumRemainSeconds(PREMIUM_MARRIAGE_FAST) > 0 || 
@@ -2609,7 +2609,7 @@ typedef struct SDamageInfo
 					pParty->ChatPacketToAllMember(CHAT_TYPE_INFO, "exp party bonus %d%%", pParty->GetExpBonusPercent());
 			}
 
-			// ġ ֱ (Ƽ ȹ ġ 5%   )
+			// 경험치 몰아주기 (파티가 획득한 경험치를 5% 빼서 먼저 줌)
 			if (pParty->GetExpCentralizeCharacter())
 			{
 				LPCHARACTER tch = pParty->GetExpCentralizeCharacter();
@@ -2648,7 +2648,7 @@ LPCHARACTER CHARACTER::DistributeExp()
 
 	TDamageMap::iterator it = m_map_kDamage.begin();
 
-	// ϴ    ɷ . (50m)
+	// 일단 주위에 없는 사람을 걸러 낸다. (50m)
 	while (it != m_map_kDamage.end())
 	{
 		const VID & c_VID = it->first;
@@ -2658,7 +2658,7 @@ LPCHARACTER CHARACTER::DistributeExp()
 
 		LPCHARACTER pAttacker = CHARACTER_MANAGER::instance().Find(c_VID);
 
-		// NPC ⵵ ϳ? -.-;
+		// NPC가 때리기도 하나? -.-;
 		if (!pAttacker || pAttacker->IsNPC() || DISTANCE_APPROX(GetX()-pAttacker->GetX(), GetY()-pAttacker->GetY())>5000)
 			continue;
 
@@ -2705,10 +2705,10 @@ LPCHARACTER CHARACTER::DistributeExp()
 	SetExp(0);
 	//m_map_kDamage.clear();
 
-	if (iTotalDam == 0)	//  ذ 0̸ 
+	if (iTotalDam == 0)	// 데미지 준게 0이면 리턴
 		return NULL;
 
-	if (m_pkChrStone)	//    ġ   ѱ.
+	if (m_pkChrStone)	// 돌이 있을 경우 경험치의 반을 돌에게 넘긴다.
 	{
 		int iExp = iExpToDistribute >> 1;
 		m_pkChrStone->SetExp(m_pkChrStone->GetExp() + iExp);
@@ -2721,11 +2721,11 @@ LPCHARACTER CHARACTER::DistributeExp()
 	if (damage_info_table.empty())
 		return NULL;
 
-	//      HP ȸ Ѵ.
-	DistributeHP(pkChrMostAttacked);	//  ý
+	// 제일 데미지를 많이 준 사람이 HP 회복을 한다.
+	DistributeHP(pkChrMostAttacked);	// 만두 시스템
 
 	{
-		//     ̳ Ƽ  ġ 20% + ڱⰡ ŭ ġ Դ´.
+		// 제일 데미지를 많이 준 사람이나 파티가 총 경험치의 20% + 자기가 때린만큼의 경험치를 먹는다.
 		TDamageInfoTable::iterator di = damage_info_table.begin();
 		{
 			TDamageInfoTable::iterator it;
@@ -2752,7 +2752,7 @@ LPCHARACTER CHARACTER::DistributeExp()
 
 		di->Distribute(this, iExp);
 
-		// 100%  Ծ Ѵ.
+		// 100% 다 먹었으면 리턴한다.
 		if (fPercent == 1.0f)
 			return pkChrMostAttacked;
 
@@ -2760,7 +2760,7 @@ LPCHARACTER CHARACTER::DistributeExp()
 	}
 
 	{
-		//  80% ġ йѴ.
+		// 남은 80%의 경험치를 분배한다.
 		TDamageInfoTable::iterator it;
 
 		for (it = damage_info_table.begin(); it != damage_info_table.end(); ++it)
@@ -2782,7 +2782,7 @@ LPCHARACTER CHARACTER::DistributeExp()
 	return pkChrMostAttacked;
 }
 
-// ȭ   
+// 화살 개수를 리턴해 줌
 int CHARACTER::GetArrowAndBow(LPITEM * ppkBow, LPITEM * ppkArrow, int iArrowCount/* = 1 */)
 {
 	LPITEM pkBow;
@@ -2854,7 +2854,7 @@ class CFuncShoot
 			if (!pkVictim)
 				return;
 
-			//  Ұ
+			// 공격 불가
 			if (!battle_is_attackable(m_me, pkVictim))
 				return;
 
@@ -2868,7 +2868,7 @@ class CFuncShoot
 
 			switch (m_bType)
 			{
-				case 0: // ϹȰ
+				case 0: // 일반활
 					{
 						int iDam = 0;
 
@@ -2902,7 +2902,7 @@ class CFuncShoot
 
 						NormalAttackAffect(m_me, pkVictim);
 
-						//  
+						// 데미지 계산
 						iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_BOW)) / 100;
 
 						m_me->OnMove(true);
@@ -2912,11 +2912,11 @@ class CFuncShoot
 							pkVictim->BeginFight(m_me);
 
 						pkVictim->Damage(m_me, iDam, DAMAGE_TYPE_NORMAL_RANGE);
-						// Ÿġ  
+						// 타격치 계산부 끝
 					}
 					break;
 
-				case 1: // Ϲ 
+				case 1: // 일반 마법
 					{
 						int iDam;
 
@@ -2927,7 +2927,7 @@ class CFuncShoot
 
 						NormalAttackAffect(m_me, pkVictim);
 
-						//  
+						// 데미지 계산
 						iDam = iDam * (100 - pkVictim->GetPoint(POINT_RESIST_MAGIC)) / 100;
 
 						m_me->OnMove(true);
@@ -2937,16 +2937,16 @@ class CFuncShoot
 							pkVictim->BeginFight(m_me); 
 
 						pkVictim->Damage(m_me, iDam, DAMAGE_TYPE_MAGIC);
-						// Ÿġ  
+						// 타격치 계산부 끝
 					}
 					break;
 
-				case SKILL_YEONSA:	// 
+				case SKILL_YEONSA:	// 연사
 					{
 						//int iUseArrow = 2 + (m_me->GetSkillPower(SKILL_YEONSA) *6/100);
 						int iUseArrow = 1;
 
-						// Ż ϴ°
+						// 토탈만 계산하는경우
 						{
 							if (iUseArrow == m_me->GetArrowAndBow(&pkBow, &pkArrow, iUseArrow))
 							{
@@ -3078,7 +3078,7 @@ class CFuncShoot
 						SPDLOG_DEBUG("{} - Skill {} -> {}", m_me->GetName(), m_bType, pkVictim->GetName());
 						m_me->ComputeSkill(m_bType, pkVictim);
 
-						// TODO     ϱ
+						// TODO 여러명에게 슉 슉 슉 하기
 					}
 					break;
 
@@ -3175,7 +3175,7 @@ LPCHARACTER CHARACTER::GetNearestVictim(LPCHARACTER pkChr)
 
 	TDamageMap::iterator it = m_map_kDamage.begin();
 
-	// ϴ    ɷ .
+	// 일단 주위에 없는 사람을 걸러 낸다.
 	while (it != m_map_kDamage.end())
 	{
 		const VID & c_VID = it->first;
@@ -3228,7 +3228,7 @@ LPCHARACTER CHARACTER::GetVictim() const
 	return CHARACTER_MANAGER::instance().Find(m_kVIDVictim);
 }
 
-LPCHARACTER CHARACTER::GetProtege() const // ȣؾ   
+LPCHARACTER CHARACTER::GetProtege() const // 보호해야 할 대상을 리턴
 {
 	if (m_pkChrStone)
 		return m_pkChrStone;
@@ -3381,7 +3381,7 @@ struct FuncAggregateMonster
 			if (ch->GetVictim())
 				return;
 
-			if (Random::get(1, 100) <= 50) // ӽ÷ 50% Ȯ  ´
+			if (Random::get(1, 100) <= 50) // 임시로 50% 확률로 적을 끌어온다
 				if (DISTANCE_APPROX(ch->GetX() - m_ch->GetX(), ch->GetY() - m_ch->GetY()) < 5000)
 					if (ch->CanBeginFight())
 						ch->BeginFight(m_ch);
@@ -3509,7 +3509,7 @@ void CHARACTER::PullMonster()
 
 void CHARACTER::UpdateAggrPointEx(LPCHARACTER pAttacker, EDamageType type, int dam, CHARACTER::TBattleInfo & info)
 {
-	// Ư ŸԿ   ö󰣴
+	// 특정 공격타입에 따라 더 올라간다
 	switch (type)
 	{
 		case DAMAGE_TYPE_NORMAL_RANGE:
@@ -3528,7 +3528,7 @@ void CHARACTER::UpdateAggrPointEx(LPCHARACTER pAttacker, EDamageType type, int d
 			break;
 	}
 
-	// ڰ    ʽ ش.
+	// 공격자가 현재 대상인 경우 보너스를 준다.
 	if (pAttacker == GetVictim())
 		dam = (int) (dam * 1.2f);
 
@@ -3541,7 +3541,7 @@ void CHARACTER::UpdateAggrPointEx(LPCHARACTER pAttacker, EDamageType type, int d
 	{
 		LPPARTY pParty = GetParty();
 
-		//     ϴ
+		// 리더인 경우 영향력이 좀더 강하다
 		int iPartyAggroDist = dam;
 
 		if (pParty->GetLeaderPID() == GetVID())
@@ -3573,7 +3573,7 @@ void CHARACTER::UpdateAggrPoint(LPCHARACTER pAttacker, EDamageType type, int dam
 
 void CHARACTER::ChangeVictimByAggro(int iNewAggro, LPCHARACTER pNewVictim)
 {
-	if (get_dword_time() - m_dwLastVictimSetTime < 3000) // 3ʴ ٷѴ
+	if (get_dword_time() - m_dwLastVictimSetTime < 3000) // 3초는 기다려야한다
 		return;
 
 	if (pNewVictim == GetVictim())
@@ -3584,7 +3584,7 @@ void CHARACTER::ChangeVictimByAggro(int iNewAggro, LPCHARACTER pNewVictim)
 			return;
 		}
 
-		// Aggro  
+		// Aggro가 감소한 경우
 		TDamageMap::iterator it;
 		TDamageMap::iterator itFind = m_map_kDamage.end();
 
diff --git a/src/game/src/char_change_empire.cpp b/src/game/src/char_change_empire.cpp
index 59d25c1..1d9bd3a 100644
--- a/src/game/src/char_change_empire.cpp
+++ b/src/game/src/char_change_empire.cpp
@@ -9,12 +9,12 @@
 
 /*
    Return Value
-		0 :     or  
-		1 :   ٲٷ
-		2 :   ijͰ 
-		3 : ȥ ijͰ 
+		0 : 알 수 없는 에러 or 쿼리 에러
+		1 : 동일한 제국으로 바꾸려고함
+		2 : 길드 가입한 캐릭터가 있음
+		3 : 결혼한 캐릭터가 있음
 
-		999 :  ̵ 
+		999 : 제국 이동 성공
 */
 int CHARACTER::ChangeEmpire(BYTE empire)
 {
@@ -27,7 +27,7 @@ int CHARACTER::ChangeEmpire(BYTE empire)
 	memset(dwPID, 0, sizeof(dwPID));
 
 	{
-		// 1.    pid  ´
+		// 1. 내 계정의 모든 pid를 얻어 온다
 		snprintf(szQuery, sizeof(szQuery), 
 				"SELECT id, pid1, pid2, pid3, pid4 FROM player_index%s WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", 
 				get_table_postfix(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire());
@@ -51,8 +51,8 @@ int CHARACTER::ChangeEmpire(BYTE empire)
 	const int loop = 4;
 
 	{
-		// 2.  ij   ´.
-		//    ijͶ 忡  Ǿ ִٸ,  ̵   .
+		// 2. 각 캐릭터의 길드 정보를 얻어온다.
+		//   한 캐릭터라도 길드에 가입 되어 있다면, 제국 이동을 할 수 없다.
 		DWORD dwGuildID[4];
 		CGuild * pGuild[4];
 		SQLMsg * pMsg = NULL;
@@ -91,8 +91,8 @@ int CHARACTER::ChangeEmpire(BYTE empire)
 	}
 
 	{
-		// 3.  ij ȥ  ´.
-		//    ijͶ ȥ ¶  ̵   .
+		// 3. 각 캐릭터의 결혼 정보를 얻어온다.
+		//   한 캐릭터라도 결혼 상태라면 제국 이동을 할 수 없다.
 		for (int i = 0; i < loop; ++i)
 		{
 			if (marriage::CManager::instance().IsEngagedOrMarried(dwPID[i]) == true)
@@ -101,7 +101,7 @@ int CHARACTER::ChangeEmpire(BYTE empire)
 	}
 	
 	{
-		// 4. db   Ʈ Ѵ.
+		// 4. db의 제국 정보를 업데이트 한다.
 		snprintf(szQuery, sizeof(szQuery), "UPDATE player_index%s SET empire=%u WHERE pid1=%u OR pid2=%u OR pid3=%u OR pid4=%u AND empire=%u", 
 				get_table_postfix(), empire, GetPlayerID(), GetPlayerID(), GetPlayerID(), GetPlayerID(), GetEmpire());
 
@@ -109,7 +109,7 @@ int CHARACTER::ChangeEmpire(BYTE empire)
 
 		if (msg->Get()->uiAffectedRows > 0)
 		{
-			// 5.   ̷ ߰Ѵ.
+			// 5. 제국 변경 이력을 추가한다.
 			SetChangeEmpireCount();
 
 			return 999;
diff --git a/src/game/src/char_dragonsoul.cpp b/src/game/src/char_dragonsoul.cpp
index 33f0996..7bf7b6b 100644
--- a/src/game/src/char_dragonsoul.cpp
+++ b/src/game/src/char_dragonsoul.cpp
@@ -5,14 +5,14 @@
 #include "DragonSoul.h"
 #include "log.h"
 
-// ȥ ʱȭ
-// ȥ on/off Affect DZ ,
-// ȥ Affect ִٸ  ִ ȥ activateؾѴ.
-//  ȥ  ڰ QuestFlag  ұ , 
-// Ʈ Flag ȥ  ڰ о´.
+// 용혼석 초기화
+// 용혼석 on/off는 Affect로 저장되기 때문에,
+// 용혼석 Affect가 있다면 덱에 있는 용혼석을 activate해야한다.
+// 또한 용혼석 사용 자격은 QuestFlag로 저장해 놓았기 때문에, 
+// 퀘스트 Flag에서 용혼석 사용 자격을 읽어온다.
 
-// ij affect, quest load DZ  DragonSoul_Initialize ȣϸ ȵȴ.
-// affect   εǾ LoadAffect ȣ.
+// 캐릭터의 affect, quest가 load 되기 전에 DragonSoul_Initialize를 호출하면 안된다.
+// affect가 가장 마지막에 로드되어 LoadAffect에서 호출함.
 void CHARACTER::DragonSoul_Initialize()
 {
 	for (int i = INVENTORY_MAX_NUM + WEAR_MAX_NUM; i < DRAGON_SOUL_EQUIP_SLOT_END; i++)
@@ -55,7 +55,7 @@ void CHARACTER::DragonSoul_GiveQualification()
 	}
 	AddAffect(AFFECT_DRAGON_SOUL_QUALIFIED, APPLY_NONE, 0, AFF_NONE, INFINITE_AFFECT_DURATION, 0, false, false);
 	//SetQuestFlag("dragon_soul.is_qualified", 1);
-	//// ڰִٸ POINT_DRAGON_SOUL_IS_QUALIFIED  1
+	//// 자격있다면 POINT_DRAGON_SOUL_IS_QUALIFIED는 무조건 1
 	//PointChange(POINT_DRAGON_SOUL_IS_QUALIFIED, 1 - GetPoint(POINT_DRAGON_SOUL_IS_QUALIFIED));
 }
 
diff --git a/src/game/src/char_horse.cpp b/src/game/src/char_horse.cpp
index 136a1b7..e652621 100644
--- a/src/game/src/char_horse.cpp
+++ b/src/game/src/char_horse.cpp
@@ -27,7 +27,7 @@ bool CHARACTER::StartRiding()
 		return false;
 	}
 
-	// νõ    Ÿ 
+	// 턱시도 입은 상태의 말 타기 금지
 	LPITEM armor = GetWear(WEAR_BODY);
 
 	if (armor && (armor->GetVnum() >= 11901 && armor->GetVnum() <= 11904))
@@ -57,7 +57,7 @@ bool CHARACTER::StartRiding()
 		return false;
 	}
 
-	// ȯ  ְ
+	// 소환한 말 없애고
 	HorseSummon(false);
 
 	MountVnum(dwMountVnum);
@@ -78,7 +78,7 @@ bool CHARACTER::StopRiding()
 			DWORD dwOldVnum = GetMountVnum();
 			MountVnum(0);
 
-			// [NOTE]    ڱⰡ  ȯϵ 
+			// [NOTE] 말에서 내릴 땐 자기가 탔던걸 소환하도록 수정
 			HorseSummon(true, false, dwOldVnum);
 		}
 		else
@@ -139,14 +139,14 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 {
 	if ( bSummon )
 	{
-		//NOTE : summonߴµ ̹ horse  ƹ͵ Ѵ.
+		//NOTE : summon했는데 이미 horse가 있으면 아무것도 안한다.
 		if( m_chHorse != NULL )
 			return;
 
 		if (GetHorseLevel() <= 0)
 			return;
 
-		// 𰡸 Ÿ ִٸ 
+		// 무언가를 타고 있다면 실패
 		if (IsRiding())
 			return;
 
@@ -183,10 +183,10 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 
 		if (GetHorseHealth() <= 0)
 		{
-			// ó ְ ϴ ó
+			// 죽은거처럼 있게 하는 처리
 			m_chHorse->SetPosition(POS_DEAD);
 
-			// ðִ  .
+			// 일정시간있다 사라지게 하자.
 			char_event_info* info = AllocEventInfo();
 			info->ch = this;
 			m_chHorse->m_pkDeadEvent = event_create(horse_dead_event, info, PASSES_PER_SEC(60));
@@ -239,7 +239,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 		}
 		else
 		{
-			// ־鼭  ó ϱ
+			// 멀어지면서 사라지는 처리 하기
 			chHorse->SetNowWalking(false);
 			float fx, fy;
 			chHorse->SetRotation(GetDegreeFromPositionXY(chHorse->GetX(), chHorse->GetY(), GetX(), GetY())+180);
@@ -310,7 +310,7 @@ void CHARACTER::SendHorseInfo()
 3: 70% < ~ <= 100%
 2: 30% < ~ <= 70%
 1:  0% < ~ <= 30%
-0: 
+0: 사망
 
 STM
 
@@ -343,8 +343,8 @@ STM
 		{
 			ChatPacket(CHAT_TYPE_COMMAND, "horse_state %d %d %d", GetHorseLevel(), iHealthGrade, iStaminaGrade);
 
-			// FIX : Ŭ̾Ʈ "\xB8\xBB \xBB\xF3\xC5\xC2 \xB9\xF6\xC7\xC1"  ǥ   Լ Կ returnν Ʒ ڵ带 Ѵٸ
-			//  Ѵ ȯϴ ù װ .. Ȯ  ľ غ .
+			// FIX : 클라이언트에 "\xB8\xBB \xBB\xF3\xC5\xC2 \xB9\xF6\xC7\xC1" 아이콘을 표시하지 않을 목적으로 함수 초입에 return함으로써 아래 코드를 무시한다면
+			// 말을 무한대로 소환하는 무시무시한 버그가 생김.. 정확한 원인은 파악 안해봐서 모름.
 			m_bSendHorseLevel = GetHorseLevel();
 			m_bSendHorseHealthGrade = iHealthGrade;
 			m_bSendHorseStaminaGrade = iStaminaGrade;
@@ -366,7 +366,7 @@ bool CHARACTER::CanUseHorseSkill()
 			if (GetMountVnum() >= 20209 && GetMountVnum() <= 20212)
 				return true;
 
-			//󸶴 渶
+			//라마단 흑마
 			if (CMobVnumHelper::IsRamadanBlackHorse(GetMountVnum()))
 				return true;
 		}
diff --git a/src/game/src/char_item.cpp b/src/game/src/char_item.cpp
index cdae1d7..b2a5a63 100644
--- a/src/game/src/char_item.cpp
+++ b/src/game/src/char_item.cpp
@@ -77,7 +77,7 @@ struct FFindStone
 };
 
 
-//ȯ, ȯ, ȥ
+//귀환부, 귀환기억부, 결혼반지
 static bool IS_SUMMON_ITEM(int vnum)
 {
 	switch (vnum)
@@ -110,38 +110,38 @@ static bool IS_MONKEY_DUNGEON(int map_index)
 
 bool IS_SUMMONABLE_ZONE(int map_index)
 {
-	// Ű
+	// 몽키던전
 	if (IS_MONKEY_DUNGEON(map_index))
 		return false;
-	// 
+	// 성
 	if (IS_CASTLE_MAP(map_index))
 		return false;
 
 	switch (map_index)
 	{
-		case 66 : // Ÿ
-		case 71 : // Ź  2
-		case 72 : // õ 
-		case 73 : // õ  2
-		case 193 : // Ź  2-1
+		case 66 : // 사귀타워
+		case 71 : // 거미 던전 2층
+		case 72 : // 천의 동굴
+		case 73 : // 천의 동굴 2층
+		case 193 : // 거미 던전 2-1층
 #if 0
-		case 184 : // õ (ż)
-		case 185 : // õ  2(ż)
-		case 186 : // õ (õ)
-		case 187 : // õ  2(õ)
-		case 188 : // õ ()
-		case 189 : // õ  2()
+		case 184 : // 천의 동굴(신수)
+		case 185 : // 천의 동굴 2층(신수)
+		case 186 : // 천의 동굴(천조)
+		case 187 : // 천의 동굴 2층(천조)
+		case 188 : // 천의 동굴(진노)
+		case 189 : // 천의 동굴 2층(진노)
 #endif
-//		case 206 : // Ʊ͵
-		case 216 : // Ʊ͵
-		case 217 : // Ź  3
-		case 208 : // õ  ()
+//		case 206 : // 아귀동굴
+		case 216 : // 아귀동굴
+		case 217 : // 거미 던전 3층
+		case 208 : // 천의 동굴 (용방)
 			return false;
 	}
 
 	if (CBattleArena::IsBattleArenaMap(map_index)) return false;
 
-	//  private   Ұ
+	// 모든 private 맵으론 워프 불가능
 	if (map_index > 10000) return false;
 
 	return true;
@@ -165,7 +165,7 @@ bool IS_BOTARYABLE_ZONE(int nMapIndex)
 	return false;
 }
 
-// item socket  Ÿ԰  üũ -- by mhh
+// item socket 이 프로토타입과 같은지 체크 -- by mhh
 static bool FN_check_item_socket(LPITEM item)
 {
 	for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
@@ -177,7 +177,7 @@ static bool FN_check_item_socket(LPITEM item)
 	return true;
 }
 
-// item socket  -- by mhh
+// item socket 복사 -- by mhh
 static void FN_copy_item_socket(LPITEM dest, LPITEM src)
 {
 	for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
@@ -187,13 +187,13 @@ static void FN_copy_item_socket(LPITEM dest, LPITEM src)
 }
 static bool FN_check_item_sex(LPCHARACTER ch, LPITEM item)
 {
-	//  
+	// 남자 금지
 	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_MALE))
 	{
 		if (SEX_MALE==GET_SEX(ch))
 			return false;
 	}
-	// ڱ
+	// 여자금지
 	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_FEMALE)) 
 	{
 		if (SEX_FEMALE==GET_SEX(ch))
@@ -279,7 +279,7 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
 		assert(!"GetOwner exist");
 		return;
 	}
-	// ⺻ κ丮
+	// 기본 인벤토리
 	switch(window_type)
 	{
 	case INVENTORY:
@@ -325,8 +325,8 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
 						if (p >= INVENTORY_MAX_NUM)
 							continue;
 
-						// wCell + 1  ϴ   üũ  
-						//  óϱ 
+						// wCell + 1 로 하는 것은 빈곳을 체크할 때 같은
+						// 아이템은 예외처리하기 위함
 						m_pointsInstant.bItemGrid[p] = wCell + 1;
 					}
 				}
@@ -337,7 +337,7 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
 			m_pointsInstant.pItems[wCell] = pItem;
 		}
 		break;
-	// ȥ κ丮
+	// 용혼석 인벤토리
 	case DRAGON_SOUL_INVENTORY:
 		{
 			LPITEM pOld = m_pointsInstant.pDSItems[wCell];
@@ -380,8 +380,8 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
 						if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM)
 							continue;
 
-						// wCell + 1  ϴ   üũ  
-						//  óϱ 
+						// wCell + 1 로 하는 것은 빈곳을 체크할 때 같은
+						// 아이템은 예외처리하기 위함
 						m_pointsInstant.wDSItemGrid[p] = wCell + 1;
 					}
 				}
@@ -399,7 +399,7 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
 
 	if (GetDesc())
 	{
-		// Ȯ :   ÷  
+		// 확장 아이템: 서버에서 아이템 플래그 정보를 보낸다
 		if (pItem)
 		{
 			TPacketGCItemSet pack;
@@ -453,7 +453,7 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
 
 LPITEM CHARACTER::GetWear(BYTE bCell) const
 {
-	// > WEAR_MAX_NUM : ȥ Ե.
+	// > WEAR_MAX_NUM : 용혼석 슬롯들.
 	if (bCell >= WEAR_MAX_NUM + DRAGON_SOUL_DECK_MAX_NUM * DS_SLOT_MAX)
 	{
 		SPDLOG_ERROR("CHARACTER::GetWear: invalid wear cell {}", bCell);
@@ -465,7 +465,7 @@ LPITEM CHARACTER::GetWear(BYTE bCell) const
 
 void CHARACTER::SetWear(BYTE bCell, LPITEM item)
 {
-	// > WEAR_MAX_NUM : ȥ Ե.
+	// > WEAR_MAX_NUM : 용혼석 슬롯들.
 	if (bCell >= WEAR_MAX_NUM + DRAGON_SOUL_DECK_MAX_NUM * DS_SLOT_MAX)
 	{
 		SPDLOG_ERROR("CHARACTER::SetItem: invalid item cell {}", bCell);
@@ -476,7 +476,7 @@ void CHARACTER::SetWear(BYTE bCell, LPITEM item)
 
 	if (!item && bCell == WEAR_WEAPON)
 	{
-		// Ͱ    ̶ ȿ ־ Ѵ.
+		// 귀검 사용 시 벗는 것이라면 효과를 없애야 한다.
 		if (IsAffectFlag(AFF_GWIGUM))
 			RemoveAffect(SKILL_GWIGEOM);
 
@@ -524,8 +524,8 @@ bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) c
 		{
 			BYTE bCell = Cell.cell;
 
-			// bItemCell 0 false Ÿ  + 1 ؼ óѴ.
-			//  iExceptionCell 1  Ѵ.
+			// bItemCell은 0이 false임을 나타내기 위해 + 1 해서 처리한다.
+			// 따라서 iExceptionCell에 1을 더해 비교한다.
 			++iExceptionCell;
 
 			if (Cell.IsBeltInventoryPosition())
@@ -585,7 +585,7 @@ bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) c
 					return false;
 			}
 
-			// ũⰡ 1̸ ĭ ϴ ̹Ƿ ׳ 
+			// 크기가 1이면 한칸을 차지하는 것이므로 그냥 리턴
 			if (1 == bSize)
 				return true;
 			else
@@ -619,8 +619,8 @@ bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) c
 			if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM)
 				return false;
 
-			// bItemCell 0 false Ÿ  + 1 ؼ óѴ.
-			//  iExceptionCell 1  Ѵ.
+			// bItemCell은 0이 false임을 나타내기 위해 + 1 해서 처리한다.
+			// 따라서 iExceptionCell에 1을 더해 비교한다.
 			iExceptionCell++;
 
 			if (m_pointsInstant.wDSItemGrid[wCell])
@@ -651,7 +651,7 @@ bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) c
 					return false;
 			}
 
-			// ũⰡ 1̸ ĭ ϴ ̹Ƿ ׳ 
+			// 크기가 1이면 한칸을 차지하는 것이므로 그냥 리턴
 			if (1 == bSize)
 				return true;
 			else
@@ -681,8 +681,8 @@ bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) c
 
 int CHARACTER::GetEmptyInventory(BYTE size) const
 {
-	// NOTE:   Լ  , ȹ     κ丮  ĭ ã  ǰ ִµ,
-	//		Ʈ κ丮 Ư κ丮̹Ƿ ˻ ʵ Ѵ. (⺻ κ丮: INVENTORY_MAX_NUM  ˻)
+	// NOTE: 현재 이 함수는 아이템 지급, 획득 등의 행위를 할 때 인벤토리의 빈 칸을 찾기 위해 사용되고 있는데,
+	//		벨트 인벤토리는 특수 인벤토리이므로 검사하지 않도록 한다. (기본 인벤토리: INVENTORY_MAX_NUM 까지만 검사)
 	for ( int i = 0; i < INVENTORY_MAX_NUM; ++i)
 		if (IsEmptyItemGrid(TItemPos (INVENTORY, i), size))
 			return i;
@@ -742,7 +742,7 @@ void TransformRefineItem(LPITEM pkOldItem, LPITEM pkNewItem)
 	// END_OF_ACCESSORY_REFINE
 	else
 	{
-		// ⼭  ڵ û 
+		// 여기서 깨진석이 자동적으로 청소 됨
 		for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 		{
 			if (!pkOldItem->GetSocket(i))
@@ -751,7 +751,7 @@ void TransformRefineItem(LPITEM pkOldItem, LPITEM pkNewItem)
 				pkNewItem->SetSocket(i, 1);
 		}
 
-		//  
+		// 소켓 설정
 		int slot = 0;
 
 		for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
@@ -764,7 +764,7 @@ void TransformRefineItem(LPITEM pkOldItem, LPITEM pkNewItem)
 
 	}
 
-	//   
+	// 매직 아이템 설정
 	pkOldItem->CopyAttributeTo(pkNewItem);
 }
 
@@ -808,8 +808,8 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 		return false;
 	}
 	
-	// ð : upgrade_refine_scroll.quest   5̳ Ϲ  
-	//Ҽ 
+	//개량 시간제한 : upgrade_refine_scroll.quest 에서 개량후 5분이내에 일반 개량을 
+	//진행할수 없음
 	if (quest::CQuestManager::instance().GetEventFlag("update_refine_time") != 0)
 	{
 		if (get_global_time() < quest::CQuestManager::instance().GetEventFlag("update_refine_time") + (60 * 5))
@@ -917,7 +917,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 
 	if (prob <= prt->prob)
 	{
-		// !   ,  Ӽ ٸ  ȹ
+		// 성공! 모든 아이템이 사라지고, 같은 속성의 다른 아이템 획득
 		LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_vnum, 1, 0, false);
 
 		if (pkNewItem)
@@ -946,7 +946,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 		else
 		{
 			// DETAIL_REFINE_LOG
-			//    ->  з 
+			// 아이템 생성에 실패 -> 개량 실패로 간주
 			SPDLOG_ERROR("cannot create item {}", result_vnum);
 			NotifyRefineFail(this, item, IsRefineThroughGuild() ? "GUILD" : "POWER");
 			// END_OF_DETAIL_REFINE_LOG
@@ -954,7 +954,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	}
 	else
 	{
-		// !   .
+		// 실패! 모든 아이템이 사라짐.
 		DBManager::instance().SendMoneyLog(MONEY_LOG_REFINE, item->GetVnum(), -cost);
 		NotifyRefineFail(this, item, IsRefineThroughGuild() ? "GUILD" : "POWER");
 		item->AttrLog();
@@ -970,7 +970,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 enum enum_RefineScrolls
 {
 	CHUKBOK_SCROLL = 0,
-	HYUNIRON_CHN   = 1, // ߱ 
+	HYUNIRON_CHN   = 1, // 중국에서만 사용
 	YONGSIN_SCROLL = 2,
 	MUSIN_SCROLL   = 3,
 	YAGONG_SCROLL  = 4,
@@ -988,8 +988,8 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	ClearRefineMode();
 
-	// ð : upgrade_refine_scroll.quest   5̳ Ϲ  
-	//Ҽ 
+	//개량 시간제한 : upgrade_refine_scroll.quest 에서 개량후 5분이내에 일반 개량을 
+	//진행할수 없음
 	if (quest::CQuestManager::instance().GetEventFlag("update_refine_time") != 0)
 	{
 		if (get_global_time() < quest::CQuestManager::instance().GetEventFlag("update_refine_time") + (60 * 5))
@@ -1006,7 +1006,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	LPITEM pkItemScroll;
 
-	//  üũ
+	// 개량서 체크
 	if (m_iRefineAdditionalCell < 0)
 		return false;
 
@@ -1117,7 +1117,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	if (pkItemScroll->GetValue(0) == HYUNIRON_CHN || 
 		pkItemScroll->GetValue(0) == YONGSIN_SCROLL || 
-		pkItemScroll->GetValue(0) == YAGONG_SCROLL) // ö,  ູ, ߰   ó
+		pkItemScroll->GetValue(0) == YAGONG_SCROLL) // 현철, 용신의 축복서, 야공의 비전서  처리
 	{
 		const char hyuniron_prob[9] = { 100, 75, 65, 55, 45, 40, 35, 25, 20 };
 		const char hyuniron_prob_euckr[9] = { 100, 75, 65, 55, 45, 40, 35, 30, 25 };
@@ -1148,7 +1148,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 		{
 			ChatPacket(CHAT_TYPE_INFO, "[Only Test] Success_Prob %d, RefineLevel %d ", success_prob, item->GetRefineLevel());
 		}
-		if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) // ö  μ Ѵ.
+		if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) // 현철은 아이템이 부서져야 한다.
 			bDestroyWhenFail = true;
 
 		// DETAIL_REFINE_LOG
@@ -1168,7 +1168,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	}
 
 	// DETAIL_REFINE_LOG
-	if (pkItemScroll->GetValue(0) == MUSIN_SCROLL) //  ູ 100%  (+4)
+	if (pkItemScroll->GetValue(0) == MUSIN_SCROLL) // 무신의 축복서는 100% 성공 (+4까지만)
 	{
 		success_prob = 100;
 
@@ -1190,7 +1190,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	if (prob <= success_prob)
 	{
-		// !   ,  Ӽ ٸ  ȹ
+		// 성공! 모든 아이템이 사라지고, 같은 속성의 다른 아이템 획득
 		LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_vnum, 1, 0, false);
 
 		if (pkNewItem)
@@ -1212,14 +1212,14 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 		}
 		else
 		{
-			//    ->  з 
+			// 아이템 생성에 실패 -> 개량 실패로 간주
 			SPDLOG_ERROR("cannot create item {}", result_vnum);
 			NotifyRefineFail(this, item, szRefineType);
 		}
 	}
 	else if (!bDestroyWhenFail && result_fail_vnum)
 	{
-		// !   ,  Ӽ    ȹ
+		// 실패! 모든 아이템이 사라지고, 같은 속성의 낮은 등급의 아이템 획득
 		LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_fail_vnum, 1, 0, false);
 
 		if (pkNewItem)
@@ -1243,14 +1243,14 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 		}
 		else
 		{
-			//    ->  з 
+			// 아이템 생성에 실패 -> 개량 실패로 간주
 			SPDLOG_ERROR("cannot create item {}", result_fail_vnum);
 			NotifyRefineFail(this, item, szRefineType);
 		}
 	}
 	else
 	{
-		NotifyRefineFail(this, item, szRefineType); //    
+		NotifyRefineFail(this, item, szRefineType); // 개량시 아이템 사라지지 않음
 		
 		PayRefineFee(prt->cost);
 	}
@@ -1326,7 +1326,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	//MAIN_QUEST_LV7
 	if (GetQuestFlag("main_quest_lv7.refine_chance") > 0)
 	{
-		// Ϻ 
+		// 일본은 제외
 		if (!item->CheckItemUseLevel(20) || item->GetType() != ITEM_WEAPON)
 		{
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB7\xE1 \xB0\xB3\xB7\xAE \xB1\xE2\xC8\xB8\xB4\xC2 20 \xC0\xCC\xC7\xCF\xC0\xC7 \xB9\xAB\xB1\xE2\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9"));
@@ -1364,8 +1364,8 @@ bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget)
 
 	if (pkItem->GetSubType() == USE_TUNING)
 	{
-		// XXX ,   ϴ...
-		// XXX ɰ ູ  Ǿ!
+		// XXX 성능, 소켓 개량서는 사라졌습니다...
+		// XXX 성능개량서는 축복의 서가 되었다!
 		// MUSIN_SCROLL
 		if (pkItem->GetValue(0) == MUSIN_SCROLL)
 			RefineInformation(pkTarget->GetCell(), REFINE_TYPE_MUSIN, pkItem->GetCell());
@@ -1409,7 +1409,7 @@ bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget)
 					AutoGiveItem(socket);
 					//TItemTable* pTable = ITEM_MANAGER::instance().GetTable(pkTarget->GetSocket(i));
 					//pkTarget->SetSocket(i, pTable->alValues[2]);
-					//  üش
+					// 깨진돌로 대체해준다
 					pkTarget->SetSocket(i, ITEM_BROKEN_METIN_VNUM);
 				}
 			}
@@ -1476,12 +1476,12 @@ bool CHARACTER::GiveRecallItem(LPITEM item)
 
 	int pos;
 
-	if (item->GetCount() == 1)	//  ϳ ׳ .
+	if (item->GetCount() == 1)	// 아이템이 하나라면 그냥 셋팅.
 	{
 		item->SetSocket(0, GetX());
 		item->SetSocket(1, GetY());
 	}
-	else if ((pos = GetEmptyInventory(item->GetSize())) != -1) // ׷ ʴٸ ٸ κ丮  ã´.
+	else if ((pos = GetEmptyInventory(item->GetSize())) != -1) // 그렇지 않다면 다른 인벤토리 슬롯을 찾는다.
 	{
 		LPITEM item2 = ITEM_MANAGER::instance().CreateItem(item->GetVnum(), 1);
 
@@ -1527,7 +1527,7 @@ void CHARACTER::ProcessRecallItem(LPITEM item)
 		case 216:
 			iEmpireByMapIndex = -1;
 			break;
-		// Ƿ決 ϶
+		// 악룡군도 일때
 		case 301:
 		case 302:
 		case 303:
@@ -1581,14 +1581,14 @@ void CHARACTER::SendMyShopPriceListCmd(DWORD dwItemVnum, DWORD dwItemPrice)
 }
 
 //
-// DB ij÷   Ʈ User  ϰ   Ŀǵ带 .
+// DB 캐시로 부터 받은 리스트를 User 에게 전송하고 상점을 열라는 커맨드를 보낸다.
 //
 void CHARACTER::UseSilkBotaryReal(const TPacketMyshopPricelistHeader* p)
 {
 	const TItemPriceInfo* pInfo = (const TItemPriceInfo*)(p + 1);
 
 	if (!p->byCount)
-		//  Ʈ . dummy ͸  Ŀǵ带 ش.
+		// 가격 리스트가 없다. dummy 데이터를 넣은 커맨드를 보내준다.
 		SendMyShopPriceListCmd(1, 0);
 	else {
 		for (int idx = 0; idx < p->byCount; idx++)
@@ -1599,8 +1599,8 @@ void CHARACTER::UseSilkBotaryReal(const TPacketMyshopPricelistHeader* p)
 }
 
 //
-// ̹   ó  Open ϴ  Ʈ Load ϱ  DB ijÿ  Ʈ û Ŷ .
-// ĺʹ ٷ    .
+// 이번 접속 후 처음 상점을 Open 하는 경우 리스트를 Load 하기 위해 DB 캐시에 가격정보 리스트 요청 패킷을 보낸다.
+// 이후부터는 바로 상점을 열라는 응답을 보낸다.
 //
 void CHARACTER::UseSilkBotary(void)
 {
@@ -1635,7 +1635,7 @@ int CalculateConsume(LPCHARACTER ch)
 		consumeLife = needLife;
 
 
-		// CheckMinLifeForWarp:  ؼ  ȵǹǷ  ּҷ ش
+		// CheckMinLifeForWarp: 독에 의해서 죽으면 안되므로 생명력 최소량는 남겨준다
 		const int minPercent	= WARP_MIN_LIFE_PERCENT;
 		const int minLife	= ch->GetMaxHP() * minPercent / 100;
 		if (curLife - needLife < minLife)
@@ -1703,13 +1703,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 		return false;
 	}
 
-	//    ĺʹ  ʾƵ ð Ǵ  ó. 
+	// 아이템 최초 사용 이후부터는 사용하지 않아도 시간이 차감되는 방식 처리. 
 	if (-1 != iLimitRealtimeStartFirstUseFlagIndex)
 	{
-		//  ̶   δ Socket1  ǴѴ. (Socket1 Ƚ )
+		// 한 번이라도 사용한 아이템인지 여부는 Socket1을 보고 판단한다. (Socket1에 사용횟수 기록)
 		if (0 == item->GetSocket(1))
 		{
-			// 밡ɽð Default  Limit Value  ϵ, Socket0     ϵ Ѵ. ( )
+			// 사용가능시간은 Default 값으로 Limit Value 값을 사용하되, Socket0에 값이 있으면 그 값을 사용하도록 한다. (단위는 초)
 			int duration = (0 != item->GetSocket(0)) ? item->GetSocket(0) : item->GetProto()->aLimits[iLimitRealtimeStartFirstUseFlagIndex].lValue;
 
 			if (0 == duration)
@@ -1854,7 +1854,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 								switch (item->GetVnum())
 								{
-									case 71049: // ܺ
+									case 71049: // 비단보따리
 										if (LC_IsYMIR() == true || LC_IsKorea() == true)
 										{
 											if (IS_BOTARYABLE_ZONE(GetMapIndex()) == true)
@@ -1890,8 +1890,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 		case ITEM_WEAPON:
 		case ITEM_ARMOR:
 		case ITEM_ROD:
-		case ITEM_RING:		// ű  
-		case ITEM_BELT:		// ű Ʈ 
+		case ITEM_RING:		// 신규 반지 아이템
+		case ITEM_BELT:		// 신규 벨트 아이템
 			// MINING
 		case ITEM_PICK:
 			// END_OF_MINING
@@ -1900,10 +1900,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			else
 				UnequipItem(item);
 			break;
-			//   ȥ   .
-			//  Ŭ, ȥ Ͽ item use Ŷ   .
-			// ȥ  item move Ŷ Ѵ.
-			//  ȥ Ѵ.
+			// 착용하지 않은 용혼석은 사용할 수 없다.
+			// 정상적인 클라라면, 용혼석에 관하여 item use 패킷을 보낼 수 없다.
+			// 용혼석 착용은 item move 패킷으로 한다.
+			// 착용한 용혼석은 추출한다.
 		case ITEM_DS:
 			{
 				if (!item->IsEquipped())
@@ -2027,7 +2027,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				std::vector  item_gets;
 				int count = 0;
 
-				if (dwBoxVnum == 50033 && LC_IsYMIR()) // ˼ 
+				if (dwBoxVnum == 50033 && LC_IsYMIR()) // 알수없는 상자
 				{
 					if (GetLevel() < 15)
 					{
@@ -2036,7 +2036,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 					}
 				}
 
-				if( (dwBoxVnum > 51500 && dwBoxVnum < 52000) || (dwBoxVnum >= 50255 && dwBoxVnum <= 50260) )	// ȥ
+				if( (dwBoxVnum > 51500 && dwBoxVnum < 52000) || (dwBoxVnum >= 50255 && dwBoxVnum <= 50260) )	// 용혼원석들
 				{
 					if( !(this->DragonSoul_IsQualified()) )
 					{
@@ -2129,7 +2129,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				}
 				else
 				{
-					// ο ü value 0  ų ȣ Ƿ װ .
+					// 새로운 수련서는 value 0 에 스킬 번호가 있으므로 그것을 사용.
 					dwVnum = item->GetValue(0);
 				}
 
@@ -2149,7 +2149,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 					if (distribution_test_server)
 						iReadDelay /= 3;
 
-					//ѱ  쿡 ð 24ð 
+					//한국 본섭의 경우에는 시간을 24시간 고정
 					if (LC_IsKorea())
 						iReadDelay = 86400;
 
@@ -2222,10 +2222,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								// PC_BANG_ITEM_ADD
 								if (item->IsPCBangItem() == true)
 								{
-									// PC üũؼ ó
+									// PC방인지 체크해서 처리
 									if (CPCBangManager::instance().IsPCBangIP(GetDesc()->GetHostName()) == false)
 									{
-										// PC ƴ!
+										// PC방이 아님!
 										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA PC\xB9\xE6\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
@@ -2273,7 +2273,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							bool used = false;
 
-							if (item->GetValue(0) != 0) // HP 밪 ȸ
+							if (item->GetValue(0) != 0) // HP 절대값 회복
 							{
 								if (GetHP() < GetMaxHP())
 								{
@@ -2283,7 +2283,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 							}
 
-							if (item->GetValue(1) != 0)	// SP 밪 ȸ
+							if (item->GetValue(1) != 0)	// SP 절대값 회복
 							{
 								if (GetSP() < GetMaxSP())
 								{
@@ -2293,7 +2293,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 							}
 
-							if (item->GetValue(3) != 0) // HP % ȸ
+							if (item->GetValue(3) != 0) // HP % 회복
 							{
 								if (GetHP() < GetMaxHP())
 								{
@@ -2303,7 +2303,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 							}
 
-							if (item->GetValue(4) != 0) // SP % ȸ
+							if (item->GetValue(4) != 0) // SP % 회복
 							{
 								if (GetSP() < GetMaxSP())
 								{
@@ -2361,7 +2361,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								return false;
 							}
-							// 켱 ȥ ؼ ϵ Ѵ.
+							// 우선 용혼석에 관해서만 하도록 한다.
 							if (pDestItem->IsDragonSoul())
 							{
 								int ret;
@@ -2417,7 +2417,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								return false;
 							}
-							// 켱 ȥ ؼ ϵ Ѵ.
+							// 우선 용혼석에 관해서만 하도록 한다.
 							if (pDestItem->IsDragonSoul())
 							{
 								int ret = pDestItem->GiveMoreTime_Fix(item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
@@ -2446,15 +2446,15 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						
 						switch (item->GetVnum())
 						{
-							//ũ 
+							//크리스마스 란주
 							case ITEM_NOG_POCKET:
 								{
 									/*
-									ִɷġ : item_proto value ǹ
-										̵ӵ  value 1
-										ݷ	  value 2
-										ġ    value 3
-										ӽð  value 0 ( )
+									란주능력치 : item_proto value 의미
+										이동속도  value 1
+										공격력	  value 2
+										경험치    value 3
+										지속시간  value 0 (단위 초)
 
 									*/
 									if (FindAffect(AFFECT_NOG_ABILITY))
@@ -2473,15 +2473,15 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 								
-							//󸶴ܿ 
+							//라마단용 사탕
 							case ITEM_RAMADAN_CANDY:
 								{
 									/*
-									ɷġ : item_proto value ǹ
-										̵ӵ  value 1
-										ݷ	  value 2
-										ġ    value 3
-										ӽð  value 0 ( )
+									사탕능력치 : item_proto value 의미
+										이동속도  value 1
+										공격력	  value 2
+										경험치    value 3
+										지속시간  value 0 (단위 초)
 
 									*/
 									int time = item->GetValue(0);
@@ -2531,9 +2531,9 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-								//  
+								//기존 용기의 망토
 							case UNIQUE_ITEM_CAPE_OF_COURAGE:
-								//󸶴   
+								//라마단 보상용 용기의 망토
 							case 70057:
 							case REWARD_BOX_UNIQUE_ITEM_CAPE_OF_COURAGE:
 								AggregateMonster();
@@ -2552,7 +2552,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							case 30094:
 							case 30095:
 							case 30096:
-								// ָӴ
+								// 복주머니
 								{
 									const int MAX_BAG_INFO = 26;
 									static struct LuckyBagInfo
@@ -2640,7 +2640,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (bi[i].vnum == 50300)
 									{
-										// ųü Ưϰ ش.
+										// 스킬수련서는 특수하게 준다.
 										GiveRandomSkillBook();
 									}
 									else if (bi[i].vnum == 1)
@@ -2655,7 +2655,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 50004: // ̺Ʈ 
+							case 50004: // 이벤트용 감지기
 								{
 									if (item->GetSocket(0))
 									{
@@ -2663,7 +2663,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										// ó 
+										// 처음 사용시
 										int iMapIndex = GetMapIndex();
 
 										PIXEL_POSITION pos;
@@ -2686,10 +2686,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (distance < 1000.0f)
 									{
-										// ߰!
+										// 발견!
 										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xBD\xC5\xBA\xF1\xB7\xCE\xBF\xEE \xBA\xFB\xC0\xBB \xB3\xBB\xB8\xE7 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
 
-										// Ƚ  ִ  ٸ Ѵ.
+										// 사용횟수에 따라 주는 아이템을 다르게 한다.
 										struct TEventStoneInfo
 										{
 											DWORD dwVnum;
@@ -2788,7 +2788,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 														pdw[0] = info[i].dwVnum;
 														pdw[1] = info[i].count;
 
-														// ÷  Ѵ
+														// 추첨서는 소켓을 설정한다
 														DBManager::instance().ReturnQuery(QID_LOTTO, GetPlayerID(), pdw,
 																"INSERT INTO lotto_list VALUES(0, 'server%s', %u, NOW())", 
 																get_table_postfix(), GetPlayerID());
@@ -2808,7 +2808,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										if (len < 0 || len >= (int) sizeof(chatbuf))
 											len = sizeof(chatbuf) - 1;
 
-										++len;  // \0 ڱ 
+										++len;  // \0 문자까지 보내기
 
 										TPacketGCChat pack_chat;
 										pack_chat.header	= HEADER_GC_CHAT;
@@ -2834,7 +2834,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									else
 										dist = 3;
 
-									//   .
+									// 많이 사용했으면 사라진다.
 									const int STONE_DETECT_MAX_TRY = 10;
 									if (item->GetSocket(0) >= STONE_DETECT_MAX_TRY)
 									{
@@ -2854,7 +2854,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										if (len < 0 || len >= (int) sizeof(chatbuf))
 											len = sizeof(chatbuf) - 1;
 
-										++len;  // \0 ڱ 
+										++len;  // \0 문자까지 보내기
 
 										TPacketGCChat pack_chat;
 										pack_chat.header	= HEADER_GC_CHAT;
@@ -2874,8 +2874,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 27989: // 
-							case 76006: //  
+							case 27989: // 영석감지기
+							case 76006: // 선물용 영석감지기
 								{
 									LPSECTREE_MAP pMap = SECTREE_MANAGER::instance().GetMap(GetMapIndex());
 
@@ -2937,13 +2937,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 27996: // 
+							case 27996: // 독병
 								item->SetCount(item->GetCount() - 1);
 								/*if (GetSkillLevel(SKILL_CREATE_POISON))
 								  AddAffect(AFFECT_ATT_GRADE, POINT_ATT_GRADE, 3, AFF_DRINK_POISON, 15*60, 0, true);
 								  else
 								  {
-								// ٷⰡ  50%  50% ݷ +2
+								// 독다루기가 없으면 50% 즉사 50% 공격력 +2
 								if (Random::get(0, 1))
 								{
 								if (GetHP() > 100)
@@ -2956,12 +2956,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}*/
 								break;
 
-							case 27987: // 
-								// 50   47990
-								// 30  
-								// 10   47992
-								// 7   û 47993
-								// 3    47994
+							case 27987: // 조개
+								// 50  돌조각 47990
+								// 30  꽝
+								// 10  백진주 47992
+								// 7   청진주 47993
+								// 3   피진주 47994
 								{
 									item->SetCount(item->GetCount() - 1);
 
@@ -3009,12 +3009,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 71013: // 
+							case 71013: // 축제용폭죽
 								CreateFly(Random::get(FLY_FIREWORK1, FLY_FIREWORK6), this);
 								item->SetCount(item->GetCount() - 1);
 								break;
 
-							case 50100: // 
+							case 50100: // 폭죽
 							case 50101:
 							case 50102:
 							case 50103:
@@ -3025,7 +3025,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								item->SetCount(item->GetCount() - 1);
 								break;
 
-							case 50200: // 
+							case 50200: // 보따리
 								if (LC_IsYMIR() == true || LC_IsKorea() == true)
 								{
 									if (IS_BOTARYABLE_ZONE(GetMapIndex()) == true)
@@ -3048,7 +3048,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								item->SetCount(item->GetCount() - 1);
 								break;
 
-							case 50301: // ַ ü
+							case 50301: // 통솔력 수련서
 							case 50302:
 							case 50303:
 								{
@@ -3084,7 +3084,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 50304: //  ü
+							case 50304: // 연계기 수련서
 							case 50305:
 							case 50306:
 								{
@@ -3125,7 +3125,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 								}
 								break;
-							case 50311: //  ü
+							case 50311: // 언어 수련서
 							case 50312:
 							case 50313:
 								{
@@ -3155,7 +3155,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 50061 : // Ϻ  ȯ ų ü
+							case 50061 : // 일본 말 소환 스킬 수련서
 								{
 									if (IsPolymorphed())
 									{
@@ -3184,9 +3184,9 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 50314: case 50315: case 50316: //  ü
-							case 50323: case 50324: //  ü
-							case 50325: case 50326: // ö ü
+							case 50314: case 50315: case 50316: // 변신 수련서
+							case 50323: case 50324: // 증혈 수련서
+							case 50325: case 50326: // 철통 수련서
 								{
 									if (IsPolymorphed() == true)
 									{
@@ -3352,7 +3352,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									{
 										if (FindAffect(AFFECT_SKILL_NO_BOOK_DELAY))
 										{
-											// ־ȼ ߿ ð  
+											// 주안술서 사용중에는 시간 제한 무시
 											RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
 											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 										}
@@ -3392,8 +3392,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 70102: // 
-							case 70103: // 
+							case 70102: // 선두
+							case 70103: // 선두
 								{
 									if (GetAlignment() >= 0)
 										return false;
@@ -3413,7 +3413,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 71107: // õ
+							case 71107: // 천도복숭아
 								{
 									int val = item->GetValue(0);
 									int interval = item->GetValue(1);
@@ -3460,7 +3460,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 71109: // Ż
+							case 71109: // 탈석서
 							case 72719:
 								{
 									LPITEM item2;
@@ -3531,12 +3531,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 70201:   // Ż
-							case 70202:   // ()
-							case 70203:   // (ݻ)
-							case 70204:   // ()
-							case 70205:   // ()
-							case 70206:   // ()
+							case 70201:   // 탈색제
+							case 70202:   // 염색약(흰색)
+							case 70203:   // 염색약(금색)
+							case 70204:   // 염색약(빨간색)
+							case 70205:   // 염색약(갈색)
+							case 70206:   // 염색약(검은색)
 								{
 									// NEW_HAIR_STYLE_ADD
 									if (GetPart(PART_HAIR) >= 1001)
@@ -3610,7 +3610,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (item->GetVnum() == ITEM_VALENTINE_ROSE && SEX_MALE==GET_SEX(this) ||
 										item->GetVnum() == ITEM_VALENTINE_CHOCOLATE && SEX_FEMALE==GET_SEX(this))
 									{
-										//  ʾ   .
+										// 성별이 맞지않아 쓸 수 없다.
 										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
@@ -3634,7 +3634,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (item->GetVnum() == ITEM_WHITEDAY_CANDY && SEX_MALE==GET_SEX(this) ||
 										item->GetVnum() == ITEM_WHITEDAY_ROSE && SEX_FEMALE==GET_SEX(this))
 									{
-										//  ʾ   .
+										// 성별이 맞지않아 쓸 수 없다.
 										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
@@ -3645,7 +3645,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 50011: // 
+							case 50011: // 월광보합
 								{
 									DWORD dwBoxVnum = 50011;
 									std::vector  dwVnums;
@@ -3726,7 +3726,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							case 50107:
 								{
 									EffectPacket(SE_CHINA_FIREWORK);
-									//   ÷ش
+									// 스턴 공격을 올려준다
 									AddAffect(AFFECT_CHINA_FIREWORK, POINT_STUN_PCT, 30, AFF_CHINA_FIREWORK, 5*60, 0, true);
 									item->SetCount(item->GetCount()-1);
 								}
@@ -3741,7 +3741,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 
 									EffectPacket(SE_SPIN_TOP);
-									//   ÷ش
+									// 스턴 공격을 올려준다
 									AddAffect(AFFECT_CHINA_FIREWORK, POINT_STUN_PCT, 30, AFF_CHINA_FIREWORK, 5*60, 0, true);
 									item->SetCount(item->GetCount()-1);
 								}
@@ -3767,7 +3767,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								VCardUse(this, this, item);
 								break;
 
-							case ITEM_ELK_VNUM: // ٷ
+							case ITEM_ELK_VNUM: // 돈꾸러미
 								{
 									int iGold = item->GetSocket(0);
 									ITEM_MANAGER::instance().RemoveItem(item);
@@ -3776,7 +3776,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-								// ǥ 
+								//군주의 증표 
 							case 70021:
 								{
 									int HealPrice = quest::CQuestManager::instance().GetEventFlag("MonarchHealGold");
@@ -3799,7 +3799,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 71092 : //  ü ӽ
+							case 71092 : // 변신 해체부 임시
 								{
 									if (m_pkChrTarget != NULL)
 									{
@@ -3820,9 +3820,9 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 71051 : // 簡
+							case 71051 : // 진재가
 								{
-									// , ̰, Ʈ 簡 
+									// 유럽, 싱가폴, 베트남 진재가 사용금지
 									if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam())
 										return false;
 
@@ -3867,9 +3867,9 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								break;
 
-							case 71052 : // 
+							case 71052 : // 진재경
 								{
-									// , ̰, Ʈ 簡 
+									// 유럽, 싱가폴, 베트남 진재가 사용금지
 									if (LC_IsEurope() || LC_IsSingapore() || LC_IsVietnam())
 										return false;
 
@@ -3910,8 +3910,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							case ITEM_AUTO_SP_RECOVERY_M:
 							case ITEM_AUTO_SP_RECOVERY_L:
 							case ITEM_AUTO_SP_RECOVERY_X:
-							// ù  ϴ  ġ ...
-							// ׷ ׳ ϵ ڵ.  ڿ ڵ ۵.
+							// 무시무시하지만 이전에 하던 걸 고치기는 무섭고...
+							// 그래서 그냥 하드 코딩. 선물 상자용 자동물약 아이템들.
 							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_XS: 
 							case REWARD_BOX_ITEM_AUTO_SP_RECOVERY_S: 
 							case REWARD_BOX_ITEM_AUTO_HP_RECOVERY_XS: 
@@ -4121,7 +4121,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							bool used = false;
 
-							if (item->GetValue(0) != 0) // HP 밪 ȸ
+							if (item->GetValue(0) != 0) // HP 절대값 회복
 							{
 								if (GetHP() < GetMaxHP())
 								{
@@ -4131,7 +4131,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 							}
 
-							if (item->GetValue(1) != 0)	// SP 밪 ȸ
+							if (item->GetValue(1) != 0)	// SP 절대값 회복
 							{
 								if (GetSP() < GetMaxSP())
 								{
@@ -4141,7 +4141,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 							}
 
-							if (item->GetValue(3) != 0) // HP % ȸ
+							if (item->GetValue(3) != 0) // HP % 회복
 							{
 								if (GetHP() < GetMaxHP())
 								{
@@ -4151,7 +4151,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 							}
 
-							if (item->GetValue(4) != 0) // SP % ȸ
+							if (item->GetValue(4) != 0) // SP % 회복
 							{
 								if (GetSP() < GetMaxSP())
 								{
@@ -4333,7 +4333,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							const int MEMORY_PORTAL = 2;
 
 
-							// gm_guild_build, oxevent ʿ ȯ ȯ  ϰ 
+							// gm_guild_build, oxevent 맵에서 귀환부 귀환기억부 를 사용못하게 막음
 							if (GetMapIndex() == 200 || GetMapIndex() == 113)
 							{
 								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xC0\xA7\xC4\xA1\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -4359,7 +4359,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								return false;
 							// END_OF_CONSUME_LIFE_WHEN_USE_WARP_ITEM
 
-							if (item->GetValue(0) == TOWN_PORTAL) // ȯ
+							if (item->GetValue(0) == TOWN_PORTAL) // 귀환부
 							{
 								if (item->GetSocket(0) == 0)
 								{
@@ -4390,7 +4390,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									ProcessRecallItem(item);
 								}
 							}
-							else if (item->GetValue(0) == MEMORY_PORTAL) // ȯ
+							else if (item->GetValue(0) == MEMORY_PORTAL) // 귀환기억부
 							{
 								if (item->GetSocket(0) == 0)
 								{
@@ -4427,15 +4427,15 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							if (item2->IsExchanging())
 								return false;
 	
-							if (item2->GetVnum() >= 28330 && item2->GetVnum() <= 28343) // +3
+							if (item2->GetVnum() >= 28330 && item2->GetVnum() <= 28343) // 영석+3
 							{
 								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("+3 \xBF\xB5\xBC\xAE\xC0\xBA \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
 								return false;
 							}
 							
-							if (item2->GetVnum() >= 28430 && item2->GetVnum() <= 28443)  // +4
+							if (item2->GetVnum() >= 28430 && item2->GetVnum() <= 28443)  // 영석+4
 							{
-								if (item->GetVnum() == 71056) // ûǼ
+								if (item->GetVnum() == 71056) // 청룡의숨결
 								{
 									RefineItem(item, item2);
 								}
@@ -4471,9 +4471,9 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								BuffOnAttr_RemoveBuffsFromItem(item2);
 							}
 
-							// [NOTE] ڽƬ ۿ     Ӽ οϵ, 簡  ƴ޶ û ־.
-							//  ANTI_CHANGE_ATTRIBUTE   Flag ߰Ͽ ȹ  ϰ Ʈ   ֵ  ̾
-							// ׵ ʿ ġ  ش޷ ׳ ⼭ ... -_-
+							// [NOTE] 코스튬 아이템에는 아이템 최초 생성시 랜덤 속성을 부여하되, 재경재가 등등은 막아달라는 요청이 있었음.
+							// 원래 ANTI_CHANGE_ATTRIBUTE 같은 아이템 Flag를 추가하여 기획 레벨에서 유연하게 컨트롤 할 수 있도록 할 예정이었으나
+							// 그딴거 필요없으니 닥치고 빨리 해달래서 그냥 여기서 막음... -_-
 							if (ITEM_COSTUME == item2->GetType())
 							{
 								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
@@ -4541,8 +4541,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (GM_PLAYER == GetGMLevel() && false == test_server)
 									{
 										//
-										// Event Flag     Ӽ   ð   ð 귶 ˻ϰ
-										// ð  귶ٸ  Ӽ濡  ð  ش.
+										// Event Flag 를 통해 이전에 아이템 속성 변경을 한 시간으로 부터 충분한 시간이 흘렀는지 검사하고
+										// 시간이 충분히 흘렀다면 현재 속성변경에 대한 시간을 설정해 준다.
 										//
 
 										DWORD dwChangeItemAttrCycle = quest::CQuestManager::instance().GetEventFlag(msc_szChangeItemAttrCycleFlag);
@@ -4589,8 +4589,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									else
 									{
-										//  Ưó
-										//  簡 ߰ ȵɰŶ Ͽ ϵ ڵ.
+										// 연재경 특수처리
+										// 절대로 연재가 추가 안될거라 하여 하드 코딩함.
 										if (item->GetVnum() == 71151 || item->GetVnum() == 76023)
 										{
 											if ((item2->GetType() == ITEM_WEAPON)
@@ -4639,8 +4639,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (item2->GetAttributeCount() < 4)
 									{
-										// 簡 Ưó
-										//  簡 ߰ ȵɰŶ Ͽ ϵ ڵ.
+										// 연재가 특수처리
+										// 절대로 연재가 추가 안될거라 하여 하드 코딩함.
 										if (item->GetVnum() == 71152 || item->GetVnum() == 76024)
 										{
 											if ((item2->GetType() == ITEM_WEAPON)
@@ -4701,15 +4701,15 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									break;
 
 								case USE_ADD_ATTRIBUTE2 :
-									// ູ  
-									// 簡񼭸  Ӽ 4 ߰ Ų ۿ ؼ ϳ Ӽ  ٿش.
+									// 축복의 구슬 
+									// 재가비서를 통해 속성을 4개 추가 시킨 아이템에 대해서 하나의 속성을 더 붙여준다.
 									if (item2->GetAttributeSetIndex() == -1)
 									{
 										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
 										return false;
 									}
 
-									// Ӽ ̹ 4 ߰ Ǿ  Ӽ ߰ ϴ.
+									// 속성이 이미 4개 추가 되었을 때만 속성을 추가 가능하다.
 									if (item2->GetAttributeCount() == 4)
 									{
 										char buf[21];
@@ -4883,10 +4883,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								// PC_BANG_ITEM_ADD
 								if (item->IsPCBangItem() == true)
 								{
-									// PC üũؼ ó
+									// PC방인지 체크해서 처리
 									if (CPCBangManager::instance().IsPCBangIP(GetDesc()->GetHostName()) == false)
 									{
-										// PC ƴ!
+										// PC방이 아님!
 										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA PC\xB9\xE6\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 										return false;
 									}
@@ -4904,7 +4904,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						item->SetCount(item->GetCount() - 1);
 						break;
 
-					//   ų  ó	
+					// 물약 제조 스킬용 레시피 처리	
 					case USE_RECIPE :
 						{
 							LPITEM pSource1 = FindSpecifyItem(item->GetValue(1));
@@ -5035,7 +5035,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 					if (item2->GetSocket(i) >= 1 && item2->GetSocket(i) <= 2 && item2->GetSocket(i) >= item->GetValue(2))
 					{
-						//  Ȯ
+						// 석 확률
 						if (Random::get(1, 100) <= 30)
 						{
 							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xDE\xC6\xBE\xBC\xAE \xBA\xCE\xC2\xF8\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -5072,7 +5072,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			break;
 
 		case ITEM_BLEND:
-			// ο ʵ
+			// 새로운 약초들
 			SPDLOG_DEBUG("ITEM_BLEND!!");
 			if (Blend_Item_find(item->GetVnum()))
 			{
@@ -5188,9 +5188,9 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 			return false;
 		}
 
-		// ȥ   SUMMONABLE_ZONE ִ° WarpToPC() üũ
+		// 경혼반지 사용지 상대방이 SUMMONABLE_ZONE에 있는가는 WarpToPC()에서 체크
 		
-		//Ÿ  ʿ ȯθ ƹ.
+		//삼거리 관려 맵에서는 귀환부를 막아버린다.
 		if (CThreeWayWar::instance().IsThreeWayWarMapIndex(GetMapIndex()))
 		{
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xEF\xB0\xC5\xB8\xAE \xC0\xFC\xC5\xF5 \xC2\xFC\xB0\xA1\xC1\xDF\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -5198,7 +5198,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		}
 		int iPulse = thecore_pulse();
 
-		//â  üũ
+		//창고 연후 체크
 		if (iPulse - GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
@@ -5208,7 +5208,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 			return false; 
 		}
 
-		//ŷ â üũ
+		//거래관련 창 체크
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -5216,7 +5216,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		}
 
 		//PREVENT_REFINE_HACK
-		// ðüũ 
+		//개량후 시간체크 
 		{
 			if (iPulse - GetRefineTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 			{
@@ -5239,7 +5239,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//END_PREVENT_ITEM_COPY
 		
 
-		//ȯ Ÿüũ
+		//귀환부 거리체크
 		if (item->GetVnum() != 70302)
 		{
 			PIXEL_POSITION posWarp;
@@ -5249,13 +5249,13 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 			double nDist = 0;
 			const double nDistant = 5000.0;
-			//ȯ 
+			//귀환기억부 
 			if (item->GetVnum() == 22010)
 			{
 				x = item->GetSocket(0) - GetX();
 				y = item->GetSocket(1) - GetY();
 			}
-			//ȯ
+			//귀환부
 			else if (item->GetVnum() == 22000) 
 			{
 				SECTREE_MANAGER::instance().GetRecallPositionByEmpire(GetMapIndex(), GetEmpire(), posWarp);
@@ -5284,7 +5284,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		}
 
 		//PREVENT_PORTAL_AFTER_EXCHANGE
-		//ȯ  ðüũ
+		//교환 후 시간체크
 		if (iPulse - GetExchangeTime()  < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB5\xEE\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
@@ -5294,7 +5294,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 	}
 
-	//   ŷâ  üũ 
+	//보따리 비단 사용시 거래창 제한 체크 
 	if (item->GetVnum() == 50200 | item->GetVnum() == 71049)
 	{
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
@@ -5306,7 +5306,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 	}
 	//END_PREVENT_TRADE_WINDOW
 
-	if (IS_SET(item->GetFlag(), ITEM_FLAG_LOG)) //  α׸   ó
+	if (IS_SET(item->GetFlag(), ITEM_FLAG_LOG)) // 사용 로그를 남기는 아이템 처리
 	{
 		DWORD vid = item->GetVID();
 		DWORD oldCount = item->GetCount();
@@ -5320,7 +5320,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 		bool ret = UseItemEx(item, DestCell);
 
-		if (NULL == ITEM_MANAGER::instance().FindByVID(vid)) // UseItemEx   Ǿ.  α׸ 
+		if (NULL == ITEM_MANAGER::instance().FindByVID(vid)) // UseItemEx에서 아이템이 삭제 되었다. 삭제 로그를 남김
 		{
 			LogManager::instance().ItemLog(this, vid, vnum, "REMOVE", hint);
 		}
@@ -5370,7 +5370,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 	if (bCount == 0 || bCount > item->GetCount())
 		bCount = item->GetCount();
 
-	SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255);	// Quickslot  
+	SyncQuickslot(QUICKSLOT_TYPE_ITEM, Cell.cell, 255);	// Quickslot 에서 지움
 
 	LPITEM pkItemToDrop;
 
@@ -5409,8 +5409,8 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 
 	if (pkItemToDrop->AddToGround(GetMapIndex(), pxPos))
 	{
-		// ѱ   ش޶  Ƽ
-		//  ٴڿ   Ӽα׸ .
+		// 한국에는 아이템을 버리고 복구해달라는 진상유저들이 많아서
+		// 아이템을 바닥에 버릴 시 속성로그를 남긴다.
 		if (LC_IsYMIR())
 			item->AttrLog();
 
@@ -5458,11 +5458,11 @@ bool CHARACTER::DropGold(int gold)
 			//Motion(MOTION_PICKUP);
 			PointChange(POINT_GOLD, -gold, true);
 
-			//   ٴ װ ִµ,
-			//  ó ߿ ϳ,
-			// ũγ,  Ἥ 1000     带 0 , 
-			//  ٰ  ûϴ   ִ.
-			//  ׷ 츦    ġ 忡 ؼ α׸ .
+			// 브라질에 돈이 없어진다는 버그가 있는데,
+			// 가능한 시나리오 중에 하나는,
+			// 메크로나, 핵을 써서 1000원 이하의 돈을 계속 버려 골드를 0으로 만들고, 
+			// 돈이 없어졌다고 복구 신청하는 것일 수도 있다.
+			// 따라서 그런 경우를 잡기 위해 낮은 수치의 골드에 대해서도 로그를 남김.
 			if (LC_IsBrazil() == true)
 			{
 				if (gold >= 213)
@@ -5470,7 +5470,7 @@ bool CHARACTER::DropGold(int gold)
 			}
 			else
 			{
-				if (gold > 1000) // õ ̻ Ѵ.
+				if (gold > 1000) // 천원 이상만 기록한다.
 					LogManager::instance().CharLog(this, gold, "DROP_GOLD", "");
 			}
 
@@ -5527,20 +5527,20 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 		return false;
 	}
 
-	// ȹ û Ʈ κ丮 Ư Ÿ ۸   ִ.
+	// 기획자의 요청으로 벨트 인벤토리에는 특정 타입의 아이템만 넣을 수 있다.
 	if (DestCell.IsBeltInventoryPosition() && false == CBeltInventoryHelper::CanMoveIntoBeltInventory(item))
 	{
 		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xBA\xA7\xC6\xAE \xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xB7\xCE \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));			
 		return false;
 	}
 
-	// ̹   ٸ  ű , 'å '   Ȯϰ ű
+	// 이미 착용중인 아이템을 다른 곳으로 옮기는 경우, '장책 해제' 가능한 지 확인하고 옮김
 	if (Cell.IsEquipPosition() && !CanUnequipNow(item))
 		return false;
 
 	if (DestCell.IsEquipPosition())
 	{
-		if (GetItem(DestCell))	//     ˻ص ȴ.
+		if (GetItem(DestCell))	// 장비일 경우 한 곳만 검사해도 된다.
 		{
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC0\xE5\xBA\xF1\xB8\xA6 \xC2\xF8\xBF\xEB\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
 			
@@ -5568,7 +5568,7 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 					return false;
 			}
 		}
-		// ȥ ƴ  ȥ κ   .
+		// 용혼석이 아닌 아이템은 용혼석 인벤에 들어갈 수 없다.
 		else if (DRAGON_SOUL_INVENTORY == DestCell.window_type)
 			return false;
 
@@ -5576,7 +5576,7 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 
 		if ((item2 = GetItem(DestCell)) && item != item2 && item2->IsStackable() &&
 				!IS_SET(item2->GetAntiFlag(), ITEM_ANTIFLAG_STACK) &&
-				item2->GetVnum() == item->GetVnum()) // ĥ  ִ  
+				item2->GetVnum() == item->GetVnum()) // 합칠 수 있는 아이템의 경우
 		{
 			for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 				if (item2->GetSocket(i) != item->GetSocket(i))
@@ -5695,7 +5695,7 @@ namespace NPartyPickupDistribute
 				{
 					ch->PointChange(POINT_GOLD, iMoney, true);
 
-					if (iMoney > 1000) // õ ̻ Ѵ.
+					if (iMoney > 1000) // 천원 이상만 기록한다.
 						LogManager::instance().CharLog(ch, iMoney, "GET_GOLD", "");
 				}
 		}
@@ -5713,7 +5713,7 @@ void CHARACTER::GiveGold(int iAmount)
 	{
 		LPPARTY pParty = GetParty();
 
-		// Ƽ ִ   .
+		// 파티가 있는 경우 나누어 가진다.
 		DWORD dwTotal = iAmount;
 		DWORD dwMyAmount = dwTotal;
 
@@ -5732,18 +5732,18 @@ void CHARACTER::GiveGold(int iAmount)
 
 		PointChange(POINT_GOLD, dwMyAmount, true);
 
-		if (dwMyAmount > 1000) // õ ̻ Ѵ.
+		if (dwMyAmount > 1000) // 천원 이상만 기록한다.
 			LogManager::instance().CharLog(this, dwMyAmount, "GET_GOLD", "");
 	}
 	else
 	{
 		PointChange(POINT_GOLD, iAmount, true);
 
-		//   ٴ װ ִµ,
-		//  ó ߿ ϳ,
-		// ũγ,  Ἥ 1000     带 0 , 
-		//  ٰ  ûϴ   ִ.
-		//  ׷ 츦    ġ 忡 ؼ α׸ .
+		// 브라질에 돈이 없어진다는 버그가 있는데,
+		// 가능한 시나리오 중에 하나는,
+		// 메크로나, 핵을 써서 1000원 이하의 돈을 계속 버려 골드를 0으로 만들고, 
+		// 돈이 없어졌다고 복구 신청하는 것일 수도 있다.
+		// 따라서 그런 경우를 잡기 위해 낮은 수치의 골드에 대해서도 로그를 남김.
 		if (LC_IsBrazil() == true)
 		{
 			if (iAmount >= 213)
@@ -5751,7 +5751,7 @@ void CHARACTER::GiveGold(int iAmount)
 		}
 		else
 		{
-			if (iAmount > 1000) // õ ̻ Ѵ.
+			if (iAmount > 1000) // 천원 이상만 기록한다.
 				LogManager::instance().CharLog(this, iAmount, "GET_GOLD", "");
 		}
 	}
@@ -5771,7 +5771,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 	{
 		if (item->IsOwnership(this))
 		{
-			//   ϴ  ũ
+			// 만약 주으려 하는 아이템이 엘크라면
 			if (item->GetType() == ITEM_ELK)
 			{
 				GiveGold(item->GetCount());
@@ -5781,7 +5781,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 				Save();
 			}
-			//  ̶
+			// 평범한 아이템이라면
 			else
 			{
 				if (item->IsStackable() && !IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_STACK))
@@ -5866,7 +5866,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 		}
 		else if (!IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_GIVE | ITEM_ANTIFLAG_DROP) && GetParty())
 		{
-			// ٸ Ƽ    Ѵٸ
+			// 다른 파티원 소유권 아이템을 주으려고 한다면
 			NPartyPickupDistribute::FFindOwnership funcFindOwnership(item);
 
 			GetParty()->ForEachOnlineMember(funcFindOwnership);
@@ -5938,23 +5938,23 @@ bool CHARACTER::SwapItem(BYTE bCell, BYTE bDestCell)
 
 	TItemPos srcCell(INVENTORY, bCell), destCell(INVENTORY, bDestCell);
 
-	// ùٸ Cell  ˻
-	// ȥ Swap  Ƿ, ⼭ ɸ.
+	// 올바른 Cell 인지 검사
+	// 용혼석은 Swap할 수 없으므로, 여기서 걸림.
 	//if (bCell >= INVENTORY_MAX_NUM + WEAR_MAX_NUM || bDestCell >= INVENTORY_MAX_NUM + WEAR_MAX_NUM)
 	if (srcCell.IsDragonSoulEquipPosition() || destCell.IsDragonSoulEquipPosition())
 		return false;
 
-	//  CELL  ˻
+	// 같은 CELL 인지 검사
 	if (bCell == bDestCell)
 		return false;
 
-	//   â ġ Swap   .
+	// 둘 다 장비창 위치면 Swap 할 수 없다.
 	if (srcCell.IsEquipPosition() && destCell.IsEquipPosition())
 		return false;
 
 	LPITEM item1, item2;
 
-	// item2 â ִ  ǵ.
+	// item2가 장비창에 있는 것이 되도록.
 	if (srcCell.IsEquipPosition())
 	{
 		item1 = GetInventoryItem(bDestCell);
@@ -5975,21 +5975,21 @@ bool CHARACTER::SwapItem(BYTE bCell, BYTE bDestCell)
 	    return false;
 	}
 
-	// item2 bCellġ   ִ ȮѴ.
+	// item2가 bCell위치에 들어갈 수 있는지 확인한다.
 	if (!IsEmptyItemGrid(TItemPos (INVENTORY, item1->GetCell()), item2->GetSize(), item1->GetCell()))
 		return false;
 
-	// ٲ  â 
+	// 바꿀 아이템이 장비창에 있으면
 	if (TItemPos(EQUIPMENT, item2->GetCell()).IsEquipPosition())
 	{
 		BYTE bEquipCell = item2->GetCell() - INVENTORY_MAX_NUM;
 		BYTE bInvenCell = item1->GetCell();
 
-		//     ְ,      ¿߸ 
+		// 착용중인 아이템을 벗을 수 있고, 착용 예정 아이템이 착용 가능한 상태여야만 진행
 		if (false == CanUnequipNow(item2) || false == CanEquipNow(item1))
 			return false;
 
-		if (bEquipCell != item1->FindEquipCell(this)) //  ġ϶ 
+		if (bEquipCell != item1->FindEquipCell(this)) // 같은 위치일때만 허용
 			return false;
 
 		item2->RemoveFromCharacter();
@@ -6044,7 +6044,7 @@ bool CHARACTER::UnequipItem(LPITEM item)
 }
 
 //
-// @version	05/07/05 Bang2ni - Skill  1.5  ̳   
+// @version	05/07/05 Bang2ni - Skill 사용후 1.5 초 이내에 장비 착용 금지
 //
 bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 {
@@ -6062,7 +6062,7 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 	if (iWearCell < 0)
 		return false;
 
-	// 𰡸 ź ¿ νõ Ա 
+	// 무언가를 탄 상태에서 턱시도 입기 금지
 	if (iWearCell == WEAR_BODY && IsRiding() && (item->GetVnum() >= 11901 && item->GetVnum() <= 11904))
 	{
 		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xBF\xB9\xBA\xB9\xC0\xBB \xC0\xD4\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -6081,14 +6081,14 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 		return false;
 	}
 
-	//ű Ż    뿩 üũ
+	//신규 탈것 사용시 기존 말 사용여부 체크
 	if(item->IsRideItem() && IsRiding())
 	{
 		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC5\xBB\xB0\xCD\xC0\xBB \xC0\xCC\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
 
-	// ȭ ̿ܿ   ð Ǵ ų  1.5 Ŀ  ü 
+	// 화살 이외에는 마지막 공격 시간 또는 스킬 사용 1.5 후에 장비 교체가 가능
 	DWORD dwCurTime = get_dword_time();
 
 	if (iWearCell != WEAR_ARROW 
@@ -6098,11 +6098,11 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 		return false;
 	}
 
-	// ȥ Ư ó
+	// 용혼석 특수 처리
 	if (item->IsDragonSoul())
 	{
-		//  Ÿ ȥ ̹  ִٸ   .
-		// ȥ swap ϸ ȵ.
+		// 같은 타입의 용혼석이 이미 들어가 있다면 착용할 수 없다.
+		// 용혼석은 swap을 지원하면 안됨.
 		if(GetInventoryItem(INVENTORY_MAX_NUM + iWearCell))
 		{
 			ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xBB \xC2\xF8\xBF\xEB\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.");
@@ -6114,13 +6114,13 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 			return false;
 		}
 	}
-	// ȥ ƴ.
+	// 용혼석이 아님.
 	else
 	{
-		//    ִٸ,
+		// 착용할 곳에 아이템이 있다면,
 		if (GetWear(iWearCell) && !IS_SET(GetWear(iWearCell)->GetFlag(), ITEM_FLAG_IRREMOVABLE))
 		{
-			//   ѹ   Ұ. swap   Ұ
+			// 이 아이템은 한번 박히면 변경 불가. swap 역시 완전 불가
 			if (item->GetWearFlag() == WEARABLE_ABILITY) 
 				return false;
 
@@ -6142,13 +6142,13 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 
 	if (true == item->IsEquipped())
 	{
-		//    ĺʹ  ʾƵ ð Ǵ  ó. 
+		// 아이템 최초 사용 이후부터는 사용하지 않아도 시간이 차감되는 방식 처리. 
 		if (-1 != item->GetProto()->cLimitRealTimeFirstUseIndex)
 		{
-			//  ̶   δ Socket1  ǴѴ. (Socket1 Ƚ )
+			// 한 번이라도 사용한 아이템인지 여부는 Socket1을 보고 판단한다. (Socket1에 사용횟수 기록)
 			if (0 == item->GetSocket(1))
 			{
-				// 밡ɽð Default  Limit Value  ϵ, Socket0     ϵ Ѵ. ( )
+				// 사용가능시간은 Default 값으로 Limit Value 값을 사용하되, Socket0에 값이 있으면 그 값을 사용하도록 한다. (단위는 초)
 				int duration = (0 != item->GetSocket(0)) ? item->GetSocket(0) : item->GetProto()->aLimits[item->GetProto()->cLimitRealTimeFirstUseIndex].lValue;
 
 				if (0 == duration)
@@ -6166,27 +6166,27 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 
 		const DWORD& dwVnum = item->GetVnum();
 
-		// 󸶴 ̺Ʈ ʽ´ (71135)  Ʈ ߵ
+		// 라마단 이벤트 초승달의 반지(71135) 착용시 이펙트 발동
 		if (true == CItemVnumHelper::IsRamadanMoonRing(dwVnum))
 		{
 			this->EffectPacket(SE_EQUIP_RAMADAN_RING);
 		}
-		// ҷ (71136)  Ʈ ߵ
+		// 할로윈 사탕(71136) 착용시 이펙트 발동
 		else if (true == CItemVnumHelper::IsHalloweenCandy(dwVnum))
 		{
 			this->EffectPacket(SE_EQUIP_HALLOWEEN_CANDY);
 		}
-		// ູ (71143)  Ʈ ߵ
+		// 행복의 반지(71143) 착용시 이펙트 발동
 		else if (true == CItemVnumHelper::IsHappinessRing(dwVnum))
 		{
 			this->EffectPacket(SE_EQUIP_HAPPINESS_RING);
 		}
-		//  ҴƮ(71145)  Ʈ ߵ
+		// 사랑의 팬던트(71145) 착용시 이펙트 발동
 		else if (true == CItemVnumHelper::IsLovePendant(dwVnum))
 		{
 			this->EffectPacket(SE_EQUIP_LOVE_PENDANT);
 		}
-		// ITEM_UNIQUE , SpecialItemGroup ǵǾ ְ, (item->GetSIGVnum() != NULL)
+		// ITEM_UNIQUE의 경우, SpecialItemGroup에 정의되어 있고, (item->GetSIGVnum() != NULL)
 		// 
 		else if (ITEM_UNIQUE == item->GetType() && 0 != item->GetSIGVnum())
 		{
@@ -6336,7 +6336,7 @@ int CHARACTER::CountSpecifyItem(DWORD vnum) const
 		item = GetInventoryItem(i);
 		if (NULL != item && item->GetVnum() == vnum)
 		{
-			//   ϵ ̸ Ѿ.
+			// 개인 상점에 등록된 물건이면 넘어간다.
 			if (m_pkMyShop && m_pkMyShop->IsSellingItem(item->GetID()))
 			{
 				continue;
@@ -6364,7 +6364,7 @@ void CHARACTER::RemoveSpecifyItem(DWORD vnum, DWORD count)
 		if (GetInventoryItem(i)->GetVnum() != vnum)
 			continue;
 
-		//  ϵ ̸ Ѿ. (  Ǹŵɶ  κ   !)
+		//개인 상점에 등록된 물건이면 넘어간다. (개인 상점에서 판매될때 이 부분으로 들어올 경우 문제!)
 		if(m_pkMyShop)
 		{
 			bool isItemSelling = m_pkMyShop->IsSellingItem(GetInventoryItem(i)->GetID());
@@ -6390,7 +6390,7 @@ void CHARACTER::RemoveSpecifyItem(DWORD vnum, DWORD count)
 		}
 	}
 
-	// ó ϴ.
+	// 예외처리가 약하다.
 	if (count)
 		SPDLOG_WARN("CHARACTER::RemoveSpecifyItem cannot remove enough item vnum {}, still remain {}", vnum, count);
 }
@@ -6424,7 +6424,7 @@ void CHARACTER::RemoveSpecifyTypeItem(BYTE type, DWORD count)
 		if (GetInventoryItem(i)->GetType() != type)
 			continue;
 
-		//  ϵ ̸ Ѿ. (  Ǹŵɶ  κ   !)
+		//개인 상점에 등록된 물건이면 넘어간다. (개인 상점에서 판매될때 이 부분으로 들어올 경우 문제!)
 		if(m_pkMyShop)
 		{
 			bool isItemSelling = m_pkMyShop->IsSellingItem(GetInventoryItem(i)->GetID());
@@ -6617,9 +6617,9 @@ LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool
 	{
 		item->AddToGround(GetMapIndex(), GetXYZ());
 		item->StartDestroyEvent();
-		// Ƽ  flag ɷִ  , 
-		// κ    ¿   Ʈ Ǹ,
-		// ownership   (300) Ѵ.
+		// 안티 드랍 flag가 걸려있는 아이템의 경우, 
+		// 인벤에 빈 공간이 없어서 어쩔 수 없이 떨어트리게 되면,
+		// ownership을 아이템이 사라질 때까지(300초) 유지한다.
 		if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_DROP))
 			item->SetOwnership(this, 300);
 		else
@@ -6731,7 +6731,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 		case 20101:
 		case 20102:
 		case 20103:
-			// ʱ 
+			// 초급 말
 			if (item->GetVnum() == ITEM_REVIVE_HORSE_1)
 			{
 				if (!IsDead())
@@ -6758,7 +6758,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 		case 20104:
 		case 20105:
 		case 20106:
-			// ߱ 
+			// 중급 말
 			if (item->GetVnum() == ITEM_REVIVE_HORSE_2)
 			{
 				if (!IsDead())
@@ -6785,7 +6785,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 		case 20107:
 		case 20108:
 		case 20109:
-			//  
+			// 고급 말
 			if (item->GetVnum() == ITEM_REVIVE_HORSE_3)
 			{
 				if (!IsDead())
@@ -6922,7 +6922,7 @@ bool CHARACTER::IsEquipUniqueItem(DWORD dwItemVnum) const
 			return true;
 	}
 
-	//   (ߺ)  üũѴ.
+	// 언어반지인 경우 언어반지(견본) 인지도 체크한다.
 	if (dwItemVnum == UNIQUE_ITEM_RING_OF_LANGUAGE)
 		return IsEquipUniqueItem(UNIQUE_ITEM_RING_OF_LANGUAGE_SAMPLE);
 
@@ -7083,7 +7083,7 @@ bool CHARACTER::ItemProcess_Hair(LPITEM item, int iDestCell)
 {
 	if (item->CheckItemUseLevel(GetLevel()) == false)
 	{
-		//  ѿ ɸ
+		// 레벨 제한에 걸림
 		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xCC \xB8\xD3\xB8\xAE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB7\xB9\xBA\xA7\xC0\xD4\xB4\xCF\xB4\xD9."));
 		return false;
 	}
@@ -7093,7 +7093,7 @@ bool CHARACTER::ItemProcess_Hair(LPITEM item, int iDestCell)
 	switch (GetJob())
 	{
 		case JOB_WARRIOR :
-			hair -= 72000; // 73001 - 72000 = 1001   ȣ 
+			hair -= 72000; // 73001 - 72000 = 1001 부터 헤어 번호 시작
 			break;
 
 		case JOB_ASSASSIN :
@@ -7168,10 +7168,10 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 		case 70107 :
 		case 71093 :
 			{
-				// а ó
+				// 둔갑구 처리
 				SPDLOG_DEBUG("USE_POLYMORPH_BALL PID({}) vnum({})", GetPlayerID(), dwVnum);
 
-				//   üũ
+				// 레벨 제한 체크
 				int iPolymorphLevelLimit = std::max(0, 20 - GetLevel() * 3 / 10);
 				if (pMob->m_table.bLevel >= GetLevel() + iPolymorphLevelLimit)
 				{
@@ -7202,11 +7202,11 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 
 		case 50322:
 			{
-				// 
+				// 보류
 
-				// а ó
-				// 0                1           2   
-				// а  ȣ           а 
+				// 둔갑서 처리
+				// 소켓0                소켓1           소켓2   
+				// 둔갑할 몬스터 번호   수련정도        둔갑서 레벨
 				SPDLOG_DEBUG("USE_POLYMORPH_BOOK: {}({}) vnum({})", GetName(), GetPlayerID(), dwVnum);
 
 				if (CPolymorphUtils::instance().PolymorphCharacter(this, item, pMob) == true)
@@ -7324,8 +7324,8 @@ void CHARACTER::AutoRecoveryItemProcess(const EAffectTypes type)
 						const int pct_of_will_used = (amount_of_used + amount) * 100 / amount_of_full;
 
 						bool bLog = false;
-						// 뷮 10%  α׸ 
-						// (뷮 %,  ڸ ٲ  α׸ .)
+						// 사용량의 10% 단위로 로그를 남김
+						// (사용량의 %에서, 십의 자리가 바뀔 때마다 로그를 남김.)
 						if ((pct_of_will_used / 10) - (pct_of_used / 10) >= 1)
 							bLog = true;
 						pItem->SetSocket(idx_of_amount_of_used, amount_of_used + amount, bLog);
@@ -7397,7 +7397,7 @@ bool CHARACTER::IsValidItemPosition(TItemPos Pos) const
 }
 
 
-// Ƽ  ũ.. exp true msg ϰ return false ϴ ũ (Ϲ verify 뵵 return  ణ ݴ ̸ 򰥸  ְڴ..)
+// 귀찮아서 만든 매크로.. exp가 true면 msg를 출력하고 return false 하는 매크로 (일반적인 verify 용도랑은 return 때문에 약간 반대라 이름때문에 헷갈릴 수도 있겠다..)
 #define VERIFY_MSG(exp, msg)  \
 	if (true == (exp)) { \
 			ChatPacket(CHAT_TYPE_INFO, LC_TEXT(msg)); \
@@ -7405,7 +7405,7 @@ bool CHARACTER::IsValidItemPosition(TItemPos Pos) const
 	}
 
 		
-///  ij ¸  ־ item   ִ  Ȯϰ, Ұ ϴٸ ijͿ  ˷ִ Լ
+/// 현재 캐릭터의 상태를 바탕으로 주어진 item을 착용할 수 있는 지 확인하고, 불가능 하다면 캐릭터에게 이유를 알려주는 함수
 bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TItemPos& destCell) /*const*/
 {
 	const TItemTable* itemTable = item->GetProto();
@@ -7503,18 +7503,18 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 	return true;
 }
 
-///  ij ¸    item   ִ  Ȯϰ, Ұ ϴٸ ijͿ  ˷ִ Լ
+/// 현재 캐릭터의 상태를 바탕으로 착용 중인 item을 벗을 수 있는 지 확인하고, 불가능 하다면 캐릭터에게 이유를 알려주는 함수
 bool CHARACTER::CanUnequipNow(const LPITEM item, const TItemPos& srcCell, const TItemPos& destCell) /*const*/
 {	
 
 	if (ITEM_BELT == item->GetType())
 		VERIFY_MSG(CBeltInventoryHelper::IsExistItemInBeltInventory(this), "\xBA\xA7\xC6\xAE \xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xBF\xA1 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xB8\xC0\xE7\xC7\xCF\xB8\xE9 \xC7\xD8\xC1\xA6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.");
 
-	//     
+	// 영원히 해제할 수 없는 아이템
 	if (IS_SET(item->GetFlag(), ITEM_FLAG_IRREMOVABLE))
 		return false;
 
-	//  unequip κ丮 ű   ڸ ִ  Ȯ
+	// 아이템 unequip시 인벤토리로 옮길 때 빈 자리가 있는 지 확인
 	{
 		int pos = -1;
 
diff --git a/src/game/src/char_manager.cpp b/src/game/src/char_manager.cpp
index 0b9d688..7724f2f 100644
--- a/src/game/src/char_manager.cpp
+++ b/src/game/src/char_manager.cpp
@@ -114,7 +114,7 @@ void CHARACTER_MANAGER::DestroyCharacter(LPCHARACTER ch, const char* file, size_
 		return; // prevent duplicated destrunction
 	}
 
-	//  Ҽӵ ʹ  ϵ.
+	// 던전에 소속된 몬스터는 던전에서도 삭제하도록.
 	if (ch->IsNPC() && !ch->IsPet() && ch->GetRider() == NULL)
 	{
 		if (ch->GetDungeon())
@@ -230,7 +230,7 @@ LPCHARACTER CHARACTER_MANAGER::FindPC(const char * name)
 
 LPCHARACTER CHARACTER_MANAGER::SpawnMobRandomPosition(DWORD dwVnum, int lMapIndex)
 {
-	// ֱ    ְ
+	// 왜구 스폰할지말지를 결정할 수 있게함
 	{
 		if (dwVnum == 5001 && !quest::CQuestManager::instance().GetEventFlag("japan_regen"))
 		{
@@ -239,7 +239,7 @@ LPCHARACTER CHARACTER_MANAGER::SpawnMobRandomPosition(DWORD dwVnum, int lMapInde
 		}
 	}
 
-	// ¸     ְ 
+	// 해태를 스폰할지 말지를 결정할 수 있게 함
 	{
 		if (dwVnum == 5002 && !quest::CQuestManager::instance().GetEventFlag("newyear_mob"))
 		{
@@ -248,7 +248,7 @@ LPCHARACTER CHARACTER_MANAGER::SpawnMobRandomPosition(DWORD dwVnum, int lMapInde
 		}
 	}
 
-	//  ̺Ʈ 
+	// 광복절 이벤트 
 	{
 		if (dwVnum == 5004 && !quest::CQuestManager::instance().GetEventFlag("independence_day"))
 		{
@@ -448,7 +448,7 @@ LPCHARACTER CHARACTER_MANAGER::SpawnMobRange(DWORD dwVnum, int lMapIndex, int sx
 	if (!pkMob)
 		return NULL;
 
-	if (pkMob->m_table.bType == CHAR_TYPE_STONE)	//   SPAWN  ִ.
+	if (pkMob->m_table.bType == CHAR_TYPE_STONE)	// 돌은 무조건 SPAWN 모션이 있다.
 		bSpawnMotion = true;
 
 	int i = 16;
@@ -512,7 +512,7 @@ bool CHARACTER_MANAGER::SpawnMoveGroup(DWORD dwVnum, int lMapIndex, int sx, int
 
 		if (!tch)
 		{
-			if (i == 0)	//  Ͱ  쿡 ׳ 
+			if (i == 0)	// 못만든 몬스터가 대장일 경우에는 그냥 실패
 				return false;
 
 			continue;
@@ -596,7 +596,7 @@ LPCHARACTER CHARACTER_MANAGER::SpawnGroup(DWORD dwVnum, int lMapIndex, int sx, i
 
 		if (!tch)
 		{
-			if (i == 0)	//  Ͱ  쿡 ׳ 
+			if (i == 0)	// 못만든 몬스터가 대장일 경우에는 그냥 실패
 				return NULL;
 
 			continue;
@@ -652,11 +652,11 @@ void CHARACTER_MANAGER::Update(int iPulse)
 
 	BeginPendingDestroy();
 
-	// PC ij Ʈ
+	// PC 캐릭터 업데이트
 	{
 		if (!m_map_pkPCChr.empty())
 		{
-			// ̳ 
+			// 컨테이너 복사
 			CHARACTER_VECTOR v;
 			v.reserve(m_map_pkPCChr.size());
 #ifdef __GNUC__
@@ -680,7 +680,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
 //		for_each_pc(bind2nd(mem_fun(&CHARACTER::UpdateCharacter), iPulse));
 	}
 
-	//  Ʈ
+	// 몬스터 업데이트
 	{
 		if (!m_set_pkChrState.empty())
 		{
@@ -695,7 +695,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
 		}
 	}
 
-	// Ÿ  Ʈ
+	// 산타 따로 업데이트
 	{
 		CharacterVectorInteractor i;
 
@@ -706,7 +706,7 @@ void CHARACTER_MANAGER::Update(int iPulse)
 		}
 	}
 
-	// 1ð ѹ     
+	// 1시간에 한번씩 몹 사냥 개수 기록 
 	if (0 == (iPulse % PASSES_PER_SEC(3600)))
 	{
 		for (itertype(m_map_dwMobKillCount) it = m_map_dwMobKillCount.begin(); it != m_map_dwMobKillCount.end(); ++it)
@@ -715,11 +715,11 @@ void CHARACTER_MANAGER::Update(int iPulse)
 		m_map_dwMobKillCount.clear();
 	}
 
-	// ׽Ʈ  60ʸ ij  
+	// 테스트 서버에서는 60초마다 캐릭터 개수를 센다
 	if (test_server && 0 == (iPulse % PASSES_PER_SEC(60)))
 		SPDLOG_TRACE("CHARACTER COUNT vid {} pid {}", m_map_pkChrByVID.size(), m_map_pkChrByPID.size());
 
-	//  DestroyCharacter ϱ
+	// 지연된 DestroyCharacter 하기
 	FlushPendingDestroy();
 }
 
@@ -835,7 +835,7 @@ void CHARACTER_MANAGER::RegisterRaceNumMap(LPCHARACTER ch)
 {
 	DWORD dwVnum = ch->GetRaceNum();
 
-	if (m_set_dwRegisteredRaceNum.find(dwVnum) != m_set_dwRegisteredRaceNum.end()) // ϵ ȣ ̸
+	if (m_set_dwRegisteredRaceNum.find(dwVnum) != m_set_dwRegisteredRaceNum.end()) // 등록된 번호 이면
 	{
         SPDLOG_TRACE("RegisterRaceNumMap {} {}", ch->GetName(), dwVnum);
 		m_map_pkChrByRaceNum[dwVnum].insert(ch);
@@ -859,7 +859,7 @@ bool CHARACTER_MANAGER::GetCharactersByRaceNum(DWORD dwRaceNum, CharacterVectorI
 	if (it == m_map_pkChrByRaceNum.end())
 		return false;
 
-	// ̳ 
+	// 컨테이너 복사
 	i = it->second;
 	return true;
 }
@@ -1056,8 +1056,8 @@ void CHARACTER_MANAGER::SendScriptToMap(int lMapIndex, const std::string & s)
 
 bool CHARACTER_MANAGER::BeginPendingDestroy()
 {
-	// Begin  Ŀ Begin  ϴ 쿡 Flush  ʴ   
-	// ̹ ۵Ǿ false  ó
+	// Begin 이 후에 Begin을 또 하는 경우에 Flush 하지 않는 기능 지원을 위해
+	// 이미 시작되어있으면 false 리턴 처리
 	if (m_bUsePendingDestroy)
 		return false;
 
@@ -1069,7 +1069,7 @@ void CHARACTER_MANAGER::FlushPendingDestroy()
 {
 	using namespace std;
 
-	m_bUsePendingDestroy = false; // ÷׸  ؾ  Destroy ó 
+	m_bUsePendingDestroy = false; // 플래그를 먼저 설정해야 실제 Destroy 처리가 됨
 
 	if (!m_set_pkChrPendingDestroy.empty())
 	{
diff --git a/src/game/src/char_quickslot.cpp b/src/game/src/char_quickslot.cpp
index 884cd3b..a9c087d 100644
--- a/src/game/src/char_quickslot.cpp
+++ b/src/game/src/char_quickslot.cpp
@@ -9,7 +9,7 @@
 /////////////////////////////////////////////////////////////////////////////
 // QUICKSLOT HANDLING
 /////////////////////////////////////////////////////////////////////////////
-void CHARACTER::SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos) // bNewPos == 255  DELETE
+void CHARACTER::SyncQuickslot(BYTE bType, BYTE bOldPos, BYTE bNewPos) // bNewPos == 255 면 DELETE
 {
 	if (bOldPos == bNewPos)
 		return;
@@ -121,7 +121,7 @@ bool CHARACTER::SwapQuickslot(BYTE a, BYTE b)
 	if (a >= QUICKSLOT_MAX_NUM || b >= QUICKSLOT_MAX_NUM)
 		return false;
 
-	//   ڸ  ٲ۴.
+	// 퀵 슬롯 자리를 서로 바꾼다.
 	quickslot = m_quickslot[a];
 
 	m_quickslot[a] = m_quickslot[b];
diff --git a/src/game/src/char_resist.cpp b/src/game/src/char_resist.cpp
index 115daee..4eb411e 100644
--- a/src/game/src/char_resist.cpp
+++ b/src/game/src/char_resist.cpp
@@ -6,7 +6,7 @@
 #include "affect.h"
 #include "locale_service.h"
 
-// 
+// 독
 const int poison_damage_rate[MOB_RANK_MAX_NUM] = 
 {
 	80, 50, 40, 30, 25, 1
@@ -135,7 +135,7 @@ EVENTFUNC(fire_event)
 
 /*
 
-   LEVEL ..
+   LEVEL에 의한..
 
    +8   0%
    +7   5%
@@ -184,7 +184,7 @@ void CHARACTER::AttackedByPoison(LPCHARACTER pkAttacker)
 	if (m_pkPoisonEvent)
 		return;
 
-	if (m_bHasPoisoned && !IsPC()) // ʹ  ѹ ɸ.
+	if (m_bHasPoisoned && !IsPC()) // 몬스터는 독이 한번만 걸린다.
 		return;
 
 	if (pkAttacker && pkAttacker->GetLevel() < GetLevel())
@@ -201,7 +201,7 @@ void CHARACTER::AttackedByPoison(LPCHARACTER pkAttacker)
 	/*if (IsImmune(IMMUNE_POISON))
 	  return;*/
 
-	//    ,  ɷȴ!
+	// 독 내성 굴림 실패, 독에 걸렸다!
 	m_bHasPoisoned = true;
 
 	AddAffect(AFFECT_POISON, POINT_NONE, 0, AFF_POISON, POISON_LENGTH + 1, 0, true);
diff --git a/src/game/src/char_skill.cpp b/src/game/src/char_skill.cpp
index 77fbd5f..83b5bd3 100644
--- a/src/game/src/char_skill.cpp
+++ b/src/game/src/char_skill.cpp
@@ -62,7 +62,7 @@ void CHARACTER::SetSkillNextReadTime(DWORD dwVnum, time_t time)
 
 bool TSkillUseInfo::HitOnce(DWORD dwVnum)
 {
-	// ʾ  Ѵ.
+	// 쓰지도않았으면 때리지도 못한다.
 	if (!bUsed)
 		return false;
 
@@ -97,7 +97,7 @@ bool TSkillUseInfo::UseSkill(bool isGrandMaster, DWORD vid, DWORD dwCooltime, in
 	this->isGrandMaster = isGrandMaster;
 	DWORD dwCur = get_dword_time();
 
-	//  Ÿ  ʾҴ.
+	// 아직 쿨타임이 끝나지 않았다.
 	if (bUsed && dwNextSkillUsableTime > dwCur)
 	{
 		SPDLOG_DEBUG("cooltime is not over delta {}", dwNextSkillUsableTime - dwCur);
@@ -280,7 +280,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 	   {
 	   if (FindAffect(AFFECT_SKILL_NO_BOOK_DELAY))
 	   {
-	// ־ȼ ߿ ð  
+	// 주안술서 사용중에는 시간 제한 무시
 	RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
 	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
@@ -293,7 +293,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 	}
 	 */
 
-	// bType 0̸ ó å  
+	// bType이 0이면 처음부터 책으로 수련 가능
 	if (pkSk->dwType == 0)
 	{
 		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xA3\xB5\xE5 \xB8\xB6\xBD\xBA\xC5\xCD \xBC\xF6\xB7\xC3\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
@@ -316,7 +316,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 		strTrainSkill = os.str();
 	}
 
-	// ⼭ Ȯ մϴ.
+	// 여기서 확률을 계산합니다.
 	BYTE bLastLevel = GetSkillLevel(dwSkillVnum);
 
 	int idx = std::min(9, GetSkillLevel(dwSkillVnum) - 30);
@@ -438,7 +438,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 		}
 	}
 
-	// bType 0̸ ó å  
+	// bType이 0이면 처음부터 책으로 수련 가능
 	if (pkSk->dwType != 0)
 	{
 		if (GetSkillMasterType(dwSkillVnum) != SKILL_MASTER)
@@ -457,7 +457,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 		{
 			if (FindAffect(AFFECT_SKILL_NO_BOOK_DELAY))
 			{
-				// ־ȼ ߿ ð  
+				// 주안술서 사용중에는 시간 제한 무시
 				RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
 				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
 			}
@@ -469,7 +469,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 		}
 	}
 
-	// ⼭ Ȯ մϴ.
+	// 여기서 확률을 계산합니다.
 	BYTE bLastLevel = GetSkillLevel(dwSkillVnum);
 
 	if (bProb != 0)
@@ -527,7 +527,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 				if (Random::get(1, 100) > percent)
 				{
-					// åб⿡ 
+					// 책읽기에 성공
 					if (read_count >= need_bookcount)
 					{
 						SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK);
@@ -564,7 +564,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 			}
 			else
 			{
-				//  Ʈ  ε 
+				// 사용자의 퀘스트 정보 로드 실패
 			}
 		}
 		// INTERNATIONAL_VERSION
@@ -721,7 +721,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
 	if (!IsLearnableSkill(dwVnum))
 		return;
 
-	// ׷ ʹ Ʈθ డ
+	// 그랜드 마스터는 퀘스트로만 수행가능
 	if (pkSk->dwType != 0)
 	{
 		switch (GetSkillMasterType(pkSk->dwVnum))
@@ -738,7 +738,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
 
 	if (bMethod == SKILL_UP_BY_POINT)
 	{
-		// Ͱ ƴ ¿ ð
+		// 마스터가 아닌 상태에서만 수련가능
 		if (GetSkillMasterType(pkSk->dwVnum) != SKILL_NORMAL)
 			return;
 
@@ -747,7 +747,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
 	}
 	else if (bMethod == SKILL_UP_BY_BOOK)
 	{
-		if (pkSk->dwType != 0) //   ʾҰų Ʈ ø  ų ó å   ִ.
+		if (pkSk->dwType != 0) // 직업에 속하지 않았거나 포인트로 올릴수 없는 스킬은 처음부터 책으로 배울 수 있다.
 			if (GetSkillMasterType(pkSk->dwVnum) != SKILL_MASTER)
 				return;
 	}
@@ -801,11 +801,11 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
 
 	if (pkSk->dwType != 0)
 	{
-		// ڱ ׷̵ ϴ ڵ
+		// 갑자기 그레이드 업하는 코딩
 		switch (GetSkillMasterType(pkSk->dwVnum))
 		{
 			case SKILL_NORMAL:
-				//  ų ׷̵ 17~20    
+				// 번섭은 스킬 업그레이드 17~20 사이 랜덤 마스터 수련
 				if (GetSkillLevel(pkSk->dwVnum) >= 17)
 				{
 					if (GetQuestFlag("reset_scroll.force_to_master_skill") > 0)
@@ -863,7 +863,7 @@ void CHARACTER::ResetSkill()
 	if (NULL == m_pSkillLevels)
 		return;
 
-	//  ų ½Ű ʴ´
+	// 보조 스킬은 리셋시키지 않는다
 	std::vector > vec;
 	size_t count = sizeof(s_adwSubSkillVnums) / sizeof(s_adwSubSkillVnums[0]);
 
@@ -994,7 +994,7 @@ EVENTFUNC(ChainLightningEvent)
 
 	SPDLOG_DEBUG("chainlighting event {}", pkChr->GetName());
 
-	if (pkChrVictim->GetParty()) // Ƽ 
+	if (pkChrVictim->GetParty()) // 파티 먼저
 	{
 		pkTarget = pkChrVictim->GetParty()->GetNextOwnership(NULL, pkChrVictim->GetX(), pkChrVictim->GetY());
 		if (pkTarget == pkChrVictim || !Random::get(0, 2) || pkChr->GetChainLightingExcept().find(pkTarget) != pkChr->GetChainLightingExcept().end())
@@ -1090,7 +1090,7 @@ struct FuncSplashDamage
 		}
 
 		if (m_pkChr->IsPC())
-			//  ų Ÿ ó  ʴ´.
+			// 길드 스킬은 쿨타임 처리를 하지 않는다.
 			if (!(m_pkSk->dwVnum >= GUILD_SKILL_START && m_pkSk->dwVnum <= GUILD_SKILL_END))
 				if (!m_bDisableCooltime && m_pInfo && !m_pInfo->HitOnce(m_pkSk->dwVnum) && m_pkSk->dwVnum != SKILL_MUYEONG)
 				{
@@ -1159,7 +1159,7 @@ struct FuncSplashDamage
 		m_pkSk->SetPointVar("chain", m_pkChr->GetChainLightningIndex());
 		m_pkChr->IncChainLightningIndex();
 
-		bool bUnderEunhyung = m_pkChr->GetAffectedEunhyung() > 0; // ̰  ⼭ ??
+		bool bUnderEunhyung = m_pkChr->GetAffectedEunhyung() > 0; // 이건 왜 여기서 하지??
 
 		m_pkSk->SetPointVar("ek", m_pkChr->GetAffectedEunhyung()*1./100);
 		//m_pkChr->ClearAffectedEunhyung();
@@ -1241,11 +1241,11 @@ struct FuncSplashDamage
 
 		if (m_pkChr->IsPC() && m_pkChr->m_SkillUseInfo[m_pkSk->dwVnum].GetMainTargetVID() != (DWORD) pkChrVictim->GetVID())
 		{
-			//  
+			// 데미지 감소
 			iDam = (int) (iDam * m_pkSk->kSplashAroundDamageAdjustPoly.Eval());
 		}
 
-		// TODO ų   Ÿ ؾѴ.
+		// TODO 스킬에 따른 데미지 타입 기록해야한다.
 		EDamageType dt = DAMAGE_TYPE_NONE;
 
 		switch (m_pkSk->bSkillAttrType)
@@ -1268,7 +1268,7 @@ struct FuncSplashDamage
 
 							case WEAPON_TWO_HANDED:
 								iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_TWOHAND)) / 100;
-								// հ Ƽ 10%
+								// 양손검 페널티 10%
 								//iDam = iDam * 95 / 100;
 
 								break;
@@ -1293,8 +1293,8 @@ struct FuncSplashDamage
 
 			case SKILL_ATTR_TYPE_RANGE:
 				dt = DAMAGE_TYPE_RANGE;
-				// ƾƾƾ
-				//  ߴ װ ־   ٽϸ  
+				// 으아아아악
+				// 예전에 적용안했던 버그가 있어서 방어력 계산을 다시하면 유저가 난리남
 				//iDam -= pkChrVictim->GetPoint(POINT_DEF_GRADE);
 				iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_BOW)) / 100;
 				break;
@@ -1302,8 +1302,8 @@ struct FuncSplashDamage
 			case SKILL_ATTR_TYPE_MAGIC:
 				dt = DAMAGE_TYPE_MAGIC;
 				iDam = CalcAttBonus(m_pkChr, pkChrVictim, iDam);
-				// ƾƾƾ
-				//  ߴ װ ־   ٽϸ  
+				// 으아아아악
+				// 예전에 적용안했던 버그가 있어서 방어력 계산을 다시하면 유저가 난리남
 				//iDam -= pkChrVictim->GetPoint(POINT_MAGIC_DEF_GRADE);
 				iDam = iDam * (100 - pkChrVictim->GetPoint(POINT_RESIST_MAGIC)) / 100;
 				break;
@@ -1314,13 +1314,13 @@ struct FuncSplashDamage
 		}
 
 		//
-		// 20091109  ų Ӽ û ۾
-		//  ų ̺ SKILL_FLAG_WIND, SKILL_FLAG_ELEC, SKILL_FLAG_FIRE  ų
-		//  Ƿ  RESIST_WIND, RESIST_ELEC, RESIST_FIRE  ʰ ־.
+		// 20091109 독일 스킬 속성 요청 작업
+		// 기존 스킬 테이블에 SKILL_FLAG_WIND, SKILL_FLAG_ELEC, SKILL_FLAG_FIRE를 가진 스킬이
+		// 전혀 없었으므로 몬스터의 RESIST_WIND, RESIST_ELEC, RESIST_FIRE도 사용되지 않고 있었다.
 		//
-		// PvP PvE뷱 и  ǵ NPC ϵ   뷱 
-		//  ϱ  mob_proto RESIST_MAGIC RESIST_WIND, RESIST_ELEC, RESIST_FIRE
-		// Ͽ.
+		// PvP와 PvE밸런스 분리를 위해 의도적으로 NPC만 적용하도록 했으며 기존 밸런스와 차이점을
+		// 느끼지 못하기 위해 mob_proto의 RESIST_MAGIC을 RESIST_WIND, RESIST_ELEC, RESIST_FIRE로
+		// 복사하였다.
 		//
 		if (pkChrVictim->IsNPC())
 		{
@@ -1627,7 +1627,7 @@ EVENTFUNC(skill_gwihwan_event)
 	{
 		PIXEL_POSITION pos;
 
-		// 
+		// 성공
 		if (SECTREE_MANAGER::instance().GetRecallPositionByEmpire(ch->GetMapIndex(), ch->GetEmpire(), pos))
 		{
 			SPDLOG_DEBUG("Recall: {} {} {} -> {} {}", ch->GetName(), ch->GetX(), ch->GetY(), pos.x, pos.y);
@@ -1641,7 +1641,7 @@ EVENTFUNC(skill_gwihwan_event)
 	}
 	else
 	{
-		//
+		//실패
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xCD\xC8\xAF\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
 	}
 	return 0;
@@ -1666,11 +1666,11 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
     SPDLOG_TRACE("ComputeSkillAtPosition {} vnum {} x {} y {} level {}",
             GetName(), dwVnum, posTarget.x, posTarget.y, bSkillLevel);
 
-	//   ų  ġ .
+	// 나에게 쓰는 스킬은 내 위치를 쓴다.
 	//if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
 	//	posTarget = GetXYZ();
 
-	// ÷ ƴ ų ̸ ̻ϴ
+	// 스플래쉬가 아닌 스킬은 주위이면 이상하다
 	if (!IS_SET(pkSk->dwFlag, SKILL_FLAG_SPLASH))
 		return BATTLE_NONE;
 
@@ -1769,7 +1769,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
 	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_ATTACK | SKILL_FLAG_USE_MELEE_DAMAGE | SKILL_FLAG_USE_MAGIC_DAMAGE))
 	{
 		//
-		//  ų 
+		// 공격 스킬일 경우
 		//
 		bool bAdded = false;
 
@@ -1794,7 +1794,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
 			int iDur = (int) pkSk->kDurationPoly.Eval();
 
 			if (IsPC())
-				if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) //  ų Ÿ ó  ʴ´.
+				if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) // 길드 스킬은 쿨타임 처리를 하지 않는다.
 					if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG)
 					{
 						return BATTLE_NONE;
@@ -1884,7 +1884,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
 		if (iDur > 0)
 		{
 			iDur += GetPoint(POINT_PARTY_BUFFER_BONUS);
-			// AffectFlag ų, toggle ϴ  ƴ϶..
+			// AffectFlag가 없거나, toggle 하는 것이 아니라면..
 			pkSk->kDurationSPCostPoly.SetVar("k", k/*bSkillLevel*/);
 
 			AddAffect(pkSk->dwVnum,
@@ -1939,13 +1939,13 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
 	}
 }
 
-// bSkillLevel ڰ 0 ƴ 쿡 m_abSkillLevels  ʰ 
-// bSkillLevel Ѵ.
+// bSkillLevel 인자가 0이 아닐 경우에는 m_abSkillLevels를 사용하지 않고 강제로
+// bSkillLevel로 계산한다.
 int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel)
 {
 	const bool bCanUseHorseSkill = CanUseHorseSkill();
 
-	//  Ÿ ų    ¶ return
+	// 말을 타고있지만 스킬은 사용할 수 없는 상태라면 return
 	if (false == bCanUseHorseSkill && true == IsRiding())
 		return BATTLE_NONE;
 
@@ -1967,7 +1967,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
 		return BATTLE_NONE;
 	
 
-	// 濡   ƴϸ   Ѵ.
+	// 상대방에게 쓰는 것이 아니면 나에게 써야 한다.
 	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_SELFONLY))
 		pkVictim = this;
 
@@ -2135,7 +2135,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
 			
 
 			if (IsPC())
-				if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) //  ų Ÿ ó  ʴ´.
+				if (!(dwVnum >= GUILD_SKILL_START && dwVnum <= GUILD_SKILL_END)) // 길드 스킬은 쿨타임 처리를 하지 않는다.
 					if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG)
 					{
 						return BATTLE_NONE;
@@ -2248,7 +2248,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
 		if (iDur > 0)
 		{
 			iDur += GetPoint(POINT_PARTY_BUFFER_BONUS);
-			// AffectFlag ų, toggle ϴ  ƴ϶..
+			// AffectFlag가 없거나, toggle 하는 것이 아니라면..
 			pkSk->kDurationSPCostPoly.SetVar("k", k/*bSkillLevel*/);
 
 			if (pkSk->bPointOn2 != POINT_NONE)
@@ -2428,7 +2428,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 		return true;
 	}
 
-	//  Ÿ ų    ¶ return false
+	// 말을 타고있지만 스킬은 사용할 수 없는 상태라면 return false
 	if (false == bCanUseHorseSkill && true == IsRiding())
 		return false;
 
@@ -2474,7 +2474,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 			}
 
 			m_SkillUseInfo[dwVnum].SetMainTargetVID(pkVictim->GetVID());
-			// DASH  źȯ ݱ
+			// DASH 상태의 탄환격은 공격기술
 			ComputeSkill(dwVnum, pkVictim);
 			RemoveAffect(dwVnum);
 			return true;
@@ -2492,7 +2492,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 		return true;
 	}
 
-	// Toggle   SP   (SelfOnly )
+	// Toggle 할 때는 SP를 쓰지 않음 (SelfOnly로 구분)
 	if ((0 != pkSk->dwAffectFlag || pkSk->dwVnum == SKILL_MUYEONG) && (pkSk->dwFlag & SKILL_FLAG_TOGGLE) && RemoveAffect(pkSk->dwVnum))
 	{
 		return true;
@@ -2506,7 +2506,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 	pkSk->SetPointVar("k", k);
 	pkSk->kSplashAroundDamageAdjustPoly.SetVar("k", k);
 
-	// Ÿ üũ
+	// 쿨타임 체크
 	pkSk->kCooldownPoly.SetVar("k", k);
 	int iCooltime = (int) pkSk->kCooldownPoly.Eval();
 	int lMaxHit = pkSk->lMaxHit ? pkSk->lMaxHit : -1;
@@ -2570,7 +2570,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 
 	if (pkSk->dwVnum == SKILL_MUYEONG || pkSk->IsChargeSkill() && !IsAffectFlag(AFF_TANHWAN_DASH) && !pkVictim)
 	{
-		// ó ϴ  ڽſ Affect δ.
+		// 처음 사용하는 무영진은 자신에게 Affect를 붙인다.
 		pkVictim = this;
 	}
 
@@ -2643,7 +2643,7 @@ int CHARACTER::GetSkillMasterType(DWORD dwVnum) const
 
 int CHARACTER::GetSkillPower(DWORD dwVnum, BYTE bLevel) const
 {
-	// ξ 
+	// 인어반지 아이템
 	if (dwVnum >= SKILL_LANGUAGE1 && dwVnum <= SKILL_LANGUAGE3 && IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_LANGUAGE))
 	{
 		return 100;
@@ -2748,16 +2748,16 @@ void CHARACTER::SkillLearnWaitMoreTimeMessage(DWORD ms)
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB8\xF6 \xBC\xD3\xC0\xCC \xB6\xDF\xB0\xCC\xB1\xBA. \xC7\xCF\xC1\xF6\xB8\xB8 \xBE\xC6\xC1\xD6 \xC6\xED\xBE\xC8\xC7\xD8. \xC0\xCC\xB4\xEB\xB7\xCE \xB1\xE2\xB8\xA6 \xBE\xC8\xC1\xA4\xBD\xC3\xC5\xB0\xC0\xDA."));
 	else if (ms < 5 * 60)
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB7\xA1, \xC3\xB5\xC3\xB5\xC8\xF7. \xC1\xBB\xB4\xF5 \xC3\xB5\xC3\xB5\xC8\xF7, \xB1\xD7\xB7\xAF\xB3\xAA \xB8\xB7\xC8\xFB \xBE\xF8\xC0\xCC \xBA\xFC\xB8\xA3\xB0\xD4!"));
-	else if (ms < 10 * 60) // 10
+	else if (ms < 10 * 60) // 10분
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB7\xA1, \xC0\xCC \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF. \xC3\xBC\xB3\xBB\xBF\xA1 \xB1\xE2\xB0\xA1 \xBE\xC6\xC1\xD6 \xC3\xE6\xB8\xB8\xC7\xD8."));
-	else if (ms < 30 * 60) // 30
+	else if (ms < 30 * 60) // 30분
 	{
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB4\xD9 \xC0\xD0\xBE\xFA\xB4\xD9! \xC0\xCC\xC1\xA6 \xBA\xF1\xB1\xDE\xBF\xA1 \xC0\xFB\xC7\xF4\xC0\xD6\xB4\xC2 \xB4\xEB\xB7\xCE \xC0\xFC\xBD\xC5\xBF\xA1 \xB1\xE2\xB8\xA6 \xB5\xB9\xB8\xAE\xB1\xE2\xB8\xB8 \xC7\xCF\xB8\xE9,"));
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB0\xCD\xC0\xB8\xB7\xCE \xBC\xF6\xB7\xC3\xC0\xBA \xB3\xA1\xB3\xAD \xB0\xC5\xBE\xDF!"));
 	}
-	else if (ms < 1 * 3600) // 1ð
+	else if (ms < 1 * 3600) // 1시간
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xC1\xA6 \xC3\xA5\xC0\xC7 \xB8\xB6\xC1\xF6\xB8\xB7 \xC0\xE5\xC0\xCC\xBE\xDF! \xBC\xF6\xB7\xC3\xC0\xC7 \xB3\xA1\xC0\xCC \xB4\xAB\xBF\xA1 \xBA\xB8\xC0\xCC\xB0\xED \xC0\xD6\xBE\xEE!"));
-	else if (ms < 2 * 3600) // 2ð
+	else if (ms < 2 * 3600) // 2시간
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBE\xF3\xB8\xB6 \xBE\xC8 \xB3\xB2\xBE\xD2\xBE\xEE! \xC1\xB6\xB1\xDD\xB8\xB8 \xB4\xF5!"));
 	else if (ms < 3 * 3600)
 		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC1\xC1\xBE\xD2\xBE\xEE! \xC1\xB6\xB1\xDD\xB8\xB8 \xB4\xF5 \xC0\xD0\xC0\xB8\xB8\xE9 \xB3\xA1\xC0\xCC\xB4\xD9!"));
@@ -3138,10 +3138,10 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 
 	static DWORD s_anMotion2SkillVnumList[MOTION_MAX_NUM][SKILL_LIST_MAX_COUNT] =
 	{
-		// ų   罺ųID  ڰųID  ųID  罺ųID
+		// 스킬수   무사스킬ID  자객스킬ID  수라스킬ID  무당스킬ID
 		{   0,		0,			0,			0,			0		}, //  0
 
-		// 1  ⺻ ų
+		// 1번 직군 기본 스킬
 		{   4,		1,			31,			61,			91		}, //  1
 		{   4,		2,			32,			62,			92		}, //  2
 		{   4,		3,			33,			63,			93		}, //  3
@@ -3150,9 +3150,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		6,			36,			66,			96		}, //  6
 		{   0,		0,			0,			0,			0		}, //  7
 		{   0,		0,			0,			0,			0		}, //  8
-		// 1  ⺻ ų 
+		// 1번 직군 기본 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  9
 		{   0,		0,			0,			0,			0		}, //  10
 		{   0,		0,			0,			0,			0		}, //  11
@@ -3160,9 +3160,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   0,		0,			0,			0,			0		}, //  13
 		{   0,		0,			0,			0,			0		}, //  14
 		{   0,		0,			0,			0,			0		}, //  15
-		//  
+		// 여유분 끝
 
-		// 2  ⺻ ų
+		// 2번 직군 기본 스킬
 		{   4,		16,			46,			76,			106		}, //  16
 		{   4,		17,			47,			77,			107		}, //  17
 		{   4,		18,			48,			78,			108		}, //  18
@@ -3171,14 +3171,14 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		21,			51,			81,			111		}, //  21
 		{   0,		0,			0,			0,			0		}, //  22
 		{   0,		0,			0,			0,			0		}, //  23
-		// 2  ⺻ ų 
+		// 2번 직군 기본 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  24
 		{   0,		0,			0,			0,			0		}, //  25
-		//  
+		// 여유분 끝
 
-		// 1   ų
+		// 1번 직군 마스터 스킬
 		{   4,		1,			31,			61,			91		}, //  26
 		{   4,		2,			32,			62,			92		}, //  27
 		{   4,		3,			33,			63,			93		}, //  28
@@ -3187,9 +3187,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		6,			36,			66,			96		}, //  31
 		{   0,		0,			0,			0,			0		}, //  32
 		{   0,		0,			0,			0,			0		}, //  33
-		// 1   ų 
+		// 1번 직군 마스터 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  34
 		{   0,		0,			0,			0,			0		}, //  35
 		{   0,		0,			0,			0,			0		}, //  36
@@ -3197,9 +3197,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   0,		0,			0,			0,			0		}, //  38
 		{   0,		0,			0,			0,			0		}, //  39
 		{   0,		0,			0,			0,			0		}, //  40
-		//  
+		// 여유분 끝
 
-		// 2   ų
+		// 2번 직군 마스터 스킬
 		{   4,		16,			46,			76,			106		}, //  41
 		{   4,		17,			47,			77,			107		}, //  42
 		{   4,		18,			48,			78,			108		}, //  43
@@ -3208,14 +3208,14 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		21,			51,			81,			111		}, //  46
 		{   0,		0,			0,			0,			0		}, //  47
 		{   0,		0,			0,			0,			0		}, //  48
-		// 2   ų 
+		// 2번 직군 마스터 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  49
 		{   0,		0,			0,			0,			0		}, //  50
-		//  
+		// 여유분 끝
 
-		// 1  ׷  ų
+		// 1번 직군 그랜드 마스터 스킬
 		{   4,		1,			31,			61,			91		}, //  51
 		{   4,		2,			32,			62,			92		}, //  52
 		{   4,		3,			33,			63,			93		}, //  53
@@ -3224,9 +3224,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		6,			36,			66,			96		}, //  56
 		{   0,		0,			0,			0,			0		}, //  57
 		{   0,		0,			0,			0,			0		}, //  58
-		// 1  ׷  ų 
+		// 1번 직군 그랜드 마스터 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  59
 		{   0,		0,			0,			0,			0		}, //  60
 		{   0,		0,			0,			0,			0		}, //  61
@@ -3234,9 +3234,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   0,		0,			0,			0,			0		}, //  63
 		{   0,		0,			0,			0,			0		}, //  64
 		{   0,		0,			0,			0,			0		}, //  65
-		//  
+		// 여유분 끝
 
-		// 2  ׷  ų
+		// 2번 직군 그랜드 마스터 스킬
 		{   4,		16,			46,			76,			106		}, //  66
 		{   4,		17,			47,			77,			107		}, //  67
 		{   4,		18,			48,			78,			108		}, //  68
@@ -3245,14 +3245,14 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		21,			51,			81,			111		}, //  71
 		{   0,		0,			0,			0,			0		}, //  72
 		{   0,		0,			0,			0,			0		}, //  73
-		// 2  ׷  ų 
+		// 2번 직군 그랜드 마스터 스킬 끝
 
-		//
+		//여유분
 		{   0,		0,			0,			0,			0		}, //  74
 		{   0,		0,			0,			0,			0		}, //  75
-		//  
+		// 여유분 끝
 
-		// 1  Ʈ  ų
+		// 1번 직군 퍼펙트 마스터 스킬
 		{   4,		1,			31,			61,			91		}, //  76
 		{   4,		2,			32,			62,			92		}, //  77
 		{   4,		3,			33,			63,			93		}, //  78
@@ -3261,9 +3261,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		6,			36,			66,			96		}, //  81
 		{   0,		0,			0,			0,			0		}, //  82
 		{   0,		0,			0,			0,			0		}, //  83
-		// 1  Ʈ  ų 
+		// 1번 직군 퍼펙트 마스터 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  84
 		{   0,		0,			0,			0,			0		}, //  85
 		{   0,		0,			0,			0,			0		}, //  86
@@ -3271,9 +3271,9 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   0,		0,			0,			0,			0		}, //  88
 		{   0,		0,			0,			0,			0		}, //  89
 		{   0,		0,			0,			0,			0		}, //  90
-		//  
+		// 여유분 끝
 
-		// 2  Ʈ  ų
+		// 2번 직군 퍼펙트 마스터 스킬
 		{   4,		16,			46,			76,			106		}, //  91
 		{   4,		17,			47,			77,			107		}, //  92
 		{   4,		18,			48,			78,			108		}, //  93
@@ -3282,23 +3282,23 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   4,		21,			51,			81,			111		}, //  96
 		{   0,		0,			0,			0,			0		}, //  97
 		{   0,		0,			0,			0,			0		}, //  98
-		// 2  Ʈ  ų 
+		// 2번 직군 퍼펙트 마스터 스킬 끝
 
-		// 
+		// 여유분
 		{   0,		0,			0,			0,			0		}, //  99
 		{   0,		0,			0,			0,			0		}, //  100
-		//  
+		// 여유분 끝
 
-		//  ų
+		// 길드 스킬
 		{   1,  152,    0,    0,    0}, //  101
 		{   1,  153,    0,    0,    0}, //  102
 		{   1,  154,    0,    0,    0}, //  103
 		{   1,  155,    0,    0,    0}, //  104
 		{   1,  156,    0,    0,    0}, //  105
 		{   1,  157,    0,    0,    0}, //  106
-		//  ų 
+		// 길드 스킬 끝
 
-		// 
+		// 여유분
 		{   0,    0,    0,    0,    0}, //  107
 		{   0,    0,    0,    0,    0}, //  108
 		{   0,    0,    0,    0,    0}, //  109
@@ -3313,13 +3313,13 @@ bool CHARACTER::IsUsableSkillMotion(DWORD dwMotionIndex) const
 		{   0,    0,    0,    0,    0}, //  118
 		{   0,    0,    0,    0,    0}, //  119
 		{   0,    0,    0,    0,    0}, //  120
-		//  
+		// 여유분 끝
 
-		// ¸ ų
+		// 승마 스킬
 		{   2,  137,  140,    0,    0}, //  121
 		{   1,  138,    0,    0,    0}, //  122
 		{   1,  139,    0,    0,    0}, //  123
-		// ¸ ų 
+		// 승마 스킬 끝
 	};
 
 	if (dwMotionIndex >= MOTION_MAX_NUM)
@@ -3473,7 +3473,7 @@ bool CHARACTER::CanUseSkill(DWORD dwSkillVnum) const
 	
 	if (true == IsRiding())
 	{
-		//Ʈ Ż ޸ ų 밡
+		//마운트 탈것중 고급말만 스킬 사용가능
 		if(GetMountVnum())
 		{
 			if( GetMountVnum() < 20209 && GetMountVnum() > 20212)
diff --git a/src/game/src/char_state.cpp b/src/game/src/char_state.cpp
index 915c17b..ccbffc6 100644
--- a/src/game/src/char_state.cpp
+++ b/src/game/src/char_state.cpp
@@ -63,7 +63,7 @@ namespace
 						!pkChr->IsAffectFlag(AFF_WAR_FLAG2) &&
 						!pkChr->IsAffectFlag(AFF_WAR_FLAG3))
 				{
-					// 츮  
+					// 우리편 깃발일 경우
 					if ((DWORD) m_pkChr->GetPoint(POINT_STAT) == pkChr->GetGuild()->GetID())
 					{
 						CWarMap * pMap = pkChr->GetWarMap();
@@ -72,8 +72,8 @@ namespace
 						if (!pMap || !pMap->GetTeamIndex(pkChr->GetGuild()->GetID(), idx))
 							return;
 
-						// 츮      ̴´. ȱ׷  ִ 
-						//  ΰ   Ƿ..
+						// 우리편 기지에 깃발이 없을 때만 깃발을 뽑는다. 안그러면 기지에 있는 깃발을
+						// 가만히 두고 싶은데도 뽑힐수가 있으므로..
 						if (!pMap->IsFlagOnBase(idx))
 						{
 							m_pkChrFind = pkChr;
@@ -82,7 +82,7 @@ namespace
 					}
 					else
 					{
-						//     ̴´.
+						// 상대편 깃발인 경우 무조건 뽑는다.
 						m_pkChrFind = pkChr;
 						m_iMinDistance = iDist;
 					}
@@ -186,7 +186,7 @@ namespace
 
 				LPCHARACTER pkChr = (LPCHARACTER) ent;
 
-				// ϴ PC ݾ
+				// 일단 PC 공격안함
 				if (pkChr->IsPC())
 					return;
 
@@ -202,7 +202,7 @@ namespace
 						pkChr->IsAffectFlag(AFF_REVIVE_INVISIBLE))
 					return;
 
-				// ֱ н
+				// 왜구는 패스
 				if (pkChr->GetRaceNum() == 5001)
 					return;
 
@@ -285,7 +285,7 @@ void CHARACTER::CowardEscape()
 	for (int iDistIdx = 2; iDistIdx >= 0; --iDistIdx)
 		for (int iTryCount = 0; iTryCount < 8; ++iTryCount)
 		{
-			SetRotation(Random::get(0, 359));        //   
+			SetRotation(Random::get(0, 359));        // 방향은 랜덤으로 설정
 
 			float fx, fy;
 			float fDist = Random::get(iDist[iDistIdx], iDist[iDistIdx+1]);
@@ -367,7 +367,7 @@ void CHARACTER::StateIdle()
 	}
 	else if (IsWarp() || IsGoto())
 	{
-		//  ̺Ʈ ó
+		// 워프는 이벤트로 처리
 		m_dwStateDuration = 60 * passes_per_sec;
 		return;
 	}
@@ -375,7 +375,7 @@ void CHARACTER::StateIdle()
 	if (IsPC())
 		return;
 
-	// NPC ó
+	// NPC 처리
 	if (!IsMonster())
 	{
 		__StateIdle_NPC();
@@ -506,7 +506,7 @@ void CHARACTER::__StateIdle_NPC()
 	MonsterChat(MONSTER_CHAT_WAIT);
 	m_dwStateDuration = PASSES_PER_SEC(5);
 
-	//  ý Idle ó     ij͵ ؼ ϴ ¸ӽ ƴ CPetActor::Update ó.
+	// 펫 시스템의 Idle 처리는 기존 거의 모든 종류의 캐릭터들이 공유해서 사용하는 상태머신이 아닌 CPetActor::Update에서 처리함.
 	if (IsPet())
 		return;
 	else if (IsGuardNPC())
@@ -531,21 +531,21 @@ void CHARACTER::__StateIdle_NPC()
 	}
 	else
 	{
-		if (GetRaceNum() == xmas::MOB_SANTA_VNUM) // Ÿ
+		if (GetRaceNum() == xmas::MOB_SANTA_VNUM) // 산타
 		{
 			if (get_dword_time() > m_dwPlayStartTime)
 			{
-				int	next_warp_time = 2 * 1000;	// 2
+				int	next_warp_time = 2 * 1000;	// 2초
 
 				m_dwPlayStartTime = get_dword_time() + next_warp_time;
 
-				// ð Ѿ սô.
+				// 시간이 넘었으니 워프합시다.
 				/*
-				 * Ÿ
+				 * 산타용
 				const int WARP_MAP_INDEX_NUM = 4;
 				static const int c_lWarpMapIndexs[WARP_MAP_INDEX_NUM] = {61, 62, 63, 64};
 				*/
-				// ż ؿ
+				// 신선자 노해용
 				const int WARP_MAP_INDEX_NUM = 7;
 				static const int c_lWarpMapIndexs[WARP_MAP_INDEX_NUM] = { 61, 62, 63, 64, 3, 23, 43 };
 				int lNextMapIndex;
@@ -553,7 +553,7 @@ void CHARACTER::__StateIdle_NPC()
 
 				if (map_allow_find(lNextMapIndex))
 				{
-					// ̰Դϴ.
+					// 이곳입니다.
 					M2_DESTROY_CHARACTER(this);
 					int iNextSpawnDelay = 0;
 					if (LC_IsYMIR())
@@ -565,7 +565,7 @@ void CHARACTER::__StateIdle_NPC()
 				}
 				else
 				{
-					// ٸ  Դϴ.
+					// 다른 서버 입니다.
 					TPacketGGXmasWarpSanta p;
 					p.bHeader   = HEADER_GG_XMAS_WARP_SANTA;
 					p.bChannel  = g_bChannel;
@@ -579,7 +579,7 @@ void CHARACTER::__StateIdle_NPC()
 		if (!IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE))
 		{
 			//
-			//     ̵Ѵ.
+			// 이 곳 저 곳 이동한다.
 			// 
 			LPCHARACTER pkChrProtege = GetProtege();
 
@@ -594,14 +594,14 @@ void CHARACTER::__StateIdle_NPC()
 
 			if (!Random::get(0, 6))
 			{
-				SetRotation(Random::get(0, 359));        //   
+				SetRotation(Random::get(0, 359));        // 방향은 랜덤으로 설정
 
 				float fx, fy;
 				float fDist = Random::get(200, 400);
 
 				GetDeltaByDegree(GetRotation(), fDist, &fx, &fy);
 
-				//   Ӽ üũ;  ġ ߰ ġ ٸ  ʴ´.
+				// 느슨한 못감 속성 체크; 최종 위치와 중간 위치가 갈수없다면 가지 않는다.
 				if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy) 
 					&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx / 2, GetY() + (int) fy / 2)))
 					return;
@@ -627,7 +627,7 @@ void CHARACTER::__StateIdle_Monster()
 
 	if (IsCoward())
 	{
-		//  ʹ  ٴմϴ.
+		// 겁쟁이 몬스터는 도망만 다닙니다.
 		if (!IsDead())
 			CowardEscape();
 
@@ -653,16 +653,16 @@ void CHARACTER::__StateIdle_Monster()
 
 	if (!victim || victim->IsBuilding())
 	{
-		//  ȣ ó
+		// 돌 보호 처리
 		if (m_pkChrStone)
 		{
 			victim = m_pkChrStone->GetNearestVictim(m_pkChrStone);
 		}
-		//   ó
+		// 선공 몬스터 처리
 		else if (!no_wander && IsAggressive())
 		{
 			if (GetMapIndex() == 61 && quest::CQuestManager::instance().GetEventFlag("xmas_tree"));
-			// ѻ꿡   ʴ´.
+			// 서한산에서 나무가 있으면 선공하지않는다.
 			else
 				victim = FindVictim(this, m_pkMobData->m_table.wAggressiveSight);
 		}
@@ -683,7 +683,7 @@ void CHARACTER::__StateIdle_Monster()
 
 	LPCHARACTER pkChrProtege = GetProtege();
 
-	// ȣ (, Ƽ)Է  ִٸ 󰣴.
+	// 보호할 것(돌, 파티장)에게로 부터 멀다면 따라간다.
 	if (pkChrProtege)
 	{
 		if (DISTANCE_APPROX(GetX() - pkChrProtege->GetX(), GetY() - pkChrProtege->GetY()) > 1000)
@@ -697,26 +697,26 @@ void CHARACTER::__StateIdle_Monster()
 	}
 
 	//
-	// ׳ Դٸ ٸ Ѵ.
+	// 그냥 왔다리 갔다리 한다.
 	//
 	if (!no_wander && !IS_SET(m_pointsInstant.dwAIFlag, AIFLAG_NOMOVE))
 	{
 		if (!Random::get(0, 6))
 		{
-			SetRotation(Random::get(0, 359));        //   
+			SetRotation(Random::get(0, 359));        // 방향은 랜덤으로 설정
 
 			float fx, fy;
 			float fDist = Random::get(300, 700);
 
 			GetDeltaByDegree(GetRotation(), fDist, &fx, &fy);
 
-			//   Ӽ üũ;  ġ ߰ ġ ٸ  ʴ´.
+			// 느슨한 못감 속성 체크; 최종 위치와 중간 위치가 갈수없다면 가지 않는다.
 			if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy) 
 						&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx/2, GetY() + (int) fy/2)))
 				return;
 
-			// NOTE: Ͱ IDLE ¿ ֺ Ÿ ,   پ Ǿ . (  )
-			// ׷  Ͱ ȴ  ʹٰ ؼ ӽ÷ ƯȮ Ȱų ٰ . (   Ʋ  ϴ ׽Ʈ 忡 ۵)
+			// NOTE: 몬스터가 IDLE 상태에서 주변을 서성거릴 때, 현재 무조건 뛰어가게 되어 있음. (절대로 걷지 않음)
+			// 그래픽 팀에서 몬스터가 걷는 모습도 보고싶다고 해서 임시로 특정확률로 걷거나 뛰게 함. (게임의 전반적인 느낌이 틀려지기 때문에 일단 테스트 모드에서만 작동)
 			if (g_test_server)
 			{
 				if (Random::get(0, 100) < 60)
@@ -745,13 +745,13 @@ bool __CHARACTER_GotoNearTarget(LPCHARACTER self, LPCHARACTER victim)
 	{
 		case BATTLE_TYPE_RANGE:
 		case BATTLE_TYPE_MAGIC:
-			// 糪 ü  Ÿ 80%   Ѵ.
+			// 마법사나 궁수는 공격 거리의 80%까지 가서 공격을 시작한다.
 			if (self->Follow(victim, self->GetMobAttackRange() * 8 / 10))
 				return true;
 			break;
 
 		default:
-			//  90%?
+			// 나머지는 90%?
 			if (self->Follow(victim, self->GetMobAttackRange() * 9 / 10))
 				return true;
 	}
@@ -781,7 +781,7 @@ void CHARACTER::StateMove()
 			LPCHARACTER victim = GetExchange()->GetCompany()->GetOwner();
 			int iDist = DISTANCE_APPROX(GetX() - victim->GetX(), GetY() - victim->GetY());
 
-			// Ÿ üũ
+			// 거리 체크
 			if (iDist >= EXCHANGE_MAX_DISTANCE)
 			{
 				GetExchange()->Cancel();
@@ -789,17 +789,17 @@ void CHARACTER::StateMove()
 		}
 	}
 
-	// ׹̳ 0 ̻̾ Ѵ.
+	// 스테미나가 0 이상이어야 한다.
 	if (IsPC())
 	{
 		if (IsWalking() && GetStamina() < GetMaxStamina())
 		{
-			// 5   ׹̳ 
+			// 5초 후 부터 스테미너 증가
 			if (get_dword_time() - GetWalkStartTime() > 5000)
 				PointChange(POINT_STAMINA, GetMaxStamina() / 1);
 		}
 
-		//  ̸鼭 ٴ ̸
+		// 전투 중이면서 뛰는 중이면
 		if (!IsWalking() && !IsRiding())
 			if ((get_dword_time() - GetLastAttackTime()) < 20000)
 			{
@@ -817,7 +817,7 @@ void CHARACTER::StateMove()
 
 				if (GetStamina() <= 0)
 				{
-					// ׹̳ ڶ ɾ
+					// 스테미나가 모자라 걸어야함
 					SetStamina(0);
 					SetNowWalking(true);
 					StopStaminaConsume();
@@ -838,7 +838,7 @@ void CHARACTER::StateMove()
 
 			if (g_test_server)
 			{
-				// Ͱ  Ѿư ̸  پ.
+				// 몬스터가 적을 쫓아가는 것이면 무조건 뛰어간다.
 				SetNowWalking(false);
 			}
 		}
@@ -847,10 +847,10 @@ void CHARACTER::StateMove()
 		{
 			LPCHARACTER victim = GetVictim();
 
-			// Ŵ ź
+			// 거대 거북
 			if (GetRaceNum() == 2191 && Random::get(1, 20) == 1 && get_dword_time() - m_pkMobInst->m_dwLastWarpTime > 1000)
 			{
-				//  ׽Ʈ
+				// 워프 테스트
 				float fx, fy;
 				GetDeltaByDegree(victim->GetRotation(), 400, &fx, &fy);
 				int new_x = victim->GetX() + (int)fx;
@@ -864,7 +864,7 @@ void CHARACTER::StateMove()
 				return;
 			}
 
-			// TODO ȯ ؼ  ٺ !
+			// TODO 방향전환을 해서 덜 바보가 되자!
 			if (Random::get(0, 3) == 0)
 			{
 				if (__CHARACTER_GotoNearTarget(this, victim))
@@ -1005,7 +1005,7 @@ void CHARACTER::StateBattle()
 	{
 		if (!GetParty())
 		{
-			// ؼ ä Ƽ  Ӵϴ.
+			// 서몬해서 채워둘 파티를 만들어 둡니다.
 			CPartyManager::instance().CreateParty(this);
 		}
 
@@ -1015,7 +1015,7 @@ void CHARACTER::StateBattle()
 		if (bPct && pParty->CountMemberByVnum(GetSummonVnum()) < SUMMON_MONSTER_COUNT)
 		{
 			MonsterLog("\xBA\xCE\xC7\xCF \xB8\xF3\xBD\xBA\xC5\xCD \xBC\xD2\xC8\xAF!");
-			// ڶ ༮ ҷ äô.
+			// 모자라는 녀석을 불러내 채웁시다.
 			int sx = GetX() - 300;
 			int sy = GetY() - 300;
 			int ex = GetX() + 300;
@@ -1035,12 +1035,12 @@ void CHARACTER::StateBattle()
 
 	float fDist = DISTANCE_APPROX(GetX() - victim->GetX(), GetY() - victim->GetY());
 
-	if (fDist >= 4000.0f)   // 40 ̻ ־ 
+	if (fDist >= 4000.0f)   // 40미터 이상 멀어지면 포기
 	{
 		MonsterLog("\xC5\xB8\xB0\xD9\xC0\xCC \xB8\xD6\xBE\xEE\xBC\xAD \xC6\xF7\xB1\xE2");
 		SetVictim(NULL);
 
-		// ȣ (, Ƽ) ֺ .
+		// 보호할 것(돌, 파티장) 주변으로 간다.
 		if (pkChrProtege)
 			if (DISTANCE_APPROX(GetX() - pkChrProtege->GetX(), GetY() - pkChrProtege->GetY()) > 1000)
 				Follow(pkChrProtege, Random::get(150, 400));
@@ -1059,7 +1059,7 @@ void CHARACTER::StateBattle()
 
 	if (2493 == m_pkMobData->m_table.dwVnum)
 	{
-		// (2493) Ư ó
+		// 수룡(2493) 특수 처리
 		m_dwStateDuration = BlueDragon_StateBattle(this);
 		return;
 	}
@@ -1067,7 +1067,7 @@ void CHARACTER::StateBattle()
 	DWORD dwCurTime = get_dword_time();
 	DWORD dwDuration = CalculateDuration(GetLimitPoint(POINT_ATT_SPEED), 2000);
 
-	if ((dwCurTime - m_dwLastAttackTime) < dwDuration) // 2  ؾ Ѵ.
+	if ((dwCurTime - m_dwLastAttackTime) < dwDuration) // 2초 마다 공격해야 한다.
 	{
 		m_dwStateDuration = std::max(1, (passes_per_sec * (dwDuration - (dwCurTime - m_dwLastAttackTime)) / 1000));
 		return;
@@ -1084,7 +1084,7 @@ void CHARACTER::StateBattle()
 				SetGodSpeed(true);
 
 	//
-	//  ų ó
+	// 몹 스킬 처리
 	//
 	if (HasMobSkill())
 	{
@@ -1109,11 +1109,11 @@ void CHARACTER::StateBattle()
 		}
 	}
 
-	if (!Attack(victim))    //  ж?  ? TODO
+	if (!Attack(victim))    // 공격 실패라면? 왜 실패했지? TODO
 		m_dwStateDuration = passes_per_sec / 2;
 	else
 	{
-		//  ٶ󺸰 .
+		// 적을 바라보게 만든다.
 		SetRotationToXY(victim->GetX(), victim->GetY());
 
 		SendMovePacket(FUNC_ATTACK, 0, GetX(), GetY(), 0, dwCurTime);
@@ -1166,15 +1166,15 @@ void CHARACTER::StateFlagBase()
 
 void CHARACTER::StateHorse()
 {
-	float	START_FOLLOW_DISTANCE = 400.0f;		//  Ÿ ̻  Ѿư 
-	float	START_RUN_DISTANCE = 700.0f;		//  Ÿ ̻  پ Ѿư.
-	int		MIN_APPROACH = 150;					// ּ  Ÿ
-	int		MAX_APPROACH = 300;					// ִ  Ÿ	
+	float	START_FOLLOW_DISTANCE = 400.0f;		// 이 거리 이상 떨어지면 쫓아가기 시작함
+	float	START_RUN_DISTANCE = 700.0f;		// 이 거리 이상 떨어지면 뛰어서 쫓아감.
+	int		MIN_APPROACH = 150;					// 최소 접근 거리
+	int		MAX_APPROACH = 300;					// 최대 접근 거리	
 
-	DWORD	STATE_DURATION = (DWORD)PASSES_PER_SEC(0.5);	//   ð
+	DWORD	STATE_DURATION = (DWORD)PASSES_PER_SEC(0.5);	// 상태 지속 시간
 
-	bool bDoMoveAlone = true;					// ijͿ    ȥ  ϰ  -_-;
-	bool bRun = true;							// پ ϳ?
+	bool bDoMoveAlone = true;					// 캐릭터와 가까이 있을 때 혼자 여기저기 움직일건지 여부 -_-;
+	bool bRun = true;							// 뛰어야 하나?
 
 	if (IsDead())
 		return;
@@ -1183,7 +1183,7 @@ void CHARACTER::StateHorse()
 
 	LPCHARACTER victim = GetRider();
 
-	// ! ƴ //    ȯڰ   Ŭ 
+	// ! 아님 // 대상이 없는 경우 소환자가 직접 나를 클리어할 것임
 	if (!victim)
 	{
 		M2_DESTROY_CHARACTER(this);
@@ -1197,7 +1197,7 @@ void CHARACTER::StateHorse()
 	if (fDist >= START_FOLLOW_DISTANCE)
 	{
 		if (fDist > START_RUN_DISTANCE)
-			SetNowWalking(!bRun);		// NOTE: Լ ̸ ߴ° ˾Ҵµ SetNowWalking(false) ϸ ٴ°.. -_-;
+			SetNowWalking(!bRun);		// NOTE: 함수 이름보고 멈추는건줄 알았는데 SetNowWalking(false) 하면 뛰는거임.. -_-;
 
 		Follow(victim, Random::get(MIN_APPROACH, MAX_APPROACH));
 
@@ -1208,14 +1208,14 @@ void CHARACTER::StateHorse()
 		// wondering-.-
 		m_dwLastAttackTime = get_dword_time() + Random::get(5000, 12000);
 
-		SetRotation(Random::get(0, 359));        //   
+		SetRotation(Random::get(0, 359));        // 방향은 랜덤으로 설정
 
 		float fx, fy;
 		float fDist = Random::get(200, 400);
 
 		GetDeltaByDegree(GetRotation(), fDist, &fx, &fy);
 
-		//   Ӽ üũ;  ġ ߰ ġ ٸ  ʴ´.
+		// 느슨한 못감 속성 체크; 최종 위치와 중간 위치가 갈수없다면 가지 않는다.
 		if (!(SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx, GetY() + (int) fy) 
 					&& SECTREE_MANAGER::instance().IsMovablePosition(GetMapIndex(), GetX() + (int) fx/2, GetY() + (int) fy/2)))
 			return;
diff --git a/src/game/src/cmd.cpp b/src/game/src/cmd.cpp
index 341f5f1..3c632dc 100644
--- a/src/game/src/cmd.cpp
+++ b/src/game/src/cmd.cpp
@@ -187,7 +187,7 @@ ACMD(do_effect);
 ACMD(do_threeway_war_info );
 ACMD(do_threeway_war_myinfo );
 //
-// 
+//군주 전용기능
 ACMD(do_monarch_warpto);
 ACMD(do_monarch_transfer);
 ACMD(do_monarch_info);
@@ -196,7 +196,7 @@ ACMD(do_monarch_tax);
 ACMD(do_monarch_mob);
 ACMD(do_monarch_notice);
 
-//  
+//군주 관리 기능
 ACMD(do_rmcandidacy);
 ACMD(do_setmonarch);
 ACMD(do_rmmonarch);
@@ -204,10 +204,10 @@ ACMD(do_rmmonarch);
 ACMD(do_hair);
 //gift notify quest command
 ACMD(do_gift);
-// ť
+// 큐브관련
 ACMD(do_inventory);
 ACMD(do_cube);
-// 
+// 공성전
 ACMD(do_siege);
 ACMD(do_temp);
 ACMD(do_frog);
@@ -235,7 +235,7 @@ ACMD(do_ride);
 ACMD(do_get_item_id_list);
 ACMD(do_set_socket);
 #ifdef __AUCTION__
-// temp_auction ӽ
+// temp_auction 임시
 ACMD(do_get_auction_list);
 ACMD (do_get_my_auction_list);
 ACMD (do_get_my_purchase_list);
@@ -255,21 +255,21 @@ ACMD (do_cancel_sale);
 ACMD (do_rebid);
 ACMD (do_bid_cancel);
 #endif
-// ڽ º  
+// 코스츔 상태보기 및 벗기
 ACMD(do_costume);
 ACMD(do_set_stat);
 
-// 
+// 무적
 ACMD (do_can_dead);
 
 ACMD (do_full_set);
-//    ְ 
+// 직군과 레벨에 따른 최고 아이템
 ACMD (do_item_full_set);
-//   ְ ɼ Ӽ 
+// 직군에 따른 최고 옵션의 속성 셋팅
 ACMD (do_attr_full_set);
-//  ų 
+// 모든 스킬 마스터
 ACMD (do_all_skill_master);
-//  . icon  Ŭ󿡼 Ȯ       .
+// 아이템 착용. icon이 없어 클라에서 확인 할 수 없는 아이템 착용을 위해 만듦.
 ACMD (do_use_item);
 ACMD (do_dragon_soul);
 ACMD (do_ds_list);
@@ -277,7 +277,7 @@ ACMD (do_clear_affect);
 
 struct command_info cmd_info[] =
 {
-	{ "!RESERVED!",	NULL,			0,			POS_DEAD,	GM_IMPLEMENTOR	}, /* ݵ   ó̾ Ѵ. */
+	{ "!RESERVED!",	NULL,			0,			POS_DEAD,	GM_IMPLEMENTOR	}, /* 반드시 이 것이 처음이어야 한다. */
 	{ "who",		do_who,			0,			POS_DEAD,	GM_IMPLEMENTOR	},
 	{ "war",		do_war,			0,			POS_DEAD,	GM_PLAYER	},
 	{ "warp",		do_warp,		0,			POS_DEAD,	GM_LOW_WIZARD	},
@@ -298,7 +298,7 @@ struct command_info cmd_info[] =
 	{ "item",		do_item,		0,			POS_DEAD,	GM_GOD		},
 
 	{ "mob",		do_mob,			0,			POS_DEAD,	GM_HIGH_WIZARD	},
-	{ "mob_ld",		do_mob_ld,			0,			POS_DEAD,	GM_HIGH_WIZARD	}, /*  ġ   ȯ /mob_ld vnum x y dir */
+	{ "mob_ld",		do_mob_ld,			0,			POS_DEAD,	GM_HIGH_WIZARD	}, /* 몹의 위치와 방향을 설정해 소환 /mob_ld vnum x y dir */
 	{ "ma",		do_mob_aggresive,	0,			POS_DEAD,	GM_HIGH_WIZARD	},
 	{ "mc",		do_mob_coward,		0,			POS_DEAD,	GM_HIGH_WIZARD	},
 	{ "mm",		do_mob_map,		0,			POS_DEAD,	GM_HIGH_WIZARD	},
@@ -546,7 +546,7 @@ struct command_info cmd_info[] =
 	{ "item_id_list",	do_get_item_id_list,	0,	POS_DEAD,	GM_LOW_WIZARD	},
 	{ "set_socket",		do_set_socket,			0,	POS_DEAD,	GM_LOW_WIZARD	},
 #ifdef __AUCTION__
-	// auction ӽ
+	// auction 임시
 	{ "auction_list",	do_get_auction_list,	0,	POS_DEAD,	GM_PLAYER	},
 	{ "my_auction_list", do_get_my_auction_list, 0, POS_DEAD,	GM_PLAYER	},
 	{ "my_purchase_list", do_get_my_purchase_list, 0, POS_DEAD,	GM_PLAYER	},
@@ -586,7 +586,7 @@ struct command_info cmd_info[] =
 	{ "ds_list",				do_ds_list,				0,	POS_DEAD,	GM_PLAYER	},
 	{ "do_clear_affect", do_clear_affect, 	0, POS_DEAD,		GM_LOW_WIZARD},
 
-	{ "\n",		NULL,			0,			POS_DEAD,	GM_IMPLEMENTOR	}  /* ݵ   ̾ Ѵ. */
+	{ "\n",		NULL,			0,			POS_DEAD,	GM_IMPLEMENTOR	}  /* 반드시 이 것이 마지막이어야 한다. */
 };
 
 void interpreter_set_privilege(const char *cmd, int lvl)
@@ -609,7 +609,7 @@ void double_dollar(const char *src, size_t src_len, char *dest, size_t dest_len)
 	const char * tmp = src;
 	size_t cur_len = 0;
 
-	// \0  ڸ Ȯ
+	// \0 넣을 자리 확보
 	dest_len -= 1;
 
 	while (src_len-- && *tmp)
@@ -644,7 +644,7 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 		return ;
 	}
 
-	char cmd[128 + 1];  // buffer overflow   ʵ Ϻη ̸ ª 
+	char cmd[128 + 1];  // buffer overflow 문제가 생기지 않도록 일부러 길이를 짧게 잡음
 	char new_line[256 + 1];
 	const char * line;
 	int icmd;
@@ -661,7 +661,7 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 	{
 		if (cmd_info[icmd].command_pointer == do_cmd)
 		{
-			if (!strcmp(cmd_info[icmd].command, cmd)) // do_cmd  ɾ ľ   ִ.
+			if (!strcmp(cmd_info[icmd].command, cmd)) // do_cmd는 모든 명령어를 쳐야 할 수 있다.
 				break;
 		}
 		else if (!strncmp(cmd_info[icmd].command, cmd, cmdlen))
@@ -713,7 +713,7 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 		return;
 	}
 
-	if (strncmp("phase", cmd_info[icmd].command, 5) != 0) //  ɾ ó 
+	if (strncmp("phase", cmd_info[icmd].command, 5) != 0) // 히든 명령어 처리 
 		SPDLOG_DEBUG("COMMAND: {}: {}", ch->GetName(), cmd_info[icmd].command);
 
 	((*cmd_info[icmd].command_pointer) (ch, line, icmd, cmd_info[icmd].subcmd));
diff --git a/src/game/src/cmd_emotion.cpp b/src/game/src/cmd_emotion.cpp
index e9d8fec..e3d2d5e 100644
--- a/src/game/src/cmd_emotion.cpp
+++ b/src/game/src/cmd_emotion.cpp
@@ -108,11 +108,11 @@ ACMD(do_emotion_allow)
 
 bool CHARACTER_CanEmotion(CHARACTER& rch)
 {
-	// ��ȥ�� �ʿ����� ����� �� �ִ�.
+	// 결혼식 맵에서는 사용할 수 있다.
 	if (marriage::WeddingManager::instance().IsWeddingMap(rch.GetMapIndex()))
 		return true;
 
-	// ������ ���� ����� ����� �� �ִ�.
+	// 열정의 가면 착용시 사용할 수 있다.
 	if (rch.IsEquipUniqueItem(UNIQUE_ITEM_EMOTION_MASK))
 		return true;
 
@@ -246,7 +246,7 @@ ACMD(do_emotion)
 	if (len < 0 || len >= (int) sizeof(chatbuf))
 		len = sizeof(chatbuf) - 1;
 
-	++len;  // \0 ���� ����
+	++len;  // \0 문자 포함
 
 	TPacketGCChat pack_chat;
 	pack_chat.header = HEADER_GC_CHAT;
diff --git a/src/game/src/cmd_general.cpp b/src/game/src/cmd_general.cpp
index e61158b..b6c6b52 100644
--- a/src/game/src/cmd_general.cpp
+++ b/src/game/src/cmd_general.cpp
@@ -46,7 +46,7 @@ ACMD(do_user_horse_ride)
 
 	if (ch->IsHorseRiding() == false)
 	{
-		//  ƴ ٸŻ Ÿִ.
+		// 말이 아닌 다른탈것을 타고있다.
 		if (ch->GetMountVnum())
 		{
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC5\xBB\xB0\xCD\xC0\xBB \xC0\xCC\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
@@ -86,7 +86,7 @@ ACMD(do_user_horse_back)
 
 ACMD(do_user_horse_feed)
 {
-	// λ  ¿  ̸   .
+	// 개인상점을 연 상태에서는 말 먹이를 줄 수 없다.
 	if (ch->GetMyShop())
 		return;
 
@@ -397,7 +397,7 @@ ACMD(do_mount)
 	   char			arg1[256];
 	   struct action_mount_param	param;
 
-	// ̹ Ÿ 
+	// 이미 타고 있으면
 	if (ch->GetMountingChr())
 	{
 	char arg2[256];
@@ -488,7 +488,7 @@ ACMD(do_restart)
 		{
 			if (ch->IsHack())
 			{
-				// ϰ쿡 üũ  ʴ´.
+				//성지 맵일경우에는 체크 하지 않는다.
 				if (false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 				{
 					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - (180 - g_nPortalLimitTime));
@@ -505,13 +505,13 @@ ACMD(do_restart)
 	}
 
 	//PREVENT_HACK
-	//DESC : â, ȯ â  Ż ϴ ׿ ̿ɼ ־
-	//		Ÿ ߰ 
+	//DESC : 창고, 교환 창 후 포탈을 사용하는 버그에 이용될수 있어서
+	//		쿨타임을 추가 
 	if (subcmd == SCMD_RESTART_TOWN)
 	{
 		if (ch->IsHack())
 		{
-			//, ʿ üũ  ʴ´.
+			//길드맵, 성지맵에서는 체크 하지 않는다.
 			if ((!ch->GetWarMap() || ch->GetWarMap()->GetType() == GUILD_WAR_TYPE_FLAG) ||
 			   	false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 			{
@@ -535,7 +535,7 @@ ACMD(do_restart)
 	ch->StartRecoveryEvent();
 
 	//FORKED_LOAD
-	//DESC: Ÿ  Ȱ Ұ  Ա ƴ Ÿ   ̵ϰ ȴ.
+	//DESC: 삼거리 전투시 부활을 할경우 맵의 입구가 아닌 삼거리 전투의 시작지점으로 이동하게 된다.
 	if (1 == quest::CQuestManager::instance().GetEventFlag("threeway_war"))
 	{
 		if (subcmd == SCMD_RESTART_TOWN || subcmd == SCMD_RESTART_HERE)
@@ -552,7 +552,7 @@ ACMD(do_restart)
 				return;
 			}
 
-			// 
+			//성지 
 			if (true == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 			{
 				if (CThreeWayWar::instance().GetReviveTokenForPlayer(ch->GetPlayerID()) <= 0)
@@ -867,7 +867,7 @@ ACMD(do_skillup)
 }
 
 //
-// @version	05/06/20 Bang2ni - Ŀǵ ó Delegate to CHARACTER class
+// @version	05/06/20 Bang2ni - 커맨드 처리 Delegate to CHARACTER class
 //
 ACMD(do_safebox_close)
 {
@@ -875,7 +875,7 @@ ACMD(do_safebox_close)
 }
 
 //
-// @version	05/06/20 Bang2ni - Ŀǵ ó Delegate to CHARACTER class
+// @version	05/06/20 Bang2ni - 커맨드 처리 Delegate to CHARACTER class
 //
 ACMD(do_safebox_password)
 {
@@ -946,7 +946,7 @@ ACMD(do_mall_password)
 		return;
 	}
 
-	if (iPulse - ch->GetMallLoadTime() < passes_per_sec * 10) // 10ʿ ѹ û 
+	if (iPulse - ch->GetMallLoadTime() < passes_per_sec * 10) // 10초에 한번만 요청 가능
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB8\xA6 \xB4\xDD\xC0\xBA\xC1\xF6 10\xC3\xCA \xBE\xC8\xBF\xA1\xB4\xC2 \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
@@ -1028,20 +1028,20 @@ ACMD(do_set_run_mode)
 
 ACMD(do_war)
 {
-	//   
+	//내 길드 정보를 얻어오고
 	CGuild * g = ch->GetGuild();
 
 	if (!g)
 		return;
 
-	// üũѹ!
+	//전쟁중인지 체크한번!
 	if (g->UnderAnyWar())
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xC0\xFC\xC0\xEF\xBF\xA1 \xC2\xFC\xC0\xFC \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
-	//Ķ͸ ι 
+	//파라메터를 두배로 나누고
 	char arg1[256], arg2[256];
 	int type = GUILD_WAR_TYPE_FIELD;
 	two_arguments(argument, arg1, sizeof(arg1), arg2, sizeof(arg2));
@@ -1057,17 +1057,17 @@ ACMD(do_war)
 			type = GUILD_WAR_TYPE_FIELD;
 	}
 
-	//  ̵ µ
+	//길드의 마스터 아이디를 얻어온뒤
 	DWORD gm_pid = g->GetMasterPID();
 
-	// üũ( 常 )
+	//마스터인지 체크(길전은 길드장만이 가능)
 	if (gm_pid != ch->GetPlayerID())
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xB4\xEB\xC7\xD1 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
 		return;
 	}
 
-	// 带 
+	//상대 길드를 얻어오고
 	CGuild * opp_g = CGuildManager::instance().FindGuildByName(arg1);
 
 	if (!opp_g)
@@ -1076,7 +1076,7 @@ ACMD(do_war)
 		return;
 	}
 
-	//  üũ
+	//상대길드와의 상태 체크
 	switch (g->GetGuildWarState(opp_g->GetID()))
 	{
 		case GUILD_WAR_NONE:
@@ -1139,7 +1139,7 @@ ACMD(do_war)
 
 	if (!g->CanStartWar(type))
 	{
-		//    ִ  ʴ´.
+		// 길드전을 할 수 있는 조건을 만족하지않는다.
 		if (g->GetLadderPoint() == 0)
 		{
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB7\xB9\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 \xB8\xF0\xC0\xDA\xB6\xF3\xBC\xAD \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -1157,7 +1157,7 @@ ACMD(do_war)
 		return;
 	}
 
-	// ʵ üũ ϰ  üũ  ³Ҷ Ѵ.
+	// 필드전 체크만 하고 세세한 체크는 상대방이 승낙할때 한다.
 	if (!opp_g->CanStartWar(GUILD_WAR_TYPE_FIELD))
 	{
 		if (opp_g->GetLadderPoint() == 0)
@@ -1452,17 +1452,17 @@ ACMD(do_monarch_warpto)
 		return;
 	}
 	
-	// Ÿ ˻
+	//군주 쿨타임 검사
 	if (!ch->IsMCOK(CHARACTER::MI_WARP))
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_WARP));
 		return;
 	}
 
-	//  ȯ  
+	//군주 몹 소환 비용 
 	const int WarpPrice = 10000;
 	
-	//  ˻ 
+	//군주 국고 검사 
 	if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -1516,10 +1516,10 @@ ACMD(do_monarch_warpto)
 				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), arg1);
 				ch->WarpSet(pos.x, pos.y);
 				
-				//  谨	
+				//군주 돈 삭감	
 				CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
 
-				//Ÿ ʱȭ 
+				//쿨타임 초기화 
 				ch->SetMC(CHARACTER::MI_WARP);
 			}
 		}
@@ -1550,10 +1550,10 @@ ACMD(do_monarch_warpto)
 	ch->WarpSet(x, y);
 	ch->Stop();
 
-	//  谨	
+	//군주 돈 삭감	
 	CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
 
-	//Ÿ ʱȭ 
+	//쿨타임 초기화 
 	ch->SetMC(CHARACTER::MI_WARP);
 }
 
@@ -1577,17 +1577,17 @@ ACMD(do_monarch_transfer)
 		return;
 	}
 	
-	// Ÿ ˻
+	//군주 쿨타임 검사
 	if (!ch->IsMCOK(CHARACTER::MI_TRANSFER))
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
 		return;
 	}
 
-	//   
+	//군주 워프 비용 
 	const int WarpPrice = 10000;
 
-	//  ˻ 
+	//군주 국고 검사 
 	if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -1635,9 +1635,9 @@ ACMD(do_monarch_transfer)
 			P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGTransfer));
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), arg1);
 			
-			//  谨	
+			//군주 돈 삭감	
 			CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
-			//Ÿ ʱȭ 
+			//쿨타임 초기화 
 			ch->SetMC(CHARACTER::MI_TRANSFER);
 		}
 		else
@@ -1674,9 +1674,9 @@ ACMD(do_monarch_transfer)
 	//tch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ());
 	tch->WarpSet(ch->GetX(), ch->GetY(), ch->GetMapIndex());
 	
-	//  谨	
+	//군주 돈 삭감	
 	CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
-	//Ÿ ʱȭ 
+	//쿨타임 초기화 
 	ch->SetMC(CHARACTER::MI_TRANSFER);
 }
 
@@ -1766,14 +1766,14 @@ ACMD(do_monarch_tax)
 		return;
 	}
 
-	//  ˻	
+	// 군주 검사	
 	if (!ch->IsMonarch())
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
 		return;
 	}
 
-	// ݼ 
+	// 세금설정 
 	int tax = 0;
 	str_to_number(tax,  arg1);
 
@@ -1782,10 +1782,10 @@ ACMD(do_monarch_tax)
 
 	quest::CQuestManager::instance().SetEventFlag("trade_tax", tax); 
 
-	// ֿ ޼ ϳ
+	// 군주에게 메세지 하나
 	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBC\xB1\xDD\xC0\xCC %d %\xB7\xCE \xBC\xB3\xC1\xA4\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"));
 
-	//  
+	// 공지 
 	char szMsg[1024];	
 
 	snprintf(szMsg, sizeof(szMsg), "\xB1\xBA\xC1\xD6\xC0\xC7 \xB8\xED\xC0\xB8\xB7\xCE \xBC\xBC\xB1\xDD\xC0\xCC %d %% \xB7\xCE \xBA\xAF\xB0\xE6\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9", tax);
@@ -1794,32 +1794,32 @@ ACMD(do_monarch_tax)
 	snprintf(szMsg, sizeof(szMsg), "\xBE\xD5\xC0\xB8\xB7\xCE\xB4\xC2 \xB0\xC5\xB7\xA1 \xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xB1\xB9\xB0\xED\xB7\xCE \xB5\xE9\xBE\xEE\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9.", tax);
 	BroadcastNotice(szMsg);
 
-	// Ÿ ʱȭ 
+	// 쿨타임 초기화 
 	ch->SetMC(CHARACTER::MI_TAX); 
 }
 
 static const DWORD cs_dwMonarchMobVnums[] =
 {
-	191, //	߽
-	192, //	
-	193, //	
-	194, //	ȣ
-	391, //	
-	392, //	
-	393, //	
-	394, //	
-	491, //	ȯ
-	492, //	
-	493, //	
-	494, //	
-	591, //	ܴ
-	691, //	 
-	791, //	б
-	1304, // 
-	1901, // ȣ
-	2091, // հŹ
-	2191, // Ŵ縷ź
-	2206, // ȭi
+	191, //	산견신
+	192, //	저신
+	193, //	웅신
+	194, //	호신
+	391, //	미정
+	392, //	은정
+	393, //	세랑
+	394, //	진희
+	491, //	맹환
+	492, //	보우
+	493, //	구패
+	494, //	추흔
+	591, //	비류단대장
+	691, //	웅귀 족장
+	791, //	밀교교주
+	1304, // 누렁범귀
+	1901, // 구미호
+	2091, // 여왕거미
+	2191, // 거대사막거북
+	2206, // 화염왕i
 	0,
 };
 
@@ -1854,17 +1854,17 @@ ACMD(do_monarch_mob)
 		}
 	}
 
-	//   ȯ  
+	// 군주 몹 소환 비용 
 	const int SummonPrice = 5000000;
 
-	//  Ÿ ˻
+	// 군주 쿨타임 검사
 	if (!ch->IsMCOK(CHARACTER::MI_SUMMON))
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_SUMMON));	
 		return;
 	}
 	
-	//   ˻ 
+	// 군주 국고 검사 
 	if (!CMonarch::instance().IsMoneyOk(SummonPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -1892,7 +1892,7 @@ ACMD(do_monarch_mob)
 
 	DWORD count;
 
-	// ȯ   ˻
+	// 소환 가능 몹 검사
 	for (count = 0; cs_dwMonarchMobVnums[count] != 0; ++count)
 		if (cs_dwMonarchMobVnums[count] == vnum)
 			break;
@@ -1915,10 +1915,10 @@ ACMD(do_monarch_mob)
 
 	if (tch)
 	{
-		//   谨	
+		// 군주 돈 삭감	
 		CMonarch::instance().SendtoDBDecMoney(SummonPrice, ch->GetEmpire(), ch);
 
-		// Ÿ ʱȭ 
+		// 쿨타임 초기화 
 		ch->SetMC(CHARACTER::MI_SUMMON); 
 	}
 }
@@ -2185,11 +2185,11 @@ ACMD(do_cube)
 	const std::string& strArg1 = std::string(arg1);
 
 	// r_info (request information)
-	// /cube r_info     ==> (Client -> Server)  NPC   ִ  û
+	// /cube r_info     ==> (Client -> Server) 현재 NPC가 만들 수 있는 레시피 요청
 	//					    (Server -> Client) /cube r_list npcVNUM resultCOUNT 123,1/125,1/128,1/130,5
 	//
-	// /cube r_info 3   ==> (Client -> Server)  NPC  ִ   3°    ʿ  û
-	// /cube r_info 3 5 ==> (Client -> Server)  NPC  ִ   3° ۺ  5    ʿ   û
+	// /cube r_info 3   ==> (Client -> Server) 현재 NPC가 만들수 있는 레시피 중 3번째 아이템을 만드는 데 필요한 정보를 요청
+	// /cube r_info 3 5 ==> (Client -> Server) 현재 NPC가 만들수 있는 레시피 중 3번째 아이템부터 이후 5개의 아이템을 만드는 데 필요한 재료 정보를 요청
 	//					   (Server -> Client) /cube m_info startIndex count 125,1|126,2|127,2|123,5&555,5&555,4/120000@125,1|126,2|127,2|123,5&555,5&555,4/120000
 	//
 	if (strArg1 == "r_info")
@@ -2278,7 +2278,7 @@ ACMD(do_in_game_mall)
 		return;
 	}
 
-	// _ 赵 ۸ URL ϵڵ ߰
+	// ㅠ_ㅠ 쾌도서버 아이템몰 URL 하드코딩 추가
 	if (true == LC_IsWE_Korea())
 	{
 		ch->ChatPacket(CHAT_TYPE_COMMAND, "mall http://metin2.co.kr/50_we_mall/mall/login.htm");
@@ -2354,7 +2354,7 @@ ACMD(do_in_game_mall)
 	}
 }
 
-// ֻ
+// 주사위
 ACMD(do_dice) 
 {
 	char arg1[256], arg2[256];
@@ -2395,7 +2395,7 @@ ACMD(do_ride)
     if (ch->IsDead() || ch->IsStun())
 	return;
 
-    // 
+    // 내리기
     {
 	if (ch->IsHorseRiding())
 	{
@@ -2412,7 +2412,7 @@ ACMD(do_ride)
 	}
     }
 
-    // Ÿ
+    // 타기
     {
 	if (ch->GetHorse() != NULL)
 	{
@@ -2427,7 +2427,7 @@ ACMD(do_ride)
 	    if (NULL == item)
 		continue;
 
-	    // ũ Ż 
+	    // 유니크 탈것 아이템
 		if (item->IsRideItem())
 		{
 			if (NULL==ch->GetWear(WEAR_UNIQUE1) || NULL==ch->GetWear(WEAR_UNIQUE2))
@@ -2439,20 +2439,20 @@ ACMD(do_ride)
 			}
 		}
 
-	    // Ϲ Ż 
-	    // TODO : ŻͿ SubType ߰
+	    // 일반 탈것 아이템
+	    // TODO : 탈것용 SubType 추가
 	    switch (item->GetVnum())
 	    {
-		case 71114:	// ̿
-		case 71116:	// ߽̿
-		case 71118:	// ̿
-		case 71120:	// ڿ̿
+		case 71114:	// 저신이용권
+		case 71116:	// 산견신이용권
+		case 71118:	// 투지범이용권
+		case 71120:	// 사자왕이용권
 		    SPDLOG_TRACE("[DO_RIDE] USE QUEST ITEM");
 		    ch->UseItem(TItemPos (INVENTORY, i));
 		    return;
 	    }
 
-		// GF mantis #113524, 52001~52090  Ż
+		// GF mantis #113524, 52001~52090 번 탈것
 		if( (item->GetVnum() > 52000) && (item->GetVnum() < 52091) )	{
 			SPDLOG_TRACE("[DO_RIDE] USE QUEST ITEM");
 			ch->UseItem(TItemPos (INVENTORY, i));
@@ -2462,7 +2462,7 @@ ACMD(do_ride)
     }
 
 
-    // Ÿų   
+    // 타거나 내릴 수 없을때
     ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
 }
 
@@ -2533,7 +2533,7 @@ ACMD(do_enroll_sale)
 }
 
 // temp_auction
-// packet ϰ ϰ, ̰ ؾѴ.
+// packet으로 통신하게 하고, 이건 삭제해야한다.
 ACMD(do_get_auction_list)
 {
 	char arg1[256];
diff --git a/src/game/src/cmd_gm.cpp b/src/game/src/cmd_gm.cpp
index 15fc569..ce6da5f 100644
--- a/src/game/src/cmd_gm.cpp
+++ b/src/game/src/cmd_gm.cpp
@@ -337,12 +337,12 @@ bool CHARACTER_GoToName(LPCHARACTER ch, BYTE empire, int mapIndex, const char* g
 { "Three|\xBD\xC2\xB7\xE6\xB0\xEE",		2, 64, 2704, 7399 },
 { "Three|\xBD\xC2\xB7\xE6\xB0\xEE",		3, 64, 3213, 8080 },
 
-// б
+// 밀교사원
 { "Milgyo|\xB9\xD0\xB1\xB3\xBB\xE7\xBF\xF8",	1, 65, 5536, 1436 },
 { "Milgyo|\xB9\xD0\xB1\xB3\xBB\xE7\xBF\xF8",	2, 65, 5536, 1436 },
 { "Milgyo|\xB9\xD0\xB1\xB3\xBB\xE7\xBF\xF8",	3, 65, 5536, 1436 },
 
-// ŸԱ
+// 사귀타워입구
 { "\xBB\xE7\xB1\xCD\xC5\xB8\xBF\xF6\xC0\xD4\xB1\xB8",		1, 65, 5905, 1108 },
 { "\xBB\xE7\xB1\xCD\xC5\xB8\xBF\xF6\xC0\xD4\xB1\xB8",		2, 65, 5905, 1108 },
 { "\xBB\xE7\xB1\xCD\xC5\xB8\xBF\xF6\xC0\xD4\xB1\xB8",		3, 65, 5905, 1108 },
@@ -888,7 +888,7 @@ struct FuncPurge
 
 		int iDist = DISTANCE_APPROX(pkChr->GetX() - m_pkGM->GetX(), pkChr->GetY() - m_pkGM->GetY());
 
-		if (!m_bAll && iDist >= 1000)	// 10 ̻ ִ ͵ purge  ʴ´.
+		if (!m_bAll && iDist >= 1000)	// 10미터 이상에 있는 것들은 purge 하지 않는다.
 			return;
 
 		SPDLOG_DEBUG("PURGE: {} {}", pkChr->GetName(), iDist);
@@ -1812,7 +1812,7 @@ LPCHARACTER chHori, chForge, chLib, chTemple, chTraining, chTree, chPortal, chBa
 
 ACMD(do_b1)
 {
-	//ȣ 478 579
+	//호리병 478 579
 	chHori = CHARACTER_MANAGER::instance().SpawnMobRange(14017, ch->GetMapIndex(), 304222, 742858, 304222, 742858, true, false);
 	chHori->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_BUILDING_CONSTRUCTION_SMALL, 65535, 0, true);
 	chHori->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
@@ -1859,25 +1859,25 @@ ACMD(do_b2)
 
 ACMD(do_b3)
 {
-	//  492 547
+	// 포지 492 547
 	chForge = CHARACTER_MANAGER::instance().SpawnMobRange(14003, ch->GetMapIndex(), 307500, 746300, 307500, 746300, true, false);
 	chForge->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
-	//ž 509 589 -> 
+	//높은탑 509 589 -> 도서관
 	chLib = CHARACTER_MANAGER::instance().SpawnMobRange(14007, ch->GetMapIndex(), 307900, 744500, 307900, 744500, true, false);
 	chLib->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
-	// 513 606 -> ǽ
+	//욕조 513 606 -> 힘의신전
 	chTemple = CHARACTER_MANAGER::instance().SpawnMobRange(14004, ch->GetMapIndex(), 307700, 741600, 307700, 741600, true, false);
 	chTemple->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
-	// 490 625
+	//권투장 490 625
 	chTraining= CHARACTER_MANAGER::instance().SpawnMobRange(14010, ch->GetMapIndex(), 307100, 739500, 307100, 739500, true, false);
 	chTraining->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
-	// 466 614
+	//나무 466 614
 	chTree= CHARACTER_MANAGER::instance().SpawnMobRange(14013, ch->GetMapIndex(), 300800, 741600, 300800, 741600, true, false);
 	chTree->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
-	//Ż 439 615
+	//포탈 439 615
 	chPortal= CHARACTER_MANAGER::instance().SpawnMobRange(14001, ch->GetMapIndex(), 300900, 744500, 300900, 744500, true, false);
 	chPortal->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
-	//  436 600
+	// 구슬 436 600
 	chBall = CHARACTER_MANAGER::instance().SpawnMobRange(14012, ch->GetMapIndex(), 302500, 746600, 302500, 746600, true, false);
 	chBall->AddAffect(AFFECT_DUNGEON_UNIQUE, POINT_NONE, 0, AFF_DUNGEON_UNIQUE, 65535, 0, true);
 }
@@ -2121,7 +2121,7 @@ ACMD(do_reload)
 				break;
 				//END_RELOAD_ADMIN
 			case 'c':	// cube
-				//  μ Ѵ.
+				// 로컬 프로세스만 갱산한다.
 				Cube_init ();
 				break;
 		}
@@ -2245,7 +2245,7 @@ struct FuncWeaken
 
 		int iDist = DISTANCE_APPROX(pkChr->GetX() - m_pkGM->GetX(), pkChr->GetY() - m_pkGM->GetY());
 
-		if (!m_bAll && iDist >= 1000)	// 10 ̻ ִ ͵ purge  ʴ´.
+		if (!m_bAll && iDist >= 1000)	// 10미터 이상에 있는 것들은 purge 하지 않는다.
 			return;
 
 		if (pkChr->IsNPC())
@@ -2527,7 +2527,7 @@ ACMD(do_priv_empire)
 	if (duration < 0)
 		goto USAGE;
 
-	// ð  
+	// 시간 단위로 변경
 	duration = duration * (60*60);
 
 	SPDLOG_DEBUG("_give_empire_privileage(empire={}, type={}, value={}, duration={}) by command",
@@ -2631,7 +2631,7 @@ ACMD(do_xmas)
 // BLOCK_CHAT
 ACMD(do_block_chat_list)
 {
-	// GM ƴϰų block_chat_privilege   ɾ  Ұ
+	// GM이 아니거나 block_chat_privilege가 없는 사람은 명령어 사용 불가
 	if (!ch || (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chat_privilege.block") <= 0))
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
@@ -2697,7 +2697,7 @@ ACMD(do_vote_block_chat)
 
 ACMD(do_block_chat)
 {
-	// GM ƴϰų block_chat_privilege   ɾ  Ұ
+	// GM이 아니거나 block_chat_privilege가 없는 사람은 명령어 사용 불가
 	if (ch && (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chat_privilege.block") <= 0))
 	{
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
@@ -2776,8 +2776,8 @@ ACMD(do_build)
 
 	CLand * pkLand = CManager::instance().FindLand(ch->GetMapIndex(), ch->GetX(), ch->GetY());
 
-	// NOTE:  üũ Ŭ̾Ʈ  Բ ϱ    
-	//       ޼  ʰ  Ѵ.
+	// NOTE: 조건 체크들은 클라이언트와 서버가 함께 하기 때문에 문제가 있을 때는
+	//       메세지를 전송하지 않고 에러를 출력한다.
 	if (!pkLand)
 	{
 		SPDLOG_ERROR("{} trying to build on not buildable area.", ch->GetName());
@@ -2790,17 +2790,17 @@ ACMD(do_build)
 		return;
 	}
 
-	// Ǽ  üũ
+	// 건설 권한 체크
 	if (GMLevel == GM_PLAYER)
 	{
-		// ÷̾      Ȯؾ Ѵ.
+		// 플레이어가 집을 지을 때는 땅이 내껀지 확인해야 한다.
 		if ((!ch->GetGuild() || ch->GetGuild()->GetID() != pkLand->GetOwner()))
 		{
 			SPDLOG_ERROR("{} trying to build on not owned land.", ch->GetName());
 			return;
 		}
 
-		//  渶ΰ?
+		// 내가 길마인가?
 		if (ch->GetGuild()->GetMasterPID() != ch->GetPlayerID())
 		{
 			SPDLOG_ERROR("{} trying to build while not the guild master.", ch->GetName());
@@ -2846,13 +2846,13 @@ ACMD(do_build)
 					}
 				}
 
-				// ǹ Ӽ üũ ( ǹ  ־)
+				// 건물 종속성 체크 (이 건물이 지어져 있어야함)
 				if (t->dwDependOnGroupVnum)
 				{
 					//		const TObjectProto * dependent = CManager::instance().GetObjectProto(dwVnum);
 					//		if (dependent)
 					{
-						// ִ°?
+						// 지어져있는가?
 						if (!pkLand->FindObjectByGroup(t->dwDependOnGroupVnum))
 						{
 							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xBC\xB3\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xB0\xC7\xB9\xB0\xC0\xCC \xC1\xF6\xBE\xEE\xC1\xAE \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -2863,8 +2863,8 @@ ACMD(do_build)
 
 				if (test_server || GMLevel == GM_PLAYER)
 				{
-					// GM ƴҰ츸 (׼ GM Ҹ)
-					// Ǽ  üũ
+					// GM이 아닐경우만 (테섭에서는 GM도 소모)
+					// 건설 비용 체크
 					if (t->dwPrice > BUILDING_MAX_PRICE)
 					{
 						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xB9\xB0 \xBA\xF1\xBF\xEB \xC1\xA4\xBA\xB8 \xC0\xCC\xBB\xF3\xC0\xB8\xB7\xCE \xB0\xC7\xBC\xB3 \xC0\xDB\xBE\xF7\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -2877,7 +2877,7 @@ ACMD(do_build)
 						return;
 					}
 
-					//    üũ
+					// 아이템 자재 개수 체크
 
 					int i;
 					for (i = 0; i < OBJECT_MATERIAL_MAX_NUM; ++i)
@@ -2899,7 +2899,7 @@ ACMD(do_build)
 				float x_rot = atof(arg4);
 				float y_rot = atof(arg5);
 				float z_rot = atof(arg6);
-				// 20050811.myevan.ǹ ȸ   
+				// 20050811.myevan.건물 회전 기능 봉인 해제
 				/*
 				   if (x_rot != 0.0f || y_rot != 0.0f || z_rot != 0.0f)
 				   {
@@ -2929,12 +2929,12 @@ ACMD(do_build)
 				}
 
 				if (test_server || GMLevel == GM_PLAYER)
-					// Ǽ  Ҹϱ (׼ GM Ҹ)
+					// 건설 재료 소모하기 (테섭에서는 GM도 소모)
 				{
-					// Ǽ  Ҹ
+					// 건설 비용 소모
 					ch->PointChange(POINT_GOLD, -t->dwPrice);
 
-					//   ϱ 
+					// 아이템 자재 사용하기 
 					{
 						int i;
 						for (i = 0; i < OBJECT_MATERIAL_MAX_NUM; ++i)
@@ -3013,8 +3013,8 @@ ACMD(do_build)
 			break;
 
 		case 'W' :
-			//  
-			// build (w)all ȣ ũ 빮 빮 빮 빮
+			// 담장 세우기
+			// build (w)all 담장번호 담장크기 대문동 대문서 대문남 대문북
 
 			if (GMLevel >  GM_PLAYER) 
 			{
@@ -3048,8 +3048,8 @@ ACMD(do_build)
 			break;
 
 		case 'E' :
-			//  
-			// build (e)rase ID
+			// 담장 지우기
+			// build (e)rase 담장셋ID
 			if (GMLevel > GM_PLAYER) 
 			{
 				one_argument(line, arg1, sizeof(arg1));
@@ -3323,7 +3323,7 @@ ACMD(do_duel)
 
 	if (!str_to_number(minute, szMinute))
 	{
-		// ijٴ ⺻ 10.
+		// 캐나다는 기본 10분.
 		if (LC_IsCanada() == true)
 		{
 			minute = 10;
@@ -3430,28 +3430,28 @@ ACMD(do_stat_plus_amount)
 	
 	switch (subcmd)
 	{
-		case POINT_HT : // ü
+		case POINT_HT : // 체력
 			if (nPoint + ch->GetPoint(POINT_HT) > 90)
 			{
 				nPoint = 90 - ch->GetPoint(POINT_HT);
 			}
 			break;
 
-		case POINT_IQ : // 
+		case POINT_IQ : // 지능
 			if (nPoint + ch->GetPoint(POINT_IQ) > 90)
 			{
 				nPoint = 90 - ch->GetPoint(POINT_IQ);
 			}
 			break;
 			
-		case POINT_ST : // ٷ
+		case POINT_ST : // 근력
 			if (nPoint + ch->GetPoint(POINT_ST) > 90)
 			{
 				nPoint = 90 - ch->GetPoint(POINT_ST);
 			}
 			break;
 			
-		case POINT_DX : // ø
+		case POINT_DX : // 민첩
 			if (nPoint + ch->GetPoint(POINT_DX) > 90)
 			{
 				nPoint = 90 - ch->GetPoint(POINT_DX);
@@ -4208,8 +4208,8 @@ ACMD (do_attr_full_set)
 	case JOB_SURA:
 	case JOB_SHAMAN:
 		{
-			//   .
-			// ̰͸  ־ ӽ÷    ̷ Ӽ .
+			// 무사 몸빵 셋팅.
+			// 이것만 나와 있어서 임시로 모든 직군 다 이런 속성 따름.
 			item = ch->GetWear(WEAR_HEAD);
 			if (item != NULL)
 			{
diff --git a/src/game/src/config.cpp b/src/game/src/config.cpp
index cfd83f6..bc8ac61 100644
--- a/src/game/src/config.cpp
+++ b/src/game/src/config.cpp
@@ -102,17 +102,17 @@ int SPEEDHACK_LIMIT_COUNT   = 50;
 int SPEEDHACK_LIMIT_BONUS   = 80;
 int g_iSyncHackLimitCount = 20; // 10 -> 20 2013 09 11 CYH
 
-//�þ� = VIEW_RANGE + VIEW_BONUS_RANGE
-//VIEW_BONUSE_RANGE : Ŭ���̾�Ʈ�� �þ� ó�������ʹ� �� ��������� ������ �߻��Ҽ��־� 500CM�� ������ �׻��ش�.
+//시야 = VIEW_RANGE + VIEW_BONUS_RANGE
+//VIEW_BONUSE_RANGE : 클라이언트와 시야 처리에서너무 딱 떨어질경우 문제가 발생할수있어 500CM의 여분을 항상준다.
 int VIEW_RANGE = 5000;
 int VIEW_BONUS_RANGE = 500;
 
 int g_server_id = 0;
 string g_strWebMallURL = "www.metin2.de";
 
-unsigned int g_uiSpamBlockDuration = 60 * 15; // �⺻ 15��
-unsigned int g_uiSpamBlockScore = 100; // �⺻ 100��
-unsigned int g_uiSpamReloadCycle = 60 * 10; // �⺻ 10��
+unsigned int g_uiSpamBlockDuration = 60 * 15; // 기본 15분
+unsigned int g_uiSpamBlockScore = 100; // 기본 100점
+unsigned int g_uiSpamReloadCycle = 60 * 10; // 기본 10분
 
 bool		g_bCheckMultiHack = true;
 
@@ -121,8 +121,8 @@ int			g_iSpamBlockMaxLevel = 10;
 void		LoadStateUserCount();
 void		LoadValidCRCList();
 bool		LoadClientVersion();
-bool            g_protectNormalPlayer   = false;        // �����ڰ� "��ȭ���" �� �Ϲ������� �������� ����
-bool            g_noticeBattleZone      = false;        // �߸����뿡 �����ϸ� �ȳ��޼����� �˷���
+bool            g_protectNormalPlayer   = false;        // 범법자가 "평화모드" 인 일반유저를 공격하지 못함
+bool            g_noticeBattleZone      = false;        // 중립지대에 입장하면 안내메세지를 알려줌
 
 int gPlayerMaxLevel = 99;
 
@@ -318,7 +318,7 @@ void config_init(const string& st_localeServiceName)
 	}
 
 	char db_host[2][64], db_user[2][64], db_pwd[2][64], db_db[2][64];
-	// ... ��... db_port�� �̹� �ִµ�... ���̹� �����ؾ���...
+	// ... 아... db_port는 이미 있는데... 네이밍 어찌해야함...
 	int mysql_db_port[2];
 
 	for (int n = 0; n < 2; ++n)
@@ -339,9 +339,9 @@ void config_init(const string& st_localeServiceName)
 	*log_db = '\0';
 
 
-	// DB���� ������������ �����ϱ����ؼ��� �ٸ� ���ð����� ����Ǿ
-	// DB������ �о�� ������ ������ ���� �ٸ� ������ ������Ѿ��Ѵ�.
-	// ������ �����ϰ��õ� �ʱ�ȭ ��ƾ�� ������ �����ϱ� ����.
+	// DB에서 로케일정보를 세팅하기위해서는 다른 세팅값보다 선행되어서
+	// DB정보만 읽어와 로케일 세팅을 한후 다른 세팅을 적용시켜야한다.
+	// 이유는 로케일관련된 초기화 루틴이 곳곳에 존재하기 때문.
 
 	bool isCommonSQL = false;	
 	bool isPlayerSQL = false;
@@ -477,7 +477,7 @@ void config_init(const string& st_localeServiceName)
 		}
     }
 
-	//�� �������� ������ ����.
+	//처리가 끝났으니 파일을 닫자.
 	fclose(fpOnlyForDB);
 
 	// CONFIG_SQL_INFO_ERROR
@@ -503,7 +503,7 @@ void config_init(const string& st_localeServiceName)
 		exit(EXIT_FAILURE);
 	}
 
-	// Common DB �� Locale ������ ������ �ֱ� ������ ���� ���� �����ؾ� �Ѵ�.
+	// Common DB 가 Locale 정보를 가지고 있기 때문에 가장 먼저 접속해야 한다.
 	AccountDB::instance().Connect(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1]);
 
 	if (false == AccountDB::instance().IsConnected())
@@ -514,8 +514,8 @@ void config_init(const string& st_localeServiceName)
 
 	SPDLOG_INFO("CommonSQL connected");
 
-	// ������ ������ �������� 
-	// <���> �������� ���� ���ǹ�(WHERE) ���� ������. (�ٸ� �������� ������ ����� �ֽ��ϴ�)
+	// 로케일 정보를 가져오자 
+	// <경고> 쿼리문에 절대 조건문(WHERE) 달지 마세요. (다른 지역에서 문제가 생길수 있습니다)
 	{
 		char szQuery[512];
 		snprintf(szQuery, sizeof(szQuery), "SELECT mKey, mValue FROM locale");
@@ -532,7 +532,7 @@ void config_init(const string& st_localeServiceName)
 
 		while (NULL != (row = mysql_fetch_row(pMsg->Get()->pSQLResult)))
 		{
-			// ������ ����
+			// 로케일 세팅
 			if (strcasecmp(row[0], "LOCALE") == 0)
 			{
 				if (LocaleService_Init(row[1]) == false)
@@ -544,15 +544,15 @@ void config_init(const string& st_localeServiceName)
 		}
 	}
 
-	// ������ ������ COMMON SQL�� �������ش�.
-	// ������ g_stLocale ������ LocaleService_Init() ���ο��� ���õȴ�.
+	// 로케일 정보를 COMMON SQL에 세팅해준다.
+	// 참고로 g_stLocale 정보는 LocaleService_Init() 내부에서 세팅된다.
 	SPDLOG_INFO("Setting DB to locale {}", g_stLocale.c_str());
 
 	AccountDB::instance().SetLocale(g_stLocale);
 
 	AccountDB::instance().ConnectAsync(db_host[1], mysql_db_port[1], db_user[1], db_pwd[1], db_db[1], g_stLocale.c_str());
 
-	// Player DB ����
+	// Player DB 접속
 	DBManager::instance().Connect(db_host[0], mysql_db_port[0], db_user[0], db_pwd[0], db_db[0]);
 
 	if (!DBManager::instance().IsConnected())
@@ -563,9 +563,9 @@ void config_init(const string& st_localeServiceName)
 
 	SPDLOG_INFO("PlayerSQL connected");
 
-	if (false == g_bAuthServer) // ���� ������ �ƴ� ���
+	if (false == g_bAuthServer) // 인증 서버가 아닐 경우
 	{
-		// Log DB ����
+		// Log DB 접속
 		LogManager::instance().Connect(log_host, log_port, log_user, log_pwd, log_db);
 
 		if (!LogManager::instance().IsConnected())
@@ -580,8 +580,8 @@ void config_init(const string& st_localeServiceName)
 	}
 
 	// SKILL_POWER_BY_LEVEL
-	// ��Ʈ�� ���� ������ ���ؼ� AccountDB::instance().SetLocale(g_stLocale) �ĺ��� �Ѵ�.
-	// ���� ������ ���� ������ �ȵȴ�(�ؿܰ� ����)
+	// 스트링 비교의 문제로 인해서 AccountDB::instance().SetLocale(g_stLocale) 후부터 한다.
+	// 물론 국내는 별로 문제가 안된다(해외가 문제)
 	{
 		char szQuery[256];
 		snprintf(szQuery, sizeof(szQuery), "SELECT mValue FROM locale WHERE mKey='SKILL_POWER_BY_LEVEL'");
@@ -621,13 +621,13 @@ void config_init(const string& st_localeServiceName)
 			}
 		}
 
-		// ������ ��ų ����
+		// 종족별 스킬 세팅
 		for (int job = 0; job < JOB_MAX_NUM * 2; ++job)
 		{
 			snprintf(szQuery, sizeof(szQuery), "SELECT mValue from locale where mKey='SKILL_POWER_BY_LEVEL_TYPE%d' ORDER BY CAST(mValue AS unsigned)", job);
 			std::unique_ptr pMsg(AccountDB::instance().DirectQuery(szQuery));
 
-			// ������ �ȵǾ������� �⺻���̺��� ����Ѵ�.
+			// 세팅이 안되어있으면 기본테이블을 사용한다.
 			if (pMsg->Get()->uiNumRows == 0)
 			{
 				CTableBySkill::instance().SetSkillPowerByLevelFromType(job, aiBaseSkillPowerByLevelTable);
@@ -1002,7 +1002,7 @@ void config_init(const string& st_localeServiceName)
 		TOKEN("spam_block_reload_cycle")
 		{
 			str_to_number(g_uiSpamReloadCycle, value_string);
-			g_uiSpamReloadCycle = std::max(60, g_uiSpamReloadCycle); // �ּ� 1��
+			g_uiSpamReloadCycle = std::max(60, g_uiSpamReloadCycle); // 최소 1분
 		}
 
 		TOKEN("check_multihack")
diff --git a/src/game/src/constants.cpp b/src/game/src/constants.cpp
index fe44221..153892e 100644
--- a/src/game/src/constants.cpp
+++ b/src/game/src/constants.cpp
@@ -14,7 +14,7 @@ TJobInitialPoints JobInitialPoints[JOB_MAX_NUM] =
    }
  */
 {
-	// str con dex int ʱHP ʱSP  CON/HP INT/SP  HP/lv   MP/lv  ʱstam  stam/con stam/lv
+	// str con dex int 초기HP 초기SP  CON/HP INT/SP  HP랜덤/lv   MP랜덤/lv  초기stam  stam/con stam/lv
 	{   6,  4,  3,  3,  600,   200,     40,    20,    36, 44,     18, 22,     800,      5,      1, 3  }, // JOB_WARRIOR  16
 	{   4,  3,  6,  3,  650,   200,     40,    20,    36, 44,     18, 22,     800,      5,      1, 3  }, // JOB_ASSASSIN 16
 	{   5,  3,  3,  5,  650,   200,     40,    20,    36, 44,     18, 22,     800,      5,      1, 3  }, // JOB_SURA	 16
@@ -162,7 +162,7 @@ const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] =
 	1676898443,
 	1844588288,
 	2029047116,
-	2100000000,	//	99		99  ʿġ (100 DZ )
+	2100000000,	//	99		99레벨일 때 필요경험치 (100레벨이 되기 위한)
 	2100000000,	//	100
 	2100000000,		
 	2100000000,		
@@ -287,7 +287,7 @@ const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] =
 	1676898443,		
 	1844588288,		
 	2029047116,		
-	2050000000,	//	99   ʿġ (100 DZ )
+	2050000000,	//	99레벨 일 때 필요경험치 (100레벨이 되기 위한)
 	2150000000,	//	100
 	2210000000,		
 	2250000000,		
@@ -412,7 +412,7 @@ const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] =
 	2000000000,
 	2000000000,
 	2000000000,
-	2000000000,	//	99		99  ʿġ (100 DZ )..  CIBN  ϰ ִ  𸣴 ű ̺  ʰ    
+	2000000000,	//	99		99레벨일 때 필요경험치 (100레벨이 되기 위한).. 현재 CIBN이 어떻게 운영하고 있는 지 모르니 신규 테이블을 쓰지 않고 기존값 계속 연장 유지
 	2000000000,	//	100
 	2000000000,		
 	2000000000,		
@@ -439,8 +439,8 @@ const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] =
 const int * aiPercentByDeltaLev = NULL;
 const int * aiPercentByDeltaLevForBoss = NULL;
 
-//   ̿  꿡 Ǵ ̺
-// MIN(MAX_EXP_DELTA_OF_LEV - 1, ( + 15) - ))
+// 적과 나와의 레벨차이에 의한 계산에 사용되는 테이블
+// MIN(MAX_EXP_DELTA_OF_LEV - 1, (적렙 + 15) - 내렙))
 const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] =
 {
 	1,      // -15  0
@@ -720,7 +720,7 @@ const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] =
 	42000000UL
 };
 
-// INTERNATIONAL_VERSION ġ
+// INTERNATIONAL_VERSION 길드경험치
 const DWORD guild_exp_table2[GUILD_MAX_LEVEL+1] =
 {
 	0,	
@@ -745,7 +745,7 @@ const DWORD guild_exp_table2[GUILD_MAX_LEVEL+1] =
 	4000000UL,
 	16800000UL
 };
-// END_OF_INTERNATIONAL_VERSION ġ
+// END_OF_INTERNATIONAL_VERSION 길드경험치
 
 const int aiMobEnchantApplyIdx[MOB_ENCHANTS_MAX_NUM] =
 {
@@ -898,16 +898,16 @@ const TApplyInfo aApplyInfo[MAX_APPLY_NUM] =
 	{ POINT_PC_BANG_DROP_BONUS	},		// 76
 	// END_PC_BANG_ITEM_ADD
 
-	{ POINT_NONE,		},				// 77  HP Ҹ APPLY_EXTRACT_HP_PCT
+	{ POINT_NONE,		},				// 77 사용시 HP 소모 APPLY_EXTRACT_HP_PCT
 
-	{ POINT_RESIST_WARRIOR,		},		// 78 翡  APPLY_RESIST_WARRIOR
-	{ POINT_RESIST_ASSASSIN,	},		// 79 ڰ  APPLY_RESIST_ASSASSIN
-	{ POINT_RESIST_SURA,		},		// 80 󿡰  APPLY_RESIST_SURA
-	{ POINT_RESIST_SHAMAN,		},		// 81 翡  APPLY_RESIST_SHAMAN
-	{ POINT_ENERGY				},		// 82  
-	{ POINT_DEF_GRADE			},		// 83 . DEF_GRADE_BONUS Ŭ󿡼 ι  ǵ (...) ִ.
-	{ POINT_COSTUME_ATTR_BONUS	},		// 84 ڽƬ  Ӽ ؼ ʽ ִ 
-	{ POINT_MAGIC_ATT_BONUS_PER },			// 85  ݷ +x%
+	{ POINT_RESIST_WARRIOR,		},		// 78 무사에게 저항 APPLY_RESIST_WARRIOR
+	{ POINT_RESIST_ASSASSIN,	},		// 79 자객에게 저항 APPLY_RESIST_ASSASSIN
+	{ POINT_RESIST_SURA,		},		// 80 수라에게 저항 APPLY_RESIST_SURA
+	{ POINT_RESIST_SHAMAN,		},		// 81 무당에게 저항 APPLY_RESIST_SHAMAN
+	{ POINT_ENERGY				},		// 82 기력 
+	{ POINT_DEF_GRADE			},		// 83 방어력. DEF_GRADE_BONUS는 클라에서 두배로 보여지는 의도된 버그(...)가 있다.
+	{ POINT_COSTUME_ATTR_BONUS	},		// 84 코스튬에 붙은 속성에 대해서만 보너스를 주는 기력
+	{ POINT_MAGIC_ATT_BONUS_PER },			// 85 마법 공격력 +x%
 	{ POINT_MELEE_MAGIC_ATT_BONUS_PER		},			// 86 APPLY_MELEE_MAGIC_ATTBONUS_PER
 	{ POINT_RESIST_ICE,			},   // APPLY_RESIST_ICE,	87
 	{ POINT_RESIST_EARTH,		},   // APPLY_RESIST_EARTH,	88
@@ -1153,28 +1153,28 @@ TGuildWarInfo KOR_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
 };
 
 //
-// Ǽ Ͽ ġ
+// 악세서리 소켓용 수치들
 //
 
-// ̾Ƹ  ߰  Ȯ
+// 다이아몬드로 소켓을 추가할 때 확률
 const int aiAccessorySocketAddPct[ITEM_ACCESSORY_SOCKET_MAX_NUM] =
 {
 	50, 50, 50
 };
 
-// Ǽ ġ  %ŭ  ߰ϴ
+// 악세서리 수치 값의 몇%만큼의 성능을 추가하는지
 const int aiAccessorySocketEffectivePct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] = 
 {
 	0, 10, 20, 40
 };
 
-//  ӽð 24, 12, 6
+// 소켓 지속시간 24, 12, 6
 const int aiAccessorySocketDegradeTime[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
 {
 	0, 3600 * 24, 3600 * 12, 3600 * 6
 };
 
-//   
+// 소켓 장착 성공률
 const int aiAccessorySocketPutPct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
 {
 	90, 80, 70, 0
@@ -1274,10 +1274,10 @@ TValueName c_aApplyTypeNames[] =
     { "RESIST_ASSASSIN",	APPLY_RESIST_ASSASSIN},
     { "RESIST_SURA",		APPLY_RESIST_SURA},
     { "RESIST_SHAMAN",	APPLY_RESIST_SHAMAN},
-    // by mhh game/affect.h ǵǾ. INFINITE_AFFECT_DURATION = 0x1FFFFFFF
+    // by mhh game/affect.h 정의되어있음. INFINITE_AFFECT_DURATION = 0x1FFFFFFF
     { "INFINITE_AFFECT_DURATION", 0x1FFFFFFF	},
-	{ "ENERGY", APPLY_ENERGY },		//	
-	{ "COSTUME_ATTR_BONUS", APPLY_COSTUME_ATTR_BONUS },		//	
+	{ "ENERGY", APPLY_ENERGY },		//	기력
+	{ "COSTUME_ATTR_BONUS", APPLY_COSTUME_ATTR_BONUS },		//	기력
 	{ "MAGIC_ATTBONUS_PER",	APPLY_MAGIC_ATTBONUS_PER	},
     { "MELEE_MAGIC_ATTBONUS_PER",	APPLY_MELEE_MAGIC_ATTBONUS_PER	},
     
diff --git a/src/game/src/cube.cpp b/src/game/src/cube.cpp
index 474bc71..adaf3b7 100644
--- a/src/game/src/cube.cpp
+++ b/src/game/src/cube.cpp
@@ -37,11 +37,11 @@ static bool s_isInitializedCubeMaterialInformation = false;
 /*--------------------------------------------------------*/
 enum ECubeResultCategory
 {
-	CUBE_CATEGORY_POTION,				// ,  ..  ( Ư     . ʰ   Ÿ)
-	CUBE_CATEGORY_WEAPON,				// 
-	CUBE_CATEGORY_ARMOR,				// 
-	CUBE_CATEGORY_ACCESSORY,			// ű
-	CUBE_CATEGORY_ETC,				// Ÿ ...
+	CUBE_CATEGORY_POTION,				// 약초, 진액 등등..  (포션으로 특정할 수 없으니 사용 안 함. 약초같은건 다 걍 기타)
+	CUBE_CATEGORY_WEAPON,				// 무기
+	CUBE_CATEGORY_ARMOR,				// 방어구
+	CUBE_CATEGORY_ACCESSORY,			// 장신구
+	CUBE_CATEGORY_ETC,				// 기타 등등...
 };
 
 typedef std::vector	TCubeValueVector;
@@ -53,12 +53,12 @@ struct SCubeMaterialInfo
 		bHaveComplicateMaterial = false;
 	};
 
-	CUBE_VALUE			reward;							//  
-	TCubeValueVector	material;						//  
-	DWORD				gold;							//  󸶵
-	TCubeValueVector	complicateMaterial;				// -_- 
+	CUBE_VALUE			reward;							// 보상이 뭐냐
+	TCubeValueVector	material;						// 재료들은 뭐냐
+	DWORD				gold;							// 돈은 얼마드냐
+	TCubeValueVector	complicateMaterial;				// 복잡한-_- 재료들
 
-	// .. Ŭ̾Ʈ Ḧ ֱ Ͽ  
+	// .. 클라이언트에서 재료를 보여주기 위하여 약속한 포맷
 	// 72723,1&72724,2&72730,1
 	// 52001,1|52002,1|52003,1&72723,1&72724,5
 	//	=> ( 52001,1 or 52002,1 or 52003,1 ) and 72723,1 and 72724,5
@@ -75,13 +75,13 @@ struct SItemNameAndLevel
 };
 
 
-// ڷᱸ ̷ ΰ ...  ȥ  ¿ 
+// 자료구조나 이런거 병신인건 이해좀... 누구땜에 영혼이 없는 상태에서 만들었씀
 typedef std::vector								TCubeResultList;
-typedef std::unordered_map				TCubeMapByNPC;				//  NPC     ְ ᰡ ...
-typedef std::unordered_map					TCubeResultInfoTextByNPC;	//  NPC   ִ     
+typedef std::unordered_map				TCubeMapByNPC;				// 각각의 NPC별로 어떤 걸 만들 수 있고 재료가 뭔지...
+typedef std::unordered_map					TCubeResultInfoTextByNPC;	// 각각의 NPC별로 만들 수 있는 목록을 정해진 포맷으로 정리한 정보
 
 TCubeMapByNPC cube_info_map;
-TCubeResultInfoTextByNPC cube_result_info_map_by_npc;				// ̹  Ű 
+TCubeResultInfoTextByNPC cube_result_info_map_by_npc;				// 네이밍 존나 병신같다 ㅋㅋㅋ
 
 class CCubeMaterialInfoHelper
 {
@@ -92,7 +92,7 @@ public:
 /*--------------------------------------------------------*/
 /*                  STATIC FUNCTIONS                      */ 
 /*--------------------------------------------------------*/
- // ʿ   ִ°?
+ // 필요한 아이템 개수를 가지고있는가?
 static bool FN_check_item_count (LPITEM *items, DWORD item_vnum, int need_count)
 {
 	int	count = 0;
@@ -111,7 +111,7 @@ static bool FN_check_item_count (LPITEM *items, DWORD item_vnum, int need_count)
 	return (count>=need_count);
 }
 
-// ť곻 Ḧ .
+// 큐브내의 재료를 지운다.
 static void FN_remove_material (LPITEM *items, DWORD item_vnum, int need_count)
 {
 	int		count	= 0;
@@ -170,7 +170,7 @@ static bool FN_check_valid_npc( WORD vnum )
 	return false;
 }
 
-// ť굥Ÿ ùٸ ʱȭ Ǿ üũѴ.
+// 큐브데이타가 올바르게 초기화 되었는지 체크한다.
 static bool FN_check_cube_data (CUBE_DATA *cube_data)
 {
 	DWORD	i = 0;
@@ -204,10 +204,10 @@ CUBE_DATA::CUBE_DATA()
 	this->gold = 0;
 }
 
-// ʿ   ϴ üũѴ.
+// 필요한 재료의 수량을 만족하는지 체크한다.
 bool CUBE_DATA::can_make_item (LPITEM *items, WORD npc_vnum)
 {
-	// ʿ ,  ϴ üũѴ.
+	// 필요한 재료, 수량을 만족하는지 체크한다.
 	DWORD	i, end_index;
 	DWORD	need_vnum;
 	int		need_count;
@@ -235,7 +235,7 @@ bool CUBE_DATA::can_make_item (LPITEM *items, WORD npc_vnum)
 	return true;
 }
 
-// ť긦     
+// 큐브를 돌렸을때 나오는 아이템의 종류를 결정함
 CUBE_VALUE* CUBE_DATA::reward_value ()
 {
 	int		end_index		= 0;
@@ -248,7 +248,7 @@ CUBE_VALUE* CUBE_DATA::reward_value ()
 	return &this->reward[reward_index];
 }
 
-// ť꿡 ִ Ḧ 
+// 큐브에 들어있는 재료를 지운다
 void CUBE_DATA::remove_material (LPCHARACTER ch)
 {
 	DWORD	i, end_index;
@@ -281,7 +281,7 @@ void Cube_clean_item (LPCHARACTER ch)
 	}
 }
 
-// ťâ 
+// 큐브창 열기
 void Cube_open (LPCHARACTER ch)
 {
 	if (false == s_isInitializedCubeMaterialInformation)
@@ -331,7 +331,7 @@ void Cube_open (LPCHARACTER ch)
 	ch->ChatPacket(CHAT_TYPE_COMMAND, "cube open %d", npc->GetRaceNum());
 }
 
-// ť ĵ
+// 큐브 캔슬
 void Cube_close (LPCHARACTER ch)
 {
 	RETURN_IF_CUBE_IS_NOT_OPENED(ch);
@@ -426,7 +426,7 @@ bool Cube_load (const char *file)
 		}
 		else TOKEN("gold")
 		{
-			//  ʿ ݾ
+			// 제조에 필요한 금액
 			cube_data->gold = value1;
 		}
 		else TOKEN("end")
@@ -504,10 +504,10 @@ static bool FN_update_cube_status(LPCHARACTER ch)
 // return new item
 bool Cube_make (LPCHARACTER ch)
 {
-	// ־  ʿϴ  ã´. (ť굥Ÿ Ī)
-	// ť Ÿ ִٸ  Ḧ üũѴ.
-	// ο  .
-	// ο  
+	// 주어진 아이템을 필요로하는 조합을 찾는다. (큐브데이타로 칭함)
+	// 큐브 데이타가 있다면 아이템의 재료를 체크한다.
+	// 새로운 아이템을 만든다.
+	// 새로운 아이템 지급
 
 	LPCHARACTER	npc;
 	int			percent_number = 0;
@@ -538,23 +538,23 @@ bool Cube_make (LPCHARACTER ch)
 
 	if (ch->GetGold() < cube_proto->gold)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	//  ؽƮ ̹ θ ̴°Ŷ ߰ ʿ 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	// 이 텍스트는 이미 널리 쓰이는거라 추가번역 필요 없음
 		return false;
 	}
 
 	CUBE_VALUE	*reward_value = cube_proto->reward_value();
 
-	// Ǿ  
+	// 사용되었던 재료아이템 삭제
 	cube_proto->remove_material (ch);
 	
-	//  ʿ  
+	// 제조시 필요한 골드 차감
 	if (0 < cube_proto->gold)
 		ch->PointChange(POINT_GOLD, -(cube_proto->gold), false);
 
 	percent_number = Random::get(1,100);
 	if ( percent_number<=cube_proto->percent)
 	{
-		// 
+		// 성공
 		ch->ChatPacket(CHAT_TYPE_COMMAND, "cube success %d %d", reward_value->vnum, reward_value->count);
 		new_item = ch->AutoGiveItem(reward_value->vnum, reward_value->count);
 
@@ -564,8 +564,8 @@ bool Cube_make (LPCHARACTER ch)
 	}
 	else
 	{
-		// 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));	// 2012.11.12  ߰ ޼ (locale_string.txt  ߰ؾ )
+		// 실패
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));	// 2012.11.12 새로 추가된 메세지 (locale_string.txt 에 추가해야 함)
 		ch->ChatPacket(CHAT_TYPE_COMMAND, "cube fail");
 		LogManager::instance().CubeLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(),
 				reward_value->vnum, 0, 0, 0);
@@ -576,7 +576,7 @@ bool Cube_make (LPCHARACTER ch)
 }
 
 
-// ť꿡 ִ ۵ ǥ
+// 큐브에 있는 아이템들을 표시
 void Cube_show_list (LPCHARACTER ch)
 {
 	LPITEM	*cube_item;
@@ -597,13 +597,13 @@ void Cube_show_list (LPCHARACTER ch)
 }
 
 
-// κ丮 ִ  ť꿡 
+// 인벤토리에 있는 아이템을 큐브에 등록
 void Cube_add_item (LPCHARACTER ch, int cube_index, int inven_index)
 {
-	//  ִ°?
-	// ť곻 ڸ ã
-	// ť꼼
-	// ޽ 
+	// 아이템이 있는가?
+	// 큐브내의 빈자리 찾기
+	// 큐브세팅
+	// 메시지 전송
 	LPITEM	item;
 	LPITEM	*cube_item;
 
@@ -620,7 +620,7 @@ void Cube_add_item (LPCHARACTER ch, int cube_index, int inven_index)
 
 	cube_item = ch->GetCubeItem();
 
-	// ̹ ٸġ ϵǾ ̸  indext
+	// 이미 다른위치에 등록되었던 아이템이면 기존 indext삭제
 	for (int i=0; iChatPacket(CHAT_TYPE_INFO, "cube[%d]: inventory[%d]: %s added",
 									cube_index, inven_index, item->GetName());
 
-	//  ڿ ö ۵    ִ Ŭ̾Ʈ  
-	//  ϰ; ׳ ʿ 尡  
+	// 현재 상자에 올라온 아이템들로 무엇을 만들 수 있는지 클라이언트에 정보 전달
+	// 을 하고싶었으나 그냥 필요한 골드가 얼마인지 전달
 	FN_update_cube_status(ch);
 
 	return;
 }
 
-// ť꿡ִ  
+// 큐브에있는 아이템을 제거
 void Cube_delete_item (LPCHARACTER ch, int cube_index)
 {
 	LPITEM	item;
@@ -664,14 +664,14 @@ void Cube_delete_item (LPCHARACTER ch, int cube_index)
 		ch->ChatPacket(CHAT_TYPE_INFO, "cube[%d]: cube[%d]: %s deleted",
 				cube_index, item->GetCell(), item->GetName());
 
-	//  ڿ ö ۵    ִ Ŭ̾Ʈ  
-	//  ϰ; ׳ ʿ 尡  
+	// 현재 상자에 올라온 아이템들로 무엇을 만들 수 있는지 클라이언트에 정보 전달
+	// 을 하고싶었으나 그냥 필요한 골드가 얼마인지 전달
 	FN_update_cube_status(ch);
 
 	return;
 }
 
-//  ̸ ؼ  ̸ ȭ иϴ Լ (ְ+5 -> ְ, 5)
+// 아이템 이름을 통해서 순수 이름과 강화레벨을 분리하는 함수 (무쌍검+5 -> 무쌍검, 5)
 SItemNameAndLevel SplitItemNameAndLevelFromName(const std::string& name)
 {
 	int level = 0;
@@ -705,7 +705,7 @@ bool FIsLessCubeValue(const CUBE_VALUE& a, const CUBE_VALUE& b)
 
 void Cube_MakeCubeInformationText()
 {
-	//   ť     Ŭ̾Ʈ    ȯ.
+	// 이제 정리된 큐브 결과 및 재료들의 정보로 클라이언트에 보내 줄 정보로 변환함.
 	for (TCubeMapByNPC::iterator iter = cube_info_map.begin(); cube_info_map.end() != iter; ++iter)
 	{
 		const DWORD& npcVNUM = iter->first;
@@ -717,13 +717,13 @@ void Cube_MakeCubeInformationText()
 			std::string& infoText = materialInfo.infoText;
 
 			
-			// ̳ ۳̾
+			// 이놈이 나쁜놈이야
 			if (0 < materialInfo.complicateMaterial.size())
 			{
 				std::sort(materialInfo.complicateMaterial.begin(), materialInfo.complicateMaterial.end(), FIsLessCubeValue);
 				std::sort(materialInfo.material.begin(), materialInfo.material.end(), FIsLessCubeValue);
 
-				//// ߺǴ  
+				//// 중복되는 재료들을 지움
 				for (TCubeValueVector::iterator iter = materialInfo.complicateMaterial.begin(); materialInfo.complicateMaterial.end() != iter; ++iter)
 				{
 					for (TCubeValueVector::iterator targetIter = materialInfo.material.begin(); materialInfo.material.end() != targetIter; ++targetIter)
@@ -735,7 +735,7 @@ void Cube_MakeCubeInformationText()
 					}
 				}
 
-				// 72723,1 or 72725,1 or ... ̷  ӵ  Ű ؽƮ 
+				// 72723,1 or 72725,1 or ... 이런 식의 약속된 포맷을 지키는 텍스트를 생성
 				for (TCubeValueVector::iterator iter = materialInfo.complicateMaterial.begin(); materialInfo.complicateMaterial.end() != iter; ++iter)
 				{
 					char tempBuffer[128];
@@ -750,7 +750,7 @@ void Cube_MakeCubeInformationText()
 					infoText.push_back('&');
 			}
 
-			// ߺ ʴ Ϲ 鵵  
+			// 중복되지 않는 일반 재료들도 포맷 생성
 			for (TCubeValueVector::iterator iter = materialInfo.material.begin(); materialInfo.material.end() != iter; ++iter)
 			{
 				char tempBuffer[128];
@@ -760,7 +760,7 @@ void Cube_MakeCubeInformationText()
 
 			infoText.erase(infoText.size() - 1);
 
-			//   尡 ʿϴٸ  ߰
+			// 만들 때 골드가 필요하다면 골드정보 추가
 			if (0 < materialInfo.gold)
 			{
 				char temp[128];
@@ -779,7 +779,7 @@ bool Cube_InformationInitialize()
 
 		const std::vector& rewards = cubeData->reward;
 
-		// ϵڵ 
+		// 하드코딩 ㅈㅅ
 		if (1 != rewards.size())
 		{
 			SPDLOG_ERROR("[CubeInfo] WARNING! Does not support multiple rewards (count: {})", rewards.size());
@@ -807,13 +807,13 @@ bool Cube_InformationInitialize()
 		{
 			SCubeMaterialInfo& existInfo = *iter;
 
-			// ̹ ߺǴ  ϵǾ ִٸ ƿ ٸ   , 
-			//   ε Ư κи Ʋ  .
-			//  Ư κи Ʋ ۵ Ʒó ϳ  ϳ  ֱ :
-			// :
-			//		ְ+5 ~ +9 x 1
-			//		 Įڷ  x1
-			//		   x1
+			// 이미 중복되는 보상이 등록되어 있다면 아예 다른 조합으로 만드는 것인지, 
+			// 거의 같은 조합인데 특정 부분만 틀린 것인지 구분함.
+			// 예를들면 특정 부분만 틀린 아이템들은 아래처럼 하나로 묶어서 하나의 결과로 보여주기 위함임:
+			// 용신지검:
+			//		무쌍검+5 ~ +9 x 1
+			//		붉은 칼자루 조각 x1
+			//		녹색 검장식 조각 x1
 			if (reward.vnum == existInfo.reward.vnum)
 			{
 				for (TCubeValueVector::iterator existMaterialIter = existInfo.material.begin(); existInfo.material.end() != existMaterialIter; ++existMaterialIter)
@@ -828,8 +828,8 @@ bool Cube_InformationInitialize()
 
 					if (0 < existItemInfo.level)
 					{
-						//  ߰ϴ ť  ,  ϵǾִ ť    
-						// ߺǴ κ ִ ˻Ѵ
+						// 지금 추가하는 큐브 결과물의 재료와, 기존에 등록되어있던 큐브 결과물의 재료 중 
+						// 중복되는 부분이 있는지 검색한다
 						for (TCubeValueVector::iterator currentMaterialIter = materialInfo.material.begin(); materialInfo.material.end() != currentMaterialIter; ++currentMaterialIter)
 						{
 							TItemTable* currentMaterialProto = ITEM_MANAGER::Instance().GetTable(currentMaterialIter->vnum);
@@ -845,7 +845,7 @@ bool Cube_InformationInitialize()
 
 								//currentMaterialIter = materialInfo.material.erase(currentMaterialIter);
 
-								// TODO: ߺǴ    ̻ ؾ   
+								// TODO: 중복되는 아이템 두 개 이상 검출해야 될 수도 있음
 								break;
 							}
 						} // for currentMaterialIter
@@ -865,7 +865,7 @@ bool Cube_InformationInitialize()
 	return true;
 }
 
-// Ŭ̾Ʈ  :  NPC   ִ ۵ () û
+// 클라이언트에서 서버로 : 현재 NPC가 만들 수 있는 아이템들의 정보(목록)를 요청
 void Cube_request_result_list(LPCHARACTER ch)
 {
 	RETURN_IF_CUBE_IS_NOT_OPENED(ch);
@@ -879,7 +879,7 @@ void Cube_request_result_list(LPCHARACTER ch)
 
 	std::string& resultText = cube_result_info_map_by_npc[npcVNUM];
 
-	// ش NPC   ִ    ٸ ijø 
+	// 해당 NPC가 만들 수 있는 목록이 정리된 게 없다면 캐시를 생성
 	if (resultText.length() == 0)
 	{
 		resultText.clear();
@@ -898,7 +898,7 @@ void Cube_request_result_list(LPCHARACTER ch)
 
 		resultText.erase(resultText.size() - 1);
 
-		// ä Ŷ Ѱ踦 Ѿ  ... ȹ е  ش޶ ûϰų, ߿ ٸ  ٲٰų...
+		// 채팅 패킷의 한계를 넘어가면 에러 남김... 기획자 분들 께 조정해달라고 요청하거나, 나중에 다른 방식으로 바꾸거나...
 		if (resultText.size() - 20 >= CHAT_MAX_LEN)
 		{
 			SPDLOG_ERROR("[CubeInfo] Too long cube result list text. (NPC: {}, length: {})", npcVNUM, resultText.size());
@@ -908,7 +908,7 @@ void Cube_request_result_list(LPCHARACTER ch)
 
 	}
 
-	//  NPC   ִ ۵  Ʒ  Ѵ.
+	// 현재 NPC가 만들 수 있는 아이템들의 목록을 아래 포맷으로 전송한다.
 	// (Server -> Client) /cube r_list npcVNUM resultCount vnum1,count1/vnum2,count2,/vnum3,count3/...
 	// (Server -> Client) /cube r_list 20383 4 123,1/125,1/128,1/130,5
 	
diff --git a/src/game/src/db.cpp b/src/game/src/db.cpp
index d759690..79e06e1 100644
--- a/src/game/src/db.cpp
+++ b/src/game/src/db.cpp
@@ -399,7 +399,7 @@ void DBManager::FlushBilling(bool bForce)
 void DBManager::CheckBilling()
 {
 	std::vector vec;
-	vec.push_back(0); // īƮ  ̸ д.
+	vec.push_back(0); // 카운트를 위해 미리 비워둔다.
 
 	itertype(m_map_pkLoginData) it = m_map_pkLoginData.begin();
 
@@ -414,7 +414,7 @@ void DBManager::CheckBilling()
 		}
 	}
 
-	vec[0] = vec.size() - 1; //    ִ´,  ڽ ؾ ϹǷ -1
+	vec[0] = vec.size() - 1; // 비워둔 곳에 사이즈를 넣는다, 사이즈 자신은 제외해야 하므로 -1
 	db_clientdesc->DBPacket(HEADER_GD_BILLING_CHECK, 0, &vec[0], sizeof(DWORD) * vec.size());
 }
 
@@ -632,7 +632,7 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)
 					M2_DELETE(pinfo);
 					break;
 				}
-				//ġ  - By SeMinZ
+				//위치 변경 - By SeMinZ
 				d->SetLogin(pinfo->login);
 
 				SPDLOG_DEBUG("QID_AUTH_LOGIN: START {} {}", qi->dwIdent, (void*) get_pointer(d));
@@ -758,7 +758,7 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)
 
 					if (true == LC_IsBrazil())
 					{
-						nPasswordDiff = 0; //   йȣ üũ  ʴ´.
+						nPasswordDiff = 0; // 브라질 버전에서는 비밀번호 체크를 하지 않는다.
 					}
 
 					if (nPasswordDiff)
@@ -789,7 +789,7 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)
 					{
 						if (LC_IsEurope())
 						{
-							//stBlockData >= 0 == ¥ BlockDate  ̷ 
+							//stBlockData >= 0 == 날짜가 BlockDate 보다 미래 
 							if (strncmp(szCreateDate, g_stBlockDate.c_str(), 8) >= 0)
 							{
 								LoginFailure(d, "BLKLOGIN");
@@ -1315,7 +1315,7 @@ enum EAccountQID
 	QID_SPAM_DB,
 };
 
-// 10и ε
+// 10분마다 리로드
 static LPEVENT s_pkReloadSpamEvent = NULL;
 
 EVENTINFO(reload_spam_event_info)
diff --git a/src/game/src/desc.cpp b/src/game/src/desc.cpp
index 5102f73..f11b90b 100644
--- a/src/game/src/desc.cpp
+++ b/src/game/src/desc.cpp
@@ -318,12 +318,12 @@ void DESC::Packet(const void * c_pvData, int iSize)
 {
 	assert(iSize > 0);
 
-	if (m_iPhase == PHASE_CLOSE) //  ¸  ʴ´.
+	if (m_iPhase == PHASE_CLOSE) // 끊는 상태면 보내지 않는다.
 		return;
 
 	if (m_stRelayName.length() != 0)
 	{
-		// Relay Ŷ ȣȭ ʴ´.
+		// Relay 패킷은 암호화하지 않는다.
 		TPacketGGRelay p;
 
 		p.bHeader = HEADER_GG_RELAY;
@@ -369,7 +369,7 @@ void DESC::SetPhase(int _phase)
 	switch (m_iPhase)
 	{
 		case PHASE_CLOSE:
-			// ޽ ijʹ Ǹ鼭 
+			// 메신저가 캐릭터단위가 되면서 삭제
 			//MessengerManager::instance().Logout(GetAccountTable().login);
 			m_pInputProcessor = &m_inputClose;
 			break;
@@ -379,8 +379,8 @@ void DESC::SetPhase(int _phase)
 			break;
 
 		case PHASE_SELECT:
-			// ޽ ijʹ Ǹ鼭 
-			//MessengerManager::instance().Logout(GetAccountTable().login); // ǵ break Ȱ
+			// 메신저가 캐릭터단위가 되면서 삭제
+			//MessengerManager::instance().Logout(GetAccountTable().login); // 의도적으로 break 안검
 		case PHASE_LOGIN:
 		case PHASE_LOADING:
 			m_pInputProcessor = &m_inputLogin;
diff --git a/src/game/src/desc_client.cpp b/src/game/src/desc_client.cpp
index 59016bc..0edb14b 100644
--- a/src/game/src/desc_client.cpp
+++ b/src/game/src/desc_client.cpp
@@ -97,7 +97,7 @@ bool CLIENT_DESC::Connect(int iPhaseWhenSucceed)
 	if (iPhaseWhenSucceed != 0)
 		m_iPhaseWhenSucceed = iPhaseWhenSucceed;
 
-	if (get_global_time() - m_LastTryToConnectTime < 3)	// 3
+	if (get_global_time() - m_LastTryToConnectTime < 3)	// 3초
 		return false;
 
 	m_LastTryToConnectTime = get_global_time();
@@ -220,7 +220,7 @@ void CLIENT_DESC::SetPhase(int iPhase)
 
 					SPDLOG_DEBUG("DB_SETUP current user {} size {}", p.dwLoginCount, buf.size());
 
-					// Ƽ ó  ְ .
+					// 파티를 처리할 수 있게 됨.
 					CPartyManager::instance().EnablePCParty();
 					//CPartyManager::instance().SendPartyToDB();
 				}
@@ -301,7 +301,7 @@ void CLIENT_DESC::Update(DWORD t)
 void CLIENT_DESC::UpdateChannelStatus(DWORD t, bool fForce)
 {
 	enum {
-		CHANNELSTATUS_UPDATE_PERIOD = 5*60*1000,	// 5и
+		CHANNELSTATUS_UPDATE_PERIOD = 5*60*1000,	// 5분마다
 	};
 	if (fForce || m_tLastChannelStatusUpdateTime+CHANNELSTATUS_UPDATE_PERIOD < t) {
 		int iTotal; 
diff --git a/src/game/src/desc_manager.cpp b/src/game/src/desc_manager.cpp
index 30d11bb..ff91c05 100644
--- a/src/game/src/desc_manager.cpp
+++ b/src/game/src/desc_manager.cpp
@@ -53,7 +53,7 @@ int IsValidIP(struct valid_ip* ip_table, const char *host)
 DESC_MANAGER::DESC_MANAGER() : m_bDestroyed(false)
 {
 	Initialize();
-	//NOTE : Destroy  Initialize  θ°   ̳..-_-;  
+	//NOTE : Destroy 끝에서 Initialize 를 부르는건 또 무슨 짓이냐..-_-; 정말 
 
 	m_pPackageCrypt = new CClientPackageCryptInfo;
 }
@@ -146,7 +146,7 @@ RETRY:
 
 LPDESC DESC_MANAGER::AcceptDesc(evconnlistener* listener, evutil_socket_t fd, sockaddr* address)
 {
-	if (!IsValidIP(admin_ip, GetSocketHost(address).c_str())) // admin_ip  ϵ IP  ִ   ֹ ʴ´.
+	if (!IsValidIP(admin_ip, GetSocketHost(address).c_str())) // admin_ip 에 등록된 IP 는 최대 사용자 수에 구애받지 않는다.
 	{
 		if (m_iSocketsConnected >= MAX_ALLOW_USER)
 		{
diff --git a/src/game/src/dragon_soul_table.cpp b/src/game/src/dragon_soul_table.cpp
index e9909e3..2fd7510 100644
--- a/src/game/src/dragon_soul_table.cpp
+++ b/src/game/src/dragon_soul_table.cpp
@@ -172,7 +172,7 @@ bool DragonSoulTable::ReadBasicApplys()
 		TVecApplys vecApplys;
 		int n = pChild->GetRowCount();
 		
-		// BasicApply Group Key 1 .
+		// BasicApply Group은 Key가 1부터 시작함.
 		for (int j = 1; j <= n; j++)
 		{
 			std::stringstream ss;
@@ -655,7 +655,7 @@ bool DragonSoulTable::GetWeight(BYTE ds_type, BYTE grade_idx, BYTE step_index, B
 			return true;
 		}
 	}
-	// default group 캽.
+	// default group을 살펴봄.
 	pDragonSoulGroup = m_pWeightTableNode->GetChildNode("default");
 	if (NULL != pDragonSoulGroup)
 	{
diff --git a/src/game/src/dungeon.cpp b/src/game/src/dungeon.cpp
index 00e2a79..c98c806 100644
--- a/src/game/src/dungeon.cpp
+++ b/src/game/src/dungeon.cpp
@@ -1122,7 +1122,7 @@ struct FExitDungeonToStartPosition
 			{
 				PIXEL_POSITION posWarp;
 
-				//   ε ִ  ƴ϶ ϴ  ε ִ´.
+				// 현재 맵 인덱스를 넣는 것이 아니라 시작하는 맵 인덱스를 넣는다.
 				if (SECTREE_MANAGER::instance().GetRecallPositionByEmpire(g_start_map[ch->GetEmpire()], ch->GetEmpire(), posWarp))
 					ch->WarpSet(posWarp.x, posWarp.y);
 				else
@@ -1272,7 +1272,7 @@ void CDungeon::JumpToEliminateLocation()
 	}
 	else
 	{
-		// Ϲ  
+		// 일반 맵으로 워프
 		LPSECTREE_MAP pMap = SECTREE_MANAGER::instance().GetMap(m_lMapIndex);
 
 		if (!pMap)
diff --git a/src/game/src/entity.cpp b/src/game/src/entity.cpp
index 75af760..0e874e0 100644
--- a/src/game/src/entity.cpp
+++ b/src/game/src/entity.cpp
@@ -97,7 +97,7 @@ void CEntity::PacketView(const void * data, int bytes, LPENTITY except)
 
 	FuncPacketView f(data, bytes, except);
 
-	//  ¿  Ŷ  ޴´.
+	// 옵저버 상태에선 내 패킷은 나만 받는다.
 	if (!m_bIsObserver)
 		for_each(m_map_view.begin(), m_map_view.end(), f);
 
diff --git a/src/game/src/entity_view.cpp b/src/game/src/entity_view.cpp
index 2e3a0fa..d366b57 100644
--- a/src/game/src/entity_view.cpp
+++ b/src/game/src/entity_view.cpp
@@ -98,21 +98,21 @@ class CFuncViewInsert
 
 		void operator () (LPENTITY ent)
 		{
-			// Ʈ ƴ  Ÿ Ͽ Ÿ ָ ߰ ʴ´.
+			// 오브젝트가 아닌 것은 거리를 계산하여 거리가 멀면 추가하지 않는다.
 			if (!ent->IsType(ENTITY_OBJECT))
 				if (DISTANCE_APPROX(ent->GetX() - m_me->GetX(), ent->GetY() - m_me->GetY()) > dwViewRange)
 					return;
 
-			//   ߰
+			// 나를 대상에 추가
 			m_me->ViewInsert(ent);
 
-			// Ѵ ij͸
+			// 둘다 캐릭터면
 			if (ent->IsType(ENTITY_CHARACTER) && m_me->IsType(ENTITY_CHARACTER))
 			{
 				LPCHARACTER chMe = (LPCHARACTER) m_me;
 				LPCHARACTER chEnt = (LPCHARACTER) ent;
 
-				//  NPC StateMachine Ų.
+				// 대상이 NPC면 StateMachine을 킨다.
 				if (chMe->IsPC() && !chEnt->IsPC() && !chEnt->IsWarp() && !chEnt->IsGoto())
 					chEnt->StartStateMachine();
 			}
@@ -134,13 +134,13 @@ void CEntity::UpdateSectree()
 
 	++m_iViewAge;
 
-	CFuncViewInsert f(this); //  Ʈ ִ 鿡 ߰
+	CFuncViewInsert f(this); // 나를 섹트리에 있는 사람들에게 추가
 	GetSectree()->ForEachAround(f);
 
 	ENTITY_MAP::iterator it, this_it;
 
 	//
-	// m_map_view ʿ  ༮ 
+	// m_map_view에서 필요 없는 녀석들 지우기
 	// 
 	if (m_bObserverModeChange)
 	{
@@ -155,11 +155,11 @@ void CEntity::UpdateSectree()
 				{
 					LPENTITY ent = this_it->first;
 
-					//    .
+					// 나로 부터 상대방을 지운다.
 					ent->EncodeRemovePacket(this);
 					m_map_view.erase(this_it);
 
-					//    .
+					// 상대로 부터 나를 지운다.
 					ent->ViewRemove(this, false);
 				}
 				else
@@ -167,11 +167,11 @@ void CEntity::UpdateSectree()
 
 					LPENTITY ent = this_it->first;
 
-					//    .
+					// 나로 부터 상대방을 지운다.
 					//ent->EncodeRemovePacket(this);
 					//m_map_view.erase(this_it);
 
-					//    .
+					// 상대로 부터 나를 지운다.
 					//ent->ViewRemove(this, false);
 					EncodeRemovePacket(ent);
 				}
@@ -189,11 +189,11 @@ void CEntity::UpdateSectree()
 				{
 					LPENTITY ent = this_it->first;
 
-					//    .
+					// 나로 부터 상대방을 지운다.
 					ent->EncodeRemovePacket(this);
 					m_map_view.erase(this_it);
 
-					//    .
+					// 상대로 부터 나를 지운다.
 					ent->ViewRemove(this, false);
 				}
 				else
@@ -223,11 +223,11 @@ void CEntity::UpdateSectree()
 				{
 					LPENTITY ent = this_it->first;
 
-					//    .
+					// 나로 부터 상대방을 지운다.
 					ent->EncodeRemovePacket(this);
 					m_map_view.erase(this_it);
 
-					//    .
+					// 상대로 부터 나를 지운다.
 					ent->ViewRemove(this, false);
 				}
 			}
diff --git a/src/game/src/event.cpp b/src/game/src/event.cpp
index 880b4d5..9b08dd2 100644
--- a/src/game/src/event.cpp
+++ b/src/game/src/event.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: event.c
- * Description: ̺Ʈ  (timed event)
+ * Description: 이벤트 관련 (timed event)
  *
- *      Author:  (aka. , Cronan), ۿ (aka. myevan, ڷ)
+ *      Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루)
  */
 #include "stdafx.h"
 
@@ -18,12 +18,12 @@ static ObjectPool event_pool;
 
 static CEventQueue cxx_q;
 
-/* ̺Ʈ ϰ Ѵ */
+/* 이벤트를 생성하고 리턴한다 */
 LPEVENT event_create_ex(TEVENTFUNC func, event_info_data* info, int when)
 {
 	LPEVENT new_event = NULL;
 
-	/* ݵ  pulse ̻ ð  Ŀ θ Ѵ. */
+	/* 반드시 다음 pulse 이상의 시간이 지난 후에 부르도록 한다. */
 	if (when < 1)
 		when = 1;
 
@@ -44,7 +44,7 @@ LPEVENT event_create_ex(TEVENTFUNC func, event_info_data* info, int when)
 	return (new_event);
 }
 
-/* ý  ̺Ʈ Ѵ */
+/* 시스템으로 부터 이벤트를 제거한다 */
 void event_cancel(LPEVENT * ppevent)
 {
 	LPEVENT event;
@@ -69,7 +69,7 @@ void event_cancel(LPEVENT * ppevent)
 		return;
 	}
 
-	// ̹  Ǿ°?
+	// 이미 취소 되었는가?
 	if (!event->q_el)
 	{
 		*ppevent = NULL;
@@ -98,14 +98,14 @@ void event_reset_time(LPEVENT event, int when)
 	}
 }
 
-/* ̺Ʈ  ð  ̺Ʈ Ѵ */
+/* 이벤트를 실행할 시간에 도달한 이벤트들을 실행한다 */
 int event_process(int pulse)
 {
 	int	new_time;
 	int		num_events = 0;
 
-	// event_q  ̺Ʈ ť  ð  pulse    
-	//  ʰ ȴ.
+	// event_q 즉 이벤트 큐의 헤드의 시간보다 현재의 pulse 가 적으면 루프문이 
+	// 돌지 않게 된다.
 	while (pulse >= cxx_q.GetTopKey())
 	{
 		TQueueElement * pElem = cxx_q.Dequeue();
@@ -123,9 +123,9 @@ int event_process(int pulse)
 		cxx_q.Delete(pElem);
 
 		/*
-		 *   ο ð̸   0  Ŭ  ̺Ʈ ٽ ߰Ѵ. 
-		 *   0 ̻   event  Ҵ ޸   ʵ
-		 * Ѵ.
+		 * 리턴 값은 새로운 시간이며 리턴 값이 0 보다 클 경우 이벤트를 다시 추가한다. 
+		 * 리턴 값을 0 이상으로 할 경우 event 에 할당된 메모리 정보를 삭제하지 않도록
+		 * 주의한다.
 		 */
 		the_event->is_processing = true;
 
@@ -155,7 +155,7 @@ int event_process(int pulse)
 	return num_events;
 }
 
-/* ̺Ʈ ð pulse   ش */
+/* 이벤트가 수행시간을 pulse 단위로 리턴해 준다 */
 int event_processing_time(LPEVENT event)
 {
 	int start_time;
@@ -167,7 +167,7 @@ int event_processing_time(LPEVENT event)
 	return (thecore_heart->pulse - start_time);
 }
 
-/* ̺Ʈ  ð pulse   ش */
+/* 이벤트가 남은 시간을 pulse 단위로 리턴해 준다 */
 int event_time(LPEVENT event)
 {
 	int when;
@@ -179,7 +179,7 @@ int event_time(LPEVENT event)
 	return (when - thecore_heart->pulse);
 }
 
-/*  ̺Ʈ Ѵ */
+/* 모든 이벤트를 제거한다 */
 void event_destroy(void)
 {
 	TQueueElement * pElem;
diff --git a/src/game/src/event_queue.cpp b/src/game/src/event_queue.cpp
index e0f88eb..2f7a391 100644
--- a/src/game/src/event_queue.cpp
+++ b/src/game/src/event_queue.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: queue.c
- * Description: ť ó
+ * Description: 큐 처리
  *
- *      Author:  (aka. , Cronan), ۿ (aka. myevan, ڷ)
+ *      Author: 김한주 (aka. 비엽, Cronan), 송영진 (aka. myevan, 빗자루)
  */
 #include "stdafx.h"
 
diff --git a/src/game/src/exchange.cpp b/src/game/src/exchange.cpp
index 8fccdb0..6b5a2b7 100644
--- a/src/game/src/exchange.cpp
+++ b/src/game/src/exchange.cpp
@@ -16,7 +16,7 @@
 
 void exchange_packet(LPCHARACTER ch, BYTE sub_header, bool is_me, DWORD arg1, TItemPos arg2, DWORD arg3, void * pvData = NULL);
 
-// ȯ Ŷ
+// 교환 패킷
 void exchange_packet(LPCHARACTER ch, BYTE sub_header, bool is_me, DWORD arg1, TItemPos arg2, DWORD arg3, void * pvData)
 {
 	if (!ch->GetDesc())
@@ -45,10 +45,10 @@ void exchange_packet(LPCHARACTER ch, BYTE sub_header, bool is_me, DWORD arg1, TI
 	ch->GetDesc()->Packet(&pack_exchg, sizeof(pack_exchg));
 }
 
-// ȯ 
+// 교환을 시작
 bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 {
-	if (this == victim)	// ڱ ڽŰ ȯ Ѵ.
+	if (this == victim)	// 자기 자신과는 교환을 못한다.
 		return false;
 
 	if (IsObserverMode())
@@ -75,7 +75,7 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 	//END_PREVENT_TRADE_WINDOW
 	int iDist = DISTANCE_APPROX(GetX() - victim->GetX(), GetY() - victim->GetY());
 
-	// Ÿ üũ
+	// 거리 체크
 	if (iDist >= EXCHANGE_MAX_DISTANCE)
 		return false;
 
@@ -143,7 +143,7 @@ bool CExchange::AddItem(TItemPos item_pos, BYTE display_pos)
 	if (!item_pos.IsValidItemPosition())
 		return false;
 
-	//  ȯ  
+	// 장비는 교환할 수 없음
 	if (item_pos.IsEquipPosition())
 		return false;
 
@@ -163,7 +163,7 @@ bool CExchange::AddItem(TItemPos item_pos, BYTE display_pos)
 		return false;
 	}
 
-	// ̹ ȯâ ߰ ΰ?
+	// 이미 교환창에 추가된 아이템인가?
 	if (item->IsExchanging())
 	{
 		SPDLOG_DEBUG("EXCHANGE under exchanging");
@@ -212,7 +212,7 @@ bool CExchange::AddItem(TItemPos item_pos, BYTE display_pos)
 		return true;
 	}
 
-	// ߰  
+	// 추가할 공간이 없음
 	return false;
 }
 
@@ -248,7 +248,7 @@ bool CExchange::AddGold(int gold)
 
 	if (GetOwner()->GetGold() < gold)
 	{
-		//  ִ  .
+		// 가지고 있는 돈이 부족.
 		exchange_packet(GetOwner(), EXCHANGE_SUBHEADER_GC_LESS_GOLD, 0, 0, NPOS, 0);
 		return false;
 	}
@@ -271,7 +271,7 @@ bool CExchange::AddGold(int gold)
 	return true;
 }
 
-//   ִ, ȯϷ   ִ Ȯ Ѵ.
+// 돈이 충분히 있는지, 교환하려는 아이템이 실제로 있는지 확인 한다.
 bool CExchange::Check(int * piItemCount)
 {
 	if (GetOwner()->GetGold() < m_lGold)
@@ -325,10 +325,10 @@ bool CExchange::CheckSpace()
 		s_grid2.Put(i - INVENTORY_MAX_NUM / 2, 1, item->GetSize());
 	}
 
-	// ...   ... ȥ κ  κ     ߸̴ Ф
+	// 아... 뭔가 개병신 같지만... 용혼석 인벤을 노멀 인벤 보고 따라 만든 내 잘못이다 ㅠㅠ
 	static std::vector  s_vDSGrid(DRAGON_SOUL_INVENTORY_MAX_NUM);
 	
-	// ϴ ȥ ȯ  ɼ ũǷ, ȥ κ  ȥ   ϵ Ѵ.
+	// 일단 용혼석을 교환하지 않을 가능성이 크므로, 용혼석 인벤 복사는 용혼석이 있을 때 하도록 한다.
 	bool bDSInitialized = false;
 	
 	for (i = 0; i < EXCHANGE_ITEM_MAX_NUM; ++i)
@@ -411,7 +411,7 @@ bool CExchange::CheckSpace()
 	return true;
 }
 
-// ȯ  (۰    ű)
+// 교환 끝 (아이템과 돈 등을 실제로 옮긴다)
 bool CExchange::Done()
 {
 	int		empty_pos, i;
@@ -493,7 +493,7 @@ bool CExchange::Done()
 	return true;
 }
 
-// ȯ 
+// 교환을 동의
 bool CExchange::Accept(bool bAccept)
 {
 	if (m_bAccept == bAccept)
@@ -501,7 +501,7 @@ bool CExchange::Accept(bool bAccept)
 
 	m_bAccept = bAccept;
 
-	//    Ƿ ȯ 
+	// 둘 다 동의 했으므로 교환 성립
 	if (m_bAccept && GetCompany()->m_bAccept)
 	{
 		int	iItemCount;
@@ -513,9 +513,9 @@ bool CExchange::Accept(bool bAccept)
 		victim->SetExchangeTime();		
 		//END_PREVENT_PORTAL_AFTER_EXCHANGE
 
-		// exchange_check  ȯ ۵ ڸ ֳ Ȯϰ,
-		// ũ  ֳ ȮѴ, ι° ڷ ȯ  
-		//  Ѵ.
+		// exchange_check 에서는 교환할 아이템들이 제자리에 있나 확인하고,
+		// 엘크도 충분히 있나 확인한다, 두번째 인자로 교환할 아이템 개수
+		// 를 리턴한다.
 		if (!Check(&iItemCount))
 		{
 			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -523,7 +523,7 @@ bool CExchange::Accept(bool bAccept)
 			goto EXCHANGE_END;
 		}
 
-		//      ǰ  ڸ ֳ ȮѴ.
+		// 리턴 받은 아이템 개수로 상대방의 소지품에 남은 자리가 있나 확인한다.
 		if (!CheckSpace())
 		{
 			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -531,7 +531,7 @@ bool CExchange::Accept(bool bAccept)
 			goto EXCHANGE_END;
 		}
 
-		// 浵 ..
+		// 상대방도 마찬가지로..
 		if (!GetCompany()->Check(&iItemCount))
 		{
 			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -556,12 +556,12 @@ bool CExchange::Accept(bool bAccept)
 
 		if (Done())
 		{
-			if (m_lGold) //   ?? 
+			if (m_lGold) // 돈이 있을 ??만 저장
 				GetOwner()->Save();
 
 			if (GetCompany()->Done())
 			{
-				if (GetCompany()->m_lGold) //    
+				if (GetCompany()->m_lGold) // 돈이 있을 때만 저장
 					victim->Save();
 
 				// INTERNATIONAL_VERSION
@@ -577,14 +577,14 @@ EXCHANGE_END:
 	}
 	else
 	{
-		// ƴϸ accept  Ŷ .
+		// 아니면 accept에 대한 패킷을 보내자.
 		exchange_packet(GetOwner(), EXCHANGE_SUBHEADER_GC_ACCEPT, true, m_bAccept, NPOS, 0);
 		exchange_packet(GetCompany()->GetOwner(), EXCHANGE_SUBHEADER_GC_ACCEPT, false, m_bAccept, NPOS, 0);
 		return true;
 	}
 }
 
-// ȯ 
+// 교환 취소
 void CExchange::Cancel()
 {
 	exchange_packet(GetOwner(), EXCHANGE_SUBHEADER_GC_END, 0, 0, NPOS, 0);
diff --git a/src/game/src/file_loader.cpp b/src/game/src/file_loader.cpp
index 0e51cda..17fdde0 100644
--- a/src/game/src/file_loader.cpp
+++ b/src/game/src/file_loader.cpp
@@ -48,7 +48,7 @@ bool CMemoryTextFileLoader::SplitLine(DWORD dwLine, std::vector* ps
 
 		pstTokenVector->push_back(c_rstLine.substr(beginPos, endPos - beginPos));
 
-		// ߰ ڵ. ǵڿ  ִ 츦 üũѴ. - [levites]
+		// 추가 코드. 맨뒤에 탭이 있는 경우를 체크한다. - [levites]
 		if (int(c_rstLine.find_first_not_of(c_szDelimeter, basePos)) < 0)
 			break;
 	} while (basePos < c_rstLine.length());
diff --git a/src/game/src/fishing.cpp b/src/game/src/fishing.cpp
index f636bc8..e266406 100644
--- a/src/game/src/fishing.cpp
+++ b/src/game/src/fishing.cpp
@@ -205,7 +205,7 @@ void Initialize()
 	{
 		SendLog("error! cannot open fishing.txt");
 
-		//  ̸   Ѵ.
+		// 백업에 이름이 있으면 리스토어 한다.
 		if (*fish_info_bak[0].name)
 		{
 			memcpy(fish_info, fish_info_bak, sizeof(fish_info));
@@ -313,7 +313,7 @@ void Initialize()
 				fish_info[i].length_range[2]);
 	}
 
-	// Ȯ 
+	// 확률 계산
 	for (int j = 0; j < MAX_PROB; ++j)
 	{
 		g_prob_accumulate[j][0] = fish_info[0].prob[j];
@@ -366,7 +366,7 @@ int DetermineFish(LPCHARACTER ch)
 
 	// ADD_PREMIUM
 	if (ch->GetPremiumRemainSeconds(PREMIUM_FISH_MIND) > 0 ||
-			ch->IsEquipUniqueGroup(UNIQUE_GROUP_FISH_MIND)) //     Ȯ 
+			ch->IsEquipUniqueGroup(UNIQUE_GROUP_FISH_MIND)) // 월간어심 착용시 고급 물고기 확률 상승
 	{
 		if (quest::CQuestManager::instance().GetEventFlag("manwoo") != 0)
 			prob_idx = 3;
@@ -394,7 +394,7 @@ int DetermineFish(LPCHARACTER ch)
 			return 0;
 	}
 
-	if (g_iUseLocale) // ߱ ݵ, ݿ,   ʰ 
+	if (g_iUseLocale) // 중국에서는 금덩어리, 금열쇠, 은열쇠 나오지 않게 함
 	{
 		DWORD vnum = fish_info[fish_idx].vnum;
 
@@ -437,7 +437,7 @@ void FishingPractice(LPCHARACTER ch)
 	LPITEM rod = ch->GetWear(WEAR_WEAPON);
 	if (rod && rod->GetType() == ITEM_ROD)
 	{
-		// ִ õ ƴ  ô 
+		// 최대 수련도가 아닌 경우 낚시대 수련
 		if ( rod->GetRefinedVnum()>0 && rod->GetSocket(0) < rod->GetValue(2) && Random::get(1,rod->GetValue(1))==1 )
 		{
 			rod->SetSocket(0, rod->GetSocket(0) + 1);
@@ -449,14 +449,14 @@ void FishingPractice(LPCHARACTER ch)
 			}
 		}
 	}
-	// ̳ 
+	// 미끼를 뺀다
 	rod->SetSocket(2, 0);
 }
 
 bool PredictFish(LPCHARACTER ch)
 {
 	// ADD_PREMIUM
-	// ȯ
+	// 어심환
 	if (ch->FindAffect(AFFECT_FISH_MIND_PILL) || 
 			ch->GetPremiumRemainSeconds(PREMIUM_FISH_MIND) > 0 ||
 			ch->IsEquipUniqueGroup(UNIQUE_GROUP_FISH_MIND))
@@ -491,7 +491,7 @@ EVENTFUNC(fishing_event)
 
 	switch (info->step)
 	{
-		case 0:	// 鸮 Ǵ 丸 ư
+		case 0:	// 흔들리기 또는 떡밥만 날아감
 			++info->step;
 
 			//info->ch->Motion(MOTION_FISHING_SIGN);
@@ -600,7 +600,7 @@ int GetFishLength(int fish_id)
 
 void Take(fishing_event_info* info, LPCHARACTER ch)
 {
-	if (info->step == 1)	// Ⱑ ɸ ¸..
+	if (info->step == 1)	// 고기가 걸린 상태면..
 	{
 		int ms = (int) ((get_dword_time() - info->hang_time));
 		DWORD item_vnum = 0;
@@ -611,9 +611,9 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 
 		switch (ret)
 		{
-			case -2: //   
-			case -3: // ̵  
-			case -1: // ð Ȯ  
+			case -2: // 잡히지 않은 경우
+			case -3: // 난이도 때문에 실패
+			case -1: // 시간 확률 때문에 실패
 				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xB9\xCC\xB3\xA2\xB8\xB8 \xBB\xA9\xB8\xD4\xB0\xED \xC0\xEC\xBD\xCE\xB0\xD4 \xB5\xB5\xB8\xC1\xC4\xA8\xB4\xCF\xB4\xD9."));
 				{
 					int map_idx = ch->GetMapIndex();
@@ -652,7 +652,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 
 						if (quest::CQuestManager::instance().GetEventFlag("fishevent") > 0 && (info->fish_id == 5 || info->fish_id == 6))
 						{
-							// ̺Ʈ ̹Ƿ Ѵ.
+							// 이벤트 중이므로 기록한다.
 
 							TPacketGDHighscore p;
 							p.dwPID = ch->GetPlayerID();
@@ -758,7 +758,7 @@ void UseFish(LPCHARACTER ch, LPITEM item)
 {
 	int idx = item->GetVnum() - fish_info[2].vnum+2;
 
-	// Ƕ Ұ, ִ° ƴѰ Ұ
+	// 피라미 사용불가, 살아있는게 아닌건 사용불가
 
 	if (idx<=1 || idx >= MAX_FISH)
 		return;
@@ -769,12 +769,12 @@ void UseFish(LPCHARACTER ch, LPITEM item)
 
 	if (r >= 4001)
 	{
-		//  
+		// 죽은 물고기
 		ch->AutoGiveItem(fish_info[idx].dead_vnum);
 	}
 	else if (r >= 2001)
 	{
-		// 
+		// 생선뼈
 		ch->AutoGiveItem(FISH_BONE_VNUM);
 	}
 	else
@@ -878,14 +878,14 @@ int RealRefineRod(LPCHARACTER ch, LPITEM item)
 		if (pkNewItem)
 		{
 			BYTE bCell = rod->GetCell();
-			// ô  
+			// 낚시대 개량 성공
 			ITEM_MANAGER::instance().RemoveItem(rod, "REMOVE (REFINE FISH_ROD)");
 			pkNewItem->AddToCharacter(ch, TItemPos (INVENTORY, bCell)); 
 			LogManager::instance().ItemLog(ch, pkNewItem, "REFINE FISH_ROD SUCCESS", pkNewItem->GetName());
 			return 1;
 		}
 
-		// ô  
+		// 낚시대 개량 실패
 		return 2;
 	}
 	else
@@ -896,14 +896,14 @@ int RealRefineRod(LPCHARACTER ch, LPITEM item)
 		if (pkNewItem)
 		{
 			BYTE bCell = rod->GetCell();
-			// ô  
+			// 낚시대 개량에 성공
 			ITEM_MANAGER::instance().RemoveItem(rod, "REMOVE (REFINE FISH_ROD)");
 			pkNewItem->AddToCharacter(ch, TItemPos(INVENTORY, bCell)); 
 			LogManager::instance().ItemLog(ch, pkNewItem, "REFINE FISH_ROD FAIL", pkNewItem->GetName());
 			return 0;
 		}
 
-		// ô  
+		// 낚시대 개량 실패
 		return 2;
 	}
 }
diff --git a/src/game/src/gm.cpp b/src/game/src/gm.cpp
index dea53b2..68d0499 100644
--- a/src/game/src/gm.cpp
+++ b/src/game/src/gm.cpp
@@ -65,7 +65,7 @@ BYTE gm_new_get_level( const char * name, const char * host, const char* account
 		return GM_PLAYER;
 
 	// GERMAN_GM_NOT_CHECK_HOST
-	//   ȣƮ üũ  ʴ´.
+	// 독일 버전은 호스트 체크를 하지 않는다.
 	if ( LC_IsEurope() && !LC_IsTaiwan() || LC_IsSingapore() )
 	{
 	    if (account)
diff --git a/src/game/src/group_text_parse_tree.cpp b/src/game/src/group_text_parse_tree.cpp
index c55da8d..36c9a52 100644
--- a/src/game/src/group_text_parse_tree.cpp
+++ b/src/game/src/group_text_parse_tree.cpp
@@ -200,7 +200,7 @@ bool CGroupNode::GetRow(const std::string & c_rstrRowKey, OUT const CGroupNode::
 	return true;
 }
 
-// , idx txt    .
+// 참고로, idx랑 txt에 쓰여진 순서랑 관계 없음.
 bool CGroupNode::GetRow(int idx, OUT const CGroupNode::CGroupNodeRow ** ppRow) const
 {
 	if (idx >= m_map_rows.size())
@@ -223,7 +223,7 @@ bool CGroupNode::GetGroupRow(const std::string& stGroupName, const std::string&
 		if (pChildGroup->GetRow(stRow, ppRow))
 			return true;
 	}
-	// default group 캽.
+	// default group을 살펴봄.
 	pChildGroup = GetChildNode("default");
 	if (NULL != pChildGroup)
 	{
diff --git a/src/game/src/guild.cpp b/src/game/src/guild.cpp
index c08bf83..64d5afc 100644
--- a/src/game/src/guild.cpp
+++ b/src/game/src/guild.cpp
@@ -418,7 +418,7 @@ void CGuild::SendListPacket(LPCHARACTER ch)
 	   Count (byte)
 	   [
 	   ...
-	   name_flag 1 - ̸  Ⱥ
+	   name_flag 1 - 이름을 보내느냐 안보내느냐
 	   name CHARACTER_NAME_MAX_LEN+1
 	   ] * Count
 
@@ -560,7 +560,7 @@ void CGuild::LoadGuildMemberData(SQLMsg* pmsg)
 void CGuild::LoadGuildGradeData(SQLMsg* pmsg)
 {
 	/*
-    // 15 ƴ ɼ 
+    // 15개 아닐 가능성 존재
 	if (pmsg->Get()->iNumRows != 15)
 	{
 		SPDLOG_ERROR("Query failed: getting guild grade data. GuildID({})", GetID());
@@ -698,7 +698,7 @@ void CGuild::__P2PUpdateGrade(SQLMsg* pmsg)
 
 		grade--;
 
-		//  Ī  ٸٸ Ʈ
+		// 등급 명칭이 현재와 다르다면 업데이트
 		if (0 != strcmp(m_data.grade_array[grade].grade_name, name))
 		{
 			strlcpy(m_data.grade_array[grade].grade_name, name, sizeof(m_data.grade_array[grade].grade_name));
@@ -1084,7 +1084,7 @@ void CGuild::RefreshCommentForce(DWORD player_id)
         d->RawPacket(szName, sizeof(szName));
 
 		if (i == pmsg->Get()->uiNumRows - 1)
-			d->Packet(szContent, sizeof(szContent)); //  ̸ 
+			d->Packet(szContent, sizeof(szContent)); // 마지막 줄이면 보내기
 		else
             d->RawPacket(szContent, sizeof(szContent));
 	}
@@ -1263,7 +1263,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 	if ((pkSk->dwFlag & SKILL_FLAG_SELFONLY))
 	{
-		// ̹ ɷ Ƿ  .
+		// 이미 걸려 있으므로 사용하지 않음.
 		if (ch->FindAffect(pkSk->dwVnum))
 			return;
 
@@ -1315,7 +1315,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 	switch (dwVnum)
 	{
 		case GUILD_SKILL_TELEPORT:
-			//   ִ   õ.
+			// 현재 서버에 있는 사람을 먼저 시도.
 			SendDBSkillUpdate(-iNeededSP);
 			if ((victim = (CHARACTER_MANAGER::instance().FindByPID(pid))))
 				ch->WarpSet(victim->GetX(), victim->GetY());
@@ -1323,10 +1323,10 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 			{
 				if (m_memberP2POnline.find(pid) != m_memberP2POnline.end())
 				{
-					// ٸ  αε   -> ޽  ǥ ޾ƿ
-					// 1. A.pid, B.pid  Ѹ
-					// 2. B.pid   Ѹ A.pid, ǥ  
-					// 3. 
+					// 다른 서버에 로그인된 사람이 있음 -> 메시지 보내 좌표를 받아오자
+					// 1. A.pid, B.pid 를 뿌림
+					// 2. B.pid를 가진 서버가 뿌린서버에게 A.pid, 좌표 를 보냄
+					// 3. 워프
 					CCI * pcci = P2P_MANAGER::instance().FindByPID(pid);
 
 					if (pcci->bChannel != g_bChannel)
@@ -1897,11 +1897,11 @@ bool CGuild::HasLand()
 }
 
 // GUILD_JOIN_BUG_FIX
-///  ʴ event 
+/// 길드 초대 event 정보
 EVENTINFO(TInviteGuildEventInfo)
 {
-	DWORD	dwInviteePID;		///< ʴ character  PID
-	DWORD	dwGuildID;		///< ʴ Guild  ID
+	DWORD	dwInviteePID;		///< 초대받은 character 의 PID
+	DWORD	dwGuildID;		///< 초대한 Guild 의 ID
 
 	TInviteGuildEventInfo()
 	: dwInviteePID( 0 )
@@ -1911,8 +1911,8 @@ EVENTINFO(TInviteGuildEventInfo)
 };
 
 /**
- *  ʴ event callback Լ.
- * event  ߵϸ ʴ  óѴ.
+ * 길드 초대 event callback 함수.
+ * event 가 발동하면 초대 거절로 처리한다.
  */
 EVENTFUNC( GuildInviteEvent )
 {
@@ -1989,7 +1989,7 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 		return;
 
 	//
-	// ̺Ʈ 
+	// 이벤트 생성
 	// 
 	TInviteGuildEventInfo* pInfo = AllocEventInfo();
 	pInfo->dwInviteePID = pchInvitee->GetPlayerID();
@@ -1998,7 +1998,7 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 	m_GuildInviteEventMap.insert(EventMap::value_type(pchInvitee->GetPlayerID(), event_create(GuildInviteEvent, pInfo, PASSES_PER_SEC(10))));
 
 	//
-	// ʴ ޴ character  ʴ Ŷ 
+	// 초대 받는 character 에게 초대 패킷 전송
 	// 
 
 	DWORD gid = GetID();
diff --git a/src/game/src/guild_manager.cpp b/src/game/src/guild_manager.cpp
index ff38535..eceb7f2 100644
--- a/src/game/src/guild_manager.cpp
+++ b/src/game/src/guild_manager.cpp
@@ -504,7 +504,7 @@ void CGuildManager::RequestWarOver(DWORD dwGuild1, DWORD dwGuild2, DWORD dwGuild
 	TPacketGuildWar p;
 
 	p.bWar = GUILD_WAR_OVER;
-	//    .
+	// 길드전이 끝나도 보상은 없다.
 	//p.lWarPrice = lReward;
 	p.lWarPrice = 0;
 	p.bType = dwGuildWinner == 0 ? 1 : 0; // bType == 1 means draw for this packet.
@@ -952,7 +952,7 @@ void CGuildManager::ChangeMaster(DWORD dwGID)
 		iter->second->Load(dwGID);
 	}
 
-	// Ʈ  ֱ
+	// 업데이트된 정보 보내주기
 	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&CGuild::SendGuildDataUpdateToAllMember), iter->second), 
 			"SELECT 1");
 
diff --git a/src/game/src/guild_war.cpp b/src/game/src/guild_war.cpp
index 8cdcb9a..2a2c33c 100644
--- a/src/game/src/guild_war.cpp
+++ b/src/game/src/guild_war.cpp
@@ -140,12 +140,12 @@ DWORD CGuild::GetGuildWarMapIndex(DWORD dwOppGID)
 	return git->second.map_index;
 }
 
-bool CGuild::CanStartWar(BYTE bGuildWarType) // ŸԿ  ٸ    
+bool CGuild::CanStartWar(BYTE bGuildWarType) // 타입에 따라 다른 조건이 생길 수도 있음
 {
 	if (bGuildWarType >= GUILD_WAR_TYPE_MAX_NUM)
 		return false;
 
-	// ׽Ʈÿ ο Ȯ ʴ´.
+	// 테스트시에는 인원수를 확인하지 않는다.
 	if (test_server || quest::CQuestManager::instance().GetEventFlag("guild_war_test") != 0)
 		return GetLadderPoint() > 0;
 
@@ -317,7 +317,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 			return;
 		}
 
-		// Ŷ  to another server
+		// 패킷 보내기 to another server
 		TPacketGuildWar p;
 		p.bType = type;
 		p.bWar = GUILD_WAR_SEND_DECLARE;
@@ -336,7 +336,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 
 				if (saved_type == GUILD_WAR_TYPE_FIELD)
 				{
-					//  Ѱ ޾Ƶ鿴.
+					// 선전포고 한것을 받아들였다.
 					TPacketGuildWar p;
 					p.bType = saved_type;
 					p.bWar = GUILD_WAR_ON_WAR;
@@ -441,14 +441,14 @@ void CGuild::StartWar(DWORD dwOppGID)
 
 bool CGuild::WaitStartWar(DWORD dwOppGID)
 {
-	//ڱڽ̸ 
+	//자기자신이면 
 	if (dwOppGID == GetID())
 	{
 		SPDLOG_ERROR("GuildWar.WaitStartWar.DECLARE_WAR_SELF id({} -> {})", GetID(), dwOppGID);
 		return false;
 	}
 
-	//  TGuildWar  ´.
+	//상대방 길드 TGuildWar 를 얻어온다.
 	itertype(m_EnemyGuild) it = m_EnemyGuild.find(dwOppGID);
 	if (it == m_EnemyGuild.end())
 	{
@@ -456,7 +456,7 @@ bool CGuild::WaitStartWar(DWORD dwOppGID)
 		return false;
 	}
 
-	//۷ ϰ
+	//레퍼런스에 등록하고
 	TGuildWar & gw(it->second);
 
 	if (gw.state == GUILD_WAR_WAIT_START)
@@ -465,10 +465,10 @@ bool CGuild::WaitStartWar(DWORD dwOppGID)
 		return false;
 	}
 
-	//¸ Ѵ.
+	//상태를 저장한다.
 	gw.state = GUILD_WAR_WAIT_START;
 
-	//  Ŭ ͸ 
+	//상대편의 길드 클래스 포인터를 얻어오고
 	CGuild* g = CGuildManager::instance().FindGuild(dwOppGID);
 	if (!g)
 	{
@@ -481,14 +481,14 @@ bool CGuild::WaitStartWar(DWORD dwOppGID)
 	// END_OF_GUILDWAR_INFO
 
 
-	// ʵ̸ ʻ 
+	// 필드형이면 맵생성 안함
 	if (gw.type == GUILD_WAR_TYPE_FIELD)
 	{
 		SPDLOG_DEBUG("GuildWar.WaitStartWar.FIELD_TYPE id({} -> {})", GetID(), dwOppGID);
 		return true;
 	}		
 
-	//    Ȯ
+	// 전쟁 서버 인지 확인
 	SPDLOG_DEBUG("GuildWar.WaitStartWar.CheckWarServer id({} -> {}), type({}), map({})",
 			GetID(), dwOppGID, gw.type, rkGuildWarInfo.lMapIndex);
 
@@ -505,7 +505,7 @@ bool CGuild::WaitStartWar(DWORD dwOppGID)
 	if (id1 > id2)
 		std::swap(id1, id2);
 
-	//  
+	//워프 맵을 생성
 	DWORD lMapIndex = CWarMapManager::instance().CreateWarMap(rkGuildWarInfo, id1, id2);
 	if (!lMapIndex) 
 	{
@@ -516,10 +516,10 @@ bool CGuild::WaitStartWar(DWORD dwOppGID)
 
 	SPDLOG_DEBUG("GuildWar.WaitStartWar.CreateMap id({} vs {}), type({}), map({}) -> map_inst({})", id1, id2, gw.type, rkGuildWarInfo.lMapIndex, lMapIndex);
 
-	//  ε 
+	//길드전 정보에 맵인덱스를 세팅
 	gw.map_index = lMapIndex;
 
-	//ʿ (?)
+	//양쪽에 등록(?)
 	SetGuildWarMapIndex(dwOppGID, lMapIndex);
 	g->SetGuildWarMapIndex(GetID(), lMapIndex);
 
@@ -546,7 +546,7 @@ void CGuild::RequestRefuseWar(DWORD dwOppGID)
 
 	if (it != m_EnemyGuild.end() && it->second.state == GUILD_WAR_RECV_DECLARE)
 	{
-		//  ߴ.
+		// 선전포고를 거절했다.
 		TPacketGuildWar p;
 		p.bWar = GUILD_WAR_REFUSE;
 		p.dwGuildFrom = GetID();
diff --git a/src/game/src/horse_rider.cpp b/src/game/src/horse_rider.cpp
index aa3a6c5..3eabab6 100644
--- a/src/game/src/horse_rider.cpp
+++ b/src/game/src/horse_rider.cpp
@@ -14,10 +14,10 @@ const int HORSE_STAMINA_REGEN_INTERVAL = 12 * 60;
 
 THorseStat c_aHorseStat[HORSE_MAX_LEVEL+1] =
 /*
-   int iMinLevel;	// ž  ִ ּ 
+   int iMinLevel;	// 탑승할 수 있는 최소 레벨
    int iNPCRace;
-   int iMaxHealth;	//  ִ ü
-   int iMaxStamina;	//  ִ ׹̳
+   int iMaxHealth;	// 말의 최대 체력
+   int iMaxStamina;	// 말의 최대 스테미너
    int iST;
    int iDX;
    int iHT;
@@ -29,7 +29,7 @@ THorseStat c_aHorseStat[HORSE_MAX_LEVEL+1] =
  */
 {
 	{  0,	0,	1,	1,	0,	0,	0,	0,	0,	0,	0,	0  },
-	{ 25,	20101,	3,	4,	26,	35,	18,	9,	54,	43,	64,	32 },	// 1 (ʱ)
+	{ 25,	20101,	3,	4,	26,	35,	18,	9,	54,	43,	64,	32 },	// 1 (초급)
 	{ 25,	20101,	4,	4,	27,	36,	18,	9,	55,	44,	66,	33 },
 	{ 25,	20101,	5,	5,	28,	38,	19,	9,	56,	44,	67,	33 },
 	{ 25,	20101,	7,	5,	29,	39,	19,	10,	57,	45,	68,	34 },
@@ -39,7 +39,7 @@ THorseStat c_aHorseStat[HORSE_MAX_LEVEL+1] =
 	{ 25,	20101,	12,	7,	33,	44,	22,	11,	61,	48,	73,	36 },
 	{ 25,	20101,	13,	8,	34,	45,	22,	11,	62,	49,	74,	37 },
 	{ 25,	20101,	15,	10,	35,	46,	23,	12,	63,	50,	75,	37 },
-	{ 35,	20104,	18,	30,	40,	53,	27,	13,	69,	55,	82,	41 },	// 11 (߱)
+	{ 35,	20104,	18,	30,	40,	53,	27,	13,	69,	55,	82,	41 },	// 11 (중급)
 	{ 35,	20104,	19,	35,	41,	54,	27,	14,	70,	56,	84,	42 },
 	{ 35,	20104,	21,	40,	42,	56,	28,	14,	71,	56,	85,	42 },
 	{ 35,	20104,	22,	50,	43,	57,	28,	14,	72,	57,	86,	43 },
@@ -49,7 +49,7 @@ THorseStat c_aHorseStat[HORSE_MAX_LEVEL+1] =
 	{ 35,	20104,	28,	70,	46,	62,	31,	15,	76,	60,	91,	45 },
 	{ 35,	20104,	30,	80,	47,	63,	31,	16,	77,	61,	92,	46 },
 	{ 35,	20104,	32,	100,	48,	64,	32,	16,	78,	62,	93,	46 },
-	{ 50,	20107,	35,	120,	53,	71,	36,	18,	84,	67,	100,	50 },	// 21 ()
+	{ 50,	20107,	35,	120,	53,	71,	36,	18,	84,	67,	100,	50 },	// 21 (고급)
 	{ 50,	20107,	36,	125,	55,	74,	37,	18,	86,	68,	103,	51 },
 	{ 50,	20107,	37,	130,	57,	76,	38,	19,	88,	70,	105,	52 },
 	{ 50,	20107,	38,	135,	59,	78,	39,	20,	90,	72,	108,	54 },
@@ -117,7 +117,7 @@ bool CHorseRider::ReviveHorse()
 	m_Horse.sHealth = c_aHorseStat[level].iMaxHealth;
 	m_Horse.sStamina = c_aHorseStat[level].iMaxStamina;
 
-	// 2005.03.24.ipkn. 츰 ٽ ״  
+	// 2005.03.24.ipkn.말 살린후 다시 죽는 현상 수정
 	ResetHorseHealthDropTime();
 
 	StartStaminaRegenEvent();
@@ -138,11 +138,11 @@ short CHorseRider::GetHorseMaxStamina()
 
 void CHorseRider::FeedHorse()
 {
-	//   
+	// 말을 가지고 살아있을때만
 	if (GetHorseLevel() > 0 && GetHorseHealth() > 0)
 	{
 		UpdateHorseHealth(+1);
-		// 20050324. ipkn  Կ ü  ̸ ø.
+		// 20050324. ipkn 말 먹였을때도 체력 감소 딜레이를 늘린다.
 		ResetHorseHealthDropTime();
 	}
 }
@@ -159,7 +159,7 @@ void CHorseRider::UpdateHorseDataByLogoff(DWORD dwLogoffTime)
 		return;
 
 	if (dwLogoffTime >= 12 * 60)
-		UpdateHorseStamina(dwLogoffTime / 12 / 60, false); // α׿ 12д 1 ȸ
+		UpdateHorseStamina(dwLogoffTime / 12 / 60, false); // 로그오프 12분당 1씩 회복
 }
 
 void CHorseRider::UpdateHorseStamina(int iStamina, bool bSend)
diff --git a/src/game/src/input.cpp b/src/game/src/input.cpp
index 36329c6..06736c1 100644
--- a/src/game/src/input.cpp
+++ b/src/game/src/input.cpp
@@ -72,7 +72,7 @@ bool CInputProcessor::Process(LPDESC lpDesc, const void * c_pvOrig, int iBytes,
 		BYTE bHeader = (BYTE) *(c_pData);
 		const char * c_pszName;
 
-		if (bHeader == 0) // ȣȭ ó Ƿ 0  ŵѴ.
+		if (bHeader == 0) // 암호화 처리가 있으므로 0번 헤더는 스킵한다.
 			iPacketLen = 1;
 		else if (!m_pPacketInfo->Get(bHeader, &iPacketLen, &c_pszName))
 		{
@@ -249,7 +249,7 @@ ACMD(do_block_chat);
 
 int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 {
-	if (bHeader == 10) // ʹ 
+	if (bHeader == 10) // 엔터는 무시
 		return 0;
 
 	if (bHeader == HEADER_CG_TEXT)
@@ -257,7 +257,7 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 		++c_pData;
 		const char * c_pSep;
 
-		if (!(c_pSep = strchr(c_pData, '\n')))	// \n ã´.
+		if (!(c_pSep = strchr(c_pData, '\n')))	// \n을 찾는다.
 			return -1;
 
 		if (*(c_pSep - 1) == '\r')
@@ -356,7 +356,7 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 		else if (!stBuf.compare(0,15,"DELETE_AWARDID "))
 			{
 				char szTmp[64];
-				std::string msg = stBuf.substr(15,26);	// item_award id?
+				std::string msg = stBuf.substr(15,26);	// item_award의 id범위?
 				
 				TPacketDeleteAwardID p;
 				p.dwID = (DWORD)(atoi(msg.c_str()));
@@ -371,7 +371,7 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 			
 			if (d->IsAdminMode())
 			{
-				//  ɵ
+				// 어드민 명령들
 				if (!stBuf.compare(0, 7, "NOTICE "))
 				{
 					std::string msg = stBuf.substr(7, 50);
@@ -519,7 +519,7 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 					std::string strPrivEmpire;
 					is >> strPrivEmpire >> empire >> type >> value >> duration;
 
-					// ִġ 10
+					// 최대치 10배
 					value = std::clamp(value, 0, 1000);
 					stResult = "PRIV_EMPIRE FAIL";
 
@@ -534,7 +534,7 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 						{
 							stResult = "PRIV_EMPIRE SUCCEED";
 
-							// ð  
+							// 시간 단위로 변경
 							duration = duration * (60 * 60);
 
 							SPDLOG_DEBUG("_give_empire_privileage(empire={}, type={}, value={}, duration={}) by web",
@@ -569,13 +569,13 @@ int CInputHandshake::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 	{
 		if (!guild_mark_server)
 		{
-			// ! - ũ  ƴѵ ũ ûϷ?
+			// 끊어버려! - 마크 서버가 아닌데 마크를 요청하려고?
 			SPDLOG_ERROR("Guild Mark login requested but i'm not a mark server!");
 			d->SetPhase(PHASE_CLOSE);
 			return 0;
 		}
 
-		//   --;
+		// 무조건 인증 --;
 		SPDLOG_DEBUG("MARK_SERVER: Login");
 		d->SetPhase(PHASE_LOGIN);
 		return 0;
diff --git a/src/game/src/input_auth.cpp b/src/game/src/input_auth.cpp
index aa7b5b7..31f7509 100644
--- a/src/game/src/input_auth.cpp
+++ b/src/game/src/input_auth.cpp
@@ -23,11 +23,11 @@ bool FN_IS_VALID_LOGIN_STRING(const char *str)
 
 	for (tmp = str; *tmp; ++tmp)
 	{
-		// ĺ ڸ 
+		// 알파벳과 수자만 허용
 		if (isdigit(*tmp) || isalpha(*tmp))
 			continue;
 
-		// ijٴ  Ư 
+		// 캐나다는 몇몇 특수문자 허용
 		if (LC_IsCanada())
 		{
 			switch (*tmp)
@@ -111,7 +111,7 @@ void CInputAuth::Login(LPDESC d, const char * c_pData)
 		return;
 	}
 
-	// string Ἲ  
+	// string 무결성을 위해 복사
 	char login[LOGIN_MAX_LEN + 1];
 	trim_and_lower(pinfo->login, login, sizeof(login));
 
diff --git a/src/game/src/input_db.cpp b/src/game/src/input_db.cpp
index 1d4d125..47976f5 100644
--- a/src/game/src/input_db.cpp
+++ b/src/game/src/input_db.cpp
@@ -135,7 +135,7 @@ void CInputDB::LoginSuccess(DWORD dwHandle, const char *data)
 		return;
 	}
 
-	if (strcmp(pTab->status, "OK")) // OK ƴϸ
+	if (strcmp(pTab->status, "OK")) // OK가 아니면
 	{
 		SPDLOG_DEBUG("CInputDB::LoginSuccess - status[{}] is not OK [{}]", pTab->status, pTab->login);
 
@@ -158,7 +158,7 @@ void CInputDB::LoginSuccess(DWORD dwHandle, const char *data)
 
 	d->BindAccountTable(pTab);
 
-	if (!bFound) // ijͰ    .. -_-
+	if (!bFound) // 캐릭터가 없으면 랜덤한 제국으로 보낸다.. -_-
 	{
 		TPacketGCEmpire pe;
 		pe.bHeader = HEADER_GC_EMPIRE;
@@ -231,7 +231,7 @@ void CInputDB::PlayerCreateSuccess(LPDESC d, const char * data)
 
 	d->Packet(&pack, sizeof(TPacketGCPlayerCreateSuccess));
 
-	// ⺻  ȯθ 
+	// 기본 무기와 귀환부를 지급
 	TPlayerItem t;
 	memset(&t, 0, sizeof(t));
 
@@ -241,10 +241,10 @@ void CInputDB::PlayerCreateSuccess(LPDESC d, const char * data)
 		t.count	= 1;
 		t.owner	= r_Tab.players[pPacketDB->bAccountCharacterIndex].dwID;
 
-		//: ΰ+3,ö+3,Ź+3,+3,ݸ+3, ܱͰ+3, һ+3, +3, +3 
-		//ڰ+3,ȯΰ+3,Ź+3,ȵ+3,ȭȱ+3,+3, Ͱ+3, +3, +3 
-		//簩+3,+3,Ź+3,+3,ָ+3, ݱͰ+3, +3, +3
-		//磺õ+3,+3,Ź+3,ڸ+3,ȭ+3,ָ+3, ݱͰ+3, +3, +3
+		//무사: 자인갑+3,철편투구+3,금편신발+3,남만도+3,백금목걸이+3, 흑단귀걸이+3, 소산부+3, 오각패+3, 흑단팔찌+3 
+		//자객:영린+3,연환두건+3,금편신발+3,마안도+3,화안궁+3,옥목걸이+3, 옥귀걸이+3, 오각패+3, 흑단팔찌+3 
+		//수라:음양갑+3,애희투구+3,금편신발+3,남만도+3,진주목걸이+3, 백금귀걸이+3, 오각패+3, 흑단팔찌+3
+		//무당:서천의+3,태을모+3,금편신발+3,자린선+3,매화령+3,진주목걸이+3, 백금귀걸이+3, 오각패+3, 흑단팔찌+3
 
 		struct SInitialItem
 		{
@@ -347,7 +347,7 @@ void CInputDB::PlayerLoad(LPDESC d, const char * data)
 	{
 		lMapIndex = SECTREE_MANAGER::instance().GetMapIndex(pTab->x, pTab->y);
 
-		if (lMapIndex == 0) // ǥ ã  .
+		if (lMapIndex == 0) // 좌표를 찾을 수 없다.
 		{
 			lMapIndex = EMPIRE_START_MAP(d->GetAccountTable().bEmpire);
 			pos.x = EMPIRE_START_X(d->GetAccountTable().bEmpire);
@@ -361,11 +361,11 @@ void CInputDB::PlayerLoad(LPDESC d, const char * data)
 	}
 	pTab->lMapIndex = lMapIndex;
 
-	// Private ʿ ־µ, Private   ¶ ⱸ ư Ѵ.
+	// Private 맵에 있었는데, Private 맵이 사라진 상태라면 출구로 돌아가야 한다.
 	// ----
-	// ٵ ⱸ ư Ѵٸ鼭...  ⱸ ƴ϶ private map  Ǵ pulic map ġ ãİ...
-	// 縦 𸣴...  ϵڵ Ѵ.
-	// Ʊ͵̸, ⱸ...
+	// 근데 출구로 돌아가야 한다면서... 왜 출구가 아니라 private map 상에 대응되는 pulic map의 위치를 찾냐고...
+	// 역사를 모르니... 또 하드코딩 한다.
+	// 아귀동굴이면, 출구로...
 	// by rtsummit
 	if (!SECTREE_MANAGER::instance().GetValidLocation(pTab->lMapIndex, pTab->x, pTab->y, lMapIndex, pos, d->GetEmpire()))
 	{
@@ -479,11 +479,11 @@ void CInputDB::Boot(const char* data)
 {
 	signal_timer_disable();
 
-	// Ŷ  üũ
+	// 패킷 사이즈 체크
 	DWORD dwPacketSize = decode_4bytes(data);
 	data += 4;
 
-	// Ŷ  üũ
+	// 패킷 버전 체크
 	BYTE bVersion = decode_byte(data);
 	data += 1;
 
@@ -802,7 +802,7 @@ void CInputDB::Boot(const char* data)
 	data += size * sizeof(TItemIDRangeTable);
 
 	//ADMIN_MANAGER
-	// 
+	//관리자 등록
 	int ChunkSize = decode_2bytes(data );
 	data += 2;
 	int HostSize = decode_2bytes(data );
@@ -1170,7 +1170,7 @@ void CInputDB::SafeboxLoad(LPDESC d, const char * c_pData)
 	// END_OF_ADD_PREMIUM
 
 	//if (d->GetCharacter()->IsEquipUniqueItem(UNIQUE_ITEM_SAFEBOX_EXPAND))
-	//bSize = 3; // âȮ
+	//bSize = 3; // 창고확장권
 
 	//d->GetCharacter()->LoadSafebox(p->bSize * SAFEBOX_PAGE_SIZE, p->dwGold, p->wItemCount, (TPlayerItem *) (c_pData + sizeof(TSafeboxTable)));
 	d->GetCharacter()->LoadSafebox(bSize * SAFEBOX_PAGE_SIZE, p->dwGold, p->wItemCount, (TPlayerItem *) (c_pData + sizeof(TSafeboxTable)));
@@ -1190,7 +1190,7 @@ void CInputDB::SafeboxChangeSize(LPDESC d, const char * c_pData)
 }
 
 //
-// @version	05/06/20 Bang2ni - ReqSafeboxLoad  
+// @version	05/06/20 Bang2ni - ReqSafeboxLoad 의 취소
 //
 void CInputDB::SafeboxWrongPassword(LPDESC d)
 {
@@ -1250,7 +1250,7 @@ void CInputDB::LoginAlready(LPDESC d, const char * c_pData)
 	if (!d)
 		return;
 
-	// INTERNATIONAL_VERSION ̹ ̸  
+	// INTERNATIONAL_VERSION 이미 접속중이면 접속 끊음
 	{ 
 		TPacketDGLoginAlready * p = (TPacketDGLoginAlready *) c_pData;
 
@@ -1730,11 +1730,11 @@ void CInputDB::AuthLogin(LPDESC d, const char * c_pData)
 
 	if (bResult)
 	{
-		// Panama ȣȭ ѿ ʿ Ű 
+		// Panama 암호화 팩에 필요한 키 보내기
 		SendPanamaList(d);
 		ptoc.dwLoginKey = d->GetLoginKey();
 
-		//NOTE: AuthSucess   ȱ׷ PHASE Close Ǽ  ʴ´.-_-
+		//NOTE: AuthSucess보다 먼저 보내야지 안그러면 PHASE Close가 되서 보내지지 않는다.-_-
 		//Send Client Package CryptKey
 		{
 			DESC_MANAGER::instance().SendClientPackageCryptKey(d);
@@ -1762,7 +1762,7 @@ void CInputDB::ChangeEmpirePriv(const char* c_pData)
 }
 
 /**
- * @version 05/06/08	Bang2ni - ӽð ߰
+ * @version 05/06/08	Bang2ni - 지속시간 추가
  */
 void CInputDB::ChangeGuildPriv(const char* c_pData)
 {
@@ -2101,7 +2101,7 @@ void CInputDB::ReloadAdmin(const char * c_pData )
 
 ////////////////////////////////////////////////////////////////////
 // Analyze
-// @version	05/06/10 Bang2ni -   Ʈ Ŷ(HEADER_DG_MYSHOP_PRICELIST_RES) óƾ ߰.
+// @version	05/06/10 Bang2ni - 아이템 가격정보 리스트 패킷(HEADER_DG_MYSHOP_PRICELIST_RES) 처리루틴 추가.
 ////////////////////////////////////////////////////////////////////
 int CInputDB::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 {
@@ -2450,7 +2450,7 @@ int CInputDB::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 	case HEADER_DG_NEED_LOGIN_LOG:
 		DetailLog( (TPacketNeedLoginLogInfo*) c_pData );
 		break;
-	//    ׽Ʈ
+	// 독일 선물 기능 테스트
 	case HEADER_DG_ITEMAWARD_INFORMER:
 		ItemAwardInformer((TPacketItemAwardInfromer*) c_pData);
 		break;
@@ -2618,7 +2618,7 @@ void CInputDB::DetailLog(const TPacketNeedLoginLogInfo* info)
 
 void CInputDB::ItemAwardInformer(TPacketItemAwardInfromer *data)
 {	
-	LPDESC d = DESC_MANAGER::instance().FindByLoginName(data->login);	//login
+	LPDESC d = DESC_MANAGER::instance().FindByLoginName(data->login);	//login정보
 	
 	if(d == NULL)
 		return;
@@ -2627,12 +2627,12 @@ void CInputDB::ItemAwardInformer(TPacketItemAwardInfromer *data)
 		if (d->GetCharacter())
 		{
 			LPCHARACTER ch = d->GetCharacter();	
-			ch->SetItemAward_vnum(data->vnum);	// ch  ӽ سٰ QuestLoad Լ ó
+			ch->SetItemAward_vnum(data->vnum);	// ch 에 임시 저장해놨다가 QuestLoad 함수에서 처리
 			ch->SetItemAward_cmd(data->command);		
 
-			if(d->IsPhase(PHASE_GAME))			//϶
+			if(d->IsPhase(PHASE_GAME))			//게임페이즈일때
 			{
-				quest::CQuestManager::instance().ItemInformer(ch->GetPlayerID(),ch->GetItemAward_vnum());	//questmanager ȣ
+				quest::CQuestManager::instance().ItemInformer(ch->GetPlayerID(),ch->GetItemAward_vnum());	//questmanager 호출
 			}
 		}
 	}
diff --git a/src/game/src/input_login.cpp b/src/game/src/input_login.cpp
index ea2e739..b80d509 100644
--- a/src/game/src/input_login.cpp
+++ b/src/game/src/input_login.cpp
@@ -68,13 +68,13 @@ static bool FN_is_battle_zone(LPCHARACTER ch)
 {
 	switch (ch->GetMapIndex())
 	{
-		case 1:         // ż 1 
-		case 2:         // ż 2 
-		case 21:        // õ 1 
-		case 23:        // õ 2 
-		case 41:        //  1 
-		case 43:        //  2 
-		case 113:       // OX 
+		case 1:         // 신수 1차 마을
+		case 2:         // 신수 2차 마을
+		case 21:        // 천조 1차 마을
+		case 23:        // 천조 2차 마을
+		case 41:        // 진노 1차 마을
+		case 43:        // 진노 2차 마을
+		case 113:       // OX 맵
 			return false;
 	}
 
@@ -373,7 +373,7 @@ bool RaceToJob(unsigned race, unsigned* ret_job)
 	return true;
 }
 
-// ű ij 
+// 신규 캐릭터 지원
 bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE shape, BYTE bEmpire)
 {
 	if (race >= MAIN_RACE_MAX_NUM)
@@ -397,7 +397,7 @@ bool NewPlayerTable2(TPlayerTable * table, const char * name, BYTE race, BYTE sh
 	strlcpy(table->name, name, sizeof(table->name));
 
 	table->level		= 1;
-	table->job			= race;	//   ִ´
+	table->job			= race;	// 직업대신 종족을 넣는다
 	table->voice		= 0;
 	table->part_base	= shape;
 
@@ -443,7 +443,7 @@ void CInputLogin::CharacterCreate(LPDESC d, const char * data)
 		return;
 	}
 
-	//    ̸̰ų, ߸ ̸  
+	// 사용할 수 없는 이름이거나, 잘못된 평상복이면 생설 실패
 	if (!check_name(pinfo->name) || pinfo->shape > 1)
 	{
 		if (LC_IsCanada() == true)
@@ -573,7 +573,7 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 
 	CGuildManager::instance().LoginMember(ch);
 
-	// ij͸ ʿ ߰ 
+	// 캐릭터를 맵에 추가 
 	ch->Show(ch->GetMapIndex(), pos.x, pos.y, pos.z);
 
 	SECTREE_MANAGER::instance().SendNPCPosition(ch);
@@ -581,8 +581,8 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 
 	d->SetPhase(PHASE_GAME);
 
-	if(ch->GetItemAward_cmd())																		// 
-		quest::CQuestManager::instance().ItemInformer(ch->GetPlayerID(),ch->GetItemAward_vnum());	//questmanager ȣ
+	if(ch->GetItemAward_cmd())																		//게임페이즈 들어가면
+		quest::CQuestManager::instance().ItemInformer(ch->GetPlayerID(),ch->GetItemAward_vnum());	//questmanager 호출
 	
 	SPDLOG_DEBUG("ENTERGAME: {} {}x{}x{} {} map_index {}",
 			ch->GetName(), ch->GetX(), ch->GetY(), ch->GetZ(), d->GetHostName(), ch->GetMapIndex());
@@ -592,10 +592,10 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 		ch->EnterHorse();
 	}
 
-	// ÷̽ð ڵ 
+	// 플레이시간 레코딩 시작
 	ch->ResetPlayTime();
 
-	// ڵ  ̺Ʈ ߰
+	// 자동 저장 이벤트 추가
 	ch->StartSaveEvent();
 	ch->StartRecoveryEvent();
 	ch->StartCheckSpeedHackEvent();
@@ -751,10 +751,10 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 	}
 	else if (ch->GetMapIndex() == 113)
 	{
-		// ox ̺Ʈ 
+		// ox 이벤트 맵
 		if (COXEventManager::instance().Enter(ch) == false)
 		{
-			// ox   㰡  . ÷̾  
+			// ox 맵 진입 허가가 나지 않음. 플레이어면 마을로 보내자
 			if (ch->GetGMLevel() == GM_PLAYER)
 				ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
 		}
@@ -769,8 +769,8 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 		}
 	}
 
-	// ûҳ ȣ
-	if (g_TeenDesc) // RawPacket  
+	// 청소년 보호
+	if (g_TeenDesc) // RawPacket 사용 금지
 	{
 		TPacketGTLogin p;
 
@@ -790,7 +790,7 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 			db_clientdesc->DBPacket(HEADER_GD_REQ_HORSE_NAME, 0, &pid, sizeof(DWORD));
 	}
 
-	// ߸ʿ  ȳϱ
+	// 중립맵에 들어갔을때 안내하기
 	if (g_noticeBattleZone)
 	{
 		if (FN_is_battle_zone(ch))
@@ -850,13 +850,13 @@ int CInputLogin::GuildSymbolUpload(LPDESC d, const char* c_pData, size_t uiBytes
 
 	if (iSymbolSize <= 0 || iSymbolSize > 64 * 1024)
 	{
-		// 64k  ū  ɺ ø
-		//   
+		// 64k 보다 큰 길드 심볼은 올릴수없다
+		// 접속을 끊고 무시
 		d->SetPhase(PHASE_CLOSE);
 		return 0;
 	}
 
-	//     .
+	// 땅을 소유하지 않은 길드인 경우.
 	if (!test_server)
 		if (!building::CManager::instance().FindLandByGuild(p->guild_id))
 		{
@@ -972,7 +972,7 @@ void CInputLogin::GuildMarkCRCList(LPDESC d, const char* c_pData)
 	CGuildMarkManager::instance().GetDiffBlocks(pCG->imgIdx, pCG->crclist, mapDiffBlocks);
 
 	DWORD blockCount = 0;
-	TEMP_BUFFER buf(1024 * 1024); // 1M 
+	TEMP_BUFFER buf(1024 * 1024); // 1M 버퍼
 
 	for (itertype(mapDiffBlocks) it = mapDiffBlocks.begin(); it != mapDiffBlocks.end(); ++it)
 	{
diff --git a/src/game/src/input_main.cpp b/src/game/src/input_main.cpp
index f94d866..69a72a1 100644
--- a/src/game/src/input_main.cpp
+++ b/src/game/src/input_main.cpp
@@ -45,7 +45,7 @@ extern int g_nPortalLimitTime;
 
 static int __deposit_limit()
 {
-	return (1000*10000); // 1õ
+	return (1000*10000); // 1천만
 }
 
 void SendBlockChatInfo(LPCHARACTER ch, int sec)
@@ -181,7 +181,7 @@ int GetTextTag(const char * src, int maxLen, int & tagLen, std::string & extraIn
 
 	const char * cur = ++src;
 
-	if (*cur == '|') // || | ǥѴ.
+	if (*cur == '|') // ||는 |로 표시한다.
 	{
 		tagLen = 2;
 		return TEXT_TAG_TAG;
@@ -191,7 +191,7 @@ int GetTextTag(const char * src, int maxLen, int & tagLen, std::string & extraIn
 		tagLen = 2;
 		return TEXT_TAG_COLOR;
 	}
-	else if (*cur == 'H') // hyperlink |Hitem:10000:0:0:0:0|h[̸]|h
+	else if (*cur == 'H') // hyperlink |Hitem:10000:0:0:0:0|h[이름]|h
 	{
 		tagLen = 2;
 		return TEXT_TAG_HYPERLINK_START;
@@ -229,12 +229,12 @@ void GetTextTagInfo(const char * src, int src_len, int & hyperlinks, bool & colo
 
 int ProcessTextTag(LPCHARACTER ch, const char * c_pszText, size_t len)
 {
-	//2012.05.17 
-	//0 :  
-	//1 : ݰ 
-	//2 : ݰ , λ 
-	//3 : ȯ
-	//4 : 
+	//2012.05.17 김용욱
+	//0 : 정상적으로 사용
+	//1 : 금강경 부족
+	//2 : 금강경이 있으나, 개인상점에서 사용중
+	//3 : 교환중
+	//4 : 에러
 	int hyperlinks;
 	bool colored;
 	
@@ -419,18 +419,18 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 			if (g_bEmpireWhisper)
 				if (!ch->IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_LANGUAGE))
 					if (!(pkChr && pkChr->IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_LANGUAGE)))
-						if (bOpponentEmpire != ch->GetEmpire() && ch->GetEmpire() && bOpponentEmpire //   ٸ鼭
-								&& ch->GetGMLevel() == GM_PLAYER && gm_get_level(pinfo->szNameTo) == GM_PLAYER) // Ѵ Ϲ ÷̸̾
-							// ̸ ۿ 𸣴 gm_get_level Լ 
+						if (bOpponentEmpire != ch->GetEmpire() && ch->GetEmpire() && bOpponentEmpire // 서로 제국이 다르면서
+								&& ch->GetGMLevel() == GM_PLAYER && gm_get_level(pinfo->szNameTo) == GM_PLAYER) // 둘다 일반 플레이어이면
+							// 이름 밖에 모르니 gm_get_level 함수를 사용
 						{
 							if (!pkChr)
 							{
-								// ٸ    ǥø Ѵ. bType  4Ʈ Empireȣ Ѵ.
+								// 다른 서버에 있으니 제국 표시만 한다. bType의 상위 4비트를 Empire번호로 사용한다.
 								bType = ch->GetEmpire() << 4;
 							}
 							else
 							{
-								ConvertEmpireText(ch->GetEmpire(), buf, buflen, 10 + 2 * pkChr->GetSkillPower(SKILL_LANGUAGE1 + ch->GetEmpire() - 1)/*ȯȮ*/);
+								ConvertEmpireText(ch->GetEmpire(), buf, buflen, 10 + 2 * pkChr->GetSkillPower(SKILL_LANGUAGE1 + ch->GetEmpire() - 1)/*변환확률*/);
 							}
 						}
 
@@ -445,7 +445,7 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 					{
 						char buf[128];
 						int len;
-						if (3==processReturn) //ȯ
+						if (3==processReturn) //교환중
 							len = snprintf(buf, sizeof(buf), LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
 						else
 							len = snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
@@ -454,7 +454,7 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 						if (len < 0 || len >= (int) sizeof(buf))
 							len = sizeof(buf) - 1;
 
-						++len;  // \0  
+						++len;  // \0 문자 포함
 
 						TPacketGCWhisper pack;
 
@@ -470,7 +470,7 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 					}
 				}
 
-				//    Ƿ ̸ Ǯش.
+				// 릴래이 상태일 수 있으므로 릴래이를 풀어준다.
 				pkDesc->SetRelay("");
 				return (iExtraLen);
 			}
@@ -487,8 +487,8 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 				pack.bType = bType;
 				strlcpy(pack.szNameFrom, ch->GetName(), sizeof(pack.szNameFrom));
 
-				// desc->BufferedPacket  ʰ ۿ ϴ  
-				// P2P relayǾ Ŷ ĸȭ   ֱ ̴.
+				// desc->BufferedPacket을 하지 않고 버퍼에 써야하는 이유는 
+				// P2P relay되어 패킷이 캡슐화 될 수 있기 때문이다.
 				TEMP_BUFFER tmpbuf;
 
 				tmpbuf.write(&pack, sizeof(pack));
@@ -563,7 +563,7 @@ struct FEmpireChatPacket
 		}
 		else
 		{
-			//  ų ٸ Ź ؾմϴ
+			// 사람마다 스킬레벨이 다르니 매번 해야합니다
 			strlcpy(converted_msg, orig_msg, sizeof(converted_msg));
 
 			ConvertEmpireText(bEmpire, converted_msg + namelen, sizeof(converted_msg) - namelen, 10 + 2 * d->GetCharacter()->GetSkillPower(SKILL_LANGUAGE1 + bEmpire - 1));
@@ -595,17 +595,17 @@ struct FYmirChatPacket
 		m_iMapIndex(iMapIndex), m_bEmpire(empire),
 		m_ring(ring)
 	{
-		m_len_orig_msg = snprintf(m_orig_msg, sizeof(m_orig_msg), "%s : %s", m_szName, m_szChat) + 1; //   
+		m_len_orig_msg = snprintf(m_orig_msg, sizeof(m_orig_msg), "%s : %s", m_szName, m_szChat) + 1; // 널 문자 포함
 
 		if (m_len_orig_msg < 0 || m_len_orig_msg >= (int) sizeof(m_orig_msg))
 			m_len_orig_msg = sizeof(m_orig_msg) - 1;
 
-		m_len_conv_msg = snprintf(m_conv_msg, sizeof(m_conv_msg), "??? : %s", m_szChat) + 1; //   
+		m_len_conv_msg = snprintf(m_conv_msg, sizeof(m_conv_msg), "??? : %s", m_szChat) + 1; // 널 문자 미포함
 
 		if (m_len_conv_msg < 0 || m_len_conv_msg >= (int) sizeof(m_conv_msg))
 			m_len_conv_msg = sizeof(m_conv_msg) - 1;
 
-		ConvertEmpireText(m_bEmpire, m_conv_msg + 6, m_len_conv_msg - 6, 10); // 6 "??? : " 
+		ConvertEmpireText(m_bEmpire, m_conv_msg + 6, m_len_conv_msg - 6, 10); // 6은 "??? : "의 길이
 	}
 
 	void operator() (LPDESC d)
@@ -673,7 +673,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		return iExtraLen;
 	}
 
-	// ä  Affect ó
+	// 채팅 금지 Affect 처리
 	const CAffect* pAffect = ch->FindAffect(AFFECT_BLOCK_CHAT);
 
 	if (pAffect != NULL)
@@ -710,7 +710,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 		if (NULL != pTable)
 		{
-			if (3==processReturn) //ȯ
+			if (3==processReturn) //교환중
 				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
 			else
 				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
@@ -843,7 +843,7 @@ void CInputMain::ItemDrop(LPCHARACTER ch, const char * data)
 	if (!ch)
 		return;
 
-	// ũ 0 ũ ũ   ̴.
+	// 엘크가 0보다 크면 엘크를 버리는 것 이다.
 	if (pinfo->gold > 0)
 		ch->DropGold(pinfo->gold);
 	else
@@ -859,7 +859,7 @@ void CInputMain::ItemDrop2(LPCHARACTER ch, const char * data)
 
 	TPacketCGItemDrop2 * pinfo = (TPacketCGItemDrop2 *) data;
 
-	// ũ 0 ũ ũ   ̴.
+	// 엘크가 0보다 크면 엘크를 버리는 것 이다.
 	
 	if (!ch)
 		return;
@@ -945,7 +945,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 					return sizeof(TPacketCGMessengerAddByVID);
 				}
 
-				if (ch->GetDesc() == d) // ڽ ߰  .
+				if (ch->GetDesc() == d) // 자신은 추가할 수 없다.
 					return sizeof(TPacketCGMessengerAddByVID);
 
 				MessengerManager::instance().RequestToAdd(ch, ch_companion);
@@ -973,7 +973,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA \xC1\xA2\xBC\xD3\xB5\xC7 \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."), name);
 				else
 				{
-					if (tch == ch) // ڽ ߰  .
+					if (tch == ch) // 자신은 추가할 수 없다.
 						return CHARACTER_NAME_MAX_LEN;
 
 					if (tch->IsBlockMode(BLOCK_MESSENGER_INVITE) == true)
@@ -982,7 +982,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 					}
 					else
 					{
-						// ޽ ijʹ Ǹ鼭 
+						// 메신저가 캐릭터단위가 되면서 변경
 						MessengerManager::instance().RequestToAdd(ch, tch);
 						//MessengerManager::instance().AddToList(ch->GetName(), tch->GetName());
 					}
@@ -1268,7 +1268,7 @@ static const int ComboSequenceBySkillLevel[3][8] =
 DWORD ClacValidComboInterval( LPCHARACTER ch, BYTE bArg )
 {
 	int nInterval = 300;
-	float fAdjustNum = 1.5f; // Ϲ  speed hack  ɸ   . 2013.09.10 CYH
+	float fAdjustNum = 1.5f; // 일반 유저가 speed hack 에 걸리는 것을 막기 위해. 2013.09.10 CYH
 
 	if( !ch )
 	{
@@ -1299,17 +1299,17 @@ DWORD ClacValidComboInterval( LPCHARACTER ch, BYTE bArg )
 
 bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack)
 {
-	//	װų  ¿   Ƿ, skipѴ.
-	//	̷  , CHRACTER::CanMove() 
+	//	죽거나 기절 상태에서는 공격할 수 없으므로, skip한다.
+	//	이렇게 하지 말고, CHRACTER::CanMove()에 
 	//	if (IsStun() || IsDead()) return false;
-	//	 ߰ϴ° ´ٰ ϳ,
-	//	̹ ٸ κп CanMove() IsStun(), IsDead()
-	//	 üũϰ ֱ    
-	//	ּȭϱ  ̷  ڵ带 ´.
+	//	를 추가하는게 맞다고 생각하나,
+	//	이미 다른 부분에서 CanMove()는 IsStun(), IsDead()과
+	//	독립적으로 체크하고 있기 때문에 수정에 의한 영향을
+	//	최소화하기 위해 이렇게 땜빵 코드를 써놓는다.
 	if (ch->IsStun() || ch->IsDead())
 		return false;
 	int ComboInterval = dwTime - ch->GetLastComboTime();
-	int HackScalar = 0; // ⺻ Į  1
+	int HackScalar = 0; // 기본 스칼라 단위 1
 
 	// [2013 09 11 CYH] debugging log
 		/*SPDLOG_DEBUG("COMBO_TEST_LOG: {} arg:{} interval:{} valid:{} atkspd:{} riding:{}",
@@ -1324,18 +1324,18 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
     SPDLOG_DEBUG("COMBO: {} arg:{} seq:{} delta:{} checkspeedhack:{}",
 			ch->GetName(), bArg, ch->GetComboSequence(), ComboInterval - ch->GetValidComboInterval(), CheckSpeedHack);
 #endif
-	// bArg 14 ~ 21   8޺ 
-	// 1. ù ޺(14)  ð Ŀ ݺ 
-	// 2. 15 ~ 21 ݺ Ұ
-	// 3. ʴ Ѵ.
+	// bArg 14 ~ 21번 까지 총 8콤보 가능
+	// 1. 첫 콤보(14)는 일정 시간 이후에 반복 가능
+	// 2. 15 ~ 21번은 반복 불가능
+	// 3. 차례대로 증가한다.
 	if (bArg == 14)
 	{
 		if (CheckSpeedHack && ComboInterval > 0 && ComboInterval < ch->GetValidComboInterval() - COMBO_HACK_ALLOWABLE_MS)
 		{
-			// FIXME ù° ޺ ̻ϰ    ־ 300  -_-;
-			// ټ Ϳ  ٿǴ Ȳ  ϸ
-			// ù° ޺ ſ  ͹  Ȳ ߻.
-			// ̷  ޺ ƨ 찡 ־  ڵ  Ȱȭ.
+			// FIXME 첫번째 콤보는 이상하게 빨리 올 수가 있어서 300으로 나눔 -_-;
+			// 다수의 몬스터에 의해 다운되는 상황에서 공격을 하면
+			// 첫번째 콤보가 매우 적은 인터벌로 들어오는 상황 발생.
+			// 이로 인해 콤보핵으로 튕기는 경우가 있어 다음 코드 비 활성화.
 			//HackScalar = 1 + (ch->GetValidComboInterval() - ComboInterval) / 300;
 
 			//SPDLOG_WARN("COMBO_HACK: 2 {} arg:{} interval:{} valid:{} atkspd:{} riding:{}",
@@ -1357,13 +1357,13 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
 	{
 		int idx = std::min(2, ch->GetComboIndex());
 
-		if (ch->GetComboSequence() > 5) //  6޺ ̻ .
+		if (ch->GetComboSequence() > 5) // 현재 6콤보 이상은 없다.
 		{
 			HackScalar = 1;
 			ch->SetValidComboInterval(300);
 			SPDLOG_WARN("COMBO_HACK: 5 {} combo_seq:{}", ch->GetName(), ch->GetComboSequence());
 		}
-		// ڰ ּ ޺ ó
+		// 자객 쌍수 콤보 예외처리
 		else if (bArg == 21 &&
 				 idx == 2 &&
 				 ch->GetComboSequence() == 5 &&
@@ -1398,7 +1398,7 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
 						ch->IsRiding() ? "yes" : "no");
 			}
 
-			//    15 ~ 16 ݺѴ
+			// 말을 탔을 때는 15번 ~ 16번을 반복한다
 			//if (ch->IsHorseRiding())
 			if (ch->IsRiding())
 				ch->SetComboSequence(ch->GetComboSequence() == 1 ? 2 : 1);
@@ -1411,13 +1411,13 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
 			ch->SetLastComboTime(dwTime);
 		}
 	}
-	else if (bArg == 13) // ⺻  (а(Polymorph)  ´)
+	else if (bArg == 13) // 기본 공격 (둔갑(Polymorph)했을 때 온다)
 	{
 		if (CheckSpeedHack && ComboInterval > 0 && ComboInterval < ch->GetValidComboInterval() - COMBO_HACK_ALLOWABLE_MS)
 		{
-			// ټ Ϳ  ٿǴ Ȳ  ϸ
-			// ù° ޺ ſ  ͹  Ȳ ߻.
-			// ̷  ޺ ƨ 찡 ־  ڵ  Ȱȭ.
+			// 다수의 몬스터에 의해 다운되는 상황에서 공격을 하면
+			// 첫번째 콤보가 매우 적은 인터벌로 들어오는 상황 발생.
+			// 이로 인해 콤보핵으로 튕기는 경우가 있어 다음 코드 비 활성화.
 			//HackScalar = 1 + (ch->GetValidComboInterval() - ComboInterval) / 100;
 
             //SPDLOG_WARN("COMBO_HACK: 6 {} arg:{} interval:{} valid:{} atkspd:{}",
@@ -1440,8 +1440,8 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
 				SPDLOG_ERROR("cannot find motion by race {}", ch->GetRaceNum());
 			else
 			{
-				//  ̶ 1000.f ؾ  Ŭ̾Ʈ ִϸ̼ ӵ 90%
-				//  ִϸ̼  ϹǷ 900.f Ѵ.
+				// 정상적 계산이라면 1000.f를 곱해야 하지만 클라이언트가 애니메이션 속도의 90%에서
+				// 다음 애니메이션 블렌딩을 허용하므로 900.f를 곱한다.
 				int k = (int) (pkMotion->GetDuration() / ((float) ch->GetPoint(POINT_ATT_SPEED) / 100.f) * 900.f);
 				ch->SetValidComboInterval(k);
 				ch->SetLastComboTime(dwTime);
@@ -1458,32 +1458,32 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
 		}
 		else
 		{
-			//  ȵǴ ޺ Դ Ŀ ɼ?
+			// 말이 안되는 콤보가 왔다 해커일 가능성?
 			//if (ch->GetDesc()->DelayedDisconnect(Random::get(2, 9)))
 			//{
 			//	LogManager::instance().HackLog("Hacker", ch);
 			//	SPDLOG_WARN("HACKER: {} arg {}", ch->GetName(), bArg);
 			//}
 
-			//  ڵ ,  Ǫ ߿  ϸ,
-			//   νϴ 찡 ִ.
+			// 위 코드로 인해, 폴리모프를 푸는 중에 공격 하면,
+			// 가끔 핵으로 인식하는 경우가 있다.
 
-			// ڼ ,
-			//  poly 0 ó,
-			// Ŭ󿡼  Ŷ ޱ ,  . <- ,  ¿ .
+			// 자세히 말혀면,
+			// 서버에서 poly 0를 처리했지만,
+			// 클라에서 그 패킷을 받기 전에, 몹을 공격. <- 즉, 몹인 상태에서 공격.
 			//
-			// ׷ Ŭ󿡼   · ߴٴ Ŀǵ带  (arg == 13)
+			// 그러면 클라에서는 서버에 몹 상태로 공격했다는 커맨드를 보내고 (arg == 13)
 			//
-			//  race ΰε ´  ̴!  Ͽ üũ ߴ.
+			// 서버에서는 race는 인간인데 공격형태는 몹인 놈이다! 라고 하여 핵체크를 했다.
 
-			//   Ͽ   Ŭ̾Ʈ Ǵؼ   ƴ϶,
-			//  Ǵؾ  ε...  ̷ س...
+			// 사실 공격 패턴에 대한 것은 클라이언트에서 판단해서 보낼 것이 아니라,
+			// 서버에서 판단해야 할 것인데... 왜 이렇게 해놨을까...
 			// by rtsummit
 		}
 	}
 	else
 	{
-		//  ȵǴ ޺ Դ Ŀ ɼ?
+		// 말이 안되는 콤보가 왔다 해커일 가능성?
 		if (ch->GetDesc()->DelayedDisconnect(Random::get(2, 9)))
 		{
 			LogManager::instance().HackLog("Hacker", ch);
@@ -1496,7 +1496,7 @@ bool CheckComboHack(LPCHARACTER ch, BYTE bArg, DWORD dwTime, bool CheckSpeedHack
 
 	if (HackScalar)
 	{
-		//  Ÿų   1.5ʰ    ʵ ݷ  ϴ ó
+		// 말에 타거나 내렸을 때 1.5초간 공격은 핵으로 간주하지 않되 공격력은 없게 하는 처리
 		if (get_dword_time() - ch->GetLastMountTime() > 1500)
 			ch->IncreaseComboHackCount(1 + HackScalar);
 
@@ -1531,9 +1531,9 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 	//	FUNC_SKILL = 0x80,
 	//};  
 
-	// ڷƮ  üũ
+	// 텔레포트 핵 체크
 
-//	if (!test_server)	//2012.05.15  : ׼ (·) ټ   ٿǸ鼭 ݽ ޺ ״  ־.
+//	if (!test_server)	//2012.05.15 김용욱 : 테섭에서 (무적상태로) 다수 몬스터 상대로 다운되면서 공격시 콤보핵으로 죽는 문제가 있었다.
 	{
 		const float fDist = DISTANCE_SQRT((ch->GetX() - pinfo->lX) / 100, (ch->GetY() - pinfo->lY) / 100);
 
@@ -1544,7 +1544,7 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 				const PIXEL_POSITION & warpPos = ch->GetWarpPosition();
 
 				if (warpPos.x == 0 && warpPos.y == 0)
-					LogManager::instance().HackLog("Teleport", ch); // Ȯ  
+					LogManager::instance().HackLog("Teleport", ch); // 부정확할 수 있음
 			}
 
 			SPDLOG_WARN("MOVE: {} trying to move too far (dist: {:.1f}m) Riding({})", ch->GetName(), fDist, ch->IsRiding());
@@ -1555,10 +1555,10 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 		}
 
 		//
-		// ǵ(SPEEDHACK) Check
+		// 스피드핵(SPEEDHACK) Check
 		//
 		DWORD dwCurTime = get_dword_time();
-		// ð Syncϰ 7   ˻Ѵ. (20090702  5ʿ)
+		// 시간을 Sync하고 7초 후 부터 검사한다. (20090702 이전엔 5초였음)
 		bool CheckSpeedHack = (false == ch->GetDesc()->IsHandshaking() && dwCurTime - ch->GetDesc()->GetClientTime() > 7000);
 
 		if (CheckSpeedHack)
@@ -1568,13 +1568,13 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 
 			iDelta = (int) (dwCurTime - pinfo->dwTime);
 
-			// ð ʰ԰. ϴ α׸ صд. ¥ ̷   üũؾ. TODO
+			// 시간이 늦게간다. 일단 로그만 해둔다. 진짜 이런 사람들이 많은지 체크해야함. TODO
 			if (iDelta >= 30000)
 			{
 				SPDLOG_WARN("SPEEDHACK: slow timer name {} delta {}", ch->GetName(), iDelta);
 				ch->GetDesc()->DelayedDisconnect(3);
 			}
-			// 1ʿ 20msec  °  Ѵ.
+			// 1초에 20msec 빨리 가는거 까지는 이해한다.
 			else if (iDelta < -(iServerDelta / 50))
 			{
 				SPDLOG_WARN("SPEEDHACK: DETECTED! {} (delta {} {})", ch->GetName(), iDelta, iServerDelta);
@@ -1583,11 +1583,11 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 		}
 
 		//
-		// ޺  ǵ üũ
+		// 콤보핵 및 스피드핵 체크
 		//
 		if (pinfo->bFunc == FUNC_COMBO && g_bCheckMultiHack)
 		{
-			CheckComboHack(ch, pinfo->bArg, pinfo->dwTime, CheckSpeedHack); // ޺ üũ
+			CheckComboHack(ch, pinfo->bArg, pinfo->dwTime, CheckSpeedHack); // 콤보 체크
 		}
 	}
 
@@ -1596,7 +1596,7 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 		if (ch->GetLimitPoint(POINT_MOV_SPEED) == 0)
 			return;
 
-		ch->SetRotation(pinfo->bRot * 5);	// ߺ ڵ
+		ch->SetRotation(pinfo->bRot * 5);	// 중복 코드
 		ch->ResetStopTime();				// ""
 
 		ch->Goto(pinfo->lX, pinfo->lY);
@@ -1635,7 +1635,7 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 			ch->OnMove();
 		}
 
-		ch->SetRotation(pinfo->bRot * 5);	// ߺ ڵ
+		ch->SetRotation(pinfo->bRot * 5);	// 중복 코드
 		ch->ResetStopTime();				// ""
 
 		ch->Move(pinfo->lX, pinfo->lY);
@@ -1657,13 +1657,13 @@ void CInputMain::Move(LPCHARACTER ch, const char * data)
 
 	ch->PacketAround(&pack, sizeof(TPacketGCMove), ch);
 /*
-	if (pinfo->dwTime == 10653691) //  ߰
+	if (pinfo->dwTime == 10653691) // 디버거 발견
 	{
 		if (ch->GetDesc()->DelayedDisconnect(Random::get(15, 30)))
 			LogManager::instance().HackLog("Debugger", ch);
 
 	}
-	else if (pinfo->dwTime == 10653971) // Softice ߰
+	else if (pinfo->dwTime == 10653971) // Softice 발견
 	{
 		if (ch->GetDesc()->DelayedDisconnect(Random::get(15, 30)))
 			LogManager::instance().HackLog("Softice", ch);
@@ -1839,20 +1839,20 @@ int CInputMain::SyncPosition(LPCHARACTER ch, const char * c_pcData, size_t uiByt
 				continue;
 		}
 
-		//  ˻
+		// 소유권 검사
 		if (!victim->SetSyncOwner(ch))
 			continue;
 
 		const float fDistWithSyncOwner = DISTANCE_SQRT( (victim->GetX() - ch->GetX()) / 100, (victim->GetY() - ch->GetY()) / 100 );
 		static const float fLimitDistWithSyncOwner = 2500.f + 1000.f;
-		// victim Ÿ 2500 + a ̸̻  .
-		//	Ÿ  : Ŭ̾Ʈ __GetSkillTargetRange, __GetBowRange Լ
-		//	2500 : ų proto  Ÿ  ų Ÿ, Ǵ Ȱ Ÿ
-		//	a = POINT_BOW_DISTANCE ... ε  ϴ   𸣰. ̳ , ų, Ʈ µ...
-		//		׷ Ȥó ϴ  ۷  ؼ 1000.f  ...
+		// victim과의 거리가 2500 + a 이상이면 핵으로 간주.
+		//	거리 참조 : 클라이언트의 __GetSkillTargetRange, __GetBowRange 함수
+		//	2500 : 스킬 proto에서 가장 사거리가 긴 스킬의 사거리, 또는 활의 사거리
+		//	a = POINT_BOW_DISTANCE 값... 인데 실제로 사용하는 값인지는 잘 모르겠음. 아이템이나 포션, 스킬, 퀘스트에는 없는데...
+		//		그래도 혹시나 하는 마음에 버퍼로 사용할 겸해서 1000.f 로 둠...
 		if (fDistWithSyncOwner > fLimitDistWithSyncOwner)
 		{
-			// g_iSyncHackLimitCount  .
+			// g_iSyncHackLimitCount번 까지는 봐줌.
 			if (ch->GetSyncHackCount() < g_iSyncHackLimitCount)
 			{
 				ch->SetSyncHackCount(ch->GetSyncHackCount() + 1);
@@ -1877,11 +1877,11 @@ int CInputMain::SyncPosition(LPCHARACTER ch, const char * c_pcData, size_t uiByt
 		const timeval &tvLastSyncTime = victim->GetLastSyncTime();
 		timeval *tvDiff = timediff(&tvCurTime, &tvLastSyncTime);
 		
-		// SyncPosition ǿϿ Ÿ ̻    ϱ Ͽ,
-		//   g_lValidSyncInterval ms ̳ ٽ SyncPositionϷ ϸ  .
+		// SyncPosition을 악용하여 타유저를 이상한 곳으로 보내는 핵 방어하기 위하여,
+		// 같은 유저를 g_lValidSyncInterval ms 이내에 다시 SyncPosition하려고 하면 핵으로 간주.
 		if (tvDiff->tv_sec == 0 && tvDiff->tv_usec < g_lValidSyncInterval)
 		{
-			// g_iSyncHackLimitCount  .
+			// g_iSyncHackLimitCount번 까지는 봐줌.
 			if (ch->GetSyncHackCount() < g_iSyncHackLimitCount)
 			{
 				ch->SetSyncHackCount(ch->GetSyncHackCount() + 1);
@@ -1968,11 +1968,11 @@ void CInputMain::ScriptAnswer(LPCHARACTER ch, const void* c_pData)
 	TPacketCGScriptAnswer * p = (TPacketCGScriptAnswer *) c_pData;
     SPDLOG_DEBUG("QUEST ScriptAnswer pid {} answer {}", ch->GetPlayerID(), p->answer);
 
-	if (p->answer > 250) //  ư    Ŷ 
+	if (p->answer > 250) // 다음 버튼에 대한 응답으로 온 패킷인 경우
 	{
 		quest::CQuestManager::Instance().Resume(ch->GetPlayerID());
 	}
-	else //  ư   Ŷ 
+	else // 선택 버튼을 골라서 온 패킷인 경우
 	{
 		quest::CQuestManager::Instance().Select(ch->GetPlayerID(),  p->answer);
 	}
@@ -2115,9 +2115,9 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 	if (!ch->IsEmptyItemGrid(p->ItemPos, pkItem->GetSize()))
 		return;
 
-	//   κ ű κп ȥ Ư ó
-	// (   item_proto ǵȴ Ӽ ٱ ,
-	//  ȥ ,  ó   Ӽ ϳ  ʰ ȴ.)
+	// 아이템 몰에서 인벤으로 옮기는 부분에서 용혼석 특수 처리
+	// (몰에서 만드는 아이템은 item_proto에 정의된대로 속성이 붙기 때문에,
+	//  용혼석의 경우, 이 처리를 하지 않으면 속성이 하나도 붙지 않게 된다.)
 	if (pkItem->IsDragonSoul())
 	{
 		if (bMall)
@@ -2163,7 +2163,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 				SPDLOG_ERROR("pkItem->GetProto() == NULL (id : {})",pkItem->GetID());
 				return ;
 			}
-			// 100% Ȯ Ӽ پ ϴµ  پִٸ  . ...............
+			// 100% 확률로 속성이 붙어야 하는데 안 붙어있다면 새로 붙힌다. ...............
 			if (100 == pkItem->GetProto()->bAlterToMagicItemPct && 0 == pkItem->GetAttributeCount())
 			{
 				pkItem->AlterToMagicItem();
@@ -2232,7 +2232,7 @@ void CInputMain::PartyInviteAnswer(LPCHARACTER ch, const char * c_pData)
 
 	LPCHARACTER pInviter = CHARACTER_MANAGER::instance().Find(p->leader_vid);
 
-	// pInviter  ch  Ƽ û ߾.
+	// pInviter 가 ch 에게 파티 요청을 했었다.
 
 	if (!pInviter)
 		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xE4\xC3\xBB\xC0\xBB \xC7\xD1 \xC4\xB3\xB8\xAF\xC5\xCD\xB8\xA6 \xC3\xA3\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
@@ -2554,7 +2554,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 	{
 		case GUILD_SUBHEADER_CG_DEPOSIT_MONEY:
 			{
-				// by mhh : ڱ а   .
+				// by mhh : 길드자금은 당분간 넣을 수 없다.
 				return SubPacketLen;
 
 				const int gold = std::min(*reinterpret_cast(c_pData), __deposit_limit());
@@ -2577,7 +2577,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 		case GUILD_SUBHEADER_CG_WITHDRAW_MONEY:
 			{
-				// by mhh : ڱ а   .
+				// by mhh : 길드자금은 당분간 뺄 수 없다.
 				return SubPacketLen;
 
 				const int gold = std::min(*reinterpret_cast(c_pData), 500000);
@@ -2773,7 +2773,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (length > GUILD_COMMENT_MAX_LEN)
 				{
-					// ߸ .. .
+					// 잘못된 길이.. 끊어주자.
 					SPDLOG_ERROR("POST_COMMENT: {} comment too long (length: {})", ch->GetName(), length);
 					ch->GetDesc()->SetPhase(PHASE_CLOSE);
 					return -1;
diff --git a/src/game/src/input_p2p.cpp b/src/game/src/input_p2p.cpp
index b522058..efa9082 100644
--- a/src/game/src/input_p2p.cpp
+++ b/src/game/src/input_p2p.cpp
@@ -67,7 +67,7 @@ int CInputP2P::Relay(LPDESC d, const char * c_pData, size_t uiBytes)
 	{
 		if (pkChr->IsBlockMode(BLOCK_WHISPER))
 		{
-			// ӼӸ ź ¿ ӼӸ ź.
+			// 귓속말 거부 상태에서 귓속말 거부.
 			return p->lSize;
 		}
 
@@ -75,12 +75,12 @@ int CInputP2P::Relay(LPDESC d, const char * c_pData, size_t uiBytes)
 		memcpy(buf, c_pbData, std::min(p->lSize, sizeof(buf)));
 
 		TPacketGCWhisper* p2 = (TPacketGCWhisper*) buf;
-		// bType  4Ʈ: Empire ȣ
-		// bType  4Ʈ: EWhisperType
+		// bType 상위 4비트: Empire 번호
+		// bType 하위 4비트: EWhisperType
 		BYTE bToEmpire = (p2->bType >> 4);
 		p2->bType = p2->bType & 0x0F;
 		if(p2->bType == 0x0F) {
-			// ý ޼ ӼӸ bType Ʈ  .
+			// 시스템 메세지 귓속말은 bType의 상위비트까지 모두 사용함.
 			p2->bType = WHISPER_TYPE_SYSTEM;
 		} else {
 			if (!pkChr->IsEquipUniqueGroup(UNIQUE_GROUP_RING_OF_LANGUAGE))
@@ -338,7 +338,7 @@ void CInputP2P::XmasWarpSanta(const char * c_pData)
 		else
 			iNextSpawnDelay = 50 * 60;
 
-		xmas::SpawnSanta(p->lMapIndex, iNextSpawnDelay); // 50ִٰ ο Ÿ Ÿ (ѱ 20)
+		xmas::SpawnSanta(p->lMapIndex, iNextSpawnDelay); // 50분있다가 새로운 산타가 나타남 (한국은 20분)
 
 		TPacketGGXmasWarpSantaReply pack_reply;
 		pack_reply.bHeader = HEADER_GG_XMAS_WARP_SANTA_REPLY;
diff --git a/src/game/src/item.cpp b/src/game/src/item.cpp
index 481f9ba..4c38efa 100644
--- a/src/game/src/item.cpp
+++ b/src/game/src/item.cpp
@@ -294,7 +294,7 @@ LPITEM CItem::RemoveFromCharacter()
 
 	LPCHARACTER pOwner = m_pOwner;
 
-	if (m_bEquipped)	// Ǿ°?
+	if (m_bEquipped)	// 장착되었는가?
 	{
 		Unequip();
 		//pOwner->UpdatePacket();
@@ -318,7 +318,7 @@ LPITEM CItem::RemoveFromCharacter()
 			{
 				TItemPos cell(INVENTORY, m_wCell);
 
-				if (false == cell.IsDefaultInventoryPosition() && false == cell.IsBeltInventoryPosition()) // ƴϸ ǰ?
+				if (false == cell.IsDefaultInventoryPosition() && false == cell.IsBeltInventoryPosition()) // 아니면 소지품에?
 					SPDLOG_ERROR("CItem::RemoveFromCharacter: Invalid Item Position");
 				else
 				{
@@ -470,16 +470,16 @@ bool CItem::CanUsedBy(LPCHARACTER ch)
 
 int CItem::FindEquipCell(LPCHARACTER ch, int iCandidateCell)
 {
-	// ڽ (ITEM_COSTUME) WearFlag  . (sub type ġ .   wear flag  ʿ䰡 ֳ..)
-	// ȥ(ITEM_DS, ITEM_SPECIAL_DS)  SUB_TYPE . ű , Ʈ ITEM_TYPE  -_-
+	// 코스츔 아이템(ITEM_COSTUME)은 WearFlag 없어도 됨. (sub type으로 착용위치 구분. 귀찮게 또 wear flag 줄 필요가 있나..)
+	// 용혼석(ITEM_DS, ITEM_SPECIAL_DS)도  SUB_TYPE으로 구분. 신규 반지, 벨트는 ITEM_TYPE으로 구분 -_-
 	if ((0 == GetWearFlag() || ITEM_TOTEM == GetType()) && ITEM_COSTUME != GetType() && ITEM_DS != GetType() && ITEM_SPECIAL_DS != GetType() && ITEM_RING != GetType() && ITEM_BELT != GetType())
 		return -1;
 
-	// ȥ  WEAR ó  (WEAR ִ 32 ѵ ȥ ߰ϸ 32 Ѵ´.)
-	// κ丮 Ư ġ((INVENTORY_MAX_NUM + WEAR_MAX_NUM) (INVENTORY_MAX_NUM + WEAR_MAX_NUM + DRAGON_SOUL_DECK_MAX_NUM * DS_SLOT_MAX - 1))
-	// ȥ  .
-	// return  , INVENTORY_MAX_NUM  ,
-	//  WearCell INVENTORY_MAX_NUM  return ϱ .
+	// 용혼석 슬롯을 WEAR로 처리할 수가 없어서(WEAR는 최대 32개까지 가능한데 용혼석을 추가하면 32가 넘는다.)
+	// 인벤토리의 특정 위치((INVENTORY_MAX_NUM + WEAR_MAX_NUM)부터 (INVENTORY_MAX_NUM + WEAR_MAX_NUM + DRAGON_SOUL_DECK_MAX_NUM * DS_SLOT_MAX - 1)까지)를
+	// 용혼석 슬롯으로 정함.
+	// return 할 때에, INVENTORY_MAX_NUM을 뺀 이유는,
+	// 본래 WearCell이 INVENTORY_MAX_NUM를 빼고 return 하기 때문.
 	if (GetType() == ITEM_DS || GetType() == ITEM_SPECIAL_DS)
 	{
 		if (iCandidateCell < 0)
@@ -540,7 +540,7 @@ int CItem::FindEquipCell(LPCHARACTER ch, int iCandidateCell)
 			return WEAR_UNIQUE1;		
 	}
 
-	//  Ʈ   ° ѹ   ?E .
+	// 수집 퀘스트를 위한 아이템이 박히는곳으로 한번 박히면 절대 ?E수 없다.
 	else if (GetWearFlag() & WEARABLE_ABILITY)
 	{
 		if (!ch->GetWear(WEAR_ABILITY1))
@@ -587,12 +587,12 @@ void CItem::ModifyPoints(bool bAdd)
 {
 	int accessoryGrade;
 
-	//  ʸ  Ų.
+	// 무기와 갑옷만 소켓을 적용시킨다.
 	if (false == IsAccessoryForSocket())
 	{
 		if (m_pProto->bType == ITEM_WEAPON || m_pProto->bType == ITEM_ARMOR)
 		{
-			//  Ӽȭ Ǵ   ʴ´ (ARMOR_WRIST ARMOR_NECK ARMOR_EAR)
+			// 소켓이 속성강화에 사용되는 경우 적용하지 않는다 (ARMOR_WRIST ARMOR_NECK ARMOR_EAR)
 			for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 			{
 				DWORD dwVnum;
@@ -651,12 +651,12 @@ void CItem::ModifyPoints(bool bAdd)
 			m_pOwner->ApplyPoint(m_pProto->aApplies[i].bType, bAdd ? value : -value);
 		}
 	}
-	// ʽ´ , ҷ , ູ ,   Ʈ 
-	//  ϵ ڵ  Ӽ ο,
-	//  κ ϰ special item group ̺ Ӽ οϵ Ͽ.
-	//  ϵ ڵǾ      ־ Ưó س´.
-	//  ۵ , ؿ ITEM_UNIQUE  ó Ӽ οDZ ,
-	// ۿ ִ attribute  ʰ Ѿ.
+	// 초승달의 반지, 할로윈 사탕, 행복의 반지, 영원한 사랑의 펜던트의 경우
+	// 기존의 하드 코딩으로 강제로 속성을 부여했지만,
+	// 그 부분을 제거하고 special item group 테이블에서 속성을 부여하도록 변경하였다.
+	// 하지만 하드 코딩되어있을 때 생성된 아이템이 남아있을 수도 있어서 특수처리 해놓는다.
+	// 이 아이템들의 경우, 밑에 ITEM_UNIQUE일 때의 처리로 속성이 부여되기 때문에,
+	// 아이템에 박혀있는 attribute는 적용하지 않고 넘어간다.
 	if (true == CItemVnumHelper::IsRamadanMoonRing(GetVnum()) || true == CItemVnumHelper::IsHalloweenCandy(GetVnum())
 		|| true == CItemVnumHelper::IsHappinessRing(GetVnum()) || true == CItemVnumHelper::IsLovePendant(GetVnum()))
 	{
@@ -713,7 +713,7 @@ void CItem::ModifyPoints(bool bAdd)
 
 		case ITEM_ARMOR:
 			{
-				// ڽ body ԰ִٸ armor  Դ   ־  ָ  .
+				// 코스츔 body를 입고있다면 armor는 벗던 입던 상관 없이 비주얼에 영향을 주면 안 됨.
 				if (0 != m_pOwner->GetWear(WEAR_COSTUME_BODY))
 					break;
 
@@ -733,33 +733,33 @@ void CItem::ModifyPoints(bool bAdd)
 			}
 			break;
 
-		// ڽ  Ծ  ij parts  .  Ÿϴ ߰..
+		// 코스츔 아이템 입었을 때 캐릭터 parts 정보 세팅. 기존 스타일대로 추가함..
 		case ITEM_COSTUME:
 			{
 				DWORD toSetValue = this->GetVnum();
 				EParts toSetPart = PART_MAX_NUM;
 
-				//  ڽ
+				// 갑옷 코스츔
 				if (GetSubType() == COSTUME_BODY)
 				{
 					toSetPart = PART_MAIN;
 
 					if (false == bAdd)
 					{
-						// ڽ      ԰ ־ٸ   look ,  ʾҴٸ default look
+						// 코스츔 갑옷을 벗었을 때 원래 갑옷을 입고 있었다면 그 갑옷으로 look 세팅, 입지 않았다면 default look
 						const CItem* pArmor = m_pOwner->GetWear(WEAR_BODY);
 						toSetValue = (NULL != pArmor) ? pArmor->GetVnum() : m_pOwner->GetOriginalPart(PART_MAIN);						
 					}
 					
 				}
 
-				//  ڽ
+				// 헤어 코스츔
 				else if (GetSubType() == COSTUME_HAIR)
 				{
 					toSetPart = PART_HAIR;
 
-					// ڽ  shape item proto value3 ϵ . Ư    (ARMOR_BODY) shape  value3 ־   value3 .
-					// [NOTE]   vnum   shape(value3)  ..  ý ׷ Ǿ...
+					// 코스츔 헤어는 shape값을 item proto의 value3에 세팅하도록 함. 특별한 이유는 없고 기존 갑옷(ARMOR_BODY)의 shape값이 프로토의 value3에 있어서 헤어도 같이 value3으로 함.
+					// [NOTE] 갑옷은 아이템 vnum을 보내고 헤어는 shape(value3)값을 보내는 이유는.. 기존 시스템이 그렇게 되어있음...
 					toSetValue = (true == bAdd) ? this->GetValue(3) : 0;
 				}
 
@@ -820,7 +820,7 @@ bool CItem::EquipTo(LPCHARACTER ch, BYTE bWearCell)
 		return false;
 	}
 
-	// ȥ  index WEAR_MAX_NUM  ŭ.
+	// 용혼석 슬롯 index는 WEAR_MAX_NUM 보다 큼.
 	if (IsDragonSoul())
 	{
 		if (bWearCell < WEAR_MAX_NUM || bWearCell >= WEAR_MAX_NUM + DRAGON_SOUL_DECK_MAX_NUM * DS_SLOT_MAX)
@@ -847,7 +847,7 @@ bool CItem::EquipTo(LPCHARACTER ch, BYTE bWearCell)
 	if (GetOwner())
 		RemoveFromCharacter();
 
-	ch->SetWear(bWearCell, this); // ⼭ Ŷ 
+	ch->SetWear(bWearCell, this); // 여기서 패킷 나감
 
 	m_pOwner = ch;
 	m_bEquipped = true;
@@ -905,7 +905,7 @@ bool CItem::Unequip()
 		return false;
 	}
 
-	//ű   Ž ó
+	//신규 말 아이템 제거시 처리
 	if (IsRideItem())
 		ClearMountAttributeAndAffect();
 
@@ -1209,7 +1209,7 @@ void CItem::AlterToMagicItem()
 		}
 	}
 
-	// 100% Ȯ  Ӽ ϳ
+	// 100% 확률로 좋은 속성 하나
 	PutAttribute(aiItemMagicAttributePercentHigh);
 
 	if (Random::get(1, 100) <= iSecondPct)
@@ -1295,8 +1295,8 @@ EVENTFUNC(unique_expire_event)
 		}
 		else
 		{
-			//   ð ۵ ϰ  ʴ װ ־
-			// 
+			// 게임 내에 시간제 아이템들이 빠릿빠릿하게 사라지지 않는 버그가 있어
+			// 수정
 			// by rtsummit
 			if (pkItem->GetSocket(ITEM_SOCKET_UNIQUE_REMAIN_TIME) - cur < 600)
 				return PASSES_PER_SEC(pkItem->GetSocket(ITEM_SOCKET_UNIQUE_REMAIN_TIME) - cur);
@@ -1306,9 +1306,9 @@ EVENTFUNC(unique_expire_event)
 	}
 }
 
-// ð ĺ
-// timer   ð ϴ  ƴ϶, 
-// timer ȭ  timer  ð ŭ ð  Ѵ.
+// 시간 후불제
+// timer를 시작할 때에 시간 차감하는 것이 아니라, 
+// timer가 발화할 때에 timer가 동작한 시간 만큼 시간 차감을 한다.
 EVENTFUNC(timer_based_on_wear_expire_event)
 {
 	item_event_info* info = dynamic_cast( event->info );
@@ -1327,7 +1327,7 @@ EVENTFUNC(timer_based_on_wear_expire_event)
 		pkItem->SetTimerBasedOnWearExpireEvent(NULL);
 		pkItem->SetSocket(ITEM_SOCKET_REMAIN_SEC, 0);
 	
-		// ϴ timer based on wear ȥ ð  Ǿٰ  ʴ´.
+		// 일단 timer based on wear 용혼석은 시간 다 되었다고 없애지 않는다.
 		if (pkItem->IsDragonSoul())
 		{
 			DSManager::instance().DeactivateDragonSoul(pkItem);
@@ -1419,7 +1419,7 @@ void CItem::StartUniqueExpireEvent()
 	if (m_pkUniqueExpireEvent)
 		return;
 
-	//Ⱓ   ð   ʴ´
+	//기간제 아이템일 경우 시간제 아이템은 동작하지 않는다
 	if (IsRealTimeItem())
 		return;
 
@@ -1442,14 +1442,14 @@ void CItem::StartUniqueExpireEvent()
 	SetUniqueExpireEvent(event_create(unique_expire_event, info, PASSES_PER_SEC(iSec)));
 }
 
-// ð ĺ
-// timer_based_on_wear_expire_event  
+// 시간 후불제
+// timer_based_on_wear_expire_event 설명 참조
 void CItem::StartTimerBasedOnWearExpireEvent()
 {
 	if (m_pkTimerBasedOnWearExpireEvent)
 		return;
 
-	//Ⱓ   ð   ʴ´
+	//기간제 아이템일 경우 시간제 아이템은 동작하지 않는다
 	if (IsRealTimeItem())
 		return;
 
@@ -1458,7 +1458,7 @@ void CItem::StartTimerBasedOnWearExpireEvent()
 
 	int iSec = GetSocket(0);
 	
-	//  ð д  ...
+	// 남은 시간을 분단위로 끊기 위해...
 	if (0 != iSec)
 	{
 		iSec %= 60;
@@ -1477,7 +1477,7 @@ void CItem::StopUniqueExpireEvent()
 	if (!m_pkUniqueExpireEvent)
 		return;
 
-	if (GetValue(2) != 0) // ӽð ̿  UniqueExpireEvent ߴ  .
+	if (GetValue(2) != 0) // 게임시간제 이외의 아이템은 UniqueExpireEvent를 중단할 수 없다.
 		return;
 
 	// HARD CODING
@@ -1514,12 +1514,12 @@ int CItem::GetSpecialGroup() const
 }
 
 //
-// Ǽ  ó.
+// 악세서리 소켓 처리.
 //
 bool CItem::IsAccessoryForSocket()
 {
 	return (m_pProto->bType == ITEM_ARMOR && (m_pProto->bSubType == ARMOR_WRIST || m_pProto->bSubType == ARMOR_NECK || m_pProto->bSubType == ARMOR_EAR)) ||
-		(m_pProto->bType == ITEM_BELT);				// 2013 2  ߰ 'Ʈ'   ȹ Ǽ  ý ״ ̿ڰ .
+		(m_pProto->bType == ITEM_BELT);				// 2013년 2월 새로 추가된 '벨트' 아이템의 경우 기획팀에서 악세서리 소켓 시스템을 그대로 이용하자고 함.
 }
 
 void CItem::SetAccessorySocketGrade(int iGrade) 
@@ -1664,7 +1664,7 @@ void CItem::ClearMountAttributeAndAffect()
 }
 
 // fixme
-// ̰  Ⱦ... ٵ Ȥó ; ܵ.
+// 이거 지금은 안쓴데... 근데 혹시나 싶어서 남겨둠.
 // by rtsummit
 bool CItem::IsNewMountItem()
 {
@@ -1711,7 +1711,7 @@ void CItem::AccessorySocketDegrade()
 	}
 }
 
-// ring item   ִ θ üũؼ 
+// ring에 item을 박을 수 있는지 여부를 체크해서 리턴
 static const bool CanPutIntoRing(LPITEM ring, LPITEM item)
 {
 	const DWORD vnum = item->GetVnum();
@@ -1932,10 +1932,10 @@ int CItem::GetLevelLimit()
 
 bool CItem::OnAfterCreatedItem()
 {
-	//   ̶ ߴٸ,  Ŀ   ʾƵ ð Ǵ 
+	// 아이템을 한 번이라도 사용했다면, 그 이후엔 사용 중이지 않아도 시간이 차감되는 방식
 	if (-1 != this->GetProto()->cLimitRealTimeFirstUseIndex)
 	{
-		// Socket1   Ƚ ϵǾ ,  ̶   Ÿ̸Ӹ Ѵ.
+		// Socket1에 아이템의 사용 횟수가 기록되어 있으니, 한 번이라도 사용한 아이템은 타이머를 시작한다.
 		if (0 != GetSocket(1))
 		{
 			StartRealTimeExpireEvent();
@@ -1948,8 +1948,8 @@ bool CItem::OnAfterCreatedItem()
 
 #ifdef __AUCTION__
 
-// 
-// window  Ѵ.
+// 경매장
+// window를 경매장으로 한다.
 
 bool CItem::MoveToAuction()
 {
@@ -2016,7 +2016,7 @@ int CItem::GiveMoreTime_Per(float fPercent)
 			return given_time;
 		}
 	}
-	// 켱 ȥ ؼ ϵ Ѵ.
+	// 우선 용혼석에 관해서만 하도록 한다.
 	else
 		return 0;
 }
@@ -2040,7 +2040,7 @@ int CItem::GiveMoreTime_Fix(DWORD dwTime)
 			return dwTime;
 		}
 	}
-	// 켱 ȥ ؼ ϵ Ѵ.
+	// 우선 용혼석에 관해서만 하도록 한다.
 	else
 		return 0;
 }
@@ -2065,7 +2065,7 @@ int	CItem::GetDuration()
 
 bool CItem::IsSameSpecialGroup(const LPITEM item) const
 {
-	//  VNUM ٸ  ׷  
+	// 서로 VNUM이 같다면 같은 그룹인 것으로 간주
 	if (this->GetVnum() == item->GetVnum())
 		return true;
 
diff --git a/src/game/src/item_addon.cpp b/src/game/src/item_addon.cpp
index 5e66ff4..9dc5317 100644
--- a/src/game/src/item_addon.cpp
+++ b/src/game/src/item_addon.cpp
@@ -20,7 +20,7 @@ void CItemAddonManager::ApplyAddonTo(int iAddonType, LPITEM pItem)
 		return;
 	}
 
-	// TODO ϴ ϵڵ Ÿ ų ġ 游 츸 ްѴ.
+	// TODO 일단 하드코딩으로 평타 스킬 수치 변경만 경우만 적용받게한다.
 
 	int iSkillBonus = std::clamp((int) (Random::get>(0, 5) + 0.5f), -30, 30);
 	int iNormalHitBonus = 0;
diff --git a/src/game/src/item_attribute.cpp b/src/game/src/item_attribute.cpp
index 095b1cc..3b00128 100644
--- a/src/game/src/item_attribute.cpp
+++ b/src/game/src/item_attribute.cpp
@@ -24,7 +24,7 @@ int CItem::GetAttributeSetIndex()
 		switch (GetSubType())
 		{
 			case ARMOR_BODY:
-//			case COSTUME_BODY: // ڽ  Ϲ ʰ  Attribute Set ̿Ͽ Ӽ  (ARMOR_BODY == COSTUME_BODY)
+//			case COSTUME_BODY: // 코스츔 갑옷은 일반 갑옷과 동일한 Attribute Set을 이용하여 랜덤속성 붙음 (ARMOR_BODY == COSTUME_BODY)
 				return ATTRIBUTE_SET_BODY;
 
 			case ARMOR_WRIST:
@@ -37,7 +37,7 @@ int CItem::GetAttributeSetIndex()
 				return ATTRIBUTE_SET_NECK;
 
 			case ARMOR_HEAD:
-//			case COSTUME_HAIR: // ڽ  Ϲ  ۰  Attribute Set ̿Ͽ Ӽ  (ARMOR_HEAD == COSTUME_HAIR)
+//			case COSTUME_HAIR: // 코스츔 헤어는 일반 투구 아이템과 동일한 Attribute Set을 이용하여 랜덤속성 붙음 (ARMOR_HEAD == COSTUME_HAIR)
 				return ATTRIBUTE_SET_HEAD;
 
 			case ARMOR_SHIELD:
@@ -125,7 +125,7 @@ void CItem::PutAttributeWithLevel(BYTE bLevel)
 
 	int total = 0;
 
-	//   ִ Ӽ 迭 
+	// 붙일 수 있는 속성 배열을 구축
 	for (int i = 0; i < MAX_APPLY_NUM; ++i)
 	{
 		const TItemAttrTable & r = g_map_itemAttr[i];
@@ -137,7 +137,7 @@ void CItem::PutAttributeWithLevel(BYTE bLevel)
 		}
 	}
 
-	//  迭 Ȯ    Ӽ 
+	// 구축된 배열로 확률 계산을 통해 붙일 속성 선정
 	unsigned int prob = Random::get(1, total);
 	int attr_idx = APPLY_NONE;
 
@@ -162,7 +162,7 @@ void CItem::PutAttributeWithLevel(BYTE bLevel)
 
 	const TItemAttrTable & r = g_map_itemAttr[attr_idx];
 
-	//  Ӽ  ִ밪 
+	// 종류별 속성 레벨 최대값 제한
 	if (bLevel > r.bMaxLevelBySet[iAttributeSet])
 		bLevel = r.bMaxLevelBySet[iAttributeSet];
 
diff --git a/src/game/src/item_manager.cpp b/src/game/src/item_manager.cpp
index a11c2a1..48def27 100644
--- a/src/game/src/item_manager.cpp
+++ b/src/game/src/item_manager.cpp
@@ -80,7 +80,7 @@ bool ITEM_MANAGER::Initialize(TItemTable * table, int size)
 		if (m_vec_prototype[i].dwRefinedVnum)
 			m_map_ItemRefineFrom.insert(std::make_pair(m_vec_prototype[i].dwRefinedVnum, m_vec_prototype[i].dwVnum));
 
-		// NOTE : QUEST_GIVE ÷״ npc ̺Ʈ ߻.
+		// NOTE : QUEST_GIVE 플래그는 npc 이벤트로 발생.
 		if (m_vec_prototype[i].bType == ITEM_QUEST || IS_SET(m_vec_prototype[i].dwFlags, ITEM_FLAG_QUEST_USE | ITEM_FLAG_QUEST_USE_MULTIPLE))
 			quest::CQuestManager::instance().RegisterNPCVnum(m_vec_prototype[i].dwVnum);
 
@@ -155,7 +155,7 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 	{
 		if (vnum == 50300 && bTryMagic)
 		{
-			// ü  ȣ ٸ  ش.
+			// 수련서를 아이템 번호를 다르게 만들어 준다.
 			DWORD dwSkillVnum;
 
 			do
@@ -181,7 +181,7 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 
 	LPITEM item = NULL;
 
-	//id ˻ؼ Ѵٸ -- ! 
+	//id로 검사해서 존재한다면 -- 리턴! 
 	if (m_map_pkItemByID.find(id) != m_map_pkItemByID.end())
 	{
 		item = m_map_pkItemByID[id];
@@ -190,7 +190,7 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 		return NULL;
 	}
 
-	// ϳ Ҵϰ
+	//아이템 하나 할당하고
 #ifdef M2_USE_POOL
 	item = pool_.Construct();
 #else
@@ -199,15 +199,15 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 
 	bool bIsNewItem = (0 == id);
 
-	//ʱȭ ϰ. ̺ ϰ
+	//초기화 하고. 테이블 셋하고
 	item->Initialize();
 	item->SetProto(table);
 	item->SetMaskVnum(dwMaskVnum);
 
-	if (item->GetType() == ITEM_ELK) //  ID ʿ 嵵 ʿ.
+	if (item->GetType() == ITEM_ELK) // 돈은 ID가 필요없고 저장도 필요없다.
 		item->SetSkipSave(true);
 
-	// Unique ID 
+	// Unique ID를 세팅하자
 	else if (!bIsNewItem)
 	{
 		item->SetID(id);
@@ -217,16 +217,16 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 	{
 		item->SetID(GetNewID());
 
-		if (item->GetType() == ITEM_UNIQUE) // ũ  ÿ Ͽ ð Ѵ.
+		if (item->GetType() == ITEM_UNIQUE) // 유니크 아이템은 생성시에 소켓에 남은시간을 기록한다.
 		{
 			if (item->GetValue(2) == 0)
-				item->SetSocket(ITEM_SOCKET_UNIQUE_REMAIN_TIME, item->GetValue(0)); //  ð ũ
+				item->SetSocket(ITEM_SOCKET_UNIQUE_REMAIN_TIME, item->GetValue(0)); // 게임 시간 유니크
 			else
 			{
 				//int globalTime = get_global_time();
 				//int lastTime = item->GetValue(0);
 				//int endTime = get_global_time() + item->GetValue(0);
-				item->SetSocket(ITEM_SOCKET_UNIQUE_REMAIN_TIME, get_global_time() + item->GetValue(0)); // ǽð ũ
+				item->SetSocket(ITEM_SOCKET_UNIQUE_REMAIN_TIME, get_global_time() + item->GetValue(0)); // 실시간 유니크
 			}
 		}
 	}
@@ -255,9 +255,9 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 			break;
 	}
 
-	if (item->GetType() == ITEM_ELK) //  ƹ ó ʿ 
+	if (item->GetType() == ITEM_ELK) // 돈은 아무 처리가 필요하지 않음
 		;
-	else if (item->IsStackable())  // ĥ  ִ  
+	else if (item->IsStackable())  // 합칠 수 있는 아이템의 경우
 	{
 		count = std::clamp(count, 1, ITEM_MAX_COUNT);
 
@@ -285,7 +285,7 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 
 	for (int i=0 ; i < ITEM_LIMIT_MAX_NUM ; i++)
 	{
-		//     ʾƵ ð Ǵ 
+		// 아이템 생성 시점부터 사용하지 않아도 시간이 차감되는 방식
 		if (LIMIT_REAL_TIME == item->GetLimitType(i))
 		{
 			if (item->GetLimitValue(i))
@@ -300,11 +300,11 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 			item->StartRealTimeExpireEvent();
 		}
 
-		//  ũ ó ÿ 밡 ð Ǵ 
+		// 기존 유니크 아이템처럼 착용시에만 사용가능 시간이 차감되는 방식
 		else if (LIMIT_TIMER_BASED_ON_WEAR == item->GetLimitType(i))
 		{
-			// ̹  ̸ Ÿ̸Ӹ ϰ,      ð ش. (
-			// ۸ ϴ 쿡     Socket0   Ǿ ־ Ѵ.
+			// 이미 착용중인 아이템이면 타이머를 시작하고, 새로 만드는 아이템은 사용 가능 시간을 세팅해준다. (
+			// 아이템몰로 지급하는 경우에는 이 로직에 들어오기 전에 Socket0 값이 세팅이 되어 있어야 한다.
 			if (true == item->IsEquipped())
 			{
 				item->StartTimerBasedOnWearExpireEvent();
@@ -316,16 +316,16 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 					duration = item->GetLimitValue(i);
 
 				if (0 == duration)
-					duration = 60 * 60 * 10;	//  ƹ͵  Ʈ 10ð 
+					duration = 60 * 60 * 10;	// 정보가 아무것도 없으면 디폴트로 10시간 세팅
 
 				item->SetSocket(0, duration);
 			}
 		}
 	}
 
-	if (id == 0) //     ó
+	if (id == 0) // 새로 만드는 아이템일 때만 처리
 	{
-		// ߰Ǵ ʵϰ  ٸó
+		// 새로추가되는 약초들일경우 성능을 다르게처리
 		if (ITEM_BLEND==item->GetType())
 		{
 			if (Blend_Item_find(item->GetVnum()))
@@ -352,7 +352,7 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 		if (table->bGainSocketPct)
 			item->AlterToSocketItem(table->bGainSocketPct);
 
-		// 50300 ==  ü
+		// 50300 == 기술 수련서
 		if (vnum == 50300 || vnum == ITEM_SKILLFORGET_VNUM)
 		{
 			DWORD dwSkillVnum;
@@ -404,7 +404,7 @@ LPITEM ITEM_MANAGER::CreateItem(DWORD vnum, DWORD count, DWORD id, bool bTryMagi
 		}
 	}
 
-	//  Ǵ ȥ ó.
+	// 새로 생성되는 용혼석 처리.
 	if (item->IsDragonSoul() && 0 == id)
 	{
 		DSManager::instance().DragonSoulItemInitialize(item);
@@ -473,7 +473,7 @@ void ITEM_MANAGER::Update()
 		this_it = it++;
 		LPITEM item = *this_it;
 
-		// SLOW_QUERY ÷װ ִ  ÿ Ѵ.
+		// SLOW_QUERY 플래그가 있는 것은 종료시에만 저장한다.
 		if (item->GetOwner() && IS_SET(item->GetFlag(), ITEM_FLAG_SLOW_QUERY))
 			continue;
 
@@ -496,7 +496,7 @@ void ITEM_MANAGER::RemoveItem(LPITEM item, const char * c_pszReason)
 		// SAFEBOX_TIME_LIMIT_ITEM_BUG_FIX
 		if (item->GetWindow() == MALL || item->GetWindow() == SAFEBOX)
 		{
-			// 20050613.ipkn.ð     ð  ٿȴ.
+			// 20050613.ipkn.시간제 아이템이 상점에 있을 경우 시간만료시 서버가 다운된다.
 			CSafebox* pSafebox = item->GetWindow() == MALL ? o->GetMall() : o->GetSafebox();
 			if (pSafebox)
 			{
@@ -760,8 +760,8 @@ class CItemDropInfo
 extern std::vector g_vec_pkCommonDropItem[MOB_RANK_MAX_NUM];
 
 // 20050503.ipkn.
-// iMinimum   iDefault  (, iMinimum 0 Ŀ)
-// 1, 0  ON/OFF Ǵ  ϱ  
+// iMinimum 보다 작으면 iDefault 세팅 (단, iMinimum은 0보다 커야함)
+// 1, 0 식으로 ON/OFF 되는 방식을 지원하기 위해 존재
 int GetDropPerKillPct(int iMinimum, int iDefault, int iDeltaPercent, const char * c_pszFlag)
 {
 	int iVal = 0;
@@ -781,8 +781,8 @@ int GetDropPerKillPct(int iMinimum, int iDefault, int iDeltaPercent, const char
 	if (iVal == 0)
 		return 0;
 
-	// ⺻ ϶ (iDeltaPercent=100) 
-	// 40000 iVal  ϳ  ֱ  
+	// 기본 세팅일때 (iDeltaPercent=100) 
+	// 40000 iVal 마리당 하나 느낌을 주기 위한 상수임
 	return (40000 * iDeltaPercent / iVal);
 }
 
@@ -930,7 +930,7 @@ bool ITEM_MANAGER::CreateDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::
 			CMobItemGroup* pGroup = it->second;
 
 			// MOB_DROP_ITEM_BUG_FIX
-			// 20050805.myevan.MobDropItem     CMobItemGroup::GetOne() ٽ  ߻ 
+			// 20050805.myevan.MobDropItem 에 아이템이 없을 경우 CMobItemGroup::GetOne() 접근시 문제 발생 수정
 			if (pGroup && !pGroup->IsEmpty())
 			{
 				int iPercent = 40000 * iDeltaPercent / pGroup->GetKillPerDrop();
@@ -997,7 +997,7 @@ bool ITEM_MANAGER::CreateDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::
 		}
 	}
 	
-	// 
+	// 잡템
 	if (pkChr->GetMobDropItemVnum())
 	{
 		itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());
@@ -1046,14 +1046,14 @@ bool ITEM_MANAGER::CreateDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::
 		pdw[1] = 1;
 		pdw[2] = quest::CQuestManager::instance().GetEventFlag("lotto_round");
 
-		//    Ѵ
+		// 행운의 서는 소켓을 설정한다
 		DBManager::instance().ReturnQuery(QID_LOTTO, pkKiller->GetPlayerID(), pdw,
 				"INSERT INTO lotto_list VALUES(0, 'server%s', %u, NOW())",
 				get_table_postfix(), pkKiller->GetPlayerID());
 	}
 
 	//
-	//   
+	// 스페셜 드롭 아이템
 	// 
 	CreateQuestDropItem(pkChr, pkKiller, vec_item, iDeltaPercent, iRandRange);
 
@@ -1064,7 +1064,7 @@ bool ITEM_MANAGER::CreateDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::
 	}
 
 	//
-	// · õǵ 2  
+	// 승룡곡 천의동굴 2층에서만 수룡방 입장권
 	//
 	if (LC_IsYMIR() || LC_IsKorea())
 	{
@@ -1081,21 +1081,21 @@ bool ITEM_MANAGER::CreateDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::
 	}
 
 	//
-	// · 1, 2 7,8 ųԹ 
+	// 승룡곡 1층, 2층에서만 7,8 스킬입문서 드롭
 	//
 	if (LC_IsYMIR() || LC_IsKorea())
 	{
 		switch (pkKiller->GetMapIndex())
 		{
-			case 72:	// õǵ 1
-			case 73:	// õǵ 2
+			case 72:	// 천의동굴 1층
+			case 73:	// 천의동굴 2층
 				{
 					int vnum = 0;
 
-					if (2403 == pkChr->GetRaceNum())	// õǹ
-						vnum = 69200;	// 7ų Թ
-					else if (2411 == pkChr->GetRaceNum())	// õǺ
-						vnum = 69201;	// 8ų Թ
+					if (2403 == pkChr->GetRaceNum())	// 천의법사
+						vnum = 69200;	// 7스킬 입문서
+					else if (2411 == pkChr->GetRaceNum())	// 진천의병사
+						vnum = 69201;	// 8스킬 입문서
 					else
 						break;
 
@@ -1250,11 +1250,11 @@ bool DropEvent_CharStone_SetValue(const std::string& name, int value)
 // END_OF_DROPEVENT_CHARSTONE
 
 // fixme
-//  Ͱ Բ quest  . 
-// ̰ ʹ ݾ...
-// ??.. ϵڵ ȴ ̤
-// 跮   .
-// by rtsummit ġ ¥
+// 위의 것과 함께 quest로 뺄것 빼보자. 
+// 이거 너무 더럽잖아...
+// ??.. 하드코딩 싫다 ㅜㅠ
+// 계량 아이템 보상 시작.
+// by rtsummit 고치자 진짜
 static struct DropEvent_RefineBox
 {
 	int percent_low;
@@ -1371,7 +1371,7 @@ bool DropEvent_RefineBox_SetValue(const std::string& name, int value)
 
 	return true;
 }
-//    .
+// 개량 아이템 보상 끝.
 
 
 void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector & vec_item, int iDeltaPercent, int iRandRange)
@@ -1391,7 +1391,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	// END_OF_DROPEVENT_CHARSTONE
 	__DropEvent_RefineBox_DropItem(*pkKiller, *pkChr, *this, vec_item);
 
-	// ũ 縻
+	// 크리스마스 양말
 	if (quest::CQuestManager::instance().GetEventFlag("xmas_sock"))
 	{
 		//const DWORD SOCK_ITEM_VNUM = 50010;
@@ -1433,7 +1433,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 		}
 	}
 
-	//  
+	// 월광 보합
 	if (quest::CQuestManager::instance().GetEventFlag("drop_moon"))
 	{
 		const DWORD ITEM_VNUM = 50011;
@@ -1479,7 +1479,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 		}
 	}
 
-	//
+	//육각보합
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2006_drop") >= Random::get(1, iRandRange))
 	{
         SPDLOG_DEBUG("\xC0\xB0\xB0\xA2\xBA\xB8\xC7\xD5 DROP EVENT ");
@@ -1491,7 +1491,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 
 	}
 
-	//+
+	//육각보합+
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2007_drop") >= Random::get(1, iRandRange))
 	{
         SPDLOG_DEBUG("\xC0\xB0\xB0\xA2\xBA\xB8\xC7\xD5 DROP EVENT ");
@@ -1502,17 +1502,17 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	//   ̺Ʈ
+	// 새해 폭죽 이벤트
 	if (GetDropPerKillPct(/* minimum */ 100, /* default */ 1000, iDeltaPercent, "newyear_fire") >= Random::get(1, iRandRange))
 	{
-		// ߱ , ѱ 
+		// 중국은 폭죽, 한국 팽이
 		const DWORD ITEM_VNUM_FIRE = g_iUseLocale ? 50107 : 50108;
 
 		if ((item = CreateItem(ITEM_VNUM_FIRE, 1, 0, true)))
 			vec_item.push_back(item);
 	}
 
-	//  뺸  ̺Ʈ
+	// 새해 대보름 원소 이벤트
 	if (GetDropPerKillPct(100, 500, iDeltaPercent, "newyear_moon") >= Random::get(1, iRandRange))
 	{
         SPDLOG_DEBUG("EVENT NEWYEAR_MOON DROP");
@@ -1524,7 +1524,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	// ߷Ÿ  ̺Ʈ. OGE 䱸  event ּҰ 1 .(ٸ ̺Ʈ ϴ ״ .)
+	// 발렌타인 데이 이벤트. OGE의 요구에 따라 event 최소값을 1로 변경.(다른 이벤트는 일단 그대로 둠.)
 	if (GetDropPerKillPct(1, g_iUseLocale ? 2000 : 800, iDeltaPercent, "valentine_drop") >= Random::get(1, iRandRange))
 	{
         SPDLOG_DEBUG("EVENT VALENTINE_DROP");
@@ -1536,7 +1536,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	// ̽ũ ̺Ʈ
+	// 아이스크림 이벤트
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "icecream_drop") >= Random::get(1, iRandRange))
 	{
 		const static DWORD icecream = 50123;
@@ -1545,8 +1545,8 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	// new ũ ̺Ʈ
-	// 53002 : Ʊ  ȯ
+	// new 크리스마스 이벤트
+	// 53002 : 아기 순록 소환권
 	if ((pkKiller->CountSpecifyItem(53002) > 0) && (GetDropPerKillPct(50, 100, iDeltaPercent, "new_xmas_event") >= Random::get(1, iRandRange)))
 	{
 		const static DWORD xmas_sock = 50010;
@@ -1590,7 +1590,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	//  ̺Ʈ
+	// 월드컵 이벤트
 	if ( GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "football_drop") >= Random::get(1, iRandRange) )
 	{
 		const static DWORD football_item = 50096;
@@ -1599,7 +1599,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	// ȭƮ  ̺Ʈ
+	// 화이트 데이 이벤트
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "whiteday_drop") >= Random::get(1, iRandRange))
 	{
         SPDLOG_DEBUG("EVENT WHITEDAY_DROP");
@@ -1610,7 +1610,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	// ̳   ̺Ʈ
+	// 어린이날 수수께끼 상자 이벤트
 	if (pkKiller->GetLevel()>=50)
 	{
 		if (GetDropPerKillPct(100, 1000, iDeltaPercent, "kids_day_drop_high") >= Random::get(1, iRandRange))
@@ -1632,7 +1632,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 		}
 	}
 
-	// ø  ̺Ʈ
+	// 올림픽 드롭 이벤트
 	if (pkChr->GetLevel() >= 30 && GetDropPerKillPct(50, 100, iDeltaPercent, "medal_part_drop") >= Random::get(1, iRandRange))
 	{
 		const static DWORD drop_items[] = { 30265, 30266, 30267, 30268, 30269 };
@@ -1643,7 +1643,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	}
 
 	// ADD_GRANDMASTER_SKILL
-	// ȥ  
+	// 혼석 아이템 드롭
 	if (pkChr->GetLevel() >= 40 && pkChr->GetMobRank() >= MOB_RANK_BOSS && GetDropPerKillPct(/* minimum */ 1, /* default */ 1000, iDeltaPercent, "three_skill_item") / GetThreeSkillLevelAdjust(pkChr->GetLevel()) >= Random::get(1, iRandRange))
 	{
 		const DWORD ITEM_VNUM = 50513;
@@ -1654,7 +1654,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	// END_OF_ADD_GRANDMASTER_SKILL
 
 	//
-	//   drop
+	// 종자 아이템 drop
 	//
 	if (GetDropPerKillPct(100, 1000, iDeltaPercent, "dragon_boat_festival_drop") >= Random::get(1, iRandRange))
 	{
@@ -1664,7 +1664,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 			vec_item.push_back(item);
 	}
 
-	//  ູ ö drop
+	// 무신의 축복서용 만년한철 drop
 	if (pkKiller->GetLevel() >= 15 && quest::CQuestManager::instance().GetEventFlag("mars_drop"))
 	{
 		const DWORD ITEM_HANIRON = 70035;
@@ -1726,8 +1726,8 @@ DWORD ITEM_MANAGER::GetMaskVnum(DWORD dwVnum)
 		return 0;
 }
 
-// pkNewItem  Ӽ   ϴ Լ.
-//  char_item.cpp Ͽ ִ Լ TransformRefineItem ״ 
+// pkNewItem으로 모든 속성과 소켓 값들을 목사하는 함수.
+// 기존에 char_item.cpp 파일에 있던 로컬함수인 TransformRefineItem 그대로 복사함
 void ITEM_MANAGER::CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem)
 {
 	// ACCESSORY_REFINE
@@ -1742,7 +1742,7 @@ void ITEM_MANAGER::CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem)
 	// END_OF_ACCESSORY_REFINE
 	else
 	{
-		// ⼭  ڵ û 
+		// 여기서 깨진석이 자동적으로 청소 됨
 		for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 		{
 			if (!pkOldItem->GetSocket(i))
@@ -1751,19 +1751,19 @@ void ITEM_MANAGER::CopyAllAttrTo(LPITEM pkOldItem, LPITEM pkNewItem)
 				pkNewItem->SetSocket(i, 1);
 		}
 
-		//  
+		// 소켓 설정
 		int slot = 0;
 
 		for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 		{
 			int socket = pkOldItem->GetSocket(i);
-			const int ITEM_BROKEN_METIN_VNUM = 28960; // ̰  Ȱ  3 ֳ... ϳ سФФ  н ȫ Ҳ
+			const int ITEM_BROKEN_METIN_VNUM = 28960; // 이건 뭐 똑같은 상수가 3군데나 있냐... 하나로 해놓지ㅠㅠㅠ 나는 패스 홍이 할꺼임
 			if (socket > 2 && socket != ITEM_BROKEN_METIN_VNUM)
 				pkNewItem->SetSocket(slot++, socket);
 		}
 
 	}
 
-	//   
+	// 매직 아이템 설정
 	pkOldItem->CopyAttributeTo(pkNewItem);
 }
diff --git a/src/game/src/item_manager_read_tables.cpp b/src/game/src/item_manager_read_tables.cpp
index 7c97ad9..a059bac 100644
--- a/src/game/src/item_manager_read_tables.cpp
+++ b/src/game/src/item_manager_read_tables.cpp
@@ -78,7 +78,7 @@ bool ITEM_MANAGER::ReadCommonDropItemFile(const char * c_pszFileName)
 
 			if (!ITEM_MANAGER::instance().GetVnumByOriginalName(d[i].szItemName, dwItemVnum))
 			{
-				// �̸����� ��ã���� ��ȣ�� �˻�
+				// 이름으로 못찾으면 번호로 검색
 				str_to_number(dwItemVnum, d[i].szItemName);
 				if (!ITEM_MANAGER::instance().GetTable(dwItemVnum))
 				{
@@ -405,7 +405,7 @@ bool ITEM_MANAGER::ConvSpecialDropItemFile()
 					str_to_number(iRarePct, pTok->at(3).c_str());
 				}
 
-				//    1   "��� ���ü�"   1   100
+				//    1   "기술 수련서"   1   100
 				if (0 == dwVnum)
 					fprintf(fp, "	%d	%s	%d	%d\n", k, name.c_str(), iCount, iProb);
 				else
diff --git a/src/game/src/locale.cpp b/src/game/src/locale.cpp
index 74397a7..8477317 100644
--- a/src/game/src/locale.cpp
+++ b/src/game/src/locale.cpp
@@ -48,7 +48,7 @@ const char *quote_find_end(const char *string)
 	{
 		if (quote && *tmp == '\\' && *(tmp + 1))
 		{
-			// \  ڰ "  ŵѴ.
+			// \ 다음 문자가 " 면 스킵한다.
 			switch (*(tmp + 1))
 			{
 				case '"':
diff --git a/src/game/src/locale_service.cpp b/src/game/src/locale_service.cpp
index 4b3b7cf..fde3eb7 100644
--- a/src/game/src/locale_service.cpp
+++ b/src/game/src/locale_service.cpp
@@ -79,7 +79,7 @@ int check_name_independent(const char * str)
 	if (CBanwordManager::instance().CheckString(str, strlen(str)))
 		return 0;
 
-	//  ̸δ   .
+	// 몬스터 이름으로는 만들 수 없다.
 	char szTmp[256];
 	str_lower(str, szTmp, sizeof(szTmp));
 
@@ -120,12 +120,12 @@ int check_name_gb2312(const char * str)
 			b1 = str[i++];
 			b2 = str[i++];
 
-			// ߱ ü ù° Ʈ  b0 -> f7 
-			// ι° Ʈ  a1 -> fe .
+			// 중국 간체는 첫번째 바이트 범위가 b0 -> f7 까지고
+			// 두번째 바이트 범위가 a1 -> fe 다.
 			if (b1 < 0xb0 || b1 > 0xf7 || b2 < 0xa1 || b2 > 0xfe)
 				return 0;
 
-			// ܰ ִ.
+			// 예외가 있다.
 			for (j = 0; j < 5; j++)
 				if (b1 == exceptions[j][0] && b2 == exceptions[j][1])
 					return 0;
@@ -172,8 +172,8 @@ int check_name_big5(const char * str )
 			b[0] = b2;
 			b[1] = b1;
 
-			// ߱ ü ( big5 : ȫ )
-			//   .
+			// 중국 번체 ( big5 : 홍콩 )
+			// 범위는 다음과 같다.
 			//  big5: 0xA140--0xF9D5
 			//  extended big5: 0x40--0x7E and 0xA1--0xFE
 
@@ -230,15 +230,15 @@ int check_name_latin1(const char * str)
 
 	for (tmp = str; *tmp; ++tmp)
 	{
-		// ѱ ƴϰ ĭ̸ ߸ 
+		// 한글이 아니고 빈칸이면 잘못된 것
 		if (isspace(*tmp))
 			return 0;
 
-		// ѱ ƴϰ ڶ ϴ.
+		// 한글이 아니고 숫자라면 적합하다.
 		if (isdigit(*tmp))
 			continue;
 
-		// ѱ ƴϰ ̶ ϴ.   
+		// 한글이 아니고 영문이라면 적합하다.   
 		if (isalpha(*tmp))
 			continue;
 
@@ -275,7 +275,7 @@ int check_name_alphabet(const char * str)
 
 	for (tmp = str; *tmp; ++tmp)
 	{
-		// ĺ ڸ 
+		// 알파벳과 수자만 허용
 		if (isdigit(*tmp) || isalpha(*tmp))
 			continue;
 		else
@@ -324,7 +324,7 @@ int check_name_sjis(const char *str)
 	const char	*p = str;
 	const char	*e = str + strlen(str);	// NULL position
 
-	// Ϻ ij ̸ 16byte 
+	// 일본은 캐릭터 이름길이 16byte 까지
 	if ( strlen(str) < 2 || strlen(str) > 16 )
 		return 0;
 
@@ -337,7 +337,7 @@ int check_name_sjis(const char *str)
 				return false;
 
 			// END_OF_DISABLE_SPECIAL_CHAR_NAMING
-			// ̹ڴ  ʴ´.
+			// 이문자는 허용되지 않는다.
 			if ((BYTE)p[0]==0x81 && (BYTE)p[1]==0x40) return false;
 
 			p += 2;
@@ -345,7 +345,7 @@ int check_name_sjis(const char *str)
 		}
 		else
 		{
-			// ̳ ڴ Ѵ.
+			// 영문이나 수자는 허용한다.
 			if (isalpha(*p) || isdigit(*p))
 			{
 				p += 1;
@@ -888,7 +888,7 @@ static void __LocaleService_Init_Singapore()
 	check_name	= check_name_alphabet;
 
 	g_iUseLocale = true;
-	//exp_table = exp_table_newcibn; 2013 09 11 CYH europe  ϰ .
+	//exp_table = exp_table_newcibn; 2013 09 11 CYH europe 과 동일하게 간다.
 }
 
 static void __LocaleService_Init_Vietnam()
@@ -1309,18 +1309,18 @@ bool LC_IsEurope()
 		case LC_DENMARK:
 		case LC_BULGARIA:
 		case LC_CROATIA:
-		case LC_MEXICO: //  GF  ϹǷ  
-		case LC_ARABIA: // ߵ GF  ϹǷ  
+		case LC_MEXICO: // 남미지만 GF에서 서비스 하므로 여기 넣음
+		case LC_ARABIA: // 중동이지만 GF에서 서비스 하므로 여기 넣음
 		case LC_CZECH:
 		case LC_ROMANIA:
 		case LC_HUNGARY:
 		case LC_NETHERLANDS:
 		case LC_USA:
-		case LC_WE_KOREA:	// ѱ UK  ̹Ƿ  
-		case LC_TAIWAN:		// 븸 WE_KOREA  ̹Ƿ  
-		case LC_JAPAN:		// Ϻ WE(World Edition -_-) ̹Ƿ  
+		case LC_WE_KOREA:	// 한국이지만 UK 버전 기반이므로 여기 넣음
+		case LC_TAIWAN:		// 대만이지만 WE_KOREA 버전 기반이므로 여기 넣음
+		case LC_JAPAN:		// 일본이지만 WE(World Edition -_-) 버전이므로 여기 넣음
 		case LC_NEWCIBN:
-		case LC_CANADA:	// ij GF  
+		case LC_CANADA:	// 캐나다 GF에서 서비스 시작
 			return true;
 	}
 
diff --git a/src/game/src/main.cpp b/src/game/src/main.cpp
index 8cd2b42..fa9176e 100644
--- a/src/game/src/main.cpp
+++ b/src/game/src/main.cpp
@@ -86,10 +86,10 @@ void WriteMallocMessage(const char* p1, const char* p2, const char* p3, const ch
 #endif
 
 // TRAFFIC_PROFILER
-static const DWORD	TRAFFIC_PROFILE_FLUSH_CYCLE = 3600;	///< TrafficProfiler  Flush cycle. 1ð 
+static const DWORD	TRAFFIC_PROFILE_FLUSH_CYCLE = 3600;	///< TrafficProfiler 의 Flush cycle. 1시간 간격
 // END_OF_TRAFFIC_PROFILER
 
-// Ӱ Ǵ 
+// 게임과 연결되는 소켓
 volatile int	num_events_called = 0;
 int             max_bytes_written = 0;
 int             current_bytes_written = 0;
@@ -227,7 +227,7 @@ void heartbeat(LPHEART ht, int pulse)
 
 	t = get_dword_time();
 
-	// 1ʸ
+	// 1초마다
 	if (!(pulse % ht->passes_per_sec))
 	{
 		if (!g_bAuthServer)
@@ -279,14 +279,14 @@ void heartbeat(LPHEART ht, int pulse)
 	}
 
 	//
-	// 25 PPS(Pulse per second)   
+	// 25 PPS(Pulse per second) 라고 가정할 때
 	//
 
-	//  1.16ʸ
+	// 약 1.16초마다
 	if (!(pulse % (passes_per_sec + 4)))
 		CHARACTER_MANAGER::instance().ProcessDelayedSave();
 
-	//  5.08ʸ
+	// 약 5.08초마다
 	if (!(pulse % (passes_per_sec * 5 + 2)))
 	{
 		ITEM_MANAGER::instance().Update();
@@ -849,7 +849,7 @@ int io_loop(event_base * base)
 	LPDESC	d;
 	int		num_events, event_idx;
 
-	DESC_MANAGER::instance().DestroyClosed(); // PHASE_CLOSE ӵ ش.
+	DESC_MANAGER::instance().DestroyClosed(); // PHASE_CLOSE인 접속들을 끊어준다.
 	DESC_MANAGER::instance().TryConnect();
 
     // Process network events
diff --git a/src/game/src/marriage.cpp b/src/game/src/marriage.cpp
index dade791..22a10b3 100644
--- a/src/game/src/marriage.cpp
+++ b/src/game/src/marriage.cpp
@@ -21,19 +21,19 @@ namespace marriage
 		DWORD dwVnum;
 		int value[MAX_LOVE_GRADE];
 	} g_ItemBonus[MAX_MARRIAGE_UNIQUE_ITEM] = {
-		{ 71069,	{ 4,	5,	6,	8,  } }, //  
-		{ 71070,	{ 10,	12,	15,	20, } }, // ġ 
-		{ 71071,	{ 4,	5,	6,	8,  } }, // ũƼ 
-		{ 71072,	{ -4,	-5,	-6,	-8, } }, //  ݷ 
-		{ 71073,	{ 20,	25,	30,	40, } }, // ݷ  (밪)
-		{ 71074,	{ 12,	16,	20,	30, } }, //   (밪)
+		{ 71069,	{ 4,	5,	6,	8,  } }, // 관통 증가
+		{ 71070,	{ 10,	12,	15,	20, } }, // 경험치 증가
+		{ 71071,	{ 4,	5,	6,	8,  } }, // 크리티컬 증가
+		{ 71072,	{ -4,	-5,	-6,	-8, } }, // 상대방 공격력 감소
+		{ 71073,	{ 20,	25,	30,	40, } }, // 공격력 증가 (절대값)
+		{ 71074,	{ 12,	16,	20,	30, } }, // 방어력 증가 (절대값)
 
-		//{ 71069,	1,	2,	3,	6,	8,  }, //  
-		//{ 71070,	5,	7,	10,	15,	20, }, // ġ 
-		//{ 71071,	1,	2,	3,	6,	8,  }, // ũƼ 
-		//{ 71072,	5,	10,	15,	20,	30, }, //    Է
-		//{ 71073,	10,	15,	20,	25,	40, }, // ݷ  (밪)
-		//{ 71074,	5,	10,	15,	20,	30, }, //   (밪)
+		//{ 71069,	1,	2,	3,	6,	8,  }, // 관통 증가
+		//{ 71070,	5,	7,	10,	15,	20, }, // 경험치 증가
+		//{ 71071,	1,	2,	3,	6,	8,  }, // 크리티컬 증가
+		//{ 71072,	5,	10,	15,	20,	30, }, // 상대방이 입은 데미지를 나에게로
+		//{ 71073,	10,	15,	20,	25,	40, }, // 공격력 증가 (절대값)
+		//{ 71074,	5,	10,	15,	20,	30, }, // 방어력 증가 (절대값)
 	};
 
 	const int MARRIAGE_POINT_PER_DAY = 1;
@@ -101,17 +101,17 @@ namespace marriage
 		else
 			days /= 86400;
 
-		// ⺻ 50%
+		// 기본 50%
 
-		//     :
-		// ¥   80% Ϸ 8%
-		//    80%
-		// Ż 100%
+		// 원앙의 깃털 사용중일 때 :
+		// 날짜에 의한 영향 80% 하루당 8%
+		// 전투에 의한 영향 80%
+		// 토탈 100%
 
-		//   : 
-		// ¥   60% Ϸ 6%
-		//    60%
-		// Ż 100%
+		// 비사용중일 때 : 
+		// 날짜에 의한 영향 60% 하루당 6%
+		// 전투에 의한 영향 60%
+		// 토탈 100%
 		return std::min(50 + std::min(days * point_per_day, max_limit) + std::min(love_point / 1000000, max_limit), 100);
 	}
 
@@ -124,11 +124,11 @@ namespace marriage
 
 		return ch1->GetMapIndex() == ch2->GetMapIndex();
 
-		// Ƽ üũ 
+		// 파티 체크가 사라졌음
 		/*if (!ch1->GetParty() || ch1->GetParty() != ch2->GetParty())
 		  return false;*/
 
-		// Ÿ üũ 
+		// 거리 체크가 사라졌음
 		/*const int DISTANCE = 5000;
 
 		  if (labs(ch1->GetX() - ch2->GetX()) > DISTANCE)
@@ -140,15 +140,15 @@ namespace marriage
 		  return (DISTANCE_APPROX(ch1->GetX() - ch2->GetX(), ch1->GetY() - ch2->GetY()) < DISTANCE);*/
 	}
 
-	// ݽ ġ
+	// 금슬 수치
 	int TMarriage::GetBonus(DWORD dwItemVnum, bool bShare, LPCHARACTER me)
 	{
 		if (!is_married)
 			return 0;
 
-		// ֺ  ڱ ɸ ȴ.
+		// 주변에 없을때는 자기 기능만 적용된다.
 
-		// ش    ϴ ã´.
+		// 해당 아이템이 어떤 기능을 하는지 찾는다.
 		int iFindedBonusIndex=0;
 		{
 			for (iFindedBonusIndex = 0; iFindedBonusIndex < MAX_MARRIAGE_UNIQUE_ITEM; ++iFindedBonusIndex)
@@ -163,7 +163,7 @@ namespace marriage
 
 		if (bShare)
 		{
-			// θ ʽ Ѵ.
+			// 두명의 보너스를 합한다.
 			int count = 0;
 			if (NULL != ch1 && ch1->IsEquipUniqueItem(dwItemVnum))
 				count ++;
@@ -178,7 +178,7 @@ namespace marriage
 		}
 		else
 		{
-			//  ͸ 
+			// 상대방 것만 계산
 			int count = 0;
 			if (me != ch1 && NULL!= ch1 && ch1->IsEquipUniqueItem(dwItemVnum))
 				count ++;
@@ -208,7 +208,7 @@ namespace marriage
 				SendLoverInfo(ch2, name1, GetMarriagePoint());
 		}
 
-		//    μ α ̸ ͸ ϰ ̺Ʈ ߻
+		// 둘 다 이 프로세스에 로그인 중이면 포인터를 연결하고 이벤트 발생
 		if (IsOnline())
 		{
 			ch1->SetMarryPartner(ch2);
@@ -217,7 +217,7 @@ namespace marriage
 			StartNearCheckEvent();
 		}
 
-		//   α Ǿ ִٸ Ŷ .
+		// 둘 다 로그인 되어 있다면 패킷을 보낸다.
 		if (is_married)
 		{
 			LPDESC d1, d2;
@@ -581,7 +581,7 @@ namespace marriage
 
 			if (A && B)
 			{
-				//   û 
+				// 웨딩 맵 요청을 보낸다
 				TPacketWeddingRequest p;
 				p.dwPID1 = dwPID1;
 				p.dwPID2 = dwPID2;
@@ -703,11 +703,11 @@ namespace marriage
 		if (!pwi)
 			return;
 
-		// ȥڵ Ѿ
+		// 결혼자들을 워프시켜야함
 		pMarriage->WarpToWeddingMap(dwPID1);
 		pMarriage->WarpToWeddingMap(dwPID2);
 
-		// ؼ ޴â ̸;
+		// 등록해서 메뉴창에서 이름나와야함
 		m_setWedding.insert(make_pair(dwPID1, dwPID2));
 	}
 
@@ -726,7 +726,7 @@ namespace marriage
 			return;
 		}
 
-		// ʿ մϴ
+		// 맵에서 빼내야합니다
 		if (map_allow_find(WEDDING_MAP_INDEX))
 			if (!WeddingManager::instance().End(pMarriage->pWeddingInfo->dwMapIndex))
 			{
diff --git a/src/game/src/matrix_card.cpp b/src/game/src/matrix_card.cpp
index 80212fa..fd1dc4d 100644
--- a/src/game/src/matrix_card.cpp
+++ b/src/game/src/matrix_card.cpp
@@ -1,4 +1,4 @@
-//#define __MATRIX_MAIN_ENABLE__ // define Ǿ  main Լ Եȴ. Unit test ÿ 
+//#define __MATRIX_MAIN_ENABLE__ // define 되어 있으면 main 함수가 포함된다. Unit test 시에 사용
 #ifndef __MATRIX_MAIN_ENABLE__
 #include "stdafx.h"
 #else
diff --git a/src/game/src/messenger_manager.cpp b/src/game/src/messenger_manager.cpp
index 7762566..1e7042d 100644
--- a/src/game/src/messenger_manager.cpp
+++ b/src/game/src/messenger_manager.cpp
@@ -240,11 +240,11 @@ void MessengerManager::RemoveAllList(keyA account)
 {
 	std::set	company(m_Relation[account]);
 
-	/* SQL Data  */
+	/* SQL Data 삭제 */
 	DBManager::instance().Query("DELETE FROM messenger_list%s WHERE account='%s' OR companion='%s'",
 			get_table_postfix(), account.c_str(), account.c_str());
 
-	/*  ִ Ʈ  */
+	/* 내가 가지고있는 리스트 삭제 */
 	for (std::set::iterator iter = company.begin();
 			iter != company.end();
 			iter++ )
@@ -252,7 +252,7 @@ void MessengerManager::RemoveAllList(keyA account)
 		this->RemoveFromList(account, *iter);
 	}
 
-	/*  Ÿ  */
+	/* 복사한 데이타 삭제 */
 	for (std::set::iterator iter = company.begin();
 			iter != company.end();
 			)
diff --git a/src/game/src/monarch.cpp b/src/game/src/monarch.cpp
index a2c79da..244eabb 100644
--- a/src/game/src/monarch.cpp
+++ b/src/game/src/monarch.cpp
@@ -86,10 +86,10 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 	f.m_bEmpire = Empire;
 	SECTREE_MANAGER::instance().for_each(iMapIndex, f);	
 
-	// DB  谨  
+	// DB에 돈 삭감 보내기 
 	SendtoDBDecMoney(price, Empire, ch);
 
-	// Ÿ 	
+	// 쿨타임 설정	
 	ch->SetMC(CHARACTER::MI_HEAL);
 
 	if (test_server)
@@ -139,7 +139,7 @@ bool CMonarch::SendtoDBDecMoney(int Money, BYTE bEmpire, LPCHARACTER ch)
 	if (GetMoney(bEmpire) - Money < 0)
 		return false;
 
-	//  ̴ κ     óȴ
+	// 실제 줄이는 부분은 서버에 갔다 온 다음에 처리된다
 	int nEmpire = bEmpire;	
 
 	db_clientdesc->DBPacketHeader(HEADER_GD_DEC_MONARCH_MONEY, ch->GetDesc()->GetHandle(), sizeof(int) + sizeof(int));
@@ -153,7 +153,7 @@ bool CMonarch::AddMoney(int Money, BYTE bEmpire)
 	if (bEmpire >= _countof(m_MonarchInfo.money))
 		return false;
 
-	// 20 ̻ Ա Ұ
+	// 20억 이상 입금 불가능
 	if (GetMoney(bEmpire) + Money > 2000000000)
 		return false;
 
@@ -236,7 +236,7 @@ void CMonarch::PowerUp(BYTE Empire, bool On)
 
 	m_PowerUp[Empire] = On;
 
-	//   Ÿ 
+	// 군주 사자후 쿨타임 
 	m_PowerUpCT[Empire] = thecore_pulse() + PASSES_PER_SEC(60 * 10);
 }
 
@@ -247,13 +247,13 @@ void CMonarch::DefenseUp(BYTE Empire, bool On)
 
 	m_DefenseUp[Empire] = On;
 
-	//  ݰ Ÿ 
+	// 군주 금강권 쿨타임 
 	m_DefenseUpCT[Empire] = thecore_pulse() + PASSES_PER_SEC(60 * 10);
 }
 
 bool IsMonarchWarpZone (int map_idx)
 {
-	// Ʊ͵, õǵ.
+	// 아귀동굴, 천의동굴.
 	if (map_idx >= 10000)
 		map_idx /= 10000;
 
@@ -263,9 +263,9 @@ bool IsMonarchWarpZone (int map_idx)
 	case 302:
 	case 303:
 	case 304:
-		//
-	case 351: // 漺
-	case 352: // 
+		//던전
+	case 351: // 적룡성
+	case 352: // 백룡지성
 		return false;
 	}
 
diff --git a/src/game/src/motion.cpp b/src/game/src/motion.cpp
index 6c60509..3b85529 100644
--- a/src/game/src/motion.cpp
+++ b/src/game/src/motion.cpp
@@ -476,7 +476,7 @@ bool CMotion::LoadMobSkillFromFile(const char * c_pszFileName, CMob* pMob, int i
 						continue;
 
 					case MOTION_EVENT_TYPE_SPECIAL_ATTACKING:
-						//  ʹ ϳ  
+						// 구 데이터는 하나 라고 가정
 						if (!rkTextFileLoader.SetChildNode("spheredata", 0))
 						{
 							SPDLOG_ERROR("Motion: no sphere data {}", c_pszFileName);
diff --git a/src/game/src/p2p.cpp b/src/game/src/p2p.cpp
index 193e09f..a596ce4 100644
--- a/src/game/src/p2p.cpp
+++ b/src/game/src/p2p.cpp
@@ -173,7 +173,7 @@ void P2P_MANAGER::Login(LPDESC d, const TPacketGGLogin * p)
 	CGuildManager::instance().P2PLoginMember(pkCCI->dwPID);
 	CPartyManager::instance().P2PLogin(pkCCI->dwPID, pkCCI->szName);
 
-	// CCI ÿ ޽ Ʈϸ ȴ.
+	// CCI가 생성시에만 메신저를 업데이트하면 된다.
 	if (UpdateP2P) {
 		std::string name(pkCCI->szName);
 	    MessengerManager::instance().P2PLogin(name);
diff --git a/src/game/src/panama.cpp b/src/game/src/panama.cpp
index e37bd18..2ac3257 100644
--- a/src/game/src/panama.cpp
+++ b/src/game/src/panama.cpp
@@ -84,7 +84,7 @@ void SendPanamaList(LPDESC d)
 		DWORD* ivs = (DWORD*)pack.abIV;
 		for (int i = 0; i != 32 / sizeof(DWORD); i++)
 		{
-			ivs[i] ^= d->GetPanamaKey() + i * 16777619;	//   ij Ű XOR ش
+			ivs[i] ^= d->GetPanamaKey() + i * 16777619;	// 더블워드단위로 변형된 파나마 키를 XOR 해준다
 		}
 		++it;
 
diff --git a/src/game/src/party.cpp b/src/game/src/party.cpp
index 902958c..b2b2ad0 100644
--- a/src/game/src/party.cpp
+++ b/src/game/src/party.cpp
@@ -34,7 +34,7 @@ void CPartyManager::DeleteAllParty()
 	}
 }
 
-bool CPartyManager::SetParty(LPCHARACTER ch)	// PC ؾ Ѵ!!
+bool CPartyManager::SetParty(LPCHARACTER ch)	// PC만 사용해야 한다!!
 {
 	TPartyMap::iterator it = m_map_pkParty.find(ch->GetPlayerID());
 
@@ -295,7 +295,7 @@ void CParty::Destroy()
 {
 	SPDLOG_TRACE("Party::Destroy");
 
-	// PC  Ƽ ƼŴ ʿ PID ؾ Ѵ.
+	// PC가 만든 파티면 파티매니저에 맵에서 PID를 삭제해야 한다.
 	if (m_bPCParty)
 	{
 		for (TMemberMap::iterator it = m_memberMap.begin(); it != m_memberMap.end(); ++it)
@@ -327,7 +327,7 @@ void CParty::Destroy()
 			}
 			else
 			{
-				// NPC   ð    ƴ   ϴ ̺Ʈ ۽Ų.
+				// NPC일 경우 일정 시간 후 전투 중이 아닐 때 사라지게 하는 이벤트를 시작시킨다.
 				rMember.pCharacter->SetLastAttacked(dwTime);
 				rMember.pCharacter->StartDestroyWhenIdleEvent();
 			}
@@ -458,7 +458,7 @@ void CParty::Join(DWORD dwPID)
 		TPacketPartyAdd p;
 		p.dwLeaderPID = GetLeaderPID();
 		p.dwPID = dwPID;
-		p.bState = PARTY_ROLE_NORMAL; // #0000790: [M2EU] CZ ũ : ʱȭ ߿! 
+		p.bState = PARTY_ROLE_NORMAL; // #0000790: [M2EU] CZ 크래쉬 증가: 초기화 중요! 
 		db_clientdesc->DBPacket(HEADER_GD_PARTY_ADD, 0, &p, sizeof(p));
 	}
 }
@@ -504,11 +504,11 @@ void CParty::P2PQuit(DWORD dwPID)
 	if (m_bPCParty)
 		CPartyManager::instance().SetPartyMember(dwPID, NULL);
 
-	//   Ƽ ػǾ Ѵ.
+	// 리더가 나가면 파티는 해산되어야 한다.
 	if (bRole == PARTY_ROLE_LEADER)
 		CPartyManager::instance().DeleteParty(this);
 
-	//  Ʒ ڵ带 ߰  !!!  DeleteParty ϸ this .
+	// 이 아래는 코드를 추가하지 말 것!!! 위 DeleteParty 하면 this는 없다.
 }
 
 void CParty::Quit(DWORD dwPID)
@@ -546,7 +546,7 @@ void CParty::Link(LPCHARACTER pkChr)
 		return;
 	}
 
-	// ÷̾ Ƽ  Ʈ ̺Ʈ 
+	// 플레이어 파티일 경우 업데이트 이벤트 생성
 	if (m_bPCParty && !m_eventUpdate)
 	{
 		party_update_event_info* info = AllocEventInfo();
@@ -643,7 +643,7 @@ void CParty::Unlink(LPCHARACTER pkChr)
 	if (pkChr->IsPC())
 	{
 		SendPartyUnlinkOneToAll(pkChr);
-		//SendPartyUnlinkAllToOne(pkChr); //  ̹Ƿ  Unlink Ŷ  ʿ .
+		//SendPartyUnlinkAllToOne(pkChr); // 끊기는 것이므로 구지 Unlink 패킷을 보낼 필요 없다.
 
 		if (it->second.bRole == PARTY_ROLE_LEADER)
 		{
@@ -651,7 +651,7 @@ void CParty::Unlink(LPCHARACTER pkChr)
 
 			if (it->second.pCharacter->GetDungeon())
 			{
-				// TODO:    
+				// TODO: 던젼에 있으면 나머지도 나간다
 				FExitDungeon f;
 				ForEachNearMember(f);
 			}
@@ -898,9 +898,9 @@ void CParty::SendMessage(LPCHARACTER ch, BYTE bMsg, DWORD dwArg1, DWORD dwArg2)
 			}
 			break;
 
-		case PM_ATTACKED_BY:	//  ޾,   û
+		case PM_ATTACKED_BY:	// 공격 받았음, 리더에게 도움을 요청
 			{
-				//   
+				// 리더가 없을 때
 				LPCHARACTER pkChrVictim = ch->GetVictim();
 
 				if (!pkChrVictim)
@@ -1067,7 +1067,7 @@ void CParty::RemoveBonusForOne(DWORD pid)
 
 void CParty::HealParty()
 {
-	// XXX DELETEME Ŭ̾Ʈ Ϸɶ
+	// XXX DELETEME 클라이언트 완료될때까지
 	{
 		return;
 	}
@@ -1355,7 +1355,7 @@ void CParty::Update()
 
 	bool bLongTimeExpBonusChanged = false;
 
-	// Ƽ Ἲ   ð  ġ ʽ ޴´.
+	// 파티 결성 후 충분한 시간이 지나면 경험치 보너스를 받는다.
 	if (!m_iLongTimeExpBonus && (get_dword_time() - m_dwPartyStartTime > PARTY_ENOUGH_MINUTE_FOR_EXP_BONUS * 60 * 1000 / (g_iUseLocale?1:2)))
 	{
 		bLongTimeExpBonusChanged = true;
@@ -1400,9 +1400,9 @@ void CParty::Update()
 		if (!m_bCanUsePartyHeal && m_iLeadership >= 18)
 			m_dwPartyHealTime = get_dword_time();
 
-		m_bCanUsePartyHeal = m_iLeadership >= 18; // ַ 18 ̻    .
+		m_bCanUsePartyHeal = m_iLeadership >= 18; // 통솔력 18 이상은 힐을 사용할 수 있음.
 
-		// ַ 40̻ Ƽ  Ÿ .
+		// 통솔력 40이상은 파티 힐 쿨타임이 적다.
 		DWORD PartyHealCoolTime = (m_iLeadership >= 40) ? PARTY_HEAL_COOLTIME_SHORT * 60 * 1000 : PARTY_HEAL_COOLTIME_LONG * 60 * 1000;
 
 		if (m_bCanUsePartyHeal)
@@ -1412,7 +1412,7 @@ void CParty::Update()
 				m_bPartyHealReady = true;
 
 				// send heal ready
-				if (0) // XXX  DELETEME Ŭ̾Ʈ Ϸɶ
+				if (0) // XXX  DELETEME 클라이언트 완료될때까지
 					if (GetLeaderCharacter())
 						GetLeaderCharacter()->ChatPacket(CHAT_TYPE_COMMAND, "PartyHealReady");
 			}
@@ -1681,7 +1681,7 @@ int CParty::ComputePartyBonusExpPercent()
 	if (leader && (leader->IsEquipUniqueItem(UNIQUE_ITEM_PARTY_BONUS_EXP) || leader->IsEquipUniqueItem(UNIQUE_ITEM_PARTY_BONUS_EXP_MALL)
 		|| leader->IsEquipUniqueItem(UNIQUE_ITEM_PARTY_BONUS_EXP_GIFT) || leader->IsEquipUniqueGroup(10010)))
 	{
-		// ߱   ȮؾѴ.
+		// 중국측 육도 적용을 확인해야한다.
 		if (g_iUseLocale)
 		{
 			iBonusPartyExpFromItem = 30;
diff --git a/src/game/src/polymorph.cpp b/src/game/src/polymorph.cpp
index b600af5..7f779b1 100644
--- a/src/game/src/polymorph.cpp
+++ b/src/game/src/polymorph.cpp
@@ -64,7 +64,7 @@ bool CPolymorphUtils::PolymorphCharacter(LPCHARACTER pChar, LPITEM pItem, const
 
 	// dwDuration *= 60;
 
-	//  Ȯ = ij  -   + а  + 29 + а ų 
+	// 변신 확률 = 캐릭터 레벨 - 몹 레벨 + 둔갑서 레벨 + 29 + 둔갑 스킬 레벨
 	iPolyPercent = pChar->GetLevel() - pMob->m_table.bLevel + pItem->GetSocket(2) + (29 + bySkillLevel);
 
 	if (iPolyPercent <= 0)
@@ -83,7 +83,7 @@ bool CPolymorphUtils::PolymorphCharacter(LPCHARACTER pChar, LPITEM pItem, const
 
 	pChar->AddAffect(AFFECT_POLYMORPH, POINT_POLYMORPH, pMob->m_table.dwVnum, AFF_POLYMORPH, dwDuration, 0, true);
 
-	//  ʽ = а ų  + а 
+	// 변신 보너스 = 둔갑 스킬 레벨 + 둔갑서 레벨
 	dwBonusPercent = bySkillLevel + pItem->GetSocket(2);
 
 	switch (GetBonusType(pMob->m_table.dwVnum))
@@ -123,8 +123,8 @@ bool CPolymorphUtils::UpdateBookPracticeGrade(LPCHARACTER pChar, LPITEM pItem)
 
 bool CPolymorphUtils::GiveBook(LPCHARACTER pChar, DWORD dwMobVnum, DWORD dwPracticeCount, BYTE BookLevel, BYTE LevelLimit)
 {
-	// 0                1       2
-	// а  ȣ       а 
+	// 소켓0                소켓1       소켓2
+	// 둔갑할 몬스터 번호   수련정도    둔갑서 레벨
 	if (pChar == NULL)
 		return false;
 
@@ -140,9 +140,9 @@ bool CPolymorphUtils::GiveBook(LPCHARACTER pChar, DWORD dwMobVnum, DWORD dwPract
 		return false;
 	}
 
-	pItem->SetSocket(0, dwMobVnum);			// а  ȣ
-	pItem->SetSocket(1, dwPracticeCount);		// ؾ Ƚ
-	pItem->SetSocket(2, BookLevel);			// ÷
+	pItem->SetSocket(0, dwMobVnum);			// 둔갑할 몬스터 번호
+	pItem->SetSocket(1, dwPracticeCount);		// 수련해야할 횟수
+	pItem->SetSocket(2, BookLevel);			// 수련레벨
 	return true;
 }
 
diff --git a/src/game/src/priv_manager.cpp b/src/game/src/priv_manager.cpp
index 6662cc6..3d83034 100644
--- a/src/game/src/priv_manager.cpp
+++ b/src/game/src/priv_manager.cpp
@@ -225,7 +225,7 @@ void CPrivManager::RemoveCharacterPriv(DWORD pid, BYTE type)
 
 int CPrivManager::GetPriv(LPCHARACTER ch, BYTE type)
 {
-	// ij  ġ -  - ǰ
+	// 캐릭터의 변경 수치가 -라면 무조건 -만 적용되게
 	int val_ch = GetPrivByCharacter(ch->GetPlayerID(), type);
 
 	if (val_ch < 0 && !ch->IsEquipUniqueItem(UNIQUE_ITEM_NO_BAD_LUCK_EFFECT))
@@ -234,7 +234,7 @@ int CPrivManager::GetPriv(LPCHARACTER ch, BYTE type)
 	{
 		int val;
 
-		// , , , ü  ū  Ѵ.
+		// 개인, 제국, 길드, 전체 중 큰 값을 취한다.
 		val = std::max(val_ch, GetPrivByEmpire(0, type));
 		val = std::max(val, GetPrivByEmpire(ch->GetEmpire(), type));
 
diff --git a/src/game/src/pvp.cpp b/src/game/src/pvp.cpp
index 0c30046..e50ff1b 100644
--- a/src/game/src/pvp.cpp
+++ b/src/game/src/pvp.cpp
@@ -131,7 +131,7 @@ void CPVP::Win(DWORD dwPID)
 
 	m_bRevenge = true;
 
-	m_players[iSlot].bAgree = true; // ڵ 
+	m_players[iSlot].bAgree = true; // 자동으로 동의
 	m_players[!iSlot].bCanRevenge = true;
 	m_players[!iSlot].bAgree = false;
 
@@ -180,7 +180,7 @@ void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 
 	if ((pkPVP = Find(kPVP.m_dwCRC)))
 	{
-		//    ٷ ο!
+		// 복수할 수 있으면 바로 싸움!
 		if (pkPVP->Agree(pkChr->GetPlayerID()))
 		{
 			pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xB0\xFA\xC0\xC7 \xB4\xEB\xB0\xE1 \xBD\xC3\xC0\xDB!"), pkChr->GetName());
@@ -299,8 +299,8 @@ void CPVPManager::GiveUp(LPCHARACTER pkChr, DWORD dwKillerPID) // This method is
 	}
 }
 
-// ϰ: 0 = PK, 1 = PVP
-// PVP ϸ ġ   PK  ʴ´.
+// 리턴값: 0 = PK, 1 = PVP
+// PVP를 리턴하면 경험치나 아이템을 떨구고 PK면 떨구지 않는다.
 bool CPVPManager::Dead(LPCHARACTER pkChr, DWORD dwKillerPID)
 {
 	CPVPSetMap::iterator it = m_map_pkPVPSetByID.find(pkChr->GetPlayerID());
@@ -354,7 +354,7 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 			return false;
 	}
 
-	if (pkChr == pkVictim)  //   ĥ ϳ -_-
+	if (pkChr == pkVictim)  // 내가 날 칠라고 하네 -_-
 		return false;
 
 	if (pkVictim->IsNPC() && pkChr->IsNPC() && !pkChr->IsGuardNPC())
@@ -380,7 +380,7 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 			case 20116:
 			case 20117:
 			case 20118:
-				//ű Ż 
+				//신규 탈것 고급
 			case 20205:
 			case 20206:
 			case 20207:
@@ -389,21 +389,21 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 			case 20210:
 			case 20211:
 			case 20212:
-			case 20119:		// 󸶴 渶
-			case 20219:		// 󸶴 渶 Ŭ (ҷ)
-			case 20220:		// ũ Ż
-			case 20221:		//  
-			case 20222:		//  Ҵ
+			case 20119:		// 라마단 흑마
+			case 20219:		// 라마단 흑마 클론 (할로윈용)
+			case 20220:		// 크리스마스 탈것
+			case 20221:		// 전갑 백웅
+			case 20222:		// 전갑 팬더
 			case 20120:
 			case 20121:
 			case 20122:
 			case 20123:
 			case 20124:
 			case 20125:
-			case 20214:		//  	
-			case 20215:		//  	
-			case 20217:		//  ϼ	
-			case 20218:		//  ϼ	
+			case 20214:		// 난폭한 전갑순순록	
+			case 20215:		// 용맹한 전갑순순록	
+			case 20217:		// 난폭한 전갑암순록	
+			case 20218:		// 용맹한 전갑암순록	
 				break;
 
 			default:
@@ -460,7 +460,7 @@ bool CPVPManager::CanAttack(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 		{
 		    if (g_protectNormalPlayer)
 		    {
-			// ڴ ȭ ѻ   .
+			// 범법자는 평화모드인 착한사람을 공격할 수 없다.
 			if (PK_MODE_PEACE == pkVictim->GetPKMode())
 			    return false;
 		    }
@@ -592,7 +592,7 @@ void CPVPManager::SendList(LPDESC d)
 		if (!pkPVP->m_players[0].dwVID || !pkPVP->m_players[1].dwVID)
 			continue;
 
-		// VID Ѵ  쿡 .
+		// VID가 둘다 있을 경우에만 보낸다.
 		if (pkPVP->IsFight())
 		{
 			pack.bMode = PVP_MODE_FIGHT;
@@ -647,7 +647,7 @@ void CPVPManager::Process()
 	{
 		CPVP * pvp = (it++)->second;
 
-		if (get_dword_time() - pvp->GetLastFightTime() > 600000) // 10 ̻ ο 
+		if (get_dword_time() - pvp->GetLastFightTime() > 600000) // 10분 이상 싸움이 없었으면
 		{
 			pvp->Packet(true);
 			Delete(pvp);
diff --git a/src/game/src/questevent.cpp b/src/game/src/questevent.cpp
index 96933ba..e7d2c02 100644
--- a/src/game/src/questevent.cpp
+++ b/src/game/src/questevent.cpp
@@ -35,7 +35,7 @@ namespace quest
 		if (!q.ServerTimer(info->npc_id, info->arg))
 			return passes_per_sec / 2 + 1;
 
-		if (0 == info->time_cycle)	//  ƴ϶  Ų.
+		if (0 == info->time_cycle)	// 루프가 아니라면 종료 시킨다.
 		{
 			q.ClearServerTimerNotCancel(info->name, info->arg);
 			M2_DELETE_ARRAY(info->name);
@@ -62,7 +62,7 @@ namespace quest
 			if (!CQuestManager::instance().Timer(info->player_id, info->npc_id))
 				return (passes_per_sec / 2 + 1);
 
-			if (0 == info->time_cycle)	//  ƴ϶  Ų.
+			if (0 == info->time_cycle)	// 루프가 아니라면 종료 시킨다.
 				goto END_OF_TIMER_EVENT;
 		}
 		else
diff --git a/src/game/src/questlua.cpp b/src/game/src/questlua.cpp
index 2b78367..352f358 100644
--- a/src/game/src/questlua.cpp
+++ b/src/game/src/questlua.cpp
@@ -443,7 +443,7 @@ namespace quest
 	}
 
 	/**
-	 * @version 05/06/08	Bang2ni - __get_guildid_byname ũƮ Լ 
+	 * @version 05/06/08	Bang2ni - __get_guildid_byname 스크립트 함수 등록
 	 */
 	bool CQuestManager::InitializeLua()
 	{
@@ -688,7 +688,7 @@ namespace quest
 
 		if (chReply)
 		{
-			// ð  ˾Ƽ 
+			// 시간 지나면 알아서 닫힘
 		}
 
 		if (chWait)
@@ -708,12 +708,12 @@ namespace quest
 
 		SPDLOG_DEBUG("GotoConfirmState vid {} msg '{}', timeout {}", dwVID, szMsg, iTimeout);
 
-		// 1. 濡 Ȯâ 
-		// 2.  Ȯ ٸٰ ǥϴ â 
-		// 3. ŸӾƿ  (ŸӾƿ Ǹ  â ݰ Ե â  )
+		// 1. 상대방에게 확인창 띄움
+		// 2. 나에게 확인 기다린다고 표시하는 창 띄움
+		// 3. 타임아웃 설정 (타임아웃 되면 상대방 창 닫고 나에게도 창 닫으라고 보냄)
 
 		// 1
-		//    ׳ 濡  ʴ´. ŸӾƿ ؼ ѾԵ
+		// 상대방이 없는 경우는 그냥 상대방에게 보내지 않는다. 타임아웃에 의해서 넘어가게됨
 		LPCHARACTER ch = CHARACTER_MANAGER::instance().Find(dwVID);
 		if (ch && ch->IsPC())
 		{
@@ -749,7 +749,7 @@ namespace quest
 		AddScript("[INPUT]");
 		SendScript();
 
-		// ð  
+		// 시간 제한을 검
 		//event_create(input_timeout_event, dwEI, PASSES_PER_SEC(iTimeout));
 	}
 
diff --git a/src/game/src/questlua_affect.cpp b/src/game/src/questlua_affect.cpp
index 20c0cf2..fa0c0be 100644
--- a/src/game/src/questlua_affect.cpp
+++ b/src/game/src/questlua_affect.cpp
@@ -31,7 +31,7 @@ namespace quest
 			return 0;
 		}
 
-		if (ch->FindAffect(AFFECT_QUEST_START_IDX, applyOn)) // Ʈ    ȿ ɷ ŵ
+		if (ch->FindAffect(AFFECT_QUEST_START_IDX, applyOn)) // 퀘스트로 인해 같은 곳에 효과가 걸려있으면 스킵
 			return 0;
 
 		int value = (int) lua_tonumber(L, 2);
@@ -62,14 +62,14 @@ namespace quest
 		return 0;
 	}
 
-	int affect_remove_bad(lua_State * L) //  ȿ 
+	int affect_remove_bad(lua_State * L) // 나쁜 효과를 없앰
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 		ch->RemoveBadAffect();
 		return 0;
 	}
 
-	int affect_remove_good(lua_State * L) //  ȿ 
+	int affect_remove_good(lua_State * L) // 좋은 효과를 없앰
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 		ch->RemoveGoodAffect();
@@ -104,7 +104,7 @@ namespace quest
 		return 0;
 	}
 
-	int affect_remove_hair(lua_State * L) //  ȿ ش.
+	int affect_remove_hair(lua_State * L) // 헤어 효과를 없앤다.
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 
@@ -123,7 +123,7 @@ namespace quest
 		return 1;
 	}
 	
-	//  ijͰ AFFECT_TYPE affect  bApplyOn  ȯϰ  nil ȯϴ Լ.
+	// 현재 캐릭터가 AFFECT_TYPE affect를 갖고있으면 bApplyOn 값을 반환하고 없으면 nil을 반환하는 함수.
 	// usage :	applyOn = affect.get_apply(AFFECT_TYPE) 
 	int affect_get_apply_on(lua_State * L)
 	{
diff --git a/src/game/src/questlua_dungeon.cpp b/src/game/src/questlua_dungeon.cpp
index 3f9e8ba..cd70595 100644
--- a/src/game/src/questlua_dungeon.cpp
+++ b/src/game/src/questlua_dungeon.cpp
@@ -991,7 +991,7 @@ namespace quest
 		return 0;
 	}
 
-	int dungeon_exit(lua_State* L) //    ġ 
+	int dungeon_exit(lua_State* L) // 던전에 들어오기 전 위치로 보냄
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 
@@ -999,7 +999,7 @@ namespace quest
 		return 0;
 	}
 
-	int dungeon_exit_all(lua_State* L) //  ִ      ġ 
+	int dungeon_exit_all(lua_State* L) // 던전에 있는 모든 사람을 던전에 들어오기 전 위치로 보냄
 	{
 		CQuestManager& q = CQuestManager::instance();
 		LPDUNGEON pDungeon = q.GetCurrentDungeon();
@@ -1127,7 +1127,7 @@ namespace quest
 		}
 	};
 	
-	int dungeon_exit_all_by_item_group (lua_State* L) // Ư  ׷쿡   » 
+	int dungeon_exit_all_by_item_group (lua_State* L) // 특정 아이템 그룹에 속한 아이템이 없는사람은 강퇴
 	{
 		if (!lua_isstring(L, 1))
 		{
@@ -1192,7 +1192,7 @@ namespace quest
 		}
 	};
 	
-	int dungeon_delete_item_in_item_group_from_all(lua_State* L) // Ư    pcԼ .
+	int dungeon_delete_item_in_item_group_from_all(lua_State* L) // 특정 아이템을 던전 내 pc에게서 삭제.
 	{
 		if (!lua_isstring(L, 1))
 		{
diff --git a/src/game/src/questlua_global.cpp b/src/game/src/questlua_global.cpp
index a67c558..70da03b 100644
--- a/src/game/src/questlua_global.cpp
+++ b/src/game/src/questlua_global.cpp
@@ -790,7 +790,7 @@ namespace quest
 		return 1;
 	}
 
-	// ο state .
+	// 새로운 state를 만든다.
 	int _set_quest_state(lua_State* L)
 	{
 		if (!lua_isstring(L, 1) || !lua_isstring(L, 2))
@@ -1012,7 +1012,7 @@ namespace quest
 		return 0;
 	}
 
-	//:   ȵǴ ʿ 
+	//주의: 몹 리젠이 안되는 맵에서만 사용
 	int _regen_in_map( lua_State * L )
 	{
 		int iMapIndex = static_cast(lua_tonumber(L, 1));
diff --git a/src/game/src/questlua_guild.cpp b/src/game/src/questlua_guild.cpp
index 8ed5f97..0b43159 100644
--- a/src/game/src/questlua_guild.cpp
+++ b/src/game/src/questlua_guild.cpp
@@ -297,12 +297,12 @@ namespace quest
 
 	int guild_change_master(lua_State* L)
 	{
-		// ϰ
-		//	0 : Է ̸ ߸Ǿ ( ڿ ƴ )
-		//	1 :  ƴ
-		//	2 :  ̸  
-		//	3 : û 
-		//	4 : 尡 
+		// 리턴값
+		//	0 : 입력한 이름이 잘못되었음 ( 문자열이 아님 )
+		//	1 : 길드장이 아님
+		//	2 : 지정한 이름의 길드원이 없음
+		//	3 : 요청 성공
+		//	4 : 길드가 없음
 
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 
@@ -338,23 +338,23 @@ namespace quest
 
 	int guild_change_master_with_limit(lua_State* L)
 	{
-		// 
-		//  arg0 :   ̸
-		//  arg1 :    
-		//  arg2 : resign_limit  ð
-		//  arg3 : be_other_leader  ð
-		//  arg4 : be_other_member  ð
-		//  arg5 : ijΰ ƴѰ
+		// 인자
+		//  arg0 : 새 길드장 이름
+		//  arg1 : 새 길드장 레벨 제한
+		//  arg2 : resign_limit 제한 시간
+		//  arg3 : be_other_leader 제한 시간
+		//  arg4 : be_other_member 제한 시간
+		//  arg5 : 캐시템인가 아닌가
 		//
-		// ϰ
-		//	0 : Է ̸ ߸Ǿ ( ڿ ƴ )
-		//	1 :  ƴ
-		//	2 :  ̸  
-		//	3 : û 
-		//	4 : 尡 
-		//	5 :  ̸ ¶ ƴ
-		//	6 :  ij  ط 
-		//	7 :   be_other_leader ѿ ɸ
+		// 리턴값
+		//	0 : 입력한 이름이 잘못되었음 ( 문자열이 아님 )
+		//	1 : 길드장이 아님
+		//	2 : 지정한 이름의 길드원이 없음
+		//	3 : 요청 성공
+		//	4 : 길드가 없음
+		//	5 : 지정한 이름이 온라인이 아님
+		//	6 : 지정한 캐릭터 레벨이 기준레벨보다 낮음
+		//	7 : 새 길드장이 be_other_leader 제한에 걸림
 
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 
diff --git a/src/game/src/questlua_horse.cpp b/src/game/src/questlua_horse.cpp
index 1f44735..5ea7def 100644
--- a/src/game/src/questlua_horse.cpp
+++ b/src/game/src/questlua_horse.cpp
@@ -61,10 +61,10 @@ namespace quest
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 
-		// ȯϸ ָ ޷ 
+		// 소환하면 멀리서부터 달려오는지 여부
 		bool bFromFar = lua_isboolean(L, 1) ? lua_toboolean(L, 1) : false;
 
-		// ȯ vnum
+		// 소환수의 vnum
 		DWORD horseVnum= lua_isnumber(L, 2) ? lua_tonumber(L, 2) : 0;
 
 		const char* name = lua_isstring(L, 3) ? lua_tostring(L, 3) : 0;
@@ -212,10 +212,10 @@ namespace quest
 
 	int horse_set_name(lua_State* L)
 	{
-		// ϰ
-		// 0 :   
-		// 1 : ߸ ̸̴
-		// 2 : ̸ ٲٱ 
+		// 리턴값
+		// 0 : 소유한 말이 없다
+		// 1 : 잘못된 이름이다
+		// 2 : 이름 바꾸기 성공
 
 		if ( lua_isstring(L, -1) != true ) return 0;
 
diff --git a/src/game/src/questlua_item.cpp b/src/game/src/questlua_item.cpp
index c5e0978..6da9fe8 100644
--- a/src/game/src/questlua_item.cpp
+++ b/src/game/src/questlua_item.cpp
@@ -437,7 +437,7 @@ namespace quest
 			ITEM_MANAGER::instance().FlushDelayedSave(pkNewItem);
 			pkNewItem->AttrLog();
 
-			// !
+			// 성공!
 			lua_pushboolean(L, 1);			
 		}
 
diff --git a/src/game/src/questlua_marriage.cpp b/src/game/src/questlua_marriage.cpp
index cbe769e..975ed32 100644
--- a/src/game/src/questlua_marriage.cpp
+++ b/src/game/src/questlua_marriage.cpp
@@ -162,7 +162,7 @@ namespace quest
 		}
 		if (pMarriage->pWeddingInfo)
 		{
-			// ȥ  û
+			// 결혼식 끝내기 요청
 			pMarriage->RequestEndWedding();
 		}
 		return 0;
diff --git a/src/game/src/questlua_monarch.cpp b/src/game/src/questlua_monarch.cpp
index d806b12..5cb2736 100644
--- a/src/game/src/questlua_monarch.cpp
+++ b/src/game/src/questlua_monarch.cpp
@@ -145,7 +145,7 @@ namespace quest
 	
 		int HealPrice = quest::CQuestManager::instance().GetEventFlag("MonarchHealGold");
 		if (HealPrice == 0)
-			HealPrice = 2000000;	// 200
+			HealPrice = 2000000;	// 200만
 
 		if (CMonarch::instance().HealMyEmpire(ch, HealPrice))
 		{
@@ -160,7 +160,7 @@ namespace quest
 		return 1;
 	}
 
-	//   Ʈ Լ 
+	// 군주의 사자후 퀘스트 함수 
 	int monarch_powerup(lua_State * L)
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); 
@@ -168,7 +168,7 @@ namespace quest
 		if (!ch)
 			return 0;
 
-		// üũ 
+		//군주 체크 
 		if (false==ch->IsMonarch())
 		{
 			if (!ch->IsGM())
@@ -179,8 +179,8 @@ namespace quest
 			}
 		}
 
-		//  ˻
-		int	money_need = 5000000;	// 500
+		//군주 국고 검사
+		int	money_need = 5000000;	// 500만
 		if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -195,10 +195,10 @@ namespace quest
 			return 0;
 		}
 
-		//  	
+		//군주의 사자후 적용	
 		CMonarch::instance().PowerUp(ch->GetEmpire(), true); 
 	
-		//  ð 	
+		//군주의 사자후 적용시간 	
 		int g_nMonarchPowerUpCT = 60 * 3;
 		
 		monarch_powerup_event_info* info = AllocEventInfo();
@@ -216,7 +216,7 @@ namespace quest
 
 		return 1;		
 	}
-	//  ݰ Ʈ Լ 
+	// 군주의 금강권 퀘스트 함수 
 	int monarch_defenseup(lua_State * L)
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); 
@@ -225,7 +225,7 @@ namespace quest
 			return 0;
 	
 		
-		// üũ	
+		//군주 체크	
 		
 		if (false==ch->IsMonarch())
 		{
@@ -237,7 +237,7 @@ namespace quest
 			}
 		}
 	
-		int	money_need = 5000000;	// 500
+		int	money_need = 5000000;	// 500만
 		if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -252,10 +252,10 @@ namespace quest
 			return 0;
 		}	
 		
-		// ݰ 	
+		//군주의 금강권 적용	
 		CMonarch::instance().DefenseUp(ch->GetEmpire(), true); 
 
-		// ݰ  ð
+		//군주의 금강권 적용 시간
 		int g_nMonarchDefenseUpCT = 60 * 3;
 		
 		monarch_defenseup_event_info* info = AllocEventInfo();
@@ -326,9 +326,9 @@ namespace quest
 			int x = ch->GetX();
 			int y = ch->GetY();
 #if 0
-			if (11505 == mob_vnum)	// Ȳݵβ
+			if (11505 == mob_vnum)	// 황금두꺼비
 			{
-				//  ˻
+				//군주 국고 검사
 				if (!CMonarch::instance().IsMoneyOk(CASTLE_FROG_PRICE, ch->GetEmpire()))
 				{
 					int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -340,7 +340,7 @@ namespace quest
 
 				if (mob)
 				{
-					// 
+					// 국고감소
 					CMonarch::instance().SendtoDBDecMoney(CASTLE_FROG_PRICE, ch->GetEmpire(), ch);
 					castle_save();
 				}
@@ -417,7 +417,7 @@ namespace quest
 		{
 			int	money_need = castle_cost_of_hiring_guard(group_vnum);
 
-			//  ˻
+			//군주 국고 검사
 			if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 			{
 				int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -428,7 +428,7 @@ namespace quest
 
 			if (guard_leader)
 			{
-				// 
+				// 국고감소
 				CMonarch::instance().SendtoDBDecMoney(money_need, ch->GetEmpire(), ch);
 				castle_save();
 			}
@@ -491,7 +491,7 @@ namespace quest
 			return 0;
 		}
 
-		// Ÿ ˻
+		//군주 쿨타임 검사
 		if (!ch->IsMCOK(CHARACTER::MI_WARP))
 		{
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_WARP));	
@@ -499,10 +499,10 @@ namespace quest
 		}
 
 
-		//  ȯ  
+		//군주 몹 소환 비용 
 		const int WarpPrice = 10000;
 
-		//  ˻ 
+		//군주 국고 검사 
 		if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -547,10 +547,10 @@ namespace quest
 					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), name.c_str());
 					ch->WarpSet(pos.x, pos.y);
 
-					//  谨	
+					//군주 돈 삭감	
 					CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
 
-					//Ÿ ʱȭ 
+					//쿨타임 초기화 
 					ch->SetMC(CHARACTER::MI_WARP);
 				}
 
@@ -584,10 +584,10 @@ namespace quest
 		ch->WarpSet(x,y);
 		ch->Stop();
 
-		//  谨	
+		//군주 돈 삭감	
 		CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
 
-		//Ÿ ʱȭ 
+		//쿨타임 초기화 
 		ch->SetMC(CHARACTER::MI_WARP); 
 
 		return 0;
@@ -646,17 +646,17 @@ namespace quest
 			return 0;
 		}
 
-		//  Ÿ ˻
+		// 군주 쿨타임 검사
 		if (!ch->IsMCOK(CHARACTER::MI_TRANSFER))
 		{
 			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
 			return 0;
 		}
 
-		//    
+		// 군주 워프 비용 
 		const int WarpPrice = 10000;
 
-		//   ˻ 
+		// 군주 국고 검사 
 		if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
@@ -705,10 +705,10 @@ namespace quest
 				P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGTransfer));
 				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), name.c_str());
 
-				//   谨
+				// 군주 돈 삭감
 				CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
 
-				// Ÿ ʱȭ 
+				// 쿨타임 초기화 
 				ch->SetMC(CHARACTER::MI_TRANSFER);
 			}
 			else
@@ -743,9 +743,9 @@ namespace quest
 		}
 		tch->WarpSet(ch->GetX(), ch->GetY(), ch->GetMapIndex());
 
-		//   谨	
+		// 군주 돈 삭감	
 		CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
-		// Ÿ ʱȭ 
+		// 쿨타임 초기화 
 		ch->SetMC(CHARACTER::MI_TRANSFER);
 		return 0;
 	}
diff --git a/src/game/src/questlua_party.cpp b/src/game/src/questlua_party.cpp
index 607377e..022ff4c 100644
--- a/src/game/src/questlua_party.cpp
+++ b/src/game/src/questlua_party.cpp
@@ -323,8 +323,8 @@ namespace quest
 		}
 	};
 	
-	// Ƽ   ִ Լ.
-	//  ʿ ִ Ƽ  ޴´.
+	// 파티 단위로 버프 주는 함수.
+	// 같은 맵에 있는 파티원만 영향을 받는다.
 	int party_give_buff (lua_State* L)
 	{
 		CQuestManager & q = CQuestManager::instance();
@@ -405,7 +405,7 @@ namespace quest
 			{ "is_in_dungeon",	party_is_in_dungeon	},
 			{ "give_buff",		party_give_buff		},
 			{ "is_map_member_flag_lt",	party_is_map_member_flag_lt	},
-			{ "get_member_pids",		party_get_member_pids	}, // Ƽ pid return
+			{ "get_member_pids",		party_get_member_pids	}, // 파티원들의 pid를 return
 			{ NULL,				NULL				}
 		};
 
diff --git a/src/game/src/questlua_pc.cpp b/src/game/src/questlua_pc.cpp
index a413b57..bd9d642 100644
--- a/src/game/src/questlua_pc.cpp
+++ b/src/game/src/questlua_pc.cpp
@@ -232,7 +232,7 @@ namespace quest
 			return;
 		}
 		//PREVENT_PORTAL_AFTER_EXCHANGE
-		//ȯ  ðüũ
+		//교환 후 시간체크
 		if ( iPulse - pkChr->GetExchangeTime()  < PASSES_PER_SEC(60) )
 		{
 			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xB8\xA5\xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
@@ -447,7 +447,7 @@ namespace quest
 
 		DWORD dwVnum;
 
-		if (lua_isnumber(L,2)) // ȣΰ ȣ ش.
+		if (lua_isnumber(L,2)) // 번호인경우 번호로 준다.
 			dwVnum = (int) lua_tonumber(L, 2);
 		else if (!ITEM_MANAGER::instance().GetVnum(lua_tostring(L, 2), dwVnum))
 		{
@@ -487,7 +487,7 @@ namespace quest
 
 		DWORD dwVnum;
 
-		if (lua_isnumber(L, 1)) // ȣΰ ȣ ش.
+		if (lua_isnumber(L, 1)) // 번호인경우 번호로 준다.
 		{
 			dwVnum = (int) lua_tonumber(L, 1);
 		}
@@ -543,7 +543,7 @@ namespace quest
 
 		DWORD dwVnum;
 
-		if (lua_isnumber(L, 1)) // ȣΰ ȣ ش.
+		if (lua_isnumber(L, 1)) // 번호인경우 번호로 준다.
 		{
 			dwVnum = (int) lua_tonumber(L, 1);
 		}
@@ -804,7 +804,7 @@ namespace quest
 
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 
-		if (val > 0) // Ű ̹Ƿ   
+		if (val > 0) // 증가시키는 것이므로 무조건 성공 리턴
 			ch->PointChange(POINT_SP, val);
 		else if (val < 0)
 		{
@@ -857,18 +857,18 @@ namespace quest
 			PC* pPC = CQuestManager::instance().GetCurrentPC();
 			LogManager::instance().QuestRewardLog(pPC->GetCurrentQuestName().c_str(), ch->GetPlayerID(), ch->GetLevel(), newLevel, 0);
 			
-			//Ʈ : ų, 꽺ų, 
+			//포인트 : 스킬, 서브스킬, 스탯
 			ch->PointChange(POINT_SKILL, newLevel - ch->GetLevel());
 			ch->PointChange(POINT_SUB_SKILL, newLevel < 10 ? 0 : newLevel - std::max(ch->GetLevel(), 9));
 			ch->PointChange(POINT_STAT, ((std::clamp(newLevel, 1, 90) - ch->GetLevel()) * 3) + ch->GetPoint(POINT_LEVEL_STEP));
-			//
+			//레벨
 			ch->PointChange(POINT_LEVEL, newLevel - ch->GetLevel(), false, true);
 			//HP, SP
 			ch->SetRandomHP((newLevel - 1) * Random::get(JobInitialPoints[ch->GetJob()].hp_per_lv_begin, JobInitialPoints[ch->GetJob()].hp_per_lv_end));
 			ch->SetRandomSP((newLevel - 1) * Random::get(JobInitialPoints[ch->GetJob()].sp_per_lv_begin, JobInitialPoints[ch->GetJob()].sp_per_lv_end));
 
 
-			// ȸ
+			// 회복
 			ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
 			ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
 			
@@ -931,8 +931,8 @@ namespace quest
 		return 1;
 	}
 
-	// 20050725.myevan.   ȥ ý ġ ι ҸǴ װ ߻
-	//  ġ ̿  ϰ Ѵ.
+	// 20050725.myevan.은둔의 망토 사용중 혼석 수련시 선악치가 두배 소모되는 버그가 발생해
+	// 실제 선악치를 이용해 계산을 하게 한다.
 	int pc_get_real_alignment(lua_State* L)
 	{
 		lua_pushnumber(L, CQuestManager::instance().GetCurrentCharacterPtr()->GetRealAlignment()/10);
@@ -1257,7 +1257,7 @@ namespace quest
 		ch->RemoveAffect(AFFECT_MOUNT);
 		ch->RemoveAffect(AFFECT_MOUNT_BONUS);
 
-		//  ȯǾ ٴϴ ¶  
+		// 말이 소환되어 따라다니는 상태라면 말부터 없앰
 		if (ch->GetHorse())
 			ch->HorseSummon(false);
 
@@ -1525,7 +1525,7 @@ namespace quest
 
 		if (pct == 100 || Random::get(1, 100) <= pct)
 		{
-			//  
+			// 개량 성공
 			lua_pushboolean(L, 1);
 
 			LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(item->GetRefinedVnum(), 1, 0, false);
@@ -1562,7 +1562,7 @@ namespace quest
 		}
 		else
 		{
-			//  
+			// 개량 실패
 			lua_pushboolean(L, 0);
 		}
 
@@ -1599,7 +1599,7 @@ namespace quest
 		pdw[1] = 1;
 		pdw[2] = q.GetEventFlag("lotto_round");
 
-		// ÷  Ѵ
+		// 추첨서는 소켓을 설정한다
 		DBManager::instance().ReturnQuery(QID_LOTTO, ch->GetPlayerID(), pdw,
 				"INSERT INTO lotto_list VALUES(0, 'server%s', %u, NOW())",
 				get_table_postfix(), ch->GetPlayerID());
@@ -1848,14 +1848,14 @@ namespace quest
 		return 0;
 	}
 
-	//ڷƮ 
+	//텔레포트 
 	int pc_teleport ( lua_State * L )
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
 		int x=0,y=0;	
 		if ( lua_isnumber(L, 1) )
 		{
-			//  
+			// 지역명 워프
 			const int TOWN_NUM = 10;
 			struct warp_by_town_name
 			{
@@ -2056,13 +2056,13 @@ teleport_area:
 	
 	int pc_change_name(lua_State* L)
 	{
-		// ϰ
-		//		0: ̸   α׾ƿ 
-		//		1: ũƮ ڿ Ѿ ʾ
-		//		2: check_name   
-		//		3: ̹  ̸ 
-		//		4: 
-		//		5: ش   
+		// 리턴값
+		//		0: 새이름을 설정한 뒤 로그아웃을 안했음
+		//		1: 스크립트에서 문자열이 넘어오지 않았음
+		//		2: check_name 을 통과하지 못했음
+		//		3: 이미 같은 이름이 사용중
+		//		4: 성공
+		//		5: 해당 기능 지원하지 않음
 		if ( LC_IsEurope() )
 		{
 			lua_pushnumber(L, 5);
@@ -2102,7 +2102,7 @@ teleport_area:
 			int	count = 0;
 			str_to_number(count, row[0]);
 
-			// ̹ ش ̸  ijͰ 
+			// 이미 해당 이름을 가진 캐릭터가 있음
 			if ( count != 0 )
 			{
 				lua_pushnumber(L, 3);
@@ -2353,8 +2353,8 @@ teleport_area:
 
 		int idx = 1;
 
-		// ȥ   ʿ  .
-		//  Լ Ż Լ  ϴ.
+		// 용혼석 슬롯은 할 필요 없을 듯.
+		// 이 함수는 탈석서용 함수인 듯 하다.
 		for ( int i=0; i < INVENTORY_MAX_NUM + WEAR_MAX_NUM; i++ )
 		{
 			LPITEM pItem = pChar->GetInventoryItem(i);
@@ -2743,7 +2743,7 @@ teleport_area:
 		return 1;
 	}
 
-	int pc_get_informer_type(lua_State* L)	//  
+	int pc_get_informer_type(lua_State* L)	//독일 선물 기능
 	{
 		LPCHARACTER pChar = CQuestManager::instance().GetCurrentCharacterPtr();
 
@@ -2986,17 +2986,17 @@ teleport_area:
 
 			{ "charge_cash",		pc_charge_cash		},
 			
-			{ "get_informer_type",	pc_get_informer_type	},	//  
+			{ "get_informer_type",	pc_get_informer_type	},	//독일 선물 기능
 			{ "get_informer_item",  pc_get_informer_item	},
 
-			{ "give_award",			pc_give_award			},	//Ϻ  ѹ ݱ 
-			{ "give_award_socket",	pc_give_award_socket	},	// κ丮  .    Լ.
+			{ "give_award",			pc_give_award			},	//일본 계정당 한번씩 금괴 지급
+			{ "give_award_socket",	pc_give_award_socket	},	//몰 인벤토리에 아이템 지급. 소켓 설정을 위한 함수.
 
-			{ "get_killee_drop_pct",	pc_get_killee_drop_pct	}, /* mob_vnum.kill ̺Ʈ killee pc level , pc ̾      Ȯ.
-																    * return  (, и).
-																    * ( ѵ, CreateDropItem GetDropPct iDeltaPercent, iRandRange returnѴٰ  .)
-																	* (    Ф)
-																	* ǻ : kill event  !
+			{ "get_killee_drop_pct",	pc_get_killee_drop_pct	}, /* mob_vnum.kill 이벤트에서 killee와 pc와의 level 차이, pc의 프리미엄 드랍률 등등을 고려한 아이템 드랍 확률.
+																    * return 값은 (분자, 분모).
+																    * (말이 복잡한데, CreateDropItem의 GetDropPct의 iDeltaPercent, iRandRange를 return한다고 보면 됨.)
+																	* (이 말이 더 어려울라나 ㅠㅠ)
+																	* 주의사항 : kill event에서만 사용할 것!
 																	*/
 
 			{ NULL,			NULL			}
diff --git a/src/game/src/questlua_pet.cpp b/src/game/src/questlua_pet.cpp
index d5c62dd..cc1d6a1 100644
--- a/src/game/src/questlua_pet.cpp
+++ b/src/game/src/questlua_pet.cpp
@@ -34,13 +34,13 @@ namespace quest
 			return 1;
 		}
 
-		// ȯ vnum
+		// 소환수의 vnum
 		DWORD mobVnum= lua_isnumber(L, 1) ? lua_tonumber(L, 1) : 0;
 
-		// ȯ ̸
+		// 소환수의 이름
 		const char* petName = lua_isstring(L, 2) ? lua_tostring(L, 2) : 0;
 
-		// ȯϸ ָ ޷ 
+		// 소환하면 멀리서부터 달려오는지 여부
 		bool bFromFar = lua_isboolean(L, 3) ? lua_toboolean(L, 3) : false;
 
 		CPetActor* pet = petSystem->Summon(mobVnum, pItem, petName, bFromFar);
@@ -62,7 +62,7 @@ namespace quest
 		if (0 == petSystem)
 			return 0;
 
-		// ȯ vnum
+		// 소환수의 vnum
 		DWORD mobVnum= lua_isnumber(L, 1) ? lua_tonumber(L, 1) : 0;
 
 		petSystem->Unsummon(mobVnum);
@@ -94,7 +94,7 @@ namespace quest
 		if (0 == petSystem)
 			return 0;
 
-		// ȯ vnum
+		// 소환수의 vnum
 		DWORD mobVnum= lua_isnumber(L, 1) ? lua_tonumber(L, 1) : 0;
 
 		CPetActor* petActor = petSystem->GetByVnum(mobVnum);
diff --git a/src/game/src/questlua_quest.cpp b/src/game/src/questlua_quest.cpp
index b442cb5..e90b482 100644
--- a/src/game/src/questlua_quest.cpp
+++ b/src/game/src/questlua_quest.cpp
@@ -140,7 +140,7 @@ namespace quest
 	int quest_coroutine_yield(lua_State * L)
 	{
 		CQuestManager& q = CQuestManager::instance();
-		// other_pc_block ο yield Ͼ ȵȴ. .
+		// other_pc_block 내부에서는 yield가 일어나서는 안된다. 절대로.
 		if (q.IsInOtherPCBlock())
 		{
 			quest_err("FATAL ERROR! Yield occur in other_pc_block.");
@@ -214,10 +214,10 @@ namespace quest
 			{ "done",					quest_done					},
 			{ "getcurrentquestindex",	quest_get_current_quest_index	},
 			{ "no_send",				quest_no_send				},
-			// begin_other_pc_block(pid), end_other_pc_block ̸ other_pc_block̶ .
-			// other_pc_block current_pc pid ȴ.
-			//						 ٽ  current_pc ư.
-			/*		̷   .
+			// begin_other_pc_block(pid), end_other_pc_block 사이를 other_pc_block이라고 하자.
+			// other_pc_block에서는 current_pc가 pid로 변경된다.
+			//						끝나면 다시 원래의 current_pc로 돌아간다.
+			/*		이런 것을 위해 만듬.
 					for i, pid in next, pids, nil do
 						q.begin_other_pc_block(pid)
 						if pc.count_item(PASS_TICKET) < 1 then
@@ -227,7 +227,7 @@ namespace quest
 						q.end_other_pc_block()
 					end
 			*/
-			//  : other_pc_block ο  yield Ͼ ȵȴ.(ex. wait, select, input, ...)
+			// 주의 : other_pc_block 내부에서는 절대로 yield가 일어나서는 안된다.(ex. wait, select, input, ...)
 			{ "begin_other_pc_block",	quest_begin_other_pc_block	}, 
 			{ "end_other_pc_block",		quest_end_other_pc_block	},
 			{ NULL,						NULL						}
diff --git a/src/game/src/questlua_target.cpp b/src/game/src/questlua_target.cpp
index 2f7264b..01abf0d 100644
--- a/src/game/src/questlua_target.cpp
+++ b/src/game/src/questlua_target.cpp
@@ -69,7 +69,7 @@ namespace quest
 		return 0;
 	}
 
-	//  Ʈ ϵ Ÿ  Ѵ.
+	// 현재 퀘스트에 등록된 타겟을 삭제 한다.
 	int target_delete(lua_State* L)
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
@@ -86,7 +86,7 @@ namespace quest
 		return 0;
 	}
 
-	//  Ʈ ε Ǿִ Ÿ  Ѵ.
+	// 현재 퀘스트 인덱스로 되어있는 타겟을 모두 삭제한다.
 	int target_clear(lua_State* L)
 	{
 		LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
diff --git a/src/game/src/questmanager.cpp b/src/game/src/questmanager.cpp
index 0cf51c7..ec0e0f2 100644
--- a/src/game/src/questmanager.cpp
+++ b/src/game/src/questmanager.cpp
@@ -57,29 +57,29 @@ namespace quest
 
 		m_pSelectedDungeon = NULL;
 
-		m_mapEventName.insert(TEventNameMap::value_type("click", QUEST_CLICK_EVENT));		// NPC Ŭ
-		m_mapEventName.insert(TEventNameMap::value_type("kill", QUEST_KILL_EVENT));		// Mob 
-		m_mapEventName.insert(TEventNameMap::value_type("timer", QUEST_TIMER_EVENT));		// ̸ ص ð 
-		m_mapEventName.insert(TEventNameMap::value_type("levelup", QUEST_LEVELUP_EVENT));	//  
-		m_mapEventName.insert(TEventNameMap::value_type("login", QUEST_LOGIN_EVENT));		// α 
-		m_mapEventName.insert(TEventNameMap::value_type("logout", QUEST_LOGOUT_EVENT));		// α׾ƿ 
-		m_mapEventName.insert(TEventNameMap::value_type("button", QUEST_BUTTON_EVENT));		// Ʈ ư 
-		m_mapEventName.insert(TEventNameMap::value_type("info", QUEST_INFO_EVENT));		// Ʈ â 
-		m_mapEventName.insert(TEventNameMap::value_type("chat", QUEST_CHAT_EVENT));		// Ư Ű ȭ 
-		m_mapEventName.insert(TEventNameMap::value_type("in", QUEST_ATTR_IN_EVENT));		//  Ư Ӽ 
-		m_mapEventName.insert(TEventNameMap::value_type("out", QUEST_ATTR_OUT_EVENT));		//  Ư Ӽ 
-		m_mapEventName.insert(TEventNameMap::value_type("use", QUEST_ITEM_USE_EVENT));		// Ʈ  
-		m_mapEventName.insert(TEventNameMap::value_type("server_timer", QUEST_SERVER_TIMER_EVENT));	//  Ÿ̸ ( ׽Ʈ ȵ)
-		m_mapEventName.insert(TEventNameMap::value_type("enter", QUEST_ENTER_STATE_EVENT));	//  Ʈ 
-		m_mapEventName.insert(TEventNameMap::value_type("leave", QUEST_LEAVE_STATE_EVENT));	//  Ʈ ٸ Ʈ ٲ
-		m_mapEventName.insert(TEventNameMap::value_type("letter", QUEST_LETTER_EVENT));		// α ϰų Ʈ ٲ   
-		m_mapEventName.insert(TEventNameMap::value_type("take", QUEST_ITEM_TAKE_EVENT));	//  
-		m_mapEventName.insert(TEventNameMap::value_type("target", QUEST_TARGET_EVENT));		// Ÿ
-		m_mapEventName.insert(TEventNameMap::value_type("party_kill", QUEST_PARTY_KILL_EVENT));	// Ƽ  ͸  ( )
+		m_mapEventName.insert(TEventNameMap::value_type("click", QUEST_CLICK_EVENT));		// NPC를 클릭
+		m_mapEventName.insert(TEventNameMap::value_type("kill", QUEST_KILL_EVENT));		// Mob을 사냥
+		m_mapEventName.insert(TEventNameMap::value_type("timer", QUEST_TIMER_EVENT));		// 미리 지정해둔 시간이 지남
+		m_mapEventName.insert(TEventNameMap::value_type("levelup", QUEST_LEVELUP_EVENT));	// 레벨업을 함
+		m_mapEventName.insert(TEventNameMap::value_type("login", QUEST_LOGIN_EVENT));		// 로그인 시
+		m_mapEventName.insert(TEventNameMap::value_type("logout", QUEST_LOGOUT_EVENT));		// 로그아웃 시
+		m_mapEventName.insert(TEventNameMap::value_type("button", QUEST_BUTTON_EVENT));		// 퀘스트 버튼을 누름
+		m_mapEventName.insert(TEventNameMap::value_type("info", QUEST_INFO_EVENT));		// 퀘스트 정보창을 염
+		m_mapEventName.insert(TEventNameMap::value_type("chat", QUEST_CHAT_EVENT));		// 특정 키워드로 대화를 함
+		m_mapEventName.insert(TEventNameMap::value_type("in", QUEST_ATTR_IN_EVENT));		// 맵의 특정 속성에 들어감
+		m_mapEventName.insert(TEventNameMap::value_type("out", QUEST_ATTR_OUT_EVENT));		// 맵의 특정 속성에서 나옴
+		m_mapEventName.insert(TEventNameMap::value_type("use", QUEST_ITEM_USE_EVENT));		// 퀘스트 아이템을 사용
+		m_mapEventName.insert(TEventNameMap::value_type("server_timer", QUEST_SERVER_TIMER_EVENT));	// 서버 타이머 (아직 테스트 안됐음)
+		m_mapEventName.insert(TEventNameMap::value_type("enter", QUEST_ENTER_STATE_EVENT));	// 현재 스테이트가 됨
+		m_mapEventName.insert(TEventNameMap::value_type("leave", QUEST_LEAVE_STATE_EVENT));	// 현재 스테이트에서 다른 스테이트로 바뀜
+		m_mapEventName.insert(TEventNameMap::value_type("letter", QUEST_LETTER_EVENT));		// 로긴 하거나 스테이트가 바껴 새로 정보를 세팅해줘야함
+		m_mapEventName.insert(TEventNameMap::value_type("take", QUEST_ITEM_TAKE_EVENT));	// 아이템을 받음
+		m_mapEventName.insert(TEventNameMap::value_type("target", QUEST_TARGET_EVENT));		// 타겟
+		m_mapEventName.insert(TEventNameMap::value_type("party_kill", QUEST_PARTY_KILL_EVENT));	// 파티 멤버가 몬스터를 사냥 (리더에게 옴)
 		m_mapEventName.insert(TEventNameMap::value_type("unmount", QUEST_UNMOUNT_EVENT));
-		m_mapEventName.insert(TEventNameMap::value_type("pick", QUEST_ITEM_PICK_EVENT));	// ִ  .
-		m_mapEventName.insert(TEventNameMap::value_type("sig_use", QUEST_SIG_USE_EVENT));		// Special item group   .
-		m_mapEventName.insert(TEventNameMap::value_type("item_informer", QUEST_ITEM_INFORMER_EVENT));	// ϼ׽Ʈ
+		m_mapEventName.insert(TEventNameMap::value_type("pick", QUEST_ITEM_PICK_EVENT));	// 떨어져있는 아이템을 습득함.
+		m_mapEventName.insert(TEventNameMap::value_type("sig_use", QUEST_SIG_USE_EVENT));		// Special item group에 속한 아이템을 사용함.
+		m_mapEventName.insert(TEventNameMap::value_type("item_informer", QUEST_ITEM_INFORMER_EVENT));	// 독일선물기능테스트
 
 		m_bNoSend = false;
 
@@ -253,9 +253,9 @@ namespace quest
 
 			if (!pPC->GetRunningQuestState()->chat_scripts.empty())
 			{
-				// ä ̺Ʈ 
-				//  Ʈ  Ʈ  ΰ  Ʈ ̹Ƿ
-				//  õ Ʈ Ѵ.
+				// 채팅 이벤트인 경우
+				// 현재 퀘스트는 어느 퀘스트를 실행할 것인가를 고르는 퀘스트 이므로
+				// 끝내고 선택된 퀘스트를 실행한다.
 				QuestState& old_qs = *pPC->GetRunningQuestState();
 				CloseState(old_qs);
 
@@ -368,7 +368,7 @@ namespace quest
 			pPC->CancelRunning();
 		}
 
-		//   α׾ƿ Ѵ.
+		// 지우기 전에 로그아웃 한다.
 		Logout(ch->GetPlayerID());
 
 		if (ch == m_pCurrentCharacter)
@@ -380,7 +380,7 @@ namespace quest
 
 	///////////////////////////////////////////////////////////////////////////////////////////
 	//
-	// Quest Event 
+	// Quest Event 관련
 	//
 	///////////////////////////////////////////////////////////////////////////////////////////
 	void CQuestManager::Login(unsigned int pc, const char * c_pszQuest)
@@ -427,9 +427,9 @@ namespace quest
 			if (!CheckQuestLoaded(pPC))
 				return;
 
-			/* [hyo]  kill ߺ ī ̽  
-			   quest script when 171.kill begin ...  ڵ Ͽ ũƮ óǾ
-			   ٷ return ʰ ٸ ˻絵 ϵ . (2011/07/21)
+			/* [hyo] 몹 kill시 중복 카운팅 이슈 관련한 수정사항
+			   quest script에 when 171.kill begin ... 등의 코드로 인하여 스크립트가 처리되었더라도
+			   바로 return하지 않고 다른 검사도 수행하도록 변경함. (2011/07/21)
 			*/   
 			// call script
 			m_mapNPC[npc].OnKill(*pPC);
@@ -684,7 +684,7 @@ namespace quest
 		}
 	}
 
-	// Speical Item Group ǵ Group Use
+	// Speical Item Group에 정의된 Group Use
 	bool CQuestManager::SIGUse(unsigned int pc, DWORD sig_vnum, LPITEM item, bool bReceiveAll)
 	{
         SPDLOG_TRACE("questmanager::SIGUse Start : itemVnum : {} PC : {}", item->GetOriginalVnum(), pc);
@@ -826,7 +826,7 @@ namespace quest
 		else
 			SPDLOG_ERROR("QUEST no such pc id : {}", pc);
 	}
-	//   ׽Ʈ
+	//독일 선물 기능 테스트
 	void CQuestManager::ItemInformer(unsigned int pc,unsigned int vnum)
 	{
 		
@@ -836,7 +836,7 @@ namespace quest
 		m_mapNPC[QUEST_NO_NPC].OnItemInformer(*pPC,vnum);
 	}
 	///////////////////////////////////////////////////////////////////////////////////////////
-	// END OF Ʈ ̺Ʈ ó
+	// END OF 퀘스트 이벤트 처리
 	///////////////////////////////////////////////////////////////////////////////////////////
 
 	///////////////////////////////////////////////////////////////////////////////////////////
@@ -1258,19 +1258,19 @@ namespace quest
 					continue;
 				if (value)
 				{
-					// 
+					// 밤
 					ch->ChatPacket(CHAT_TYPE_COMMAND, "DayMode dark");
 				}
 				else
 				{
-					// 
+					// 낮
 					ch->ChatPacket(CHAT_TYPE_COMMAND, "DayMode light");
 				}
 			}
 
 			if (value && !prev_value)
 			{
-				//  ش
+				// 없으면 만들어준다
 				struct SNPCSellFireworkPosition
 				{
 					int lMapIndex;
@@ -1306,7 +1306,7 @@ namespace quest
 			}
 			else if (!value && prev_value)
 			{
-				//  ش
+				// 있으면 지워준다
 				CharacterVectorInteractor i;
 
 				if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(xmas::MOB_XMAS_FIRWORK_SELLER_VNUM, i))
@@ -1395,7 +1395,7 @@ namespace quest
 		}
 		else if (name == "new_xmas_event")
 		{
-			// 20126 newŸ.
+			// 20126 new산타.
 			static DWORD new_santa = 20126;
 			if (value != 0)
 			{
@@ -1534,12 +1534,12 @@ namespace quest
 
 	bool CQuestManager::ExecuteQuestScript(PC& pc, const string& quest_name, const int state, const char* code, const int code_size, vector* pChatScripts, bool bUseCache)
 	{
-		//  
+		// 실행공간을 생성
 		QuestState qs = CQuestManager::instance().OpenState(quest_name, state);
 		if (pChatScripts)
 			qs.chat_scripts.swap(*pChatScripts);
 
-		// ڵ带 о
+		// 코드를 읽어들임
 		if (bUseCache)
 		{
 			lua_getglobal(qs.co, "__codecache");
@@ -1578,10 +1578,10 @@ namespace quest
 		else
 			luaL_loadbuffer(qs.co, code, code_size, quest_name.c_str());
 
-		// ÷̾ 
+		// 플레이어와 연결
 		pc.SetQuest(quest_name, qs);
 
-		// 
+		// 실행
 		QuestState& rqs = *pc.GetRunningQuestState();
 		if (!CQuestManager::instance().RunState(rqs))
 		{
diff --git a/src/game/src/questnpc.cpp b/src/game/src/questnpc.cpp
index 6e5d20b..446a7c3 100644
--- a/src/game/src/questnpc.cpp
+++ b/src/game/src/questnpc.cpp
@@ -131,7 +131,7 @@ namespace quest
 			//
 
 			///////////////////////////////////////////////////////////////////////////
-			//  Index (   Ƿ ִ ,  index   )
+			// 순서 Index (여러개 있을 수 있으므로 있는 것임, 실제 index 값은 쓰지 않음)
 			j = i;
 			i = s.find('.', i + 1);
 
@@ -410,7 +410,7 @@ namespace quest
 
 		void operator()(PC::QuestInfoIterator& itPCQuest, NPC::QuestMapType::iterator& itQuestMap)
 		{
-			//   
+			// 없으니 새로 시작
 			DWORD dwQuestIndex = itQuestMap->first;
 
 			if (NPC::HasStartState(itQuestMap->second) && CQuestManager::instance().CanStartQuest(dwQuestIndex))
@@ -494,8 +494,8 @@ namespace quest
 			for (int i = 0; i < fMatch.size; i++)
 			{
 				if ( i != 0 ) {
-					//2012.05.14 <> : Ʈ Ŵ m_pCurrentPC ٲ 찡 ߻Ͽ,
-					//ΰ ̻ ũƮ , ι° ʹ Ʈ Ŵ PC   Ѵ.
+					//2012.05.14 <김용욱> : 퀘스트 매니저의 m_pCurrentPC가 바뀌는 경우가 발생하여,
+					//두개 이상의 스크립트를 실행시, 두번째 부터는 퀘스트 매니저의 PC 값을 새로 셋팅한다.
 					PC * pPC = CQuestManager::instance().GetPC(pc.GetID());		
 				}
 				
@@ -805,7 +805,7 @@ namespace quest
 		QuestMapType & rmapEventOwnQuest = m_mapOwnQuest[EventIndex];
 		QuestMapType::iterator itQuestMap = rmapEventOwnQuest.find(quest_index);
 
-		// ׷ Ʈ 
+		// 그런 퀘스트가 없음
 		if (itQuestMap == rmapEventOwnQuest.end())
 			return false;
 
@@ -817,7 +817,7 @@ namespace quest
 		}
 		else
 		{
-			//  ұ?
+			// 새로 시작할까요?
 			if (CQuestManager::instance().CanStartQuest(itQuestMap->first, pc) && HasStartState(itQuestMap->second))
 				iState = 0;
 			else
@@ -962,7 +962,7 @@ namespace quest
 		else
 			return HandleEvent(pc, QUEST_ITEM_PICK_EVENT);
 	}
-	//   ׽Ʈ
+	//독일 선물 기능 테스트
 	bool NPC::OnItemInformer(PC& pc, unsigned int vnum)
 	{
 		return HandleEvent(pc, QUEST_ITEM_INFORMER_EVENT);
diff --git a/src/game/src/questpc.cpp b/src/game/src/questpc.cpp
index c3a1872..0106462 100644
--- a/src/game/src/questpc.cpp
+++ b/src/game/src/questpc.cpp
@@ -307,10 +307,10 @@ namespace quest
 		{
 			LPCHARACTER npc = CQuestManager::instance().GetCurrentNPCCharacterPtr();
 			LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
-			// npc ־ 
+			// npc 있었던 경우
 			if (npc && !npc->IsPC())
 			{
-				//  Ǿ   
+				// 그 엔피씨가 나에게 락인 경우
 				if (ch->GetPlayerID() == npc->GetQuestNPCID())
 				{
 					npc->SetQuestNPCID(0);
diff --git a/src/game/src/regen.cpp b/src/game/src/regen.cpp
index eaff2b3..8ddb138 100644
--- a/src/game/src/regen.cpp
+++ b/src/game/src/regen.cpp
@@ -24,7 +24,7 @@ enum ERegenModes
 	MODE_VNUM
 };
 
-static bool get_word(FILE *fp, char *buf) //  ޴´.
+static bool get_word(FILE *fp, char *buf) // 워드단위로 받는다.
 {
 	int i = 0;
 	int c;
@@ -172,7 +172,7 @@ static bool read_line(FILE *fp, LPREGEN regen)
 			case MODE_Z_SECTION:
 				str_to_number(regen->z_section, szTmp);
 
-				// ͼ ̸ .
+				// 익셉션 이면 나가주자.
 				if (regen->type == REGEN_TYPE_EXCEPTION)
 					return true;
 
@@ -500,7 +500,7 @@ bool regen_do(const char* filename, int lMapIndex, int base_x, int base_y, LPDUN
 				// before the call to CHARACTER::SetRegen()
 			}
 
-			// ó   ش.
+			// 처음엔 무조건 리젠 해준다.
 			regen_spawn_dungeon(regen, pDungeon, bOnce);
 
 		}
@@ -576,7 +576,7 @@ bool regen_load_in_file(const char* filename, int lMapIndex, int base_x, int bas
 				}
 			}
 
-			// ó   ش.
+			// 처음엔 무조건 리젠 해준다.
 			regen_spawn(regen, true);
 		}
 	}
@@ -683,11 +683,11 @@ bool regen_load(const char* filename, int lMapIndex, int base_x, int base_y)
 			}
 
 			//NO_REGEN
-			// Desc: 	regen.txt (  ؽƮ )   ð 0 ҽ 
-			// 			  Ѵ.
+			// Desc: 	regen.txt (외 리젠관련 텍스트 ) 에서 리젠 시간을 0으로 세팅할시 
+			// 			리젠을 하지 안한다.
 			if (regen->time != 0)
 			{
-				// ó   ش.
+				// 처음엔 무조건 리젠 해준다.
 				regen_spawn(regen, false);
 
 				regen_event_info* info = AllocEventInfo();
@@ -752,14 +752,14 @@ void regen_reset(int x, int y)
 		if (!regen->event)
 			continue;
 
-		// ǥ  ǥ  ִ  Ʈ  Ų.
+		// 좌표가 있으면 좌표 내에 있는 리젠 리스트만 리젠 시킨다.
 		if (x != 0 || y != 0)
 		{
 			if (x >= regen->sx && x <= regen->ex)
 				if (y >= regen->sy && y <= regen->ey)
 					event_reset_time(regen->event, 1);
 		}
-		//   
+		// 없으면 전부 리젠
 		else
 			event_reset_time(regen->event, 1);
 	}
diff --git a/src/game/src/safebox.cpp b/src/game/src/safebox.cpp
index 0586fe5..a70e83a 100644
--- a/src/game/src/safebox.cpp
+++ b/src/game/src/safebox.cpp
@@ -62,7 +62,7 @@ bool CSafebox::Add(DWORD dwPos, LPITEM pkItem)
 
 	pkItem->SetWindow(m_bWindowMode);
 	pkItem->SetCell(m_pkChrOwner, dwPos);
-	pkItem->Save(); //  Save ҷ Ѵ.
+	pkItem->Save(); // 강제로 Save를 불러줘야 한다.
 	ITEM_MANAGER::instance().FlushDelayedSave(pkItem);
 
 	m_pkGrid->Put(dwPos, 1, pkItem->GetSize());
@@ -141,7 +141,7 @@ bool CSafebox::IsEmpty(DWORD dwPos, BYTE bSize)
 
 void CSafebox::ChangeSize(int iSize)
 {
-	//   ں ũ   д.
+	// 현재 사이즈가 인자보다 크면 사이즈를 가만 둔다.
 	if (m_iSize >= iSize)
 		return;
 
@@ -189,7 +189,7 @@ bool CSafebox::MoveItem(BYTE bCell, BYTE bDestCell, BYTE count)
 
 		if ((item2 = GetItem(bDestCell)) && item != item2 && item2->IsStackable() &&
 				!IS_SET(item2->GetAntiFlag(), ITEM_ANTIFLAG_STACK) &&
-				item2->GetVnum() == item->GetVnum()) // ĥ  ִ  
+				item2->GetVnum() == item->GetVnum()) // 합칠 수 있는 아이템의 경우
 		{
 			for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
 				if (item2->GetSocket(i) != item->GetSocket(i))
diff --git a/src/game/src/sectree.cpp b/src/game/src/sectree.cpp
index 7273d1e..daab5bb 100644
--- a/src/game/src/sectree.cpp
+++ b/src/game/src/sectree.cpp
@@ -149,7 +149,7 @@ bool SECTREE::InsertEntity(LPENTITY pkEnt)
 			if (pkCurTree)
 				pkCurTree->DecreasePC();
 		}
-		else if (m_iPCCount > 0 && !pkChr->IsWarp() && !pkChr->IsGoto()) // PC ƴϰ   PC ִٸ Idle event  Ų.
+		else if (m_iPCCount > 0 && !pkChr->IsWarp() && !pkChr->IsGoto()) // PC가 아니고 이 곳에 PC가 있다면 Idle event를 시작 시킨다.
 		{
 			pkChr->StartStateMachine();
 		}
diff --git a/src/game/src/sectree_manager.cpp b/src/game/src/sectree_manager.cpp
index 80374b7..498d5af 100644
--- a/src/game/src/sectree_manager.cpp
+++ b/src/game/src/sectree_manager.cpp
@@ -76,8 +76,8 @@ LPSECTREE SECTREE_MAP::Find(DWORD x, DWORD y)
 
 void SECTREE_MAP::Build()
 {
-    // Ŭ̾Ʈ ݰ 150m ij  ֱ
-    // 3x3ĭ -> 5x5 ĭ ֺsectree Ȯ(ѱ)
+    // 클라이언트에게 반경 150m 캐릭터의 정보를 주기위해
+    // 3x3칸 -> 5x5 칸으로 주변sectree 확대(한국)
     if (LC_IsYMIR() || LC_IsKorea())
     {
 #define NEIGHBOR_LENGTH		5
@@ -106,7 +106,7 @@ void SECTREE_MAP::Build()
 	}
 
 	//
-	//  sectree   sectree Ʈ .
+	// 모든 sectree에 대해 주위 sectree들 리스트를 만든다.
 	//
 	MapType::iterator it = map_.begin();
 
@@ -114,7 +114,7 @@ void SECTREE_MAP::Build()
 	{
 		LPSECTREE tree = it->second;
 
-		tree->m_neighbor_list.push_back(tree); // ڽ ִ´.
+		tree->m_neighbor_list.push_back(tree); // 자신을 넣는다.
 
 		SPDLOG_TRACE("{}x{}", (int) tree->m_id.coord.x, (int) tree->m_id.coord.y);
 
@@ -153,7 +153,7 @@ void SECTREE_MAP::Build()
 	};
 
 	//
-	//  sectree   sectree Ʈ .
+	// 모든 sectree에 대해 주위 sectree들 리스트를 만든다.
 	//
 	MapType::iterator it = map_.begin();
 
@@ -161,7 +161,7 @@ void SECTREE_MAP::Build()
 	{
 		LPSECTREE tree = it->second;
 
-		tree->m_neighbor_list.push_back(tree); // ڽ ִ´.
+		tree->m_neighbor_list.push_back(tree); // 자신을 넣는다.
 
 		SPDLOG_TRACE("{}x{}", (int) tree->m_id.coord.x, (int) tree->m_id.coord.y);
 
@@ -230,7 +230,7 @@ LPSECTREE SECTREE_MANAGER::Get(DWORD dwIndex, DWORD x, DWORD y)
 }
 
 // -----------------------------------------------------------------------------
-// Setting.txt   SECTREE 
+// Setting.txt 로 부터 SECTREE 만들기
 // -----------------------------------------------------------------------------
 int SECTREE_MANAGER::LoadSettingFile(int lMapIndex, const char * c_pszSettingFileName, TMapSetting & r_setting)
 {
@@ -365,10 +365,10 @@ void SECTREE_MANAGER::LoadDungeon(int iIndex, const char * c_pszFileName)
 }
 
 // Fix me
-//  Town.txt x, y ׳ ް, װ  ڵ  base ǥ ֱ 
-// ٸ ʿ ִ Ÿ  ̵   Ǿִ.
-// տ map̶ų, Ÿ ٸ ĺڰ ,
-// ٸ  Ÿε ̵  ְ .
+// 현재 Town.txt에서 x, y를 그냥 받고, 그걸 이 코드 내에서 base 좌표를 더해주기 때문에
+// 다른 맵에 있는 타운으로 절대 이동할 수 없게 되어있다.
+// 앞에 map이라거나, 기타 다른 식별자가 있으면,
+// 다른 맵의 타운으로도 이동할 수 있게 하자.
 // by rtsummit
 bool SECTREE_MANAGER::LoadMapRegion(const char * c_pszFileName, TMapSetting & r_setting, const char * c_pszMapName)
 {
@@ -472,7 +472,7 @@ bool SECTREE_MANAGER::LoadAttribute(LPSECTREE_MAP pkMapSectree, const char * c_p
 	for (int y = 0; y < iHeight; ++y)
 		for (int x = 0; x < iWidth; ++x)
 		{
-			// UNION  ǥ ĸ DWORD ̵ Ѵ.
+			// UNION 으로 좌표를 합쳐만든 DWORD값을 아이디로 사용한다.
 			SECTREEID id;
 			id.coord.x = (r_setting.iBaseX / SECTREE_SIZE) + x;
 			id.coord.y = (r_setting.iBaseY / SECTREE_SIZE) + y;
@@ -543,7 +543,7 @@ bool SECTREE_MANAGER::GetRecallPositionByEmpire(int iMapIndex, BYTE bEmpire, PIX
 {
 	std::vector::iterator it = m_vec_mapRegion.begin();
 
-	// 10000 Ѵ  νϽ  Ǿִ.
+	// 10000을 넘는 맵은 인스턴스 던전에만 한정되어있다.
 	if (iMapIndex >= 10000)
 	{
 		iMapIndex /= 10000;
@@ -677,7 +677,7 @@ const TMapRegion * SECTREE_MANAGER::FindRegionByPartialName(const char* szMapNam
 		//if (rRegion.index == lMapIndex)
 		//return &rRegion;
 		if (rRegion.strMapName.find(szMapName))
-			return &rRegion; // ij ؼ  
+			return &rRegion; // 캐싱 해서 빠르게 하자
 	}
 
 	return NULL;
@@ -768,7 +768,7 @@ int SECTREE_MANAGER::Build(const char * c_pszListFileName, const char* c_pszMapB
 
         SPDLOG_TRACE("[BUILD] Build {} {} {} ",c_pszMapBasePath, szMapName, iIndex );
 
-		//      ͸ ؾ ϴ° Ȯ Ѵ.
+		// 먼저 이 서버에서 이 맵의 몬스터를 스폰해야 하는가 확인 한다.
 		if (map_allow_find(iIndex))
 		{
 			LPSECTREE_MAP pkMapSectree = BuildSectreeFromSetting(setting);
@@ -967,7 +967,7 @@ bool SECTREE_MANAGER::GetRandomLocation(int lMapIndex, PIXEL_POSITION & r_pos, D
 
 int SECTREE_MANAGER::CreatePrivateMap(int lMapIndex)
 {
-	if (lMapIndex >= 10000) // 10000 ̻  . (Ȥ ̹ private ̴)
+	if (lMapIndex >= 10000) // 10000번 이상의 맵은 없다. (혹은 이미 private 이다)
 		return 0;
 
 	LPSECTREE_MAP pkMapSectree = GetMap(lMapIndex);
@@ -1077,7 +1077,7 @@ struct FDestroyPrivateMapEntity
 
 void SECTREE_MANAGER::DestroyPrivateMap(int lMapIndex)
 {
-	if (lMapIndex < 10000) // private map  ε 10000 ̻ ̴.
+	if (lMapIndex < 10000) // private map 은 인덱스가 10000 이상 이다.
 		return;
 
 	LPSECTREE_MAP pkMapSectree = GetMap(lMapIndex);
@@ -1085,11 +1085,11 @@ void SECTREE_MANAGER::DestroyPrivateMap(int lMapIndex)
 	if (!pkMapSectree)
 		return;
 
-	//     ϴ ͵  ش.
+	// 이 맵 위에 현재 존재하는 것들을 전부 없앤다.
 	// WARNING:
-	//  ʿ   Sectree    
-	//  ⼭ delete   Ƿ Ͱ   
-	//  ó ؾ
+	// 이 맵에 있지만 어떤 Sectree에도 존재하지 않을 수 있음
+	// 따라서 여기서 delete 할 수 없으므로 포인터가 깨질 수 있으니
+	// 별도 처리를 해야함
 	FDestroyPrivateMapEntity f;
 	pkMapSectree->for_each(f);
 
@@ -1105,7 +1105,7 @@ TAreaMap& SECTREE_MANAGER::GetDungeonArea(int lMapIndex)
 
 	if (it == m_map_pkArea.end())
 	{
-		return m_map_pkArea[-1]; // ӽ÷  Area 
+		return m_map_pkArea[-1]; // 임시로 빈 Area를 리턴
 	}
 	return it->second;
 }
@@ -1128,7 +1128,7 @@ void SECTREE_MANAGER::SendNPCPosition(LPCHARACTER ch)
 
 	TNPCPosition np;
 
-	// TODO m_mapNPCPosition[lMapIndex]  ּ
+	// TODO m_mapNPCPosition[lMapIndex] 를 보내주세요
 	itertype(m_mapNPCPosition[lMapIndex]) it;
 
 	for (it = m_mapNPCPosition[lMapIndex].begin(); it != m_mapNPCPosition[lMapIndex].end(); ++it)
@@ -1361,7 +1361,7 @@ bool SECTREE_MANAGER::ForAttrRegion(int lMapIndex, int lStartX, int lStartY, int
 	}
 
 	//
-	//  ǥ Cell  ũ⿡  ȮѴ.
+	// 영역의 좌표를 Cell 의 크기에 맞춰 확장한다.
 	//
 
 	lStartX	-= lStartX % CELL_SIZE;
@@ -1370,7 +1370,7 @@ bool SECTREE_MANAGER::ForAttrRegion(int lMapIndex, int lStartX, int lStartY, int
 	lEndY	+= lEndY % CELL_SIZE;
 
 	//
-	// Cell ǥ Ѵ.
+	// Cell 좌표를 구한다.
 	// 
 
 	int lCX = lStartX / CELL_SIZE;
diff --git a/src/game/src/shop.cpp b/src/game/src/shop.cpp
index 5821224..dcfe8a0 100644
--- a/src/game/src/shop.cpp
+++ b/src/game/src/shop.cpp
@@ -159,8 +159,8 @@ void CShop::SetShopItems(TShopItemTable * pTable, BYTE bItemCount)
 		if (item.pkItem)
 		{
 			item.vnum = pkItem->GetVnum();
-			item.count = pkItem->GetCount(); // PC     ¥   Ѵ.
-			item.price = pTable->price; // ݵ ڰ Ѵ..
+			item.count = pkItem->GetCount(); // PC 샵의 경우 아이템 개수는 진짜 아이템의 개수여야 한다.
+			item.price = pTable->price; // 가격도 사용자가 정한대로..
 			item.itemid	= pkItem->GetID();
 		}
 		else
@@ -243,7 +243,7 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos)
 
 	LPITEM item;
 
-	if (m_pkPC) // Ǿ ϴ  Ǿ   ־ Ѵ.
+	if (m_pkPC) // 피씨가 운영하는 샵은 피씨가 실제 아이템을 가지고있어야 한다.
 		item = r_item.pkItem;
 	else
 		item = ITEM_MANAGER::instance().CreateItem(r_item.vnum, r_item.count);
@@ -255,7 +255,7 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos)
 	{
 		if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
 		{
-			//ູ  && ö ̺Ʈ 
+			//축복의 구슬 && 만년한철 이벤트 
 			if (item->GetVnum() == 70024 || item->GetVnum() == 70035)
 			{
 				return SHOP_SUBHEADER_GC_END;
@@ -290,7 +290,7 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos)
 
 	ch->PointChange(POINT_GOLD, -dwPrice, false);
 
-	// 
+	//세금 계산
 	DWORD dwTax = 0;
 	int iVal = 0;
 
@@ -330,13 +330,13 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos)
 		}
 	}
 
-	//  ??  5%
+	// 상점에서 살?? 세금 5%
 	if (!m_pkPC) 
 	{
 		CMonarch::instance().SendtoDBAddMoney(dwTax, ch->GetEmpire(), ch);
 	}
 
-	//  ý :  ¡
+	// 군주 시스템 : 세금 징수
 	if (m_pkPC)
 	{
 		m_pkPC->SyncQuickslot(QUICKSLOT_TYPE_ITEM, item->GetCell(), 255);
@@ -439,7 +439,7 @@ bool CShop::AddGuest(LPCHARACTER ch, DWORD owner_vid, bool bOtherEmpire)
 		//HIVALUE_ITEM_EVENT
 		if (quest::CQuestManager::instance().GetEventFlag("hivalue_item_sell") == 0)
 		{
-			//ູ  && ö ̺Ʈ 
+			//축복의 구슬 && 만년한철 이벤트 
 			if (item.vnum == 70024 || item.vnum == 70035)
 			{				
 				continue;
diff --git a/src/game/src/shopEx.cpp b/src/game/src/shopEx.cpp
index e9e9ac4..fedcd70 100644
--- a/src/game/src/shopEx.cpp
+++ b/src/game/src/shopEx.cpp
@@ -69,7 +69,7 @@ bool CShopEx::AddGuest(LPCHARACTER ch,DWORD owner_vid, bool bOtherEmpire)
 	
 	pack2.owner_vid = owner_vid;
 	pack2.shop_tab_count = m_vec_shopTabs.size();
-	char temp[8096]; // ִ 1728 * 3
+	char temp[8096]; // 최대 1728 * 3
 	char* buf = &temp[0];
 	size_t size = 0;
 	for (itertype(m_vec_shopTabs) it = m_vec_shopTabs.begin(); it != m_vec_shopTabs.end(); it++)
diff --git a/src/game/src/shop_manager.cpp b/src/game/src/shop_manager.cpp
index 20a1e10..aa04963 100644
--- a/src/game/src/shop_manager.cpp
+++ b/src/game/src/shop_manager.cpp
@@ -97,10 +97,10 @@ LPSHOP CShopManager::GetByNPCVnum(DWORD dwVnum)
 }
 
 /*
- * ̽ Լ
+ * 인터페이스 함수들
  */
 
-//  ŷ 
+// 상점 거래를 시작
 bool CShopManager::StartShopping(LPCHARACTER pkChr, LPCHARACTER pkChrShopKeeper, int iShopVnum)
 {
 	if (pkChr->GetShopOwner() == pkChrShopKeeper)
@@ -187,7 +187,7 @@ void CShopManager::DestroyPCShop(LPCHARACTER ch)
 	M2_DELETE(pkShop);
 }
 
-//  ŷ 
+// 상점 거래를 종료
 void CShopManager::StopShopping(LPCHARACTER ch)
 {
 	LPSHOP shop;
@@ -203,7 +203,7 @@ void CShopManager::StopShopping(LPCHARACTER ch)
 	SPDLOG_DEBUG("SHOP: END: {}", ch->GetName());
 }
 
-//  
+// 아이템 구입
 void CShopManager::Buy(LPCHARACTER ch, BYTE pos)
 {
 	if (!ch->GetShop())
@@ -243,7 +243,7 @@ void CShopManager::Buy(LPCHARACTER ch, BYTE pos)
 
 	int ret = pkShop->Buy(ch, pos);
 
-	if (SHOP_SUBHEADER_GC_OK != ret) //  ־ .
+	if (SHOP_SUBHEADER_GC_OK != ret) // 문제가 있었으면 보낸다.
 	{
 		TPacketGCShop pack;
 
@@ -313,7 +313,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 
 	dwPrice /= 5;
 	
-	// 
+	//세금 계산
 	DWORD dwTax = 0;
 	int iVal = 3;
 	
@@ -339,7 +339,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 		return;
 	}
 
-	// 20050802.myevan. Ǹ α׿  ID ߰
+	// 20050802.myevan.상점 판매 로그에 아이템 ID 추가
 	SPDLOG_DEBUG("SHOP: SELL: {} item name: {}(x{}):{} price: {}", ch->GetName(), item->GetName(), bCount, item->GetID(), dwPrice);
 
 	if (iVal > 0)
@@ -349,8 +349,8 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 
 	if (bCount == item->GetCount())
 	{
-		// ѱ   ش޶  Ƽ
-		//  ǸŽ Ӽα׸ .
+		// 한국에는 아이템을 버리고 복구해달라는 진상유저들이 많아서
+		// 상점 판매시 속성로그를 남긴다.
 		if (LC_IsYMIR())
 			item->AttrLog();
 
@@ -359,7 +359,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 	else
 		item->SetCount(item->GetCount() - bCount);
 
-	// ý :  ¡
+	//군주 시스템 : 세금 징수
 	CMonarch::instance().SendtoDBAddMoney(dwTax, ch->GetEmpire(), ch);
 
 	ch->PointChange(POINT_GOLD, dwPrice, false);
@@ -490,8 +490,8 @@ bool ConvertToShopItemTable(IN CGroupNode* pNode, OUT TShopTableEx& shopTable)
 
 bool CShopManager::ReadShopTableEx(const char* stFileName)
 {
-	// file  üũ.
-	//    ó ʴ´.
+	// file 유무 체크.
+	// 없는 경우는 에러로 처리하지 않는다.
 	FILE* fp = fopen(stFileName, "rb");
 	if (NULL == fp)
 		return true;
diff --git a/src/game/src/skill.cpp b/src/game/src/skill.cpp
index d402423..b00ee3f 100644
--- a/src/game/src/skill.cpp
+++ b/src/game/src/skill.cpp
@@ -297,7 +297,7 @@ bool CSkillManager::Initialize(TSkillTable * pTab, int iSize)
 
 	if (!bError)
 	{
-		//  ̺  .
+		// 기존 테이블의 내용을 지운다.
 		itertype(m_map_pkSkillProto) it = m_map_pkSkillProto.begin();
 
 		while (it != m_map_pkSkillProto.end()) {
@@ -307,7 +307,7 @@ bool CSkillManager::Initialize(TSkillTable * pTab, int iSize)
 
 		m_map_pkSkillProto.clear();
 
-		// ο  
+		// 새로운 내용을 삽입
 		it = map_pkSkillProto.begin();
 
 		while (it != map_pkSkillProto.end())
diff --git a/src/game/src/start_position.cpp b/src/game/src/start_position.cpp
index 6d6dcae..4cc5e74 100644
--- a/src/game/src/start_position.cpp
+++ b/src/game/src/start_position.cpp
@@ -17,26 +17,26 @@ char g_nation_name[4][32] =
 int g_start_map[4] =
 {
 	0,	// reserved
-	1,	// ż
-	21,	// õ
-	41	// 뱹
+	1,	// 신수국
+	21,	// 천조국
+	41	// 진노국
 };
 
 DWORD g_start_position[4][2] =
 {
 	{      0,      0 },	// reserved
-	{ 469300, 964200 },	// ż
-	{  55700, 157900 },	// õ
-	{ 969600, 278400 }	// 뱹
+	{ 469300, 964200 },	// 신수국
+	{  55700, 157900 },	// 천조국
+	{ 969600, 278400 }	// 진노국
 };
 
 
 DWORD arena_return_position[4][2] =
 {
 	{       0,  0       },
-	{   347600, 882700  }, // ھ
-	{   138600, 236600  }, // 
-	{   857200, 251800  }  // ڶ
+	{   347600, 882700  }, // 자양현
+	{   138600, 236600  }, // 복정현
+	{   857200, 251800  }  // 박라현
 };
 
 
diff --git a/src/game/src/threeway_war.cpp b/src/game/src/threeway_war.cpp
index e75a211..fa12cde 100644
--- a/src/game/src/threeway_war.cpp
+++ b/src/game/src/threeway_war.cpp
@@ -323,13 +323,13 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 	if (NULL == pkKiller || true != pkKiller->IsPC())
 		return;
 
-	//    
+	// 같은 제국은 계산하지 않음
 	if (pChar->GetEmpire() == pkKiller->GetEmpire())
 		return;
 
 	int nKillScore = GetKillScore(pkKiller->GetEmpire());
 
-	//  ų ھ -1ϰ Ẕ̇⶧  üũ ϸ ȵȴ.
+	// 제국 킬 스코어가 -1일경우는 탈락국가이기때문에 점수 체크를 하면 안된다.
 	if (nKillScore >= 0)
 	{
 		nKillScore += GetKillValue(pChar->GetLevel());
@@ -366,7 +366,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 			return;
 
 		//----------------------
-		//īƮ ʱȭ 
+		//카운트 초기화 
 		//----------------------
 		SetKillScore(1, 0);
 		SetKillScore(2, 0);
@@ -376,7 +376,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		quest::warp_all_to_map_my_empire_event_info * info;
 
 		//----------------------
-		//Ż  Ű :  
+		//탈락국가 퇴장 시키기 : 성지에서 
 		//----------------------
 		info = AllocEventInfo();
 
@@ -389,7 +389,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		event_create(quest::warp_all_to_map_my_empire_event, info, PASSES_PER_SEC(10));
 
 		//----------------------
-		//Ż  Ű : ο 
+		//탈락국가 퇴장 시키기 : 통로에서 
 		//----------------------
 		info = AllocEventInfo();
 
@@ -402,7 +402,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		event_create(quest::warp_all_to_map_my_empire_event, info, PASSES_PER_SEC(10));
 
 		//----------------------
-		// ñ   ̾߱⸦  !
+		//성지에 팅기는 국가에 대한 이야기를 마왕이 함!
 		//----------------------
 		const std::string Nation(EMPIRE_NAME(bLoseEmpire));
 		const std::string Script(
@@ -415,7 +415,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		CHARACTER_MANAGER::instance().SendScriptToMap(pChar->GetMapIndex(), Script);
 
 		//----------------------
-		//  ѹ .
+		// 공지 한방 날려줌.
 		//----------------------
 		char szNotice[512+1];
 		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xBB\xEF\xB0\xC5\xB8\xAE \xC0\xFC\xC5\xF5\xBF\xA1\xBC\xAD %s \xB1\xB9\xB0\xA1\xB0\xA1 \xB0\xA1\xC0\xE5\xB8\xD5\xC0\xFA \xC5\xBB\xB6\xF4\xC0\xBB \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"), Nation.c_str());
@@ -425,7 +425,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		LogManager::instance().CharLog(0, 0, 0, 0, "THREEWAY", szNotice, NULL);
 
 		//----------------------
-		//  Ѵ.
+		// 몹을 리젠한다.
 		//----------------------
 		regen_mob_event_info* regen_info = AllocEventInfo();
 
@@ -464,7 +464,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 				quest::warp_all_to_map_my_empire_event_info * info;
 
 				//----------------------
-				//Ż  Ű :  
+				//탈락국가 퇴장 시키기 : 성지에서 
 				//----------------------
 				info = AllocEventInfo();
 
@@ -477,7 +477,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 				event_create(quest::warp_all_to_map_my_empire_event, info, PASSES_PER_SEC(5));
 
 				//----------------------
-				//Ż  Ű : ο 
+				//탈락국가 퇴장 시키기 : 통로에서 
 				//----------------------
 				info = AllocEventInfo();
 
@@ -492,7 +492,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		}
 
 		//------------------------------
-		//  ھ ǥ 
+		// 최종 스코어 표시 
 		//------------------------------
 		{
 			char szBuf[64 + 1];
@@ -502,7 +502,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 			SendNoticeMap(szBuf, GetSungziMapIndex(), false);
 		}
 
-		// ޼ ش.
+		// 메세지를 띄워준다.
 		LPSECTREE_MAP pSecMap = SECTREE_MANAGER::instance().GetMap(pChar->GetMapIndex());
 
 		if (NULL != pSecMap)
@@ -534,7 +534,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		}
 
 		//------------------------------
-		//   : ȣ ȯ 
+		// 마지막 보상 : 진구미호 소환 
 		//-----------------------------	
 		for (int n = 0; n < quest::CQuestManager::instance().GetEventFlag("threeway_war_boss_count");)
 		{
diff --git a/src/game/src/trigger.cpp b/src/game/src/trigger.cpp
index ceb1a51..460cf53 100644
--- a/src/game/src/trigger.cpp
+++ b/src/game/src/trigger.cpp
@@ -46,7 +46,7 @@ int OnClickShop(TRIGGERPARAM)
 }
 
 /*
- *  AI Լ BattleAI Ŭ 
+ * 몬스터 AI 함수들을 BattleAI 클래스로 수정
  */
 int OnIdleDefault(TRIGGERPARAM)
 {
@@ -100,7 +100,7 @@ class FuncFindMobVictim
 					pkChr->IsAffectFlag(AFF_REVIVE_INVISIBLE))
 				return false;
 
-			if (pkChr->IsAffectFlag(AFF_TERROR) && m_pkChr->IsImmune(IMMUNE_TERROR) == false )	//  ó
+			if (pkChr->IsAffectFlag(AFF_TERROR) && m_pkChr->IsImmune(IMMUNE_TERROR) == false )	// 공포 처리
 			{
 				if ( pkChr->GetLevel() >= m_pkChr->GetLevel() )
 					return false;
@@ -137,7 +137,7 @@ class FuncFindMobVictim
 
 		LPCHARACTER GetVictim()
 		{
-			// ó ǹ ְ ǰ  ִٸ ǹ Ѵ. ǹ ־ ǹ 
+			// 근처에 건물이 있고 피가 많이 있다면 건물을 공격한다. 건물만 있어도 건물을 공격
 			if (m_pkChrBuilding && m_pkChr->GetHP() * 2 > m_pkChr->GetMaxHP() || !m_pkChrVictim)
 			{
 				return m_pkChrBuilding;
diff --git a/src/game/src/utils.cpp b/src/game/src/utils.cpp
index 12294a9..f12ab0d 100644
--- a/src/game/src/utils.cpp
+++ b/src/game/src/utils.cpp
@@ -30,12 +30,12 @@ size_t str_lower(const char * src, char * dest, size_t dest_size)
 		return len;
 	}
 
-	// \0 ڸ Ȯ
+	// \0 자리 확보
 	--dest_size;
 
 	while (*src && len < dest_size)
 	{
-		*dest = LOWER(*src); // LOWER ũο ++ --ϸ ȵ!!
+		*dest = LOWER(*src); // LOWER 매크로에서 ++나 --하면 안됨!!
 
 		++src;
 		++dest;
@@ -63,7 +63,7 @@ const char *one_argument(const char *argument, char *first_arg, size_t first_siz
 		return NULL;    
 	} 
 
-	// \0 ڸ Ȯ
+	// \0 자리 확보
 	--first_size;
 
 	skip_spaces(&argument);
@@ -101,7 +101,7 @@ const char *first_cmd(const char *argument, char *first_arg, size_t first_arg_si
 	size_t cur_len = 0;
 	skip_spaces(&argument);
 
-	// \0 ڸ Ȯ
+	// \0 자리 확보
 	first_arg_size -= 1;
 
 	while (*argument && !isspace(*argument) && cur_len < first_arg_size)
diff --git a/src/game/src/war_map.cpp b/src/game/src/war_map.cpp
index a1b10b8..4989087 100644
--- a/src/game/src/war_map.cpp
+++ b/src/game/src/war_map.cpp
@@ -304,7 +304,7 @@ void CWarMap::STeamData::AppendMember(LPCHARACTER ch)
 
 void CWarMap::STeamData::RemoveMember(LPCHARACTER ch)
 {
-	// set_pidJoiner   ο ϱ   ʴ´
+	// set_pidJoiner 는 누적 인원을 계산하기 때문에 제거하지 않는다
 	--iMemberCount;
 }
 
@@ -688,11 +688,11 @@ bool CWarMap::CheckScore()
 	if (m_bEnded)
 		return true;
 
-	// 30   ȮѴ.
+	// 30초 이후 부터 확인한다.
 	if (get_dword_time() - m_dwStartTime < 30000)
 		return false;
 
-	//   üũ ʴ´.
+	// 점수가 같으면 체크하지 않는다.
 	if (m_TeamData[0].iScore == m_TeamData[1].iScore)
 		return false;
 
diff --git a/src/game/src/wedding.cpp b/src/game/src/wedding.cpp
index 4b14d36..9f28315 100644
--- a/src/game/src/wedding.cpp
+++ b/src/game/src/wedding.cpp
@@ -87,7 +87,7 @@ namespace marriage
 			if (ch->GetPlayerID() == dwPID1 || ch->GetPlayerID() == dwPID2)
 				continue;
 
-			if (ch->GetLevel() < 10) // 10 ϴ ʴ´.
+			if (ch->GetLevel() < 10) // 10 레벨이하는 주지않는다.
 				continue;
 
 			//ch->AutoGiveItem(27003, 5);
@@ -122,9 +122,9 @@ namespace marriage
 		{
 			if (ch->IsPC())
 			{
-				// ExitToSavedLocation WarpSet θµ  Լ
-				// Sectree NULL ȴ.   SectreeManager ʹ
-				//  ij͸ ã  Ƿ Ʒ DestroyAll  ó
+				// ExitToSavedLocation은 WarpSet을 부르는데 이 함수에서
+				// Sectree가 NULL이 된다. 추 후 SectreeManager로 부터는
+				// 이 캐릭터를 찾을 수 없으므로 아래 DestroyAll에서 별도 처리함
 				ch->ExitToSavedLocation();
 			}
 		}
diff --git a/src/game/src/xmas_event.cpp b/src/game/src/xmas_event.cpp
index 0fa73dd..fcf0920 100644
--- a/src/game/src/xmas_event.cpp
+++ b/src/game/src/xmas_event.cpp
@@ -14,7 +14,7 @@ namespace xmas
 	{
 		if (name == "xmas_snow" || name == "xmas_boom" || name == "xmas_song" || name == "xmas_tree")
 		{
-			// ѷش
+			// 뿌려준다
 			const DESC_MANAGER::DESC_SET & c_ref_set = DESC_MANAGER::instance().GetClientSet();
 
 			for (itertype(c_ref_set) it = c_ref_set.begin(); it != c_ref_set.end(); ++it)
@@ -44,13 +44,13 @@ namespace xmas
 				{
 					CharacterVectorInteractor i;
 
-					//  ش
+					// 없으면 만들어준다
 					if (!CHARACTER_MANAGER::instance().GetCharactersByRaceNum(MOB_XMAS_TREE_VNUM, i))
 						CHARACTER_MANAGER::instance().SpawnMob(MOB_XMAS_TREE_VNUM, 61, 76500 + 358400, 60900 + 153600, 0, false, -1);
 				}
 				else if (prev_value > 0 && value == 0)
 				{
-					//  ش
+					// 있으면 지워준다
 					CharacterVectorInteractor i;
 
 					if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(MOB_XMAS_TREE_VNUM, i))
@@ -68,7 +68,7 @@ namespace xmas
 			switch (value)
 			{
 				case 0:
-					//   ڵ
+					// 있으면 지우는 코드
 					{
 						CharacterVectorInteractor i;
 
@@ -84,7 +84,7 @@ namespace xmas
 					break;
 
 				case 1:
-					//  ѻ̸ Ÿ   ¸ 2 .
+					// 내가 서한산이면 산타 없으면 만들고 상태를 2로 만든다.
 					if (map_allow_find(61))
 					{
 						quest::CQuestManager::instance().RequestSetEventFlag("xmas_santa", 2);
@@ -160,7 +160,7 @@ namespace xmas
 	{
 		if ( spawn == true )
 		{
-			//  ش
+			// 없으면 만들어준다
 			struct SNPCSellFireworkPosition
 			{
 				int lMapIndex;
@@ -199,7 +199,7 @@ namespace xmas
 		{
 			CharacterVectorInteractor i;
 
-			//  ش
+			// 있으면 지워준다
 			if (CHARACTER_MANAGER::instance().GetCharactersByRaceNum(MOB_XMAS_FIRWORK_SELLER_VNUM, i))
 			{
 				CharacterVectorInteractor::iterator it = i.begin();

From 8a1acefeeb91de0dede5ea7faf2aea8752a0e872 Mon Sep 17 00:00:00 2001
From: sdgmt2 
Date: Sat, 6 Apr 2024 00:42:30 +0200
Subject: [PATCH 11/21] move encoding tool to separate repo

---
 tools/encoding-fixer/.gitignore    | 175 -----------------------------
 tools/encoding-fixer/README.md     |  15 ---
 tools/encoding-fixer/bun.lockb     | Bin 3139 -> 0 bytes
 tools/encoding-fixer/index.ts      |  27 -----
 tools/encoding-fixer/package.json  |  11 --
 tools/encoding-fixer/test.cpp      |   2 -
 tools/encoding-fixer/tsconfig.json |  27 -----
 7 files changed, 257 deletions(-)
 delete mode 100644 tools/encoding-fixer/.gitignore
 delete mode 100644 tools/encoding-fixer/README.md
 delete mode 100755 tools/encoding-fixer/bun.lockb
 delete mode 100644 tools/encoding-fixer/index.ts
 delete mode 100644 tools/encoding-fixer/package.json
 delete mode 100644 tools/encoding-fixer/test.cpp
 delete mode 100644 tools/encoding-fixer/tsconfig.json

diff --git a/tools/encoding-fixer/.gitignore b/tools/encoding-fixer/.gitignore
deleted file mode 100644
index 9b1ee42..0000000
--- a/tools/encoding-fixer/.gitignore
+++ /dev/null
@@ -1,175 +0,0 @@
-# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
-
-# Logs
-
-logs
-_.log
-npm-debug.log_
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-
-# Caches
-
-.cache
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-
-report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
-
-# Runtime data
-
-pids
-_.pid
-_.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-
-lib-cov
-
-# Coverage directory used by tools like istanbul
-
-coverage
-*.lcov
-
-# nyc test coverage
-
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-
-bower_components
-
-# node-waf configuration
-
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-
-build/Release
-
-# Dependency directories
-
-node_modules/
-jspm_packages/
-
-# Snowpack dependency directory (https://snowpack.dev/)
-
-web_modules/
-
-# TypeScript cache
-
-*.tsbuildinfo
-
-# Optional npm cache directory
-
-.npm
-
-# Optional eslint cache
-
-.eslintcache
-
-# Optional stylelint cache
-
-.stylelintcache
-
-# Microbundle cache
-
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-
-.node_repl_history
-
-# Output of 'npm pack'
-
-*.tgz
-
-# Yarn Integrity file
-
-.yarn-integrity
-
-# dotenv environment variable files
-
-.env
-.env.development.local
-.env.test.local
-.env.production.local
-.env.local
-
-# parcel-bundler cache (https://parceljs.org/)
-
-.parcel-cache
-
-# Next.js build output
-
-.next
-out
-
-# Nuxt.js build / generate output
-
-.nuxt
-dist
-
-# Gatsby files
-
-# Comment in the public line in if your project uses Gatsby and not Next.js
-
-# https://nextjs.org/blog/next-9-1#public-directory-support
-
-# public
-
-# vuepress build output
-
-.vuepress/dist
-
-# vuepress v2.x temp and cache directory
-
-.temp
-
-# Docusaurus cache and generated files
-
-.docusaurus
-
-# Serverless directories
-
-.serverless/
-
-# FuseBox cache
-
-.fusebox/
-
-# DynamoDB Local files
-
-.dynamodb/
-
-# TernJS port file
-
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-
-.vscode-test
-
-# yarn v2
-
-.yarn/cache
-.yarn/unplugged
-.yarn/build-state.yml
-.yarn/install-state.gz
-.pnp.*
-
-# IntelliJ based IDEs
-.idea
-
-# Finder (MacOS) folder config
-.DS_Store
diff --git a/tools/encoding-fixer/README.md b/tools/encoding-fixer/README.md
deleted file mode 100644
index 1df6b2b..0000000
--- a/tools/encoding-fixer/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# encoding-fixer
-
-To install dependencies:
-
-```bash
-bun install
-```
-
-To run:
-
-```bash
-bun run index.ts
-```
-
-This project was created using `bun init` in bun v1.1.1. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
diff --git a/tools/encoding-fixer/bun.lockb b/tools/encoding-fixer/bun.lockb
deleted file mode 100755
index 61779cface353510da2b1ae5d9c71bfcf21d6161..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3139
zcmd5;4Nz276n@~UusCcX;NPaZ@}m;_-tGb`t}7LeTJDUp1tg%(EX&*V!SZ%_@9|Hv
zOlmu!jghHiHX{Be(_S!wLuGeZ@~n)VR#_cfzFANesipn|LA)Q@A&Xi*
zZ&~E#>m_uZv_#$@i#N>>MD#Z_#-A}K|txJoEayI?6qqZrm{lt;}zVf3H
zr@Cdy7Zhcc7j=owOK-kV@MYD@Un%K3wace$_u@tI#v(bM6Jk1fd3#OF`B}L)yL&FD
z^?ldnKKPCEJ+4zbWK6G#2#^ha&~MteAZ_pS2bAuHlUcO^Aun#KTy(r#GWFYr+g`lh
z`IiX1-X@RQbuDu#En9z=8934@OSxLTVtoGj=%K3;ZS}_b@VVh@Gqpw`wKcSHLy9b#
zl5I(kY~H`=XjfhlxzdZ*`&>$*Q#LQWzE?<=9x)ZXRyQl%6`H;-?#3qzJD%wJxk#v=
zf4D(;E#>tUXCtYW4LdVR$FHW`74Ot2f9d+j7-sD)+waAT&KVYoVAiD%$q!`Rx^m`s
zc|`B27QAPC$m;M(u+rvXSDlx5sC;4Z-5Z@pGcYBXfrA@B$F7r0M=e-gz&X8+_tTus3Ak|WMA(y+!1GY666jje!jRSe2Pa6^wI{Zq42M0tC
z>ctKW&H%()bFXj{G;49>fIBKHQ$lk>sgvd{9OD$8^gL3~1FjPUC$Fa{jluA4xYJ@Cga~KPA-;H>i0gd-moK2
OC?0;`lz1Bdcj^z6?m|ca

diff --git a/tools/encoding-fixer/index.ts b/tools/encoding-fixer/index.ts
deleted file mode 100644
index b1321b6..0000000
--- a/tools/encoding-fixer/index.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Glob } from 'bun';
-
-// const glob = new Glob('./*.cpp');
-const glob = new Glob('../../src/**/*.cpp');
-
-for await (const fileName of glob.scan('.')) {
-  const file = Bun.file(fileName);
-  const content = await file.arrayBuffer();
-  const bytes = new Uint8Array(content);
-  const newFileContent = [];
-  let isString = false;
-  for (const byte of bytes) {
-    if (byte === 0x22) {
-      isString = !isString;
-    }
-    if (byte > 127 && isString) {
-      const stringifiedByte = `\\x${byte
-        .toString(16)
-        .padStart(2, '0')
-        .toUpperCase()}`;
-      newFileContent.push(...Buffer.from(stringifiedByte));
-    } else {
-      newFileContent.push(byte);
-    }
-  }
-  await Bun.write(file, Buffer.from(newFileContent));
-}
diff --git a/tools/encoding-fixer/package.json b/tools/encoding-fixer/package.json
deleted file mode 100644
index a4f2126..0000000
--- a/tools/encoding-fixer/package.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "name": "encoding-fixer",
-  "module": "index.ts",
-  "type": "module",
-  "devDependencies": {
-    "@types/bun": "latest"
-  },
-  "peerDependencies": {
-    "typescript": "^5.0.0"
-  }
-}
\ No newline at end of file
diff --git a/tools/encoding-fixer/test.cpp b/tools/encoding-fixer/test.cpp
deleted file mode 100644
index 2240a42..0000000
--- a/tools/encoding-fixer/test.cpp
+++ /dev/null
@@ -1,2 +0,0 @@
-chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEB\xB0\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD5\xB4\xCF\xB4\xEF\xBF\xBD."));
-DWORD dwOppList[8]; // �ִ� ��Ƽ�� 8�� �̹Ƿ�..
diff --git a/tools/encoding-fixer/tsconfig.json b/tools/encoding-fixer/tsconfig.json
deleted file mode 100644
index 238655f..0000000
--- a/tools/encoding-fixer/tsconfig.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "compilerOptions": {
-    // Enable latest features
-    "lib": ["ESNext", "DOM"],
-    "target": "ESNext",
-    "module": "ESNext",
-    "moduleDetection": "force",
-    "jsx": "react-jsx",
-    "allowJs": true,
-
-    // Bundler mode
-    "moduleResolution": "bundler",
-    "allowImportingTsExtensions": true,
-    "verbatimModuleSyntax": true,
-    "noEmit": true,
-
-    // Best practices
-    "strict": true,
-    "skipLibCheck": true,
-    "noFallthroughCasesInSwitch": true,
-
-    // Some stricter flags (disabled by default)
-    "noUnusedLocals": false,
-    "noUnusedParameters": false,
-    "noPropertyAccessFromIndexSignature": false
-  }
-}

From 8685b02fdc8ed83b90f9641435ec972a393b7de8 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 10:20:42 +0200
Subject: [PATCH 12/21] libthecore encoding conversion

---
 src/libthecore/src/buffer.cpp  | 26 +++++++++++++-------------
 src/libthecore/src/heart.cpp   |  8 ++++----
 src/libthecore/src/main.cpp    |  4 ++--
 src/libthecore/src/signals.cpp |  4 ++--
 src/libthecore/src/utils.cpp   | 16 ++++++++--------
 5 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/src/libthecore/src/buffer.cpp b/src/libthecore/src/buffer.cpp
index ba38d11..d020437 100644
--- a/src/libthecore/src/buffer.cpp
+++ b/src/libthecore/src/buffer.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: buffer.c
- * Description: Buffer ó 
+ * Description: Buffer 처리 모듈
  *
- *      Author:  (aka. , Cronan)
+ *      Author: 김한주 (aka. 비엽, Cronan)
  */
 #define __LIBTHECORE__
 #include "stdafx.h"
@@ -32,7 +32,7 @@ static int buffer_get_exac_pool_index(int size) {
 	}
 	return -1; // too big... not pooled
 }
-//  buffer pool .
+// 모든 buffer pool 해제.
 static void buffer_pool_free ()
 {
 	for (int i = 31; i >= 0; i--)
@@ -50,7 +50,7 @@ static void buffer_pool_free ()
 		}
 	}
 }
-// n ū buffer pool ϳ .
+// n보다 큰 buffer pool 하나를 해제.
 static bool buffer_larger_pool_free (int n)
 {
 	for (int i = 31; i > n; i--)
@@ -102,13 +102,13 @@ LPBUFFER buffer_new(int size)
 	{
 		CREATE(buffer, BUFFER, 1);
 		buffer->mem_size = size;
-		// buffer_new calloc failed  ߻Ͽ(Ű  ӽſ ַ ߻),
-		// calloc ϸ, buffer pool  ٽ õѴ.
+		// buffer_new에서 calloc failed가 자주 발생하여(터키의 빈약한 머신에서 주로 발생),
+		// calloc이 실패하면, buffer pool을 비우고 다시 시도한다.
 		if (!safe_create(&buffer->mem_data, size))
 		{
-			// ʿ buffer ū buffer pool ϳ .
+			// 필요한 buffer보다 큰 buffer pool에서 하나를 해제.
 			if (!buffer_larger_pool_free(pool_index))
-				// ϸ  ,  pool Ѵ.
+				// 실패하면 최후의 수단으로, 모든 pool을 해제한다.
 				buffer_pool_free();
 			CREATE(buffer->mem_data, char, size);
 			SPDLOG_ERROR("buffer pool free success.");
@@ -213,10 +213,10 @@ void buffer_read_proceed(LPBUFFER buffer, int length)
 		length = buffer->length;
 	}
 
-	// ó ̰  ̺ ۴ٸ, ۸ ܵξ Ѵ.
+	// 처리할 길이가 버퍼 길이보다 작다면, 버퍼를 남겨두어야 한다.
 	if (length < buffer->length)
 	{
-		// write_point  pos  ״ ΰ read_point   Ų.
+		// write_point 와 pos 는 그대로 두고 read_point 만 증가 시킨다.
 		if (buffer->read_point + length - buffer->mem_data > buffer->mem_size)
 		{
             SPDLOG_ERROR("buffer_read_proceed: buffer overflow! length {} read_point {}", length, buffer->read_point - buffer->mem_data);
@@ -268,8 +268,8 @@ void buffer_realloc(LPBUFFER& buffer, int length)
 	if (buffer->mem_size >= length)
 		return;
 
-	// i   Ҵ ũ ũ ,   
-	// ޸ ũ⸦ Ѵ.
+	// i 는 새로 할당된 크기와 이전크기의 차, 실제로 새로 생긴
+	// 메모리의 크기를 뜻한다.
 	i = length - buffer->mem_size;
 
 	if (i <= 0)
@@ -281,7 +281,7 @@ void buffer_realloc(LPBUFFER& buffer, int length)
 
 	read_point_pos = buffer->read_point - buffer->mem_data;
 
-	// write_point  read_point    Ų.
+	// write_point 와 read_point 를 재 연결 시킨다.
 	temp->write_point = temp->mem_data + buffer->write_point_pos;
 	temp->write_point_pos = buffer->write_point_pos;
 	temp->read_point = temp->mem_data + read_point_pos;
diff --git a/src/libthecore/src/heart.cpp b/src/libthecore/src/heart.cpp
index 649c3d9..f51be4b 100644
--- a/src/libthecore/src/heart.cpp
+++ b/src/libthecore/src/heart.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: heart.c
- * Description: fps  ѹ ȣǴ "" ̴.
+ * Description: fps 에 한번씩 호출되는 "심장" 이다.
  *
- *      Author:  aka. Cronan
+ *      Author: 비엽 aka. Cronan
  */
 #define __LIBTHECORE__
 #include "stdafx.h"
@@ -57,8 +57,8 @@ int heart_idle(LPHEART ht)
 	missed_pulse += process_time.tv_usec / ht->opt_time.tv_usec;
     }
 
-	// ٺ pulse ƴµ  ð ...
-	// ޽ fps  Ʋִµ, Ȯ ߴ  ߿ ʾ.
+	// 바빠서 pulse도 놓쳤는데 잘 시간이 어딨어...
+	// 펄스 fps 어차피 틀어져있는데, 정확히 맞추는 건 중요하지 않아.
 	if (missed_pulse > 0)
 	{
 		gettimeofday(&ht->last_time, (struct timezone *) 0);
diff --git a/src/libthecore/src/main.cpp b/src/libthecore/src/main.cpp
index 6d73ecd..68c7f2f 100644
--- a/src/libthecore/src/main.cpp
+++ b/src/libthecore/src/main.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: main.c
- * Description: ̺귯 ʱȭ/ 
+ * Description: 라이브러리 초기화/삭제 등
  *
- *      Author:  aka. Cronan
+ *      Author: 비엽 aka. Cronan
  */
 #define __LIBTHECORE__
 #include "stdafx.h"
diff --git a/src/libthecore/src/signals.cpp b/src/libthecore/src/signals.cpp
index e6271b2..21866d8 100644
--- a/src/libthecore/src/signals.cpp
+++ b/src/libthecore/src/signals.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: signal.c
- * Description: ñ׳  Լ.
+ * Description: 시그널 관련 함수.
  *
- *      Author:  aka. Cronan
+ *      Author: 비엽 aka. Cronan
  */
 #define __LIBTHECORE__
 #include "stdafx.h"
diff --git a/src/libthecore/src/utils.cpp b/src/libthecore/src/utils.cpp
index f3a23cb..af94c67 100644
--- a/src/libthecore/src/utils.cpp
+++ b/src/libthecore/src/utils.cpp
@@ -1,8 +1,8 @@
 /*
  *    Filename: utils.c
- * Description:  ƿƼ
+ * Description: 각종 유틸리티
  *
- *      Author:  aka. Cronan
+ *      Author: 비엽 aka. Cronan
  */
 #define __LIBTHECORE__
 #include "stdafx.h"
@@ -85,7 +85,7 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
 	return;
     }
 
-    // տ ĭ dz ٱ
+    // 앞에 빈칸 건너 뛰기
     while (*tmp)
     {
 	if (!isspace(*tmp))
@@ -94,12 +94,12 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
 	tmp++;
     }
 
-    // \0 Ȯ
+    // \0 확보
     --dest_size;
 
     while (*tmp && len < dest_size)
     {
-	*(dest++) = LOWER(*tmp); // LOWER ũζ ++  ȵ
+	*(dest++) = LOWER(*tmp); // LOWER는 매크로라 ++ 쓰면 안됨
 	++tmp;
 	++len;
     }
@@ -108,7 +108,7 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
 
     if (len > 0)
     {
-	// ڿ ĭ 
+	// 뒤에 빈칸 지우기
 	--dest;
 
 	while (*dest && isspace(*dest) && len--)
@@ -116,8 +116,8 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size)
     }
 }
 
-/* "Name : "   "׸ : "  ̷ ڿ 
-   ׸ token ,  value  Ͽ Ѵ. */
+/* "Name : 비엽" 과 같이 "항목 : 값" 으로 이루어진 문자열에서 
+   항목을 token 으로, 값을 value 로 복사하여 리턴한다. */
 void parse_token(char *src, char *token, char *value)
 {
     char *tmp;

From 9056f6c6c63e1ecdd869091eb10068b29ebeff74 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 10:24:46 +0200
Subject: [PATCH 13/21] convert some more comments to utf8

---
 src/libgame/src/attribute.cc | 18 +++++++++---------
 src/libgame/src/grid.cc      |  4 ++--
 src/libsql/src/CAsyncSQL.cpp | 18 +++++++++---------
 src/quest/src/qc.cc          |  6 +++---
 4 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/libgame/src/attribute.cc b/src/libgame/src/attribute.cc
index 5d08308..014f568 100644
--- a/src/libgame/src/attribute.cc
+++ b/src/libgame/src/attribute.cc
@@ -85,13 +85,13 @@ void CAttribute::Alloc()
     }
 }
 
-CAttribute::CAttribute(DWORD width, DWORD height) // dword Ÿ  0 ä.
+CAttribute::CAttribute(DWORD width, DWORD height) // dword 타잎으로 모두 0을 채운다.
 {
     Initialize(width, height);
     Alloc();
 }
 
-CAttribute::CAttribute(DWORD * attr, DWORD width, DWORD height) // attr о smartϰ Ӽ о´.
+CAttribute::CAttribute(DWORD * attr, DWORD width, DWORD height) // attr을 읽어서 smart하게 속성을 읽어온다.
 {
     Initialize(width, height);
 
@@ -102,7 +102,7 @@ CAttribute::CAttribute(DWORD * attr, DWORD width, DWORD height) // attr
 	if (attr[0] != attr[i])
 	    break;
 
-    // Ӽ    defaultAttr Ѵ.
+    // 속성이 전부 같으면 단지 defaultAttr만 설정한다.
     if (i == size)
 	defaultAttr = attr[0];
     else
@@ -112,22 +112,22 @@ CAttribute::CAttribute(DWORD * attr, DWORD width, DWORD height) // attr
 	for (i = 0; i < size; ++i)
 	    allAttr |= attr[i];
 
-	//  8Ʈ   D_BYTE
+	// 하위 8비트만 사용할 경우 D_BYTE
 	if (!(allAttr & 0xffffff00))
 	    dataType = D_BYTE;
-	//  16Ʈ   D_WORD
+	// 하위 16비트만 사용할 경우 D_WORD
 	else if (!(allAttr & 0xffff0000))
 	    dataType = D_WORD;
-	else //  ̿ܿ D_DWORD
+	else // 그 이외에는 D_DWORD
 	    dataType = D_DWORD;
 
 	Alloc();
 
-	if (dataType == D_DWORD) // D_DWORD   Ӽ Ƿ  .
+	if (dataType == D_DWORD) // D_DWORD일 때는 원본 속성과 같으므로 단지 복사.
 	    memcpy(data, attr, sizeof(DWORD) * width * height);
 	else
 	{
-	    // ƴϸ Ʈ ؾ Ѵ.
+	    // 아니면 컨버트 해야 한다.
 	    DWORD * pdw = (DWORD *) attr;
 
 	    if (dataType == D_BYTE)
@@ -199,7 +199,7 @@ void CAttribute::Remove(DWORD x, DWORD y, DWORD attr)
     if (x > width || y > height)
 	return;
 
-    if (!data) // Ӽ    Ͱ  ׳ Ѵ.
+    if (!data) // 속성을 삭제할 때 만약 데이터가 없으면 그냥 리턴한다.
 	return;
 
     if (bytePtr)
diff --git a/src/libgame/src/grid.cc b/src/libgame/src/grid.cc
index e2b7391..c0dae5a 100644
--- a/src/libgame/src/grid.cc
+++ b/src/libgame/src/grid.cc
@@ -28,7 +28,7 @@ void CGrid::Clear()
 
 int CGrid::FindBlank(int w, int h)
 {
-    // ũⰡ  ũٸ Ȯ ʿ  ׳ 
+    // 크기가 더 크다면 확인할 필요 없이 그냥 리턴
     if (w > m_iWidth || h > m_iHeight)
 	return -1;
 
@@ -89,7 +89,7 @@ bool CGrid::IsEmpty(int iPos, int w, int h)
 
     int iRow = iPos / m_iWidth;
 
-    // Grid ΰ  ˻
+    // Grid 안쪽인가를 먼저 검사
     if (iRow + h > m_iHeight)
 	return false;
 
diff --git a/src/libsql/src/CAsyncSQL.cpp b/src/libsql/src/CAsyncSQL.cpp
index 2d42506..796dbee 100644
--- a/src/libsql/src/CAsyncSQL.cpp
+++ b/src/libsql/src/CAsyncSQL.cpp
@@ -145,10 +145,10 @@ bool CAsyncSQL::Connect()
 
 	SPDLOG_INFO("AsyncSQL: connected to {} (reconnect {})", m_stHost, m_hDB.reconnect);
 
-	// db cache common db LOCALE ̺ locale ˾ƿ,  character set Ѵ.
-	//   Connection   locale 𸣱  character set    ұϰ,
-	//  character set euckr ϵ Ǿ־  κ ּó Ͽ.
-	// (Ʒ ּ Ǯ mysql euckr  ִ    .)
+	// db cache는 common db의 LOCALE 테이블에서 locale을 알아오고, 이후 character set을 수정한다.
+	// 따라서 최초 Connection을 맺을 때에는 locale을 모르기 때문에 character set을 정할 수가 없음에도 불구하고,
+	// 강제로 character set을 euckr로 정하도록 되어있어 이 부분을 주석처리 하였다.
+	// (아래 주석을 풀면 mysql에 euckr이 안 깔려있는 디비에 접근할 수가 없다.)
 	//while (!QueryLocaleSet());
 	m_ulThreadID = mysql_thread_id(&m_hDB);
 
@@ -523,7 +523,7 @@ class cProfiler
 
 void CAsyncSQL::ChildLoop()
 {
-	cProfiler profiler(500000); // 0.5
+	cProfiler profiler(500000); // 0.5초
 
 	while (!m_bEnd)
 	{
@@ -540,7 +540,7 @@ void CAsyncSQL::ChildLoop()
 
 		while (count--)
 		{
-			//ð üũ  
+			//시간 체크 시작 
 			profiler.Start();
 
 			if (!PeekQueryFromCopyQueue(&p))
@@ -585,7 +585,7 @@ void CAsyncSQL::ChildLoop()
 
 			profiler.Stop();
 			
-			// 0.5 ̻ ɷ α׿ 
+			// 0.5초 이상 걸렸으면 로그에 남기기
 			if (!profiler.IsOk())
 				SPDLOG_TRACE("[QUERY : LONG INTERVAL(OverSec {}.{})] : {}",
 						profiler.GetResultSec(), profiler.GetResultUSec(), p->stQuery);
@@ -687,9 +687,9 @@ size_t CAsyncSQL::EscapeString(char* dst, size_t dstSize, const char *src, size_
 
 	if (dstSize < srcSize * 2 + 1)
 	{
-		// \0 Ⱥپ  ؼ 256 Ʈ ؼ α׷ 
+		// \0이 안붙어있을 때를 대비해서 256 바이트만 복사해서 로그로 출력
 		char tmp[256];
-		size_t tmpLen = sizeof(tmp) > srcSize ? srcSize : sizeof(tmp); //  ߿  ũ
+		size_t tmpLen = sizeof(tmp) > srcSize ? srcSize : sizeof(tmp); // 둘 중에 작은 크기
 		strlcpy(tmp, src, tmpLen);
 
 		SPDLOG_CRITICAL("FATAL ERROR!! not enough buffer size (dstSize {} srcSize {} src{}: {})",
diff --git a/src/quest/src/qc.cc b/src/quest/src/qc.cc
index 5cff0fa..ea24d26 100644
--- a/src/quest/src/qc.cc
+++ b/src/quest/src/qc.cc
@@ -519,7 +519,7 @@ void parse(char * filename)
 
 					if (lexstate.lookahead.token == TK_OR)
 					{
-						//  when name
+						// 다중 when name
 						// push to somewhere -.-
 						ps = ST_WHEN_NAME;
 						when_name_arg_vector.push_back(make_pair(current_when_name, current_when_argument));
@@ -539,7 +539,7 @@ void parse(char * filename)
 					current_when_condition = "";
 					if (t.token == TK_WITH)
 					{
-						// here comes ǽ
+						// here comes 조건식
 						next(&lexstate);
 						ostringstream os;
 						os << (lexstate.t);
@@ -848,7 +848,7 @@ void parse(char * filename)
 			}
 		}
 
-		// quest function 
+		// quest function들을 기록
 		ouf << all_functions;
 
 		ouf << "}";

From 9b7536ee9a9441fc894fa702bb09c6a9e260cf8a Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 10:31:54 +0200
Subject: [PATCH 14/21] Initial pass of converting string literals to english

---
 src/game/src/DragonSoul.cpp        |  54 ++--
 src/game/src/OXEvent.cpp           |  22 +-
 src/game/src/arena.cpp             | 102 +++---
 src/game/src/battle.cpp            |   4 +-
 src/game/src/castle.cpp            |  16 +-
 src/game/src/char_affect.cpp       |   4 +-
 src/game/src/char_battle.cpp       |  16 +-
 src/game/src/char_horse.cpp        |  14 +-
 src/game/src/char_item.cpp         | 498 ++++++++++++++---------------
 src/game/src/char_skill.cpp        |  92 +++---
 src/game/src/char_state.cpp        |   4 +-
 src/game/src/cmd.cpp               |  14 +-
 src/game/src/cmd_emotion.cpp       |  22 +-
 src/game/src/cmd_general.cpp       | 326 +++++++++----------
 src/game/src/cmd_gm.cpp            |  72 ++---
 src/game/src/cmd_oxevent.cpp       |   6 +-
 src/game/src/config.cpp            |   2 +-
 src/game/src/constants.cpp         |  16 +-
 src/game/src/cube.cpp              |  10 +-
 src/game/src/db.cpp                |   2 +-
 src/game/src/desc.cpp              |   2 +-
 src/game/src/exchange.cpp          |  30 +-
 src/game/src/fishing.cpp           |  26 +-
 src/game/src/guild.cpp             |  48 +--
 src/game/src/guild_manager.cpp     |  26 +-
 src/game/src/guild_war.cpp         |  12 +-
 src/game/src/input_db.cpp          |  12 +-
 src/game/src/input_login.cpp       |  10 +-
 src/game/src/input_main.cpp        | 168 +++++-----
 src/game/src/item.cpp              |   2 +-
 src/game/src/main.cpp              |   6 +-
 src/game/src/messenger_manager.cpp |   4 +-
 src/game/src/mining.cpp            |  20 +-
 src/game/src/monarch.cpp           |   8 +-
 src/game/src/party.cpp             |  12 +-
 src/game/src/polymorph.cpp         |   6 +-
 src/game/src/priv_manager.cpp      |   8 +-
 src/game/src/pvp.cpp               |   8 +-
 src/game/src/questlua_global.cpp   |   2 +-
 src/game/src/questlua_monarch.cpp  |  86 ++---
 src/game/src/questlua_pc.cpp       |   6 +-
 src/game/src/questmanager.cpp      |  14 +-
 src/game/src/questnpc.cpp          |   2 +-
 src/game/src/questpc.cpp           |   2 +-
 src/game/src/shop.cpp              |   2 +-
 src/game/src/shop_manager.cpp      |  10 +-
 src/game/src/start_position.cpp    |  12 +-
 src/game/src/threeway_war.cpp      |  12 +-
 src/game/src/war_map.cpp           |  10 +-
 src/game/src/wedding.cpp           |   4 +-
 50 files changed, 933 insertions(+), 933 deletions(-)

diff --git a/src/game/src/DragonSoul.cpp b/src/game/src/DragonSoul.cpp
index 104fd43..6d3a249 100644
--- a/src/game/src/DragonSoul.cpp
+++ b/src/game/src/DragonSoul.cpp
@@ -322,7 +322,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 		return false;
 	if (pItem->IsEquipped())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC2\xF8\xBF\xEB \xC1\xDF\xC0\xCE \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xBA \xC3\xDF\xC3\xE2\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Dragon Stone cannot be removed."));
 		return false;
 	}
 
@@ -366,7 +366,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 		}
 		LogManager::instance().ItemLog(ch, pItem, "DS_HEART_EXTRACT_FAIL", "");
 	
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC9 \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Remaining duration extraction failed."));
 		return false;
 	}
 	else
@@ -392,7 +392,7 @@ bool DSManager::ExtractDragonHeart(LPCHARACTER ch, LPITEM pItem, LPITEM pExtract
 		std::string s = boost::lexical_cast  (iCharge);
 		s += "%s";
 		LogManager::instance().ItemLog(ch, pItem, "DS_HEART_EXTRACT_SUCCESS", s.c_str());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC9 \xC3\xDF\xC3\xE2\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Dragon Stone remaining duration has been extracted."));
 		return true;
 	}
 }
@@ -412,7 +412,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 		int iEmptyCell = ch->GetEmptyDragonSoulInventory(pItem);
 		if (iEmptyCell < 0)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There isn't enough space in your inventory."));
 			return false;
 		}
 		else
@@ -469,7 +469,7 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 				sprintf(buf, "dice(%d) prob(%d)", (int)fDice, (int)fProb);
 			}
 			LogManager::instance().ItemLog(ch, pItem, "DS_PULL_OUT_SUCCESS", buf);
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Dragon Stone has been removed."));
 			pItem->AddToCharacter(ch, DestCell);
 			return true;
 		}
@@ -490,12 +490,12 @@ bool DSManager::PullOut(LPCHARACTER ch, TItemPos DestCell, LPITEM& pItem, LPITEM
 			{
 				LPITEM pByProduct = ch->AutoGiveItem(dwByProduct, true);
 				if (pByProduct)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xA9 %s\xB8\xA6 \xBE\xF2\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), pByProduct->GetName());
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Removal of Dragon Stone failed. But you have received the following: %s"), pByProduct->GetName());
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Removal of Dragon Stone failed."));
 			}
 			else
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xC3\xDF\xC3\xE2\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Removal of Dragon Stone failed."));
 		}
 	}
 
@@ -532,7 +532,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 			// 용혼석이 아닌 아이템이 개량창에 있을 수 없다.
 			if (!pItem->IsDragonSoul())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item is not required for improving the clarity level."));
 				SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 
 				return false;
@@ -566,7 +566,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		
 		if (!m_pTable->GetRefineGradeValues(ds_type, grade_idx, need_count, fee, vec_probs))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be advanced this way."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 
 			return false;
@@ -585,7 +585,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		
 		if (ds_type != GetType(pItem->GetVnum()) || grade_idx != GetGradeIdx(pItem->GetVnum()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item is not required for improving the clarity level."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 
 			return false;
@@ -603,7 +603,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 
 	if (ch->GetGold() < fee)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang to use this item."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY, NPOS);
 		return false;
 	}
@@ -648,7 +648,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		char buf[128];
 		sprintf(buf, "GRADE : %d -> %d", grade_idx, result_grade);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_GRADE_REFINE_SUCCESS", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Refinement up one class was successful."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_SUCCEED, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return true;
 	}
@@ -657,7 +657,7 @@ bool DSManager::DoRefineGrade(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL
 		char buf[128];
 		sprintf(buf, "GRADE : %d -> %d", grade_idx, result_grade);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_GRADE_REFINE_FAIL", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xEE\xB1\xDE \xB0\xB3\xB7\xAE\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Refinement up one class failed."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return false;
 	}
@@ -690,7 +690,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 			// 용혼석이 아닌 아이템이 개량창에 있을 수 없다.
 			if (!pItem->IsDragonSoul())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not own the materials required to strengthen the Dragon Stone."));
 				SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 				return false;
 			}
@@ -721,7 +721,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 
 		if (!m_pTable->GetRefineStepValues(ds_type, step_idx, need_count, fee, vec_probs))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item is not required for refinement."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 			return false;
 		}
@@ -738,7 +738,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		}
 		if (ds_type != GetType(pItem->GetVnum()) || grade_idx != GetGradeIdx(pItem->GetVnum()) || step_idx != GetStepIdx(pItem->GetVnum()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not own the materials required to strengthen the Dragon Stone."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 			return false;
 		}
@@ -755,7 +755,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 	
 	if (ch->GetGold() < fee)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang to use this item."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY, NPOS);
 		return false;
 	}
@@ -800,7 +800,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		char buf[128];
 		sprintf(buf, "STEP : %d -> %d", step_idx, result_step);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_STEP_REFINE_SUCCESS", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Improvement of the clarity level successful."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_SUCCEED, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return true;
 	}
@@ -809,7 +809,7 @@ bool DSManager::DoRefineStep(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_SOUL_
 		char buf[128];
 		sprintf(buf, "STEP : %d -> %d", step_idx, result_step);
 		LogManager::instance().ItemLog(ch, pResultItem, "DS_STEP_REFINE_FAIL", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xDC\xB0\xE8 \xB0\xB3\xB7\xAE\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Improvement of the clarity level failed."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL, TItemPos (pResultItem->GetWindow(), pResultItem->GetCell()));
 		return false;
 	}
@@ -892,7 +892,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item is not required for improving the clarity level."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pItem->GetWindow(), pItem->GetCell()));
 			return false;
 		}
@@ -915,14 +915,14 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		// 가중치 값이 없다면 강화할 수 없는 용혼석
 		if (!m_pTable->GetWeight(bType, bGrade, bStep, bStrength + 1, fWeight))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This Dragon Stone cannot be used for strengthening."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 			return false;
 		}
 		// 강화했을 때 가중치가 0이라면 더 이상 강화되서는 안된다.
 		if (fWeight < FLT_EPSILON)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This Dragon Stone cannot be used for strengthening."));
 			SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_MAX_REFINE, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 			return false;
 		}
@@ -931,7 +931,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 	float fProb;
 	if (!m_pTable->GetRefineStrengthValues(bType, pRefineStone->GetSubType(), bStrength, fee, fProb))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This Dragon Stone cannot be used for strengthening."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_INVALID_MATERIAL, TItemPos(pDragonSoul->GetWindow(), pDragonSoul->GetCell()));
 
 		return false;
@@ -939,7 +939,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 
 	if (ch->GetGold() < fee)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang to use this item."));
 		SendRefineResultPacket(ch, DS_SUB_HEADER_REFINE_FAIL_NOT_ENOUGH_MONEY, NPOS);
 		return false;
 	}
@@ -967,7 +967,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		char buf[128];
 		sprintf(buf, "STRENGTH : %d -> %d", bStrength, bStrength + 1);
 		LogManager::instance().ItemLog(ch, pDragonSoul, "DS_STRENGTH_REFINE_SUCCESS", buf);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Strengthening was successful."));
 		ch->AutoGiveItem(pResult, true);
 		bSubHeader = DS_SUB_HEADER_REFINE_SUCCEED;
 	}
@@ -991,7 +991,7 @@ bool DSManager::DoRefineStrength(LPCHARACTER ch, TItemPos (&aItemPoses)[DRAGON_S
 		// strength강화는 실패시 깨질 수도 있어, 원본 아이템을 바탕으로 로그를 남김.
 		LogManager::instance().ItemLog(ch, pDragonSoul, "DS_STRENGTH_REFINE_FAIL", buf);
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Strengthening failed."));
 		pDragonSoul->SetCount(pDragonSoul->GetCount() - 1);
 		pRefineStone->SetCount(pRefineStone->GetCount() - 1);
 		if (NULL != pResult)
diff --git a/src/game/src/OXEvent.cpp b/src/game/src/OXEvent.cpp
index 7a45639..4153eac 100644
--- a/src/game/src/OXEvent.cpp
+++ b/src/game/src/OXEvent.cpp
@@ -155,11 +155,11 @@ bool COXEventManager::ShowQuizList(LPCHARACTER pkChar)
 	{
 		for (size_t j = 0; j < m_vec_quiz[i].size(); ++j, ++c)
 		{
-			pkChar->ChatPacket(CHAT_TYPE_INFO, "%d %s %s", m_vec_quiz[i][j].level, m_vec_quiz[i][j].Quiz, m_vec_quiz[i][j].answer ? LC_TEXT("\xC2\xFC") : LC_TEXT("\xB0\xC5\xC1\xFE"));
+			pkChar->ChatPacket(CHAT_TYPE_INFO, "%d %s %s", m_vec_quiz[i][j].level, m_vec_quiz[i][j].Quiz, m_vec_quiz[i][j].answer ? LC_TEXT("TRUE") : LC_TEXT("FALSE"));
 		}
 	}
 
-	pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xD1 \xC4\xFB\xC1\xEE \xBC\xF6: %d"), c);	
+	pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Total number of the Quiz: %d"), c);	
 	return true;
 }
 
@@ -197,22 +197,22 @@ EVENTFUNC(oxevent_timer)
 	switch (flag)
 	{
 		case 0:
-			SendNoticeMap(LC_TEXT("10\xC3\xCA\xB5\xDA \xC6\xC7\xC1\xA4\xC7\xCF\xB0\xDA\xBD\xC0\xB4\xCF\xB4\xD9."), OXEVENT_MAP_INDEX, true);
+			SendNoticeMap(LC_TEXT("The result will follow in 10 seconds."), OXEVENT_MAP_INDEX, true);
 			flag++;
 			return PASSES_PER_SEC(10);
 			
 		case 1:
-			SendNoticeMap(LC_TEXT("\xC1\xA4\xB4\xE4\xC0\xBA"), OXEVENT_MAP_INDEX, true);
+			SendNoticeMap(LC_TEXT("The correct answer is:"), OXEVENT_MAP_INDEX, true);
 
 			if (info->answer == true)
 			{
 				COXEventManager::instance().CheckAnswer(true);
-				SendNoticeMap(LC_TEXT("O \xC0\xD4\xB4\xCF\xB4\xD9"), OXEVENT_MAP_INDEX, true);
+				SendNoticeMap(LC_TEXT("Yes (O)"), OXEVENT_MAP_INDEX, true);
 			}
 			else
 			{
 				COXEventManager::instance().CheckAnswer(false);
-				SendNoticeMap(LC_TEXT("X \xC0\xD4\xB4\xCF\xB4\xD9"), OXEVENT_MAP_INDEX, true);
+				SendNoticeMap(LC_TEXT("No (X)"), OXEVENT_MAP_INDEX, true);
 			}
 
 			if (LC_IsJapan())
@@ -221,7 +221,7 @@ EVENTFUNC(oxevent_timer)
 			}
 			else
 			{
-				SendNoticeMap(LC_TEXT("5\xC3\xCA \xB5\xDA \xC6\xB2\xB8\xAE\xBD\xC5 \xBA\xD0\xB5\xE9\xC0\xBB \xB9\xD9\xB1\xF9\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xBD\xC3\xC5\xB0\xB0\xDA\xBD\xC0\xB4\xCF\xB4\xD9."), OXEVENT_MAP_INDEX, true);
+				SendNoticeMap(LC_TEXT("In 5 sec. everyone who gave an incorrect answer will be removed."), OXEVENT_MAP_INDEX, true);
 			}
 
 			flag++;
@@ -230,7 +230,7 @@ EVENTFUNC(oxevent_timer)
 		case 2:
 			COXEventManager::instance().WarpToAudience();
 			COXEventManager::instance().SetStatus(OXEVENT_CLOSE);
-			SendNoticeMap(LC_TEXT("\xB4\xD9\xC0\xBD \xB9\xAE\xC1\xA6 \xC1\xD8\xBA\xF1\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."), OXEVENT_MAP_INDEX, true);
+			SendNoticeMap(LC_TEXT("Ready for the next question?"), OXEVENT_MAP_INDEX, true);
 			flag = 0;
 			break;
 	}
@@ -247,9 +247,9 @@ bool COXEventManager::Quiz(unsigned char level, int timelimit)
 
 	int idx = Random::get(0, m_vec_quiz[level].size() - 1);
 
-	SendNoticeMap(LC_TEXT("\xB9\xAE\xC1\xA6 \xC0\xD4\xB4\xCF\xB4\xD9."), OXEVENT_MAP_INDEX, true);
+	SendNoticeMap(LC_TEXT("OX-Question: ), OXEVENT_MAP_INDEX, true);
 	SendNoticeMap(m_vec_quiz[level][idx].Quiz, OXEVENT_MAP_INDEX, true);
-	SendNoticeMap(LC_TEXT("\xB8\xC2\xC0\xB8\xB8\xE9 O, \xC6\xB2\xB8\xAE\xB8\xE9 X\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4"), OXEVENT_MAP_INDEX, true);
+	SendNoticeMap(LC_TEXT("If it's correct, then go to O. If it's wrong, go to X."), OXEVENT_MAP_INDEX, true);
 
 	if (m_timedEvent != NULL) {
 		event_cancel(&m_timedEvent);
@@ -312,7 +312,7 @@ bool COXEventManager::CheckAnswer(bool answer)
 			}
 			else
 			{
-				pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA4\xB4\xE4\xC0\xD4\xB4\xCF\xB4\xD9!"));
+				pkChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Correct!"));
 				// pkChar->CreateFly(Random::get(FLY_FIREWORK1, FLY_FIREWORK6), pkChar);
 				char chatbuf[256];
 				int len = snprintf(chatbuf, sizeof(chatbuf), 
diff --git a/src/game/src/arena.cpp b/src/game/src/arena.cpp
index ce3e994..60f7e9a 100644
--- a/src/game/src/arena.cpp
+++ b/src/game/src/arena.cpp
@@ -233,17 +233,17 @@ EVENTFUNC(ready_to_start_event)
 
 		if (chA != NULL)
 		{
-			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has finished, because your combatant vanished."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
 		}
 
 		if (chB != NULL)
 		{
-			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has finished, because your combatant vanished."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
 		}
 
-		pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+		pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("The duel has finished, because your combatant vanished."));
 
 		pArena->EndDuel();
 		return 0;
@@ -260,20 +260,20 @@ EVENTFUNC(ready_to_start_event)
 
 				if (count > 10000)
 				{
-					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xA6\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xA6\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no limit for Potions."));
+					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no limit for Potions."));
 				}
 				else
 				{
 					chA->SetPotionLimit(count);
 					chB->SetPotionLimit(count);
 
-					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0\xC0\xBB %d \xB0\xB3 \xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."), chA->GetPotionLimit());
-					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0\xC0\xBB %d \xB0\xB3 \xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."), chB->GetPotionLimit());
+					chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can use up to %d potions."), chA->GetPotionLimit());
+					chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can use up to %d potions."), chB->GetPotionLimit());
 				}
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xCB\xB4\xCF\xB4\xD9."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xCB\xB4\xCF\xB4\xD9."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xCB\xB4\xCF\xB4\xD9."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The fight will start in 10 seconds."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The fight will start in 10 seconds."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("The fight will start in 10 seconds."));
 
 				info->state++;
 				return PASSES_PER_SEC(10);
@@ -282,9 +282,9 @@ EVENTFUNC(ready_to_start_event)
 
 		case 1:
 			{
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has begun."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has begun."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("The duel has begun."));
 
 				TPacketGCDuelStart duelStart;
 				duelStart.header = HEADER_GC_DUEL_START;
@@ -354,9 +354,9 @@ EVENTFUNC(ready_to_start_event)
 				buf2.write(&dwOppList[0], 4);
 				chB->GetDesc()->Packet(buf2.read_peek(), buf2.size());
 
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBD\xC3\xC0\xDB\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has begun."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has begun."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("The duel has begun."));
 
 				pArena->ClearEvent();
 
@@ -366,9 +366,9 @@ EVENTFUNC(ready_to_start_event)
 
 		default:
 			{
-				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
-				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+				chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel is being finished because there is a problem in the duel arena."));
+				chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel is being finished because there is a problem in the duel arena."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("The duel is being finished because there is a problem in the duel arena."));
 
                 SPDLOG_DEBUG("ARENA: Something wrong in event func. info->state({})", info->state);
 
@@ -407,17 +407,17 @@ EVENTFUNC(duel_time_out)
 	{
 		if (chA != NULL)
 		{
-			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+			chA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has finished, because your combatant vanished."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerAPID(), pArena->GetPlayerBPID());
 		}
 
 		if (chB != NULL)
 		{
-			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+			chB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has finished, because your combatant vanished."));
             SPDLOG_DEBUG("ARENA: Oppernent is disappered. MyPID({}) OppPID({})", pArena->GetPlayerBPID(), pArena->GetPlayerAPID());
 		}
 
-		pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBB\xF3\xB4\xEB\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xAE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+		pArena->SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("The duel has finished, because your combatant vanished."));
 
 		pArena->EndDuel();
 		return 0;
@@ -427,14 +427,14 @@ EVENTFUNC(duel_time_out)
 		switch (info->state)
 		{
 			case 0:
-				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xB0\xA3 \xC3\xCA\xB0\xFA\xB7\xCE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
-				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("The duel has finished because of a timeout."));
+				pArena->SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("In 10 seconds you will be teleported into the city."));
 
-				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xB0\xA3 \xC3\xCA\xB0\xFA\xB7\xCE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
-				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9."));
+				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("The duel has finished because of a timeout."));
+				chA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("In 10 seconds you will be teleported into the city."));
 
-				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xB0\xA3 \xC3\xCA\xB0\xFA\xB7\xCE \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
-				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9."));
+				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("The duel has finished because of a timeout."));
+				chB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("In 10 seconds you will be teleported into the city."));
 
 				TPacketGCDuelStart duelStart;
 				duelStart.header = HEADER_GC_DUEL_START;
@@ -729,19 +729,19 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	if (pCharA == NULL && pCharB == NULL)
 	{
 		// 둘다 접속이 끊어졌다 ?!
-		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xB4\xDC\xC7\xD5\xB4\xCF\xB4\xD9."));
+		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("The duel has been stopped because there is a problem in the arena."));
 		restart = false;
 	}
 	else if (pCharA == NULL && pCharB != NULL)
 	{
-		pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xC0\xC7 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
-		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+		pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your combatant has got some problems. The duel is being cancelled."));
+		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("The duel is being cancelled as there is a problem with the combatant."));
 		restart = false;
 	}
 	else if (pCharA != NULL && pCharB == NULL)
 	{
-		pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xC0\xC7 \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
-		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA \xB9\xAE\xC1\xA6\xB7\xCE \xC0\xCE\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xD5\xB4\xCF\xB4\xD9."));
+		pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your combatant has got some problems. The duel is being cancelled."));
+		SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("The duel is being cancelled as there is a problem with the combatant."));
 		restart = false;
 	}
 	else if (pCharA != NULL && pCharB != NULL)
@@ -752,9 +752,9 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 
 			if (m_dwSetPointOfA >= m_dwSetCount)
 			{
-				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
-				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
-				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s has won the duel."), pCharA->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s has won the duel."), pCharA->GetName());
+				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s has won the duel."), pCharA->GetName());
 
                 SPDLOG_DEBUG("ARENA: Duel is end. Winner {}({}) Loser {}({})",
 						pCharA->GetName(), GetPlayerAPID(), pCharB->GetName(), GetPlayerBPID());
@@ -762,10 +762,10 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 			else
 			{
 				restart = true;
-				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has won."), pCharA->GetName());
 				pCharA->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
-				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharA->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has won."), pCharA->GetName());
 				pCharB->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
 				SendChatPacketToObserver(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
@@ -779,19 +779,19 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 			m_dwSetPointOfB++;
 			if (m_dwSetPointOfB >= m_dwSetCount)
 			{
-				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
-				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
-				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s \xB4\xD4\xC0\xCC \xB4\xEB\xB7\xC3\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s has won the duel."), pCharB->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("%s has won the duel."), pCharB->GetName());
+				SendChatPacketToObserver(CHAT_TYPE_NOTICE, LC_TEXT("%s has won the duel."), pCharB->GetName());
 
                 SPDLOG_DEBUG("ARENA: Duel is end. Winner({}) Loser({})", GetPlayerBPID(), GetPlayerAPID());
 			}
 			else
 			{
 				restart = true;
-				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
+				pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has won."), pCharB->GetName());
 				pCharA->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
-				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xCC \xBD\xC2\xB8\xAE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pCharB->GetName());
+				pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s has won."), pCharB->GetName());
 				pCharB->ChatPacket(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
 
 				SendChatPacketToObserver(CHAT_TYPE_NOTICE, "%s %d : %d %s", pCharA->GetName(), m_dwSetPointOfA, m_dwSetPointOfB, pCharB->GetName());
@@ -817,12 +817,12 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	if (restart == false)
 	{
 		if (pCharA != NULL)
-			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xC7\xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."));
+			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You will be teleported into the city in 10 seconds."));
 
 		if (	pCharB != NULL)
-			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xC7\xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."));
+			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You will be teleported into the city in 10 seconds."));
 
-		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xC7\xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."));
+		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("You will be teleported into the city in 10 seconds."));
 
 		if (m_pEvent != NULL) {
 			event_cancel(&m_pEvent);
@@ -838,12 +838,12 @@ bool CArena::OnDead(DWORD dwPIDA, DWORD dwPIDB)
 	else
 	{
 		if (pCharA != NULL)
-			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xD9\xC0\xBD \xC6\xC7\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9."));
+			pCharA->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The next round will begin in 10 seconds."));
 
 		if (pCharB != NULL)
-			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xD9\xC0\xBD \xC6\xC7\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9."));
+			pCharB->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The next round will begin in 10 seconds."));
 
-		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("10\xC3\xCA\xB5\xDA \xB4\xD9\xC0\xBD \xC6\xC7\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9."));
+		SendChatPacketToObserver(CHAT_TYPE_INFO, LC_TEXT("The next round will begin in 10 seconds."));
 
 		if (m_pEvent != NULL) {
 			event_cancel(&m_pEvent);
@@ -949,7 +949,7 @@ void CArena::OnDisconnect(DWORD pid)
 	if (m_dwPIDA == pid)
 	{
 		if (GetPlayerB() != NULL)
-			GetPlayerB()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xB0\xA1 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xC1\xF6\xC7\xD5\xB4\xCF\xB4\xD9."));
+			GetPlayerB()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The combatants have been separated. The duel has been stopped."));
 
         SPDLOG_DEBUG("ARENA : Duel is end because of Opp({}) is disconnect. MyPID({})", GetPlayerAPID(), GetPlayerBPID());
 		EndDuel();
@@ -957,7 +957,7 @@ void CArena::OnDisconnect(DWORD pid)
 	else if (m_dwPIDB == pid)
 	{
 		if (GetPlayerA() != NULL)
-			GetPlayerA()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6 \xC4\xB3\xB8\xAF\xC5\xCD\xB0\xA1 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBF\xA9 \xB4\xEB\xB7\xC3\xC0\xBB \xC1\xDF\xC1\xF6\xC7\xD5\xB4\xCF\xB4\xD9."));
+			GetPlayerA()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The combatants have been separated. The duel has been stopped."));
 
         SPDLOG_DEBUG("ARENA : Duel is end because of Opp({}) is disconnect. MyPID({})", GetPlayerBPID(), GetPlayerAPID());
 		EndDuel();
diff --git a/src/game/src/battle.cpp b/src/game/src/battle.cpp
index b689003..5430d96 100644
--- a/src/game/src/battle.cpp
+++ b/src/game/src/battle.cpp
@@ -147,10 +147,10 @@ int battle_melee_attack(LPCHARACTER ch, LPCHARACTER victim)
 	}
 
 	if (timed_event_cancel(ch))
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFC\xC5\xF5\xB0\xA1 \xBD\xC3\xC0\xDB \xB5\xC7\xBE\xEE \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Action cancelled. You have entered a battle."));
 
 	if (timed_event_cancel(victim))
-		victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFC\xC5\xF5\xB0\xA1 \xBD\xC3\xC0\xDB \xB5\xC7\xBE\xEE \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Action cancelled. You have entered a battle."));
 
 	ch->SetPosition(POS_FIGHTING);
 	ch->SetVictim(victim);
diff --git a/src/game/src/castle.cpp b/src/game/src/castle.cpp
index bd673e2..73fcfba 100644
--- a/src/game/src/castle.cpp
+++ b/src/game/src/castle.cpp
@@ -250,7 +250,7 @@ EVENTFUNC(castle_siege_event)
 	// 공성 시작후 30분 이내라면 안내만 하자
 	if (info->pulse < PASSES_PER_SEC(30*60))
 	{
-		snprintf(buf, sizeof(buf), LC_TEXT("%s\xBF\xA1\xBC\xAD \xBA\xC0\xC8\xAD\xB8\xA6 \xB5\xD1\xB7\xAF\xBD\xCE\xB0\xED \xC0\xFC\xC5\xF5\xB0\xA1 \xC1\xF8\xC7\xE0\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."),
+		snprintf(buf, sizeof(buf), LC_TEXT("There are %s wars to inflame the bonfires."),
 				EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 		BroadcastNotice(buf);
 
@@ -264,10 +264,10 @@ EVENTFUNC(castle_siege_event)
 
 		case CASTLE_SIEGE_STRUGGLE:
 			{
-				snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xBC\xF6\xBC\xBA\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+				snprintf(buf, sizeof(buf), LC_TEXT("%s has successfully defended."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 				BroadcastNotice(buf);
 
-				snprintf(buf, sizeof(buf), LC_TEXT("\xC1\xF6\xB1\xDD\xBA\xCE\xC5\xCD %s\xC0\xBA 30\xBA\xD0\xB0\xA3 \xBA\xC0\xC8\xAD\xB8\xA6 \xC6\xC4\xB1\xAB\xC7\xCF\xBF\xA9 \xBA\xB8\xBB\xF3\xC0\xBB \xC8\xB9\xB5\xE6 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+				snprintf(buf, sizeof(buf), LC_TEXT("30 minutes from now on the player %s can get a reward because he destroyed the bonfire."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 				BroadcastNotice(buf);
 
 				GET_SIEGE_STATE() = CASTLE_SIEGE_END;
@@ -276,7 +276,7 @@ EVENTFUNC(castle_siege_event)
 			}
 			break;
 		case CASTLE_SIEGE_END:
-			BroadcastNotice(LC_TEXT("30\xBA\xD0\xC0\xCC \xB0\xE6\xB0\xFA\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9.. \xBA\xC0\xC8\xAD\xB0\xA1 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
+			BroadcastNotice(LC_TEXT("30 minutes are over. The bonfires have disappeared."));
 			castle_end_siege();
 			break;
 	}
@@ -796,7 +796,7 @@ bool castle_spawn_tower(int empire, int tower_count)
 	// broad cast
 	{
 		char buf[1024];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s\xBF\xA1 \xC0\xFC\xC0\xEF\xC0\xC7 \xBD\xC3\xC0\xDB\xC0\xBB \xBE\xCB\xB8\xAE\xB4\xC2 \xBA\xC0\xC8\xAD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(empire));
+		snprintf(buf, sizeof(buf), LC_TEXT("A bonfire was inflamed at %s to warn because of a battle."), EMPIRE_NAME(empire));
 		BroadcastNotice(buf);
 	}
 	return true;
@@ -864,7 +864,7 @@ void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
 		case CASTLE_SIEGE_END:
 			{
 				int	siege_end = true;
-				snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xBA\xC0\xC8\xAD\xB8\xA6 \xC6\xC4\xB1\xAB\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(killer_empire));
+				snprintf(buf, sizeof(buf), LC_TEXT("%s has destroyed the bonfire."), EMPIRE_NAME(killer_empire));
 				BroadcastNotice(buf);
 
 				LogManager::instance().CharLog(killer, 0, "CASTLE_TORCH_KILL", "");
@@ -885,12 +885,12 @@ void castle_tower_die(LPCHARACTER ch, LPCHARACTER killer)
 				{
 					if (GET_SIEGE_STATE() == CASTLE_SIEGE_STRUGGLE)
 					{
-						snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xBC\xF6\xBC\xBA\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xA9 \xC0\xFC\xC0\xEF\xBF\xA1 \xC6\xD0\xB9\xE8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9.."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+						snprintf(buf, sizeof(buf), LC_TEXT("%s lost the war as they have not been able to defend the castle."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 						BroadcastNotice(buf);
 					}
 					else
 					{
-						snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xB8\xF0\xB5\xE7 \xBA\xC0\xC8\xAD\xB8\xA6 \xC6\xC4\xB1\xAB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
+						snprintf(buf, sizeof(buf), LC_TEXT("%s has destroyed all the bonfires."), EMPIRE_NAME(GET_SIEGE_EMPIRE()));
 						BroadcastNotice(buf);
 					}
 					castle_end_siege();
diff --git a/src/game/src/char_affect.cpp b/src/game/src/char_affect.cpp
index a82c41c..ec775cc 100644
--- a/src/game/src/char_affect.cpp
+++ b/src/game/src/char_affect.cpp
@@ -533,7 +533,7 @@ bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, int lApplyValue, DWORD dw
 	// CHAT_BLOCK
 	if (dwType == AFFECT_BLOCK_CHAT && lDuration > 1)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEE\xBF\xB5\xC0\xDA \xC1\xA6\xC1\xA6\xB7\xCE \xC3\xA4\xC6\xC3\xC0\xCC \xB1\xDD\xC1\xF6 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your chat has been blocked by a GM."));
 	}
 	// END_OF_CHAT_BLOCK
 
@@ -713,7 +713,7 @@ bool CHARACTER::RemoveAffect(DWORD dwType)
 	// CHAT_BLOCK
 	if (dwType == AFFECT_BLOCK_CHAT)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xC6\xC3 \xB1\xDD\xC1\xF6\xB0\xA1 \xC7\xAE\xB7\xC8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your chat block has been lifted."));
 	}
 	// END_OF_CHAT_BLOCK
 
diff --git a/src/game/src/char_battle.cpp b/src/game/src/char_battle.cpp
index 994d7ad..b1339e8 100644
--- a/src/game/src/char_battle.cpp
+++ b/src/game/src/char_battle.cpp
@@ -286,14 +286,14 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 	if (GetLevel() < 10)
 	{
 		SPDLOG_DEBUG("NO_DEATH_PENALTY_LESS_LV10({})", GetName());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not lose any Experience because of the Blessing of the Dragon God."));
 		return;
 	}
 
    	if (Random::get(0, 2))
 	{
 		SPDLOG_DEBUG("NO_DEATH_PENALTY_LUCK({})", GetName());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not lose any Experience because of the Blessing of the Dragon God."));
 		return;
 	}
 
@@ -307,7 +307,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 			if (FindAffect(AFFECT_NO_DEATH_PENALTY))
 			{
 				SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName());
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not lose any Experience because of the Blessing of the Dragon God."));
 				RemoveAffect(AFFECT_NO_DEATH_PENALTY);
 				return;
 			}
@@ -317,7 +317,7 @@ void CHARACTER::DeathPenalty(BYTE bTown)
 			if (FindAffect(AFFECT_NO_DEATH_PENALTY))
 			{
 				SPDLOG_DEBUG("NO_DEATH_PENALTY_AFFECT({})", GetName());
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xB0\xA1\xC8\xA3\xB7\xCE \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not lose any Experience because of the Blessing of the Dragon God."));
 				RemoveAffect(AFFECT_NO_DEATH_PENALTY);
 				return;
 			}
@@ -1330,7 +1330,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 					}
 
 					if (Random::get(1, 100) < iNoPenaltyProb)
-						pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xBD\xC5\xC0\xC7 \xBA\xB8\xC8\xA3\xB7\xCE \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB6\xB3\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+						pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not drop any Item(s) as you are protected by the Dragon God."));
 					else
 					{
 						if (g_iUseLocale && pkKiller->GetParty())
@@ -1413,7 +1413,7 @@ void CHARACTER::Dead(LPCHARACTER pkKiller, bool bImmediateDead)
 				if (pkKiller->m_dwUnderGuildWarInfoMessageTime < get_dword_time())
 				{
 					pkKiller->m_dwUnderGuildWarInfoMessageTime = get_dword_time() + 60000;
-					pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC1\xDF\xBF\xA1\xB4\xC2 \xBB\xE7\xB3\xC9\xBF\xA1 \xB5\xFB\xB8\xA5 \xC0\xCC\xC0\xCD\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] There are no experience points for hunting during a guild war."));
 				}
 			}
 		}
@@ -1768,7 +1768,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 					IsPenetrate = true;
 
 					if (test_server)
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC5\xEB \xC3\xDF\xB0\xA1 \xB5\xA5\xB9\xCC\xC1\xF6 %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Additional Stabbing Weapon Damage %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
 
 					dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;
 
@@ -1894,7 +1894,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 					IsPenetrate = true;
 
 					if (test_server)
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC5\xEB \xC3\xDF\xB0\xA1 \xB5\xA5\xB9\xCC\xC1\xF6 %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Additional Stabbing Weapon Damage %d"), GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100);
 					dam += GetPoint(POINT_DEF_GRADE) * (100 + GetPoint(POINT_DEF_BONUS)) / 100;
 				}
 			}
diff --git a/src/game/src/char_horse.cpp b/src/game/src/char_horse.cpp
index e652621..bf39b18 100644
--- a/src/game/src/char_horse.cpp
+++ b/src/game/src/char_horse.cpp
@@ -23,7 +23,7 @@ bool CHARACTER::StartRiding()
 	
 	if (IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB8\xBB\xBF\xA1 \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot ride a Horse while you are transformed."));
 		return false;
 	}
 
@@ -32,7 +32,7 @@ bool CHARACTER::StartRiding()
 
 	if (armor && (armor->GetVnum() >= 11901 && armor->GetVnum() <= 11904))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xB9\xBA\xB9\xC0\xBB \xC0\xD4\xC0\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xB8\xBB\xC0\xBB \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot ride while you are wearing a Wedding Dress or a Tuxedo."));
 		return false;
 	}
 
@@ -48,11 +48,11 @@ bool CHARACTER::StartRiding()
 	if (false == CHorseRider::StartRiding())
 	{
 		if (GetHorseLevel() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xBC\xD2\xC0\xAF\xC7\xCF\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have a Horse."));
 		else if (GetHorseHealth() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xCC \xC1\xD7\xBE\xEE\xC0\xD6\xB4\xC2 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your Horse is dead."));
 		else if (GetHorseStamina() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xC7 \xBD\xBA\xC5\xD7\xB9\xCC\xB3\xCA\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB8\xBB\xC0\xBB \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your Horse's endurance is too low."));
 
 		return false;
 	}
@@ -177,7 +177,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 
 		if (!m_chHorse)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB \xBC\xD2\xC8\xAF\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Calling the Horse has failed."));
 			return;
 		}
 
@@ -203,7 +203,7 @@ void CHARACTER::HorseSummon(bool bSummon, bool bFromFar, DWORD dwVnum, const cha
 		else
 		{
 			m_chHorse->m_stName = GetName();
-			m_chHorse->m_stName += LC_TEXT("\xB4\xD4\xC0\xC7 \xB8\xBB");
+			m_chHorse->m_stName += LC_TEXT("'s Horse");
 		}
 
 		if (!m_chHorse->Show(GetMapIndex(), x, y, GetZ()))
diff --git a/src/game/src/char_item.cpp b/src/game/src/char_item.cpp
index c86f0bf..2fbf426 100644
--- a/src/game/src/char_item.cpp
+++ b/src/game/src/char_item.cpp
@@ -834,7 +834,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	{
 		if (!item->CheckItemUseLevel(20) || item->GetType() != ITEM_WEAPON)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB7\xE1 \xB0\xB3\xB7\xAE \xB1\xE2\xC8\xB8\xB4\xC2 20 \xC0\xCC\xC7\xCF\xC0\xC7 \xB9\xAB\xB1\xE2\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9"));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The free weapon improvements can only be used on weapons up to level 20."));
 			return false;
 		}
 
@@ -845,7 +845,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 
 	if (result_vnum == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No further improvements possible."));
 		return false;
 	}
 
@@ -857,7 +857,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	if (!pProto)
 	{
 		SPDLOG_ERROR("DoRefine NOT GET ITEM PROTO {}", item->GetRefinedVnum());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be improved."));
 		return false;
 	}
 
@@ -873,7 +873,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 				case LIMIT_LEVEL:
 					if (GetLevel() < limit)
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xB5\xC8 \xC8\xC4 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to use this item."));
 						return false;
 					}
 					break;
@@ -884,7 +884,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 	// REFINE_COST
 	if (GetGold() < cost)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang to use this item."));
 		return false;
 	}
 
@@ -898,7 +898,7 @@ bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)
 				{
 					ChatPacket(CHAT_TYPE_INFO, "Find %d, count %d, require %d", prt->materials[i].vnum, CountSpecifyItem(prt->materials[i].vnum), prt->materials[i].count);
 				}
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not the right material for an upgrade."));
 				return false;
 			}
 		}
@@ -1025,7 +1025,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	if (result_vnum == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No further improvements possible."));
 		return false;
 	}
 
@@ -1034,7 +1034,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	{
 		if (item->GetRefineLevel() >= 4)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB0\xB3\xB7\xAE\xBC\xAD\xB7\xCE \xB4\xF5 \xC0\xCC\xBB\xF3 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot upgrade items with this Scroll."));
 			return false;
 		}
 	}
@@ -1044,7 +1044,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	{
 		if (item->GetRefineLevel() != pkItemScroll->GetValue(1))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB0\xB3\xB7\xAE\xBC\xAD\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be absorbed."));
 			return false;
 		}
 	}
@@ -1062,7 +1062,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	if (!pProto)
 	{
 		SPDLOG_ERROR("DoRefineWithScroll NOT GET ITEM PROTO {}", item->GetRefinedVnum());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be improved."));
 		return false;
 	}
 
@@ -1078,7 +1078,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 				case LIMIT_LEVEL:
 					if (GetLevel() < limit)
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xB5\xC8 \xC8\xC4 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to use this item."));
 						return false;
 					}
 					break;
@@ -1088,7 +1088,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 
 	if (GetGold() < prt->cost)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang to use this item."));
 		return false;
 	}
 
@@ -1100,7 +1100,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 			{
 				ChatPacket(CHAT_TYPE_INFO, "Find %d, count %d, require %d", prt->materials[i].vnum, CountSpecifyItem(prt->materials[i].vnum), prt->materials[i].count);
 			}
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xB7\xAE\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not the right material for an upgrade."));
 			return false;
 		}
 	}
@@ -1270,7 +1270,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	// REFINE_COST
 	if (bType == REFINE_TYPE_MONEY_ONLY && !GetQuestFlag("deviltower_zone.can_refine"))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xB1\xCD \xC5\xB8\xBF\xF6 \xBF\xCF\xB7\xE1 \xBA\xB8\xBB\xF3\xC0\xBA \xC7\xD1\xB9\xF8\xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can only be rewarded once for the Demon Tower Quest."));
 		return false;
 	}
 	// END_OF_REFINE_COST
@@ -1286,7 +1286,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	if (p.result_vnum == 0)
 	{
 		SPDLOG_ERROR("RefineInformation p.result_vnum == 0");
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be improved."));
 		return false;
 	}
 
@@ -1294,7 +1294,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	{
 		if (bType == 0)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xC0\xCC \xB9\xE6\xBD\xC4\xC0\xB8\xB7\xCE\xB4\xC2 \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be advanced this way."));
 			return false;
 		}
 		else
@@ -1302,8 +1302,8 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 			LPITEM itemScroll = GetInventoryItem(iAdditionalCell);
 			if (!itemScroll || item->GetVnum() == itemScroll->GetVnum())
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xBA \xB0\xB3\xB7\xAE\xBC\xAD\xB8\xA6 \xC7\xD5\xC4\xA5 \xBC\xF6\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xE0\xBA\xB9\xC0\xC7 \xBC\xAD\xBF\xCD \xC7\xF6\xC3\xB6\xC0\xBB \xC7\xD5\xC4\xA5 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[1106-??]No puedes unir esto."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can combine the Blessing Scroll with the Magic Iron Ore."));
 				return false;
 			}
 		}
@@ -1316,7 +1316,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 	if (!prt)
 	{
 		SPDLOG_ERROR("RefineInformation NOT GET REFINE SET {}", item->GetRefineSet());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be improved."));
 		return false;
 	}
 
@@ -1328,7 +1328,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell)
 		// 일본은 제외
 		if (!item->CheckItemUseLevel(20) || item->GetType() != ITEM_WEAPON)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB7\xE1 \xB0\xB3\xB7\xAE \xB1\xE2\xC8\xB8\xB4\xC2 20 \xC0\xCC\xC7\xCF\xC0\xC7 \xB9\xAB\xB1\xE2\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9"));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The free weapon improvements can only be used on weapons up to level 20."));
 			return false;
 		}
 		p.cost = 0;
@@ -1417,7 +1417,7 @@ bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget)
 		}
 		else
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xA9\xB3\xBE \xBC\xF6 \xC0\xD6\xB4\xC2 \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no Stone available to take out."));
 			return false;
 		}
 	}
@@ -1469,7 +1469,7 @@ bool CHARACTER::GiveRecallItem(LPITEM item)
 
 	if (iEmpireByMapIndex && GetEmpire() != iEmpireByMapIndex)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xE2\xBE\xEF\xC7\xD8 \xB5\xD1 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1 \xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot store this location."));
 		return false;
 	}
 
@@ -1495,7 +1495,7 @@ bool CHARACTER::GiveRecallItem(LPITEM item)
 	}
 	else
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There isn't enough space in your inventory."));
 		return false;
 	}
 
@@ -1533,7 +1533,7 @@ void CHARACTER::ProcessRecallItem(LPITEM item)
 		case 304:
 			if( GetLevel() < 90 )
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to use this item."));
 				return;
 			}
 			else
@@ -1542,7 +1542,7 @@ void CHARACTER::ProcessRecallItem(LPITEM item)
 
 	if (iEmpireByMapIndex && GetEmpire() != iEmpireByMapIndex)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xE2\xBE\xEF\xB5\xC8 \xC0\xA7\xC4\xA1\xB0\xA1 \xC5\xB8\xC1\xA6\xB1\xB9\xBF\xA1 \xBC\xD3\xC7\xD8 \xC0\xD6\xBE\xEE\xBC\xAD \xB1\xCD\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot teleport to a safe position in a foreign Kingdom."));
 		item->SetSocket(0, 0);
 		item->SetSocket(1, 0);
 	}
@@ -1565,7 +1565,7 @@ void CHARACTER::__OpenPrivateShop()
 			ChatPacket(CHAT_TYPE_COMMAND, "OpenPrivateShop");
 			break;
 		default:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA9\xBF\xCA\xC0\xBB \xB9\xFE\xBE\xEE\xBE\xDF \xB0\xB3\xC0\xCE \xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can only open the shop if you take off your armour."));
 			break;
 	}
 }
@@ -1627,7 +1627,7 @@ int CalculateConsume(LPCHARACTER ch)
 		const int needLife = ch->GetMaxHP() * needPercent / 100;
 		if (curLife < needLife)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBB\xFD\xB8\xED\xB7\xC2 \xBE\xE7\xC0\xCC \xB8\xF0\xC0\xDA\xB6\xF3 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You don't have enough HP."));
 			return -1;
 		}
 
@@ -1656,7 +1656,7 @@ int CalculateConsumeSP(LPCHARACTER lpChar)
 
 	if (curSP < needSP)
 	{
-		lpChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xC1\xA4\xBD\xC5\xB7\xC2 \xBE\xE7\xC0\xCC \xB8\xF0\xC0\xDA\xB6\xF3 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		lpChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You don't have enough Spell Points (SP) to use this."));
 		return -1;
 	}
 
@@ -1679,7 +1679,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			case LIMIT_LEVEL:
 				if (GetLevel() < limitValue)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xC7 \xB7\xB9\xBA\xA7 \xC1\xA6\xC7\xD1\xBA\xB8\xB4\xD9 \xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to use this item."));
 					return false;
 				}
 				break;
@@ -1698,7 +1698,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 	if ( CArenaManager::instance().IsLimitedItem( GetMapIndex(), item->GetVnum() ) == true )
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 		return false;
 	}
 
@@ -1735,7 +1735,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			{
 				if (item->GetVnum() == 50051 || item->GetVnum() == 50052 || item->GetVnum() == 50053)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 					return false;
 				}
 			}
@@ -1762,13 +1762,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 				if (!tree)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xF0\xB4\xDA\xBA\xD2\xC0\xBB \xC7\xC7\xBF\xEF \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xF6\xC1\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot build a campfire here."));
 					return false;
 				}
 
 				if (tree->IsAttr((int)(GetX()+fx), (int)(GetY()+fy), ATTR_WATER))
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0 \xBC\xD3\xBF\xA1 \xB8\xF0\xB4\xDA\xBA\xD2\xC0\xBB \xC7\xC7\xBF\xEF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot build a campfire under water."));
 					return false;
 				}
 
@@ -1921,7 +1921,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			{
 				if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 					return false;
 				}
 
@@ -1933,7 +1933,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 		case ITEM_TREASURE_BOX:
 			{
 				return false;
-				//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB7\xCE \xC0\xE1\xB0\xDC \xC0\xD6\xBE\xEE\xBC\xAD \xBF\xAD\xB8\xAE\xC1\xF6 \xBE\xCA\xB4\xC2\xB0\xCD \xB0\xB0\xB4\xD9. \xBF\xAD\xBC\xE8\xB8\xA6 \xB1\xB8\xC7\xD8\xBA\xB8\xC0\xDA."));
+				//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("Closed. You should look for the key."));
 			}
 			break;
 
@@ -1949,13 +1949,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 				if (item2->GetType() != ITEM_TREASURE_BOX)
 				{
-					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB7\xCE \xBF\xA9\xB4\xC2 \xB9\xB0\xB0\xC7\xC0\xCC \xBE\xC6\xB4\xD1\xB0\xCD \xB0\xB0\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("This item cannot be opened with a key."));
 					return false;
 				}
 
 				if (item->GetValue(0) == item2->GetValue(0))
 				{
-					//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB4\xC2 \xB8\xC2\xC0\xB8\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB \xC1\xD6\xB4\xC2 \xBA\xCE\xBA\xD0 \xB1\xB8\xC7\xF6\xC0\xCC \xBE\xC8\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+					//ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("That's the right key."));
 					DWORD dwBoxVnum = item2->GetVnum();
 					std::vector  dwVnums;
 					std::vector  dwCounts;
@@ -1971,34 +1971,34 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							switch (dwVnums[i])
 							{
 								case CSpecialItemGroup::GOLD:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d Yang."), dwCounts[i]);
 									break;
 								case CSpecialItemGroup::EXP:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A mysterious light comes out of the box."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d experience points."), dwCounts[i]);
 									break;
 								case CSpecialItemGroup::MOB:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Look what came out of the box!"));
 									break;
 								case CSpecialItemGroup::SLOW:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xBB\xA1\xB0\xA3 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xBF\xF2\xC1\xF7\xC0\xCC\xB4\xC2 \xBC\xD3\xB5\xB5\xB0\xA1 \xB4\xC0\xB7\xC1\xC1\xB3\xBD\xC0\xB4\xCF\xB4\xD9!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("If you inhale the red smoke coming out of the box, your speed will increase!"));
 									break;
 								case CSpecialItemGroup::DRAIN_HP:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xB0\xA1 \xB0\xA9\xC0\xDA\xB1\xE2 \xC6\xF8\xB9\xDF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! \xBB\xFD\xB8\xED\xB7\xC2\xC0\xCC \xB0\xA8\xBC\xD2\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The box suddenly exploded! You have lost Hit Points (HP)."));
 									break;
 								case CSpecialItemGroup::POISON:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xB3\xEC\xBB\xF6 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xB5\xB6\xC0\xCC \xBF\xC2\xB8\xF6\xC0\xB8\xB7\xCE \xC6\xDB\xC1\xFD\xB4\xCF\xB4\xD9!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("If you inhale the green smoke that is coming out of the box, the poison will spread through your body!"));
 									break;
 								case CSpecialItemGroup::MOB_GROUP:
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Look what came out of the box!"));
 									break;
 								default:
 									if (item_gets[i])
 									{
 										if (dwCounts[i] > 1)
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 %d \xB0\xB3 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName(), dwCounts[i]);
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Receive: %s - %d"), item_gets[i]->GetName(), dwCounts[i]);
 										else
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName());
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The box contains %s."), item_gets[i]->GetName());
 
 									}
 							}
@@ -2006,13 +2006,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 					}
 					else
 					{
-						ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB0\xA1 \xB8\xC2\xC1\xF6 \xBE\xCA\xB4\xC2 \xB0\xCD \xB0\xB0\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("This key does not seem to fit the lock."));
 						return false;
 					}
 				}
 				else
 				{
-					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBC\xE8\xB0\xA1 \xB8\xC2\xC1\xF6 \xBE\xCA\xB4\xC2 \xB0\xCD \xB0\xB0\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("This key does not seem to fit the lock."));
 					return false;
 				}
 			}
@@ -2039,7 +2039,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if( !(this->DragonSoul_IsQualified()) )
 					{
-						ChatPacket(CHAT_TYPE_INFO,LC_TEXT("\xB8\xD5\xC0\xFA \xBF\xEB\xC8\xA5\xBC\xAE \xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xBF\xCF\xB7\xE1\xC7\xCF\xBC\xC5\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO,LC_TEXT("Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy."));
 						return false;
 					}
 				}
@@ -2052,41 +2052,41 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						switch (dwVnums[i])
 						{
 						case CSpecialItemGroup::GOLD:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d Yang."), dwCounts[i]);
 							break;
 						case CSpecialItemGroup::EXP:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A mysterious light comes out of the box."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d experience points."), dwCounts[i]);
 							break;
 						case CSpecialItemGroup::MOB:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Look what came out of the box!"));
 							break;
 						case CSpecialItemGroup::SLOW:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xBB\xA1\xB0\xA3 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xBF\xF2\xC1\xF7\xC0\xCC\xB4\xC2 \xBC\xD3\xB5\xB5\xB0\xA1 \xB4\xC0\xB7\xC1\xC1\xB3\xBD\xC0\xB4\xCF\xB4\xD9!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("If you inhale the red smoke coming out of the box, your speed will increase!"));
 							break;
 						case CSpecialItemGroup::DRAIN_HP:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xB0\xA1 \xB0\xA9\xC0\xDA\xB1\xE2 \xC6\xF8\xB9\xDF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! \xBB\xFD\xB8\xED\xB7\xC2\xC0\xCC \xB0\xA8\xBC\xD2\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The box suddenly exploded! You have lost Hit Points (HP)."));
 							break;
 						case CSpecialItemGroup::POISON:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xB3\xEC\xBB\xF6 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xB5\xB6\xC0\xCC \xBF\xC2\xB8\xF6\xC0\xB8\xB7\xCE \xC6\xDB\xC1\xFD\xB4\xCF\xB4\xD9!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("If you inhale the green smoke that is coming out of the box, the poison will spread through your body!"));
 							break;
 						case CSpecialItemGroup::MOB_GROUP:
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Look what came out of the box!"));
 							break;
 						default:
 							if (item_gets[i])
 							{
 								if (dwCounts[i] > 1)
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 %d \xB0\xB3 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName(), dwCounts[i]);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Receive: %s - %d"), item_gets[i]->GetName(), dwCounts[i]);
 								else
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName());
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The box contains %s."), item_gets[i]->GetName());
 							}
 						}
 					}
 				}
 				else
 				{
-					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBE\xC6\xB9\xAB\xB0\xCD\xB5\xB5 \xBE\xF2\xC0\xBB \xBC\xF6 \xBE\xF8\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("You have not received anything."));
 					return false;
 				}
 			}
@@ -2105,10 +2105,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				if (SkillLevelDown(dwVnum))
 				{
 					ITEM_MANAGER::instance().RemoveItem(item);
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xBA\xC5\xB3 \xB7\xB9\xBA\xA7\xC0\xBB \xB3\xBB\xB8\xAE\xB4\xC2\xB5\xA5 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have lowered your Skill Level."));
 				}
 				else
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xBA\xC5\xB3 \xB7\xB9\xBA\xA7\xC0\xBB \xB3\xBB\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot lower your Skill Level."));
 			}
 			break;
 
@@ -2173,7 +2173,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						case USE_ABILITY_UP:
 							if (FindAffect(affect_type, apply_type))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This effect is already activated."));
 								return false;
 							}
 
@@ -2214,7 +2214,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						{
 							if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, aApplyInfo[item->GetValue(1)].bPointType))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This effect is already activated."));
 							}
 							else
 							{
@@ -2230,7 +2230,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 									return false;
 								}
 
@@ -2244,14 +2244,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (m_nPotionLimit <= 0)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB \xC1\xA6\xC7\xD1\xB7\xAE\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("That is over the limit."));
 												return false;
 											}
 										}
 										break;
 
 									default :
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 										return false;
 										break;
 								}
@@ -2304,7 +2304,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								if (item->GetVnum() == 50085 || item->GetVnum() == 50086)
 								{
 									if (test_server)
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xF9\xBA\xB4 \xB6\xC7\xB4\xC2 \xC1\xBE\xC0\xDA \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Used Moon Cake or Seed."));
 									SetUseSeedOrMoonBottleTime();
 								}
 								if (GetDungeon())
@@ -2331,7 +2331,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 						return false;
 					}
 				}
@@ -2445,7 +2445,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									*/
 									if (FindAffect(AFFECT_NOG_ABILITY))
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This effect is already activated."));
 										return false;
 									}
 									int time = item->GetValue(0);
@@ -2489,7 +2489,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (CArenaManager::instance().IsArenaMap(pMarriage->ch1->GetMapIndex()) == true)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 												break;
 											}
 										}
@@ -2498,7 +2498,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (CArenaManager::instance().IsArenaMap(pMarriage->ch2->GetMapIndex()) == true)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 												break;
 											}
 										}
@@ -2513,7 +2513,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										WarpToPID(pMarriage->GetOther(GetPlayerID()));
 									}
 									else
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE1\xC8\xA5 \xBB\xF3\xC5\xC2\xB0\xA1 \xBE\xC6\xB4\xCF\xB8\xE9 \xB0\xE1\xC8\xA5\xB9\xDD\xC1\xF6\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot wear a Wedding Ring if you are not married."));
 								}
 								break;
 
@@ -2662,7 +2662,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB0\xF7\xBF\xA1\xBC\xB1 \xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xB5\xBF\xC0\xDB\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2\xB0\xCD \xB0\xB0\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use the Event Detector from this position."));
 											return false;
 										}
 									}
@@ -2673,7 +2673,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (distance < 1000.0f)
 									{
 										// 발견!
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xBD\xC5\xBA\xF1\xB7\xCE\xBF\xEE \xBA\xFB\xC0\xBB \xB3\xBB\xB8\xE7 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Event Detector vanished in a mysterious light."));
 
 										// 사용횟수에 따라 주는 아이템을 다르게 한다.
 										struct TEventStoneInfo
@@ -2824,7 +2824,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									const int STONE_DETECT_MAX_TRY = 10;
 									if (item->GetSocket(0) >= STONE_DETECT_MAX_TRY)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBA\xA5\xC6\xAE\xBF\xEB \xB0\xA8\xC1\xF6\xB1\xE2\xB0\xA1 \xC8\xE7\xC0\xFB\xB5\xB5 \xBE\xF8\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Event Detector has vanished."));
 										ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (DETECT_EVENT_STONE) 0");
 										AutoGiveItem(27002);
 										return true;
@@ -2955,7 +2955,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (r <= 50)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xB5\xB9\xC1\xB6\xB0\xA2\xC0\xCC \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You find a simple Piece of Stone in the Clam."));
 										AutoGiveItem(27990);
 									}
 									else
@@ -2974,21 +2974,21 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 										if (r <= prob_table[0])
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xB0\xA1 \xC8\xE7\xC0\xFB\xB5\xB5 \xBE\xF8\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Clam has vanished."));
 										}
 										else if (r <= prob_table[1])
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xB9\xE9\xC1\xF8\xC1\xD6\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a White Pearl inside the Clam."));
 											AutoGiveItem(27992);
 										}
 										else if (r <= prob_table[2])
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xC3\xBB\xC1\xF8\xC1\xD6\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a Blue Pearl inside the Clam."));
 											AutoGiveItem(27993);
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB6\xB0\xB3\xBF\xA1\xBC\xAD \xC7\xC7\xC1\xF8\xC1\xD6\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a Blood-Red Pearl inside the Clam."));
 											AutoGiveItem(27994);
 										}
 									}
@@ -3040,7 +3040,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed() == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 										return false;
 									}
 
@@ -3048,13 +3048,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (lv < item->GetValue(0))
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBA \xB3\xCA\xB9\xAB \xBE\xEE\xB7\xC1\xBF\xF6 \xC0\xCC\xC7\xD8\xC7\xCF\xB1\xE2\xB0\xA1 \xC8\xFB\xB5\xEC\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("It isn't easy to understand this book."));
 										return false;
 									}
 
 									if (lv >= item->GetValue(1))
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBA \xBE\xC6\xB9\xAB\xB8\xAE \xBA\xC1\xB5\xB5 \xB5\xB5\xBF\xF2\xC0\xCC \xB5\xC9 \xB0\xCD \xB0\xB0\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This book will not help you."));
 										return false;
 									}
 
@@ -3082,19 +3082,19 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									if (GetSkillLevel(SKILL_COMBO) == 0 && GetLevel() < 30)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xB9\xBA\xA7 30\xC0\xCC \xB5\xC7\xB1\xE2 \xC0\xFC\xBF\xA1\xB4\xC2 \xBD\xC0\xB5\xE6\xC7\xD2 \xBC\xF6 \xC0\xD6\xC0\xBB \xB0\xCD \xB0\xB0\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need to have a minimum level of 30 to understand this book."));
 										return false;
 									}
 
 									if (GetSkillLevel(SKILL_COMBO) == 1 && GetLevel() < 50)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xB9\xBA\xA7 50\xC0\xCC \xB5\xC7\xB1\xE2 \xC0\xFC\xBF\xA1\xB4\xC2 \xBD\xC0\xB5\xE6\xC7\xD2 \xBC\xF6 \xC0\xD6\xC0\xBB \xB0\xCD \xB0\xB0\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need a minimum level of 50 to understand this book."));
 										return false;
 									}
 
 									if (GetSkillLevel(SKILL_COMBO) >= 2)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xAC\xB0\xE8\xB1\xE2\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't train any more Combos."));
 										return false;
 									}
 
@@ -3125,7 +3125,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									int iPct = std::clamp(item->GetValue(1), 0, 100);
 									if (GetSkillLevel(dwSkillVnum)>=20 || dwSkillVnum-SKILL_LANGUAGE1+1 == GetEmpire())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xBF\xCF\xBA\xAE\xC7\xCF\xB0\xD4 \xBE\xCB\xBE\xC6\xB5\xE9\xC0\xBB \xBC\xF6 \xC0\xD6\xB4\xC2 \xBE\xF0\xBE\xEE\xC0\xCC\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You already understand this language."));
 										return false;
 									}
 
@@ -3154,7 +3154,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetSkillLevel(dwSkillVnum) >= 10)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill."));
 										return false;
 									}
 
@@ -3176,7 +3176,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed() == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 										return false;
 									}
 									
@@ -3209,25 +3209,25 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetLevel() < iLevelLimit)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xB8\xB7\xC1\xB8\xE9 \xB7\xB9\xBA\xA7\xC0\xBB \xB4\xF5 \xBF\xC3\xB7\xC1\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to improve your Level to read this Book."));
 										return false;
 									}
 
 									if (GetSkillLevel(dwSkillVnum) >= 40)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill."));
 										return false;
 									}
 
 									if (GetSkillLevel(dwSkillVnum) < iSkillLevelLowLimit)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xBA \xB3\xCA\xB9\xAB \xBE\xEE\xB7\xC1\xBF\xF6 \xC0\xCC\xC7\xD8\xC7\xCF\xB1\xE2\xB0\xA1 \xC8\xFB\xB5\xEC\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("It isn't easy to understand this book."));
 										return false;
 									}
 
 									if (GetSkillLevel(dwSkillVnum) >= iSkillLevelHighLimit)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC3\xA5\xC0\xB8\xB7\xCE\xB4\xC2 \xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train with this Book any more."));
 										return false;
 									}
 
@@ -3258,7 +3258,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetSkillLevel(dwSkillVnum)>=40)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill."));
 										return false;
 									}
 
@@ -3300,7 +3300,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetSkillLevel(dwSkillVnum)>=40)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill."));
 										return false;
 									}
 
@@ -3330,7 +3330,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (GetLevel() < 50)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xBD\xC2\xB8\xB6 \xBD\xBA\xC5\xB3\xC0\xBB \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xB7\xB9\xBA\xA7\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need a minimum level of 50 to get riding training."));
 										return false;
 									}
 
@@ -3340,7 +3340,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											// 주안술서 사용중에는 시간 제한 무시
 											RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have escaped the evil ghost curse with the help of an Exorcism Scroll."));
 										}
 										else
 										{
@@ -3353,14 +3353,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											GetSkillLevel(SKILL_HORSE_WILDATTACK) + GetSkillLevel(SKILL_HORSE_CHARGE) + GetSkillLevel(SKILL_HORSE_ESCAPE) >= 60 ||
 											GetSkillLevel(SKILL_HORSE_WILDATTACK_RANGE) + GetSkillLevel(SKILL_HORSE_CHARGE) + GetSkillLevel(SKILL_HORSE_ESCAPE) >= 60)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xBD\xC2\xB8\xB6 \xBC\xF6\xB7\xC3\xBC\xAD\xB8\xA6 \xC0\xD0\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot read any more Riding Guides."));
 										return false;
 									}
 
 									if (Random::get(1, 100) <= iPct)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xC2\xB8\xB6 \xBC\xF6\xB7\xC3\xBC\xAD\xB8\xA6 \xC0\xD0\xBE\xEE \xBD\xC2\xB8\xB6 \xBD\xBA\xC5\xB3 \xC6\xF7\xC0\xCE\xC6\xAE\xB8\xA6 \xBE\xF2\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xF2\xC0\xBA \xC6\xF7\xC0\xCE\xC6\xAE\xB7\xCE\xB4\xC2 \xBD\xC2\xB8\xB6 \xBD\xBA\xC5\xB3\xC0\xC7 \xB7\xB9\xBA\xA7\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You read the Horse Riding Manual and received a Riding Point."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can use this point to improve your riding skill!"));
 										PointChange(POINT_HORSE_SKILL, 1);
 
 										int iReadDelay = Random::get(SKILLBOOK_DELAY_MIN, SKILLBOOK_DELAY_MAX);
@@ -3371,7 +3371,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBD\xC2\xB8\xB6 \xBC\xF6\xB7\xC3\xBC\xAD \xC0\xCC\xC7\xD8\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not understand the riding guide."));
 									}
 
 									ITEM_MANAGER::instance().RemoveItem(item);
@@ -3393,8 +3393,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (delta / 10 > 0)
 									{
-										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xB6\xC0\xBD\xC0\xCC \xB8\xBC\xBE\xC6\xC1\xF6\xB4\xC2\xB1\xBA. \xB0\xA1\xBD\xBF\xC0\xBB \xC1\xFE\xB4\xA9\xB8\xA3\xB4\xF8 \xB9\xAB\xBE\xF0\xB0\xA1\xB0\xA1 \xC1\xBB \xB0\xA1\xBA\xAD\xBF\xF6\xC1\xF8 \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF."));
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xBE\xC7\xC4\xA1\xB0\xA1 %d \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), delta/10);
+										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("Your mind is clear. You can concentrate really well now."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your rank has increased by %d points."), delta/10);
 									}
 								}
 								break;
@@ -3437,8 +3437,8 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									item->SetCount(item->GetCount()-1);
 									pPC->SetFlag("mythical_peach.last_use_time", get_global_time());
 
-									ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xB6\xC0\xBD\xC0\xCC \xB8\xBC\xBE\xC6\xC1\xF6\xB4\xC2\xB1\xBA. \xB0\xA1\xBD\xBF\xC0\xBB \xC1\xFE\xB4\xA9\xB8\xA3\xB4\xF8 \xB9\xAB\xBE\xF0\xB0\xA1\xB0\xA1 \xC1\xBB \xB0\xA1\xBA\xAD\xBF\xF6\xC1\xF8 \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF."));
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xBE\xC7\xC4\xA1\xB0\xA1 %d \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), val);
+									ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("Your mind is clear. You can concentrate really well now."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your rank has increased by %d points."), val);
 
 									char buf[256 + 1];
 									snprintf(buf, sizeof(buf), "%d %d", old_alignment, GetAlignment() / 10);
@@ -3527,7 +3527,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									// NEW_HAIR_STYLE_ADD
 									if (GetPart(PART_HAIR) >= 1001)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xC7\xEC\xBE\xEE\xBD\xBA\xC5\xB8\xC0\xCF\xBF\xA1\xBC\xAD\xB4\xC2 \xBF\xB0\xBB\xF6\xB0\xFA \xC5\xBB\xBB\xF6\xC0\xCC \xBA\xD2\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot dye or bleach your current hairstyle."));
 									}
 									// END_NEW_HAIR_STYLE_ADD
 									else
@@ -3555,7 +3555,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xB7\xB9\xBA\xA7\xC0\xCC \xB5\xC7\xBE\xEE\xBE\xDF \xB4\xD9\xBD\xC3 \xBF\xB0\xBB\xF6\xC7\xCF\xBD\xC7 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), last_dye_level+3);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need to have reached level %d to be able to dye your hair again."), last_dye_level+3);
 											}
 										}
 									}
@@ -3575,7 +3575,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										for (int i = 0; i < count; i++)
 										{
 											if (dwVnums[i] == CSpecialItemGroup::GOLD)
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d Yang."), dwCounts[i]);
 										}
 
 										item->SetCount(item->GetCount() - 1);
@@ -3597,7 +3597,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										item->GetVnum() == ITEM_VALENTINE_CHOCOLATE && SEX_FEMALE==GET_SEX(this))
 									{
 										// 성별이 맞지않아 쓸 수 없다.
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item can only be opened by the another gender."));
 										return false;
 									}
 
@@ -3621,7 +3621,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										item->GetVnum() == ITEM_WHITEDAY_ROSE && SEX_FEMALE==GET_SEX(this))
 									{
 										// 성별이 맞지않아 쓸 수 없다.
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item can only be opened by the another gender."));
 										return false;
 									}
 
@@ -3653,41 +3653,41 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											switch (dwVnums[i])
 											{
 											case CSpecialItemGroup::GOLD:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d Yang."), dwCounts[i]);
 												break;
 
 											case CSpecialItemGroup::EXP:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A mysterious light comes out of the box."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d experience points."), dwCounts[i]);
 												break;
 
 											case CSpecialItemGroup::MOB:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Look what came out of the box!"));
 												break;
 
 											case CSpecialItemGroup::SLOW:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xBB\xA1\xB0\xA3 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xBF\xF2\xC1\xF7\xC0\xCC\xB4\xC2 \xBC\xD3\xB5\xB5\xB0\xA1 \xB4\xC0\xB7\xC1\xC1\xB3\xBD\xC0\xB4\xCF\xB4\xD9!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("If you inhale the red smoke coming out of the box, your speed will increase!"));
 												break;
 
 											case CSpecialItemGroup::DRAIN_HP:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xB0\xA1 \xB0\xA9\xC0\xDA\xB1\xE2 \xC6\xF8\xB9\xDF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! \xBB\xFD\xB8\xED\xB7\xC2\xC0\xCC \xB0\xA8\xBC\xD2\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The box suddenly exploded! You have lost Hit Points (HP)."));
 												break;
 
 											case CSpecialItemGroup::POISON:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB3\xAA\xBF\xC2 \xB3\xEC\xBB\xF6 \xBF\xAC\xB1\xE2\xB8\xA6 \xB5\xE9\xC0\xCC\xB8\xB6\xBD\xC3\xC0\xDA \xB5\xB6\xC0\xCC \xBF\xC2\xB8\xF6\xC0\xB8\xB7\xCE \xC6\xDB\xC1\xFD\xB4\xCF\xB4\xD9!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("If you inhale the green smoke that is coming out of the box, the poison will spread through your body!"));
 												break;
 
 											case CSpecialItemGroup::MOB_GROUP:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD \xB8\xF3\xBD\xBA\xC5\xCD\xB0\xA1 \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9!"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Look what came out of the box!"));
 												break;
 
 											default:
 												if (item_gets[i])
 												{
 													if (dwCounts[i] > 1)
-														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 %d \xB0\xB3 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName(), dwCounts[i]);
+														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Receive: %s - %d"), item_gets[i]->GetName(), dwCounts[i]);
 													else
-														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC0\xDA\xBF\xA1\xBC\xAD %s \xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), item_gets[i]->GetName());
+														ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The box contains %s."), item_gets[i]->GetName());
 												}
 												break;
 											}
@@ -3695,7 +3695,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBE\xC6\xB9\xAB\xB0\xCD\xB5\xB5 \xBE\xF2\xC0\xBB \xBC\xF6 \xBE\xF8\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("You have not received anything."));
 										return false;
 									}
 								}
@@ -3722,7 +3722,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 										return false;
 									}
 
@@ -3752,7 +3752,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									int iGold = item->GetSocket(0);
 									ITEM_MANAGER::instance().RemoveItem(item);
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), iGold);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d Yang."), iGold);
 									PointChange(POINT_GOLD, iGold);
 								}
 								break;
@@ -3767,10 +3767,10 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									if (CMonarch::instance().HealMyEmpire(this, HealPrice))
 									{
 										char szNotice[256];
-										snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 HP,SP\xB0\xA1 \xB8\xF0\xB5\xCE \xC3\xA4\xBF\xF6\xC1\xFD\xB4\xCF\xB4\xD9."), EMPIRE_NAME(GetEmpire()));
+										snprintf(szNotice, sizeof(szNotice), LC_TEXT("When the Blessing of the Emperor is used %s the HP and SP are restored again."), EMPIRE_NAME(GetEmpire()));
 										SendNoticeMap(szNotice, GetMapIndex(), false);
 										
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Emperor Blessing is activated."));
 									}
 								}
 								break;
@@ -3817,13 +3817,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the upgrade of this item."));
 										return false;
 									}
 
 									if (item2->AddRareAttribute() == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xBC\xD3\xBC\xBA\xC0\xCC \xC3\xDF\xB0\xA1 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("New bonus added successfully."));
 
 										int iAddedIdx = item2->GetRareAttrCount() + 4;
 										char buf[21];
@@ -3843,7 +3843,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot add more bonus."));
 									}
 								}
 								break;
@@ -3864,7 +3864,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the upgrade of this item."));
 										return false;
 									}
 
@@ -3878,7 +3878,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xB0\xE6 \xBD\xC3\xC5\xB3 \xBC\xD3\xBC\xBA\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the bonuses."));
 									}
 								}
 								break;
@@ -3902,7 +3902,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 										return false;
 									}
 
@@ -3945,7 +3945,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 										if (-1 == pos)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There isn't enough space in your inventory."));
 											break;
 										}
 
@@ -4074,7 +4074,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 									return false;
 								}
 
@@ -4088,14 +4088,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										{
 											if (m_nPotionLimit <= 0)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB \xC1\xA6\xC7\xD1\xB7\xAE\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("That is over the limit."));
 												return false;
 											}
 										}
 										break;
 
 									default :
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 										return false;
 								}
 							}
@@ -4147,7 +4147,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								if (item->GetVnum() == 50085 || item->GetVnum() == 50086)
 								{
 									if (test_server)
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xF9\xBA\xB4 \xB6\xC7\xB4\xC2 \xC1\xBE\xC0\xDA \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Used Moon Cake or Seed."));
 									SetUseSeedOrMoonBottleTime();
 								}
 								if (GetDungeon())
@@ -4170,7 +4170,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						{
 							if (quest::CQuestManager::instance().GetEventFlag("arena_potion_limit") > 0)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 								return false;
 							}
 						
@@ -4186,14 +4186,14 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									{
 										if (m_nPotionLimit <= 0)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB \xC1\xA6\xC7\xD1\xB7\xAE\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("That is over the limit."));
 											return false;
 										}
 									}
 									break;
 
 								default :
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 									return false;
 							}
 						}
@@ -4317,19 +4317,19 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							// gm_guild_build, oxevent 맵에서 귀환부 귀환기억부 를 사용못하게 막음
 							if (GetMapIndex() == 200 || GetMapIndex() == 113)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xC0\xA7\xC4\xA1\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this from your current position."));
 								return false;
 							}
 
 							if (CArenaManager::instance().IsArenaMap(GetMapIndex()) == true)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xC1\xDF\xBF\xA1\xB4\xC2 \xC0\xCC\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB9\xB0\xC7\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item in a duel."));
 								return false;
 							}
 
 							if (m_pkWarpEvent)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB5\xBF\xC7\xD2 \xC1\xD8\xBA\xF1\xB0\xA1 \xB5\xC7\xBE\xEE\xC0\xD6\xC0\xBD\xC0\xB8\xB7\xCE \xB1\xCD\xC8\xAF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are ready to warp, so you cannot use the Scroll of the Location."));
 								return false;
 							}
 
@@ -4366,7 +4366,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								else
 								{
 									if (test_server)
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xF8\xB7\xA1 \xC0\xA7\xC4\xA1\xB7\xCE \xBA\xB9\xB1\xCD"));	
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are being brought back to the place of origin."));	
 
 									ProcessRecallItem(item);
 								}
@@ -4377,7 +4377,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (GetDungeon())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF8\xC0\xFC \xBE\xC8\xBF\xA1\xBC\xAD\xB4\xC2 %s%s \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."),
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s%s cannot be used in a dungeon."),
 												item->GetName(), "");
 										return false;
 									}
@@ -4457,7 +4457,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							// 그딴거 필요없으니 닥치고 빨리 해달래서 그냥 여기서 막음... -_-
 							if (ITEM_COSTUME == item2->GetType())
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the upgrade of this item."));
 								return false;
 							}
 
@@ -4477,7 +4477,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 										if (i == ITEM_SOCKET_MAX_NUM)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xBB\xBC\xD2\xC7\xD2 \xBC\xAE\xC0\xCC \xB9\xDA\xC7\xF4\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There aren't any Pieces of Broken Stone available for removal."));
 											return false;
 										}
 
@@ -4509,13 +4509,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								case USE_CHANGE_ATTRIBUTE :
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the upgrade of this item."));
 										return false;
 									}
 
 									if (item2->GetAttributeCount() == 0)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xD3\xBC\xBA\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no upgrade that you can change."));
 										return false;
 									}
 
@@ -4540,7 +4540,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 											if (dwLastChangeItemAttrMin + dwChangeItemAttrCycle > dwNowMin)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xB9\xD9\xB2\xDB\xC1\xF6 %d\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xBD\xC3 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.(%d \xBA\xD0 \xB3\xB2\xC0\xBD)"),
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can only do this %d minutes after an upgrade. (%d minutes left)"),
 														dwChangeItemAttrCycle, dwChangeItemAttrCycle - (dwNowMin - dwLastChangeItemAttrMin));
 												return false;
 											}
@@ -4601,7 +4601,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										item2->ChangeAttribute();
 									}
 
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have changed the upgrade."));
 									{
 										char buf[21];
 										snprintf(buf, sizeof(buf), "%u", item2->GetID());
@@ -4614,7 +4614,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								case USE_ADD_ATTRIBUTE :
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the upgrade of this item."));
 										return false;
 									}
 
@@ -4654,7 +4654,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										if (Random::get(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
 										{
 											item2->AddAttribute();
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Upgrade successfully added."));
 
 											int iAddedIdx = item2->GetAttributeCount() - 1;
 											LogManager::instance().ItemLog(
@@ -4669,7 +4669,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No upgrade added."));
 											LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE_FAIL", buf);
 										}
 
@@ -4677,7 +4677,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5\xC0\xCC\xBB\xF3 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xC0\xCC\xBF\xEB\xC7\xCF\xBF\xA9 \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You must use the Blessing Marble in order to add another bonus to this item."));
 									}
 									break;
 
@@ -4686,7 +4686,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									// 재가비서를 통해 속성을 4개 추가 시킨 아이템에 대해서 하나의 속성을 더 붙여준다.
 									if (item2->GetAttributeSetIndex() == -1)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the upgrade of this item."));
 										return false;
 									}
 
@@ -4699,7 +4699,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										if (Random::get(1, 100) <= aiItemAttributeAddPercent[item2->GetAttributeCount()])
 										{
 											item2->AddAttribute();
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Upgrade successfully added."));
 
 											int iAddedIdx = item2->GetAttributeCount() - 1;
 											LogManager::instance().ItemLog(
@@ -4714,7 +4714,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD3\xBC\xBA \xC3\xDF\xB0\xA1\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No upgrade added."));
 											LogManager::instance().ItemLog(this, item, "ADD_ATTRIBUTE2_FAIL", buf);
 										}
 
@@ -4722,11 +4722,11 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else if (item2->GetAttributeCount() == 5)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xC0\xCC\xBB\xF3 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xC0\xCC\xBF\xEB\xC7\xCF\xBF\xA9 \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item can no longer be improved. The maximum number of bonuses has been reached."));
 									}
 									else if (item2->GetAttributeCount() < 4)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xD5\xC0\xFA \xC0\xE7\xB0\xA1\xBA\xF1\xBC\xAD\xB8\xA6 \xC0\xCC\xBF\xEB\xC7\xCF\xBF\xA9 \xBC\xD3\xBC\xBA\xC0\xBB \xC3\xDF\xB0\xA1\xBD\xC3\xC4\xD1 \xC1\xD6\xBC\xBC\xBF\xE4."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can only use the Blessing Marble with an item which already has 4 bonuses."));
 									}
 									else
 									{
@@ -4747,12 +4747,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 												if (Random::get(1, 100) <= 50)
 												{
 													item2->SetAccessorySocketMaxGrade(item2->GetAccessorySocketMaxGrade() + 1);
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC4\xCF\xC0\xCC \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xC3\xDF\xB0\xA1\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Socket successfully added."));
 													LogManager::instance().ItemLog(this, item, "ADD_SOCKET_SUCCESS", buf);
 												}
 												else
 												{
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC4\xCF \xC3\xDF\xB0\xA1\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No socket added."));
 													LogManager::instance().ItemLog(this, item, "ADD_SOCKET_FAIL", buf);
 												}
 
@@ -4760,12 +4760,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xD7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No additional sockets could be added to this item."));
 											}
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot add a socket to this item."));
 										}
 									}
 									break;
@@ -4782,12 +4782,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											if (Random::get(1, 100) <= aiAccessorySocketPutPct[item2->GetAccessorySocketGrade()])
 											{
 												item2->SetAccessorySocketGrade(item2->GetAccessorySocketGrade() + 1);
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE5\xC2\xF8\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Arming successful."));
 												LogManager::instance().ItemLog(this, item, "PUT_SOCKET_SUCCESS", buf);
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE5\xC2\xF8\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Arming has failed."));
 												LogManager::instance().ItemLog(this, item, "PUT_SOCKET_FAIL", buf);
 											}
 
@@ -4796,19 +4796,19 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										else
 										{
 											if (item2->GetAccessorySocketMaxGrade() == 0)
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xD5\xC0\xFA \xB4\xD9\xC0\xCC\xBE\xC6\xB8\xF3\xB5\xE5\xB7\xCE \xBE\xC7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1 \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD8\xBE\xDF\xC7\xD5\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to add a socket first. Use a diamond in order to do this."));
 											else if (item2->GetAccessorySocketMaxGrade() < ITEM_ACCESSORY_SOCKET_MAX_NUM)
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xD7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xD2\xC4\xCF\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xC0\xCC\xBE\xC6\xB8\xF3\xB5\xE5\xB7\xCE \xBC\xD2\xC4\xCF\xC0\xBB \xC3\xDF\xB0\xA1\xC7\xD8\xBE\xDF\xC7\xD5\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There are no sockets for gemstones in this item."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to add a socket if you want to use a Diamond."));
 											}
 											else
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xD7\xBC\xBC\xBC\xAD\xB8\xAE\xBF\xA1\xB4\xC2 \xB4\xF5\xC0\xCC\xBB\xF3 \xBA\xB8\xBC\xAE\xC0\xBB \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No more gems can be added to this item."));
 										}
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("These items cannot be used together."));
 									}
 									break;
 							}
@@ -4825,7 +4825,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (m_pkFishingEvent)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3 \xC1\xDF\xBF\xA1 \xB9\xCC\xB3\xA2\xB8\xA6 \xB0\xA5\xBE\xC6\xB3\xA2\xBF\xEF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the Bait whilst fishing."));
 								return false;
 							}
 
@@ -4836,11 +4836,11 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (weapon->GetSocket(2))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xB2\xC8\xC7\xF4\xC0\xD6\xB4\xF8 \xB9\xCC\xB3\xA2\xB8\xA6 \xBB\xA9\xB0\xED %s\xB8\xA6 \xB3\xA2\xBF\xF3\xB4\xCF\xB4\xD9."), item->GetName());
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are exchanging the current Bait for %s."), item->GetName());
 							}
 							else
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3\xB4\xEB\xBF\xA1 %s\xB8\xA6 \xB9\xCC\xB3\xA2\xB7\xCE \xB3\xA2\xBF\xF3\xB4\xCF\xB4\xD9."), item->GetName());
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You attached %s to the hook as bait."), item->GetName());
 							}
 
 							weapon->SetSocket(2, item->GetValue(0));
@@ -4857,7 +4857,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						{
 							if (FindAffect(item->GetValue(0), aApplyInfo[item->GetValue(1)].bPointType))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This effect is already activated."));
 							}
 							else
 							{
@@ -4885,7 +4885,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource1 == NULL)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xB6\xC7\xD5\xC0\xBB \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are missing some ingredients to make the potion."));
 									return false;
 								}
 							}
@@ -4894,7 +4894,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource2 == NULL)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xB6\xC7\xD5\xC0\xBB \xC0\xA7\xC7\xD1 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are missing some ingredients to make the potion."));
 									return false;
 								}
 							}
@@ -4903,7 +4903,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource1->GetCount() < dwSourceCount1)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE7\xB7\xE1(%s)\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."), pSource1->GetName());
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough material (%s)."), pSource1->GetName());
 									return false;
 								}
 
@@ -4914,7 +4914,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 							{
 								if (pSource2->GetCount() < dwSourceCount2)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xE7\xB7\xE1(%s)\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."), pSource2->GetName());
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough material (%s)."), pSource2->GetName());
 									return false;
 								}
 
@@ -4925,7 +4925,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (!pBottle || pBottle->GetCount() < 1)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xF3 \xBA\xB4\xC0\xCC \xB8\xF0\xC0\xDA\xB8\xA8\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough empty bottles."));
 								return false;
 							}
 
@@ -4933,7 +4933,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 							if (Random::get(1, 100) > item->GetValue(5))
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xB0\xBE\xE0 \xC1\xA6\xC1\xB6\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The potion production has failed."));
 								return false;
 							}
 
@@ -4973,7 +4973,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 					if (item->GetValue(5) == p->alValues[5])
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xBA \xBF\xA9\xB7\xAF\xB0\xB3 \xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot attach several stones of the same type."));
 						return false;
 					}
 				}
@@ -4982,7 +4982,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xBA \xC0\xE5\xBA\xF1\xBF\xA1 \xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This Spirit Stone cannot be attached to this type of item."));
 						return false;
 					}
 				}
@@ -4990,13 +4990,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (!IS_SET(item->GetWearFlag(), WEARABLE_WEAPON))
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xB8\xDE\xC6\xBE\xBC\xAE\xC0\xBA \xB9\xAB\xB1\xE2\xBF\xA1 \xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot attach this Spirit Stone to a weapon."));
 						return false;
 					}
 				}
 				else
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xBD\xBD\xB7\xD4\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No slot free."));
 					return false;
 				}
 
@@ -5006,12 +5006,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 						// 석 확률
 						if (Random::get(1, 100) <= 30)
 						{
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xDE\xC6\xBE\xBC\xAE \xBA\xCE\xC2\xF8\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have attached the Spirit Stone successfully."));
 							item2->SetSocket(i, item->GetVnum());
 						}
 						else
 						{
-							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xDE\xC6\xBE\xBC\xAE \xBA\xCE\xC2\xF8\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+							ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Spirit Stone broke while being attached."));
 							item2->SetSocket(i, ITEM_BROKEN_METIN_VNUM);
 						}
 
@@ -5021,7 +5021,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 					}
 
 				if (i == ITEM_SOCKET_MAX_NUM)
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xCE\xC2\xF8\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xBD\xBD\xB7\xD4\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No slot free."));
 			}
 			break;
 
@@ -5056,13 +5056,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				
 				if (FindAffect(affect_type, apply_type))
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This effect is already activated."));
 				}
 				else
 				{
 					if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
 					{
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC8\xBF\xB0\xFA\xB0\xA1 \xB0\xC9\xB7\xC1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This effect is already activated."));
 					}
 					else
 					{
@@ -5134,7 +5134,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 	if (!item->CanUsedBy(this))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xF7\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item because you do not fulfil all the requirements."));
 		return false;
 	}
 
@@ -5143,7 +5143,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 	if (false == FN_check_item_sex(this, item))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are not able to use that item because you do not have the right gender."));
 		return false;
 	}
 
@@ -5152,7 +5152,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 	{
 		if (false == IS_SUMMONABLE_ZONE(GetMapIndex()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function is not available right now."));
 			return false;
 		}
 
@@ -5161,7 +5161,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//삼거리 관려 맵에서는 귀환부를 막아버린다.
 		if (CThreeWayWar::instance().IsThreeWayWarMapIndex(GetMapIndex()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xEF\xB0\xC5\xB8\xAE \xC0\xFC\xC5\xF5 \xC2\xFC\xB0\xA1\xC1\xDF\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use a Scroll of the Location whilst taking part in a kingdom battle."));
 			return false;
 		}
 		int iPulse = thecore_pulse();
@@ -5169,7 +5169,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//창고 연후 체크
 		if (iPulse - GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After opening the Storeroom you cannot use a Scroll of the Location for %d seconds."), g_nPortalLimitTime);
 
 			if (test_server)
 				ChatPacket(CHAT_TYPE_INFO, "[TestOnly]Pulse %d LoadTime %d PASS %d", iPulse, GetSafeboxLoadTime(), PASSES_PER_SEC(g_nPortalLimitTime));
@@ -5179,7 +5179,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//거래관련 창 체크
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE \xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use a Scroll of the Location while another window is open."));
 			return false;
 		}
 
@@ -5188,7 +5188,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		{
 			if (iPulse - GetRefineTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xB0\xB3\xB7\xAE\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After a trade, you cannot use a scroll for another %d seconds."), g_nPortalLimitTime);
 				return false;
 			}
 		}
@@ -5199,7 +5199,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		{
 			if (iPulse - GetMyShopTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1 \xBB\xE7\xBF\xEB\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After opening a storeroom you cannot use a Scroll of the Location for another %d seconds."), g_nPortalLimitTime);
 				return false;
 			}
 			
@@ -5244,7 +5244,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 
 			if (nDistant > nDist)
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB5\xBF \xB5\xC7\xBE\xEE\xC1\xFA \xC0\xA7\xC4\xA1\xBF\xCD \xB3\xCA\xB9\xAB \xB0\xA1\xB1\xEE\xBF\xF6 \xB1\xCD\xC8\xAF\xBA\xCE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));				
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use the Scroll of the Location because the distance is too small."));				
 				if (test_server)
 					ChatPacket(CHAT_TYPE_INFO, "PossibleDistant %f nNowDist %f", nDistant,nDist); 
 				return false;
@@ -5255,7 +5255,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 		//교환 후 시간체크
 		if (iPulse - GetExchangeTime()  < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xCD\xC8\xAF\xBA\xCE,\xB1\xCD\xC8\xAF\xB1\xE2\xBE\xEF\xBA\xCE\xB5\xEE\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After a trade you cannot use a Scroll of the Location for %d seconds."), g_nPortalLimitTime);
 			return false;
 		}
 		//END_PREVENT_PORTAL_AFTER_EXCHANGE
@@ -5267,7 +5267,7 @@ bool CHARACTER::UseItem(TItemPos Cell, TItemPos DestCell)
 	{
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBA\xB8\xB5\xFB\xB8\xAE,\xBA\xF1\xB4\xDC\xBA\xB8\xB5\xFB\xB8\xAE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot open the Storeroom if another window is already open."));
 			return false;
 		}
 
@@ -5310,7 +5310,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 	if (!CanHandleItem())
 	{
 		if (NULL != DragonSoul_RefineWindow_GetOpener())
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC3\xA2\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot move the item within the refinement window."));
 		return false;
 	}
 
@@ -5331,7 +5331,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 
 	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_DROP | ITEM_ANTIFLAG_GIVE))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xF6\xB8\xB1 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot drop this item."));
 		return false;
 	}
 
@@ -5382,7 +5382,7 @@ bool CHARACTER::DropItem(TItemPos Cell, BYTE bCount)
 		if (LC_IsYMIR())
 			item->AttrLog();
 
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB6\xB3\xBE\xEE\xC1\xF8 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA 3\xBA\xD0 \xC8\xC4 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in 5 minutes."));
 		pkItemToDrop->StartDestroyEvent();
 
 		ITEM_MANAGER::instance().FlushDelayedSave(pkItemToDrop);
@@ -5491,14 +5491,14 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 	if (!CanHandleItem())
 	{
 		if (NULL != DragonSoul_RefineWindow_GetOpener())
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAD\xC8\xAD\xC3\xA2\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot move the item within the refinement window."));
 		return false;
 	}
 
 	// 기획자의 요청으로 벨트 인벤토리에는 특정 타입의 아이템만 넣을 수 있다.
 	if (DestCell.IsBeltInventoryPosition() && false == CBeltInventoryHelper::CanMoveIntoBeltInventory(item))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xBA\xA7\xC6\xAE \xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xB7\xCE \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));			
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot equip this item in your belt inventory."));			
 		return false;
 	}
 
@@ -5510,7 +5510,7 @@ bool CHARACTER::MoveItem(TItemPos Cell, TItemPos DestCell, BYTE count)
 	{
 		if (GetItem(DestCell))	// 장비일 경우 한 곳만 검사해도 된다.
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC0\xE5\xBA\xF1\xB8\xA6 \xC2\xF8\xBF\xEB\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have already equipped this kind of Dragon Stone."));
 			
 			return false;
 		}
@@ -5781,7 +5781,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 							if (bCount == 0)
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item2->GetName());
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s received"), item2->GetName());
 								M2_DESTROY_ITEM(item);
 								if (item2->GetType() == ITEM_QUEST)
 									quest::CQuestManager::instance().PickupItem (GetPlayerID(), item2);
@@ -5799,7 +5799,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 					if ((iEmptyCell = GetEmptyDragonSoulInventory(item)) == -1)
 					{
 						SPDLOG_DEBUG("No empty ds inventory pid {} size {}d itemid {}", GetPlayerID(), item->GetSize(), item->GetID());
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have too many items in your inventory."));
 						return false;
 					}
 				}
@@ -5808,7 +5808,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 					if ((iEmptyCell = GetEmptyInventory(item->GetSize())) == -1)
 					{
 						SPDLOG_DEBUG("No empty inventory pid {} size {}d itemid {}", GetPlayerID(), item->GetSize(), item->GetID());
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have too many items in your inventory."));
 						return false;
 					}
 				}
@@ -5823,7 +5823,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 				char szHint[32+1];
 				snprintf(szHint, sizeof(szHint), "%s %u %u", item->GetName(), item->GetCount(), item->GetOriginalVnum());
 				LogManager::instance().ItemLog(this, item, "GET", szHint);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s received"), item->GetName());
 
 				if (item->GetType() == ITEM_QUEST)
 					quest::CQuestManager::instance().PickupItem (GetPlayerID(), item);
@@ -5851,7 +5851,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 					if ((iEmptyCell = GetEmptyDragonSoulInventory(item)) == -1)
 					{
-						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
+						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have too many items in your inventory."));
 						return false;
 					}
 				}
@@ -5864,7 +5864,7 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 
 					if ((iEmptyCell = GetEmptyInventory(item->GetSize())) == -1)
 					{
-						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xCF\xB0\xED \xC0\xD6\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xCA\xB9\xAB \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
+						owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have too many items in your inventory."));
 						return false;
 					}
 				}
@@ -5882,11 +5882,11 @@ bool CHARACTER::PickupItem(DWORD dwVID)
 			LogManager::instance().ItemLog(owner, item, "GET", szHint);
 
 			if (owner == this)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s received"), item->GetName());
 			else
 			{
-				owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s \xB4\xD4\xC0\xB8\xB7\xCE\xBA\xCE\xC5\xCD %s"), GetName(), item->GetName());
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC0\xFC\xB4\xDE: %s \xB4\xD4\xBF\xA1\xB0\xD4 %s"), owner->GetName(), item->GetName());
+				owner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s receives %s."), GetName(), item->GetName());
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Item Trade: %s, %s"), owner->GetName(), item->GetName());
 			}
 
 			if (item->GetType() == ITEM_QUEST)
@@ -6039,20 +6039,20 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 
 	if (iWearCell != WEAR_ARROW && IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xC2\xF8\xBF\xEB\xC1\xDF\xC0\xCE \xC0\xE5\xBA\xF1\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change the equipped item while you are transformed."));
 		return false;
 	}
 
 	if (FN_check_item_sex(this, item) == false)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBA\xB0\xC0\xCC \xB8\xC2\xC1\xF6\xBE\xCA\xBE\xC6 \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are not able to use that item because you do not have the right gender."));
 		return false;
 	}
 
 	//신규 탈것 사용시 기존 말 사용여부 체크
 	if(item->IsRideItem() && IsRiding())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC5\xBB\xB0\xCD\xC0\xBB \xC0\xCC\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You're already riding. Get off first."));
 		return false;
 	}
 
@@ -6062,7 +6062,7 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 	if (iWearCell != WEAR_ARROW 
 		&& (dwCurTime - GetLastAttackTime() <= 1500 || dwCurTime - m_dwLastSkillTime <= 1500))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA1\xB8\xB8\xC8\xF7 \xC0\xD6\xC0\xBB \xB6\xA7\xB8\xB8 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to stand still to equip the item."));
 		return false;
 	}
 
@@ -6073,7 +6073,7 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 		// 용혼석은 swap을 지원하면 안됨.
 		if(GetInventoryItem(INVENTORY_MAX_NUM + iWearCell))
 		{
-			ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xBF\xEB\xC8\xA5\xBC\xAE\xC0\xBB \xC2\xF8\xBF\xEB\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.");
+			ChatPacket(CHAT_TYPE_INFO, "You are already carrying a Dragon Stone of this type.");
 			return false;
 		}
 		
@@ -6508,7 +6508,7 @@ LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool
 				if (bCount == 0)
 				{
 					if (bMsg)
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s received"), item->GetName());
 
 					return item;
 				}
@@ -6560,7 +6560,7 @@ LPITEM CHARACTER::AutoGiveItem(DWORD dwItemVnum, BYTE bCount, int iRarePct, bool
 	if (iEmptyCell != -1)
 	{
 		if (bMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), item->GetName());
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s received"), item->GetName());
 
 		if (item->IsDragonSoul())
 			item->AddToCharacter(this, TItemPos(DRAGON_SOUL_INVENTORY, iEmptyCell));
@@ -6704,7 +6704,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (!IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC1\xF6 \xBE\xCA\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Monkey Herbs cannot be fed to living horses. It is used to revive dead horses."));
 					return false;
 				}
 				return true;
@@ -6713,7 +6713,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot feed a dead Horse."));
 					return false;
 				}
 				return true;
@@ -6731,7 +6731,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (!IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC1\xF6 \xBE\xCA\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Monkey Herbs cannot be fed to living horses. It is used to revive dead horses."));
 					return false;
 				}
 				return true;
@@ -6740,7 +6740,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot feed a dead Horse."));
 					return false;
 				}
 				return true;
@@ -6758,7 +6758,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (!IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC1\xF6 \xBE\xCA\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Monkey Herbs cannot be fed to living horses. It is used to revive dead horses."));
 					return false;
 				}
 				return true;
@@ -6767,7 +6767,7 @@ bool CHARACTER::CanReceiveItem(LPCHARACTER from, LPITEM item) const
 			{
 				if (IsDead())
 				{
-					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD7\xC0\xBA \xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xB8\xD4\xC0\xCF \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot feed a dead Horse."));
 					return false;
 				}
 				return true;
@@ -6817,7 +6817,7 @@ void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
 			}
 			else
 			{
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be improved."));
 			}
 			break;
 			// END_OF_DEVILTOWER_NPC
@@ -6834,7 +6834,7 @@ void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
 			}
 			else
 			{
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This item cannot be improved."));
 			}
 			break;
 
@@ -6853,14 +6853,14 @@ void CHARACTER::ReceiveItem(LPCHARACTER from, LPITEM item)
 			{
 				from->ReviveHorse();
 				item->SetCount(item->GetCount()-1);
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xB0\xD4 \xBC\xB1\xC3\xCA\xB8\xA6 \xC1\xD6\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You fed the Horse with Herbs."));
 			}
 			else if (item->GetVnum() == ITEM_HORSE_FOOD_1 ||
 					item->GetVnum() == ITEM_HORSE_FOOD_2 ||
 					item->GetVnum() == ITEM_HORSE_FOOD_3)
 			{
 				from->FeedHorse();
-				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xB0\xD4 \xBB\xE7\xB7\xE1\xB8\xA6 \xC1\xD6\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				from->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have fed the Horse."));
 				item->SetCount(item->GetCount()-1);
 				EffectPacket(SE_HPUP_RED);
 			}
@@ -7052,7 +7052,7 @@ bool CHARACTER::ItemProcess_Hair(LPITEM item, int iDestCell)
 	if (item->CheckItemUseLevel(GetLevel()) == false)
 	{
 		// 레벨 제한에 걸림
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xCC \xB8\xD3\xB8\xAE\xB8\xA6 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB7\xB9\xBA\xA7\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to wear this Hairstyle."));
 		return false;
 	}
 
@@ -7083,7 +7083,7 @@ bool CHARACTER::ItemProcess_Hair(LPITEM item, int iDestCell)
 
 	if (hair == GetPart(PART_HAIR))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xBF\xC0\xCF\xC7\xD1 \xB8\xD3\xB8\xAE \xBD\xBA\xC5\xB8\xC0\xCF\xB7\xCE\xB4\xC2 \xB1\xB3\xC3\xBC\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You already have this Hairstyle."));
 		return true;
 	}
 
@@ -7100,7 +7100,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 {
 	if (IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xB5\xD0\xB0\xA9\xC1\xDF\xC0\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have already transformed."));
 		return false;
 	}
 
@@ -7114,7 +7114,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 
 	if (dwVnum == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDF\xB8\xF8\xB5\xC8 \xB5\xD0\xB0\xA9 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("That's the wrong trading item."));
 		item->SetCount(item->GetCount()-1);
 		return false;
 	}
@@ -7123,7 +7123,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 
 	if (pMob == NULL)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDF\xB8\xF8\xB5\xC8 \xB5\xD0\xB0\xA9 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("That's the wrong trading item."));
 		item->SetCount(item->GetCount()-1);
 		return false;
 	}
@@ -7143,7 +7143,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 				int iPolymorphLevelLimit = std::max(0, 20 - GetLevel() * 3 / 10);
 				if (pMob->m_table.bLevel >= GetLevel() + iPolymorphLevelLimit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xBA\xB8\xB4\xD9 \xB3\xCA\xB9\xAB \xB3\xF4\xC0\xBA \xB7\xB9\xBA\xA7\xC0\xC7 \xB8\xF3\xBD\xBA\xC5\xCD\xB7\xCE\xB4\xC2 \xBA\xAF\xBD\xC5 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot transform into a monster who has a higher level than you."));
 					return false;
 				}
 
@@ -7411,7 +7411,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_LEVEL:
 				if (GetLevel() < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xB9\xBA\xA7\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your level is too low to equip this item."));
 					return false;
 				}
 				break;
@@ -7419,7 +7419,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_STR:
 				if (GetPoint(POINT_ST) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD9\xB7\xC2\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are not strong enough to equip yourself with this item."));
 					return false;
 				}
 				break;
@@ -7427,7 +7427,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_INT:
 				if (GetPoint(POINT_IQ) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xF6\xB4\xC9\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your intelligence is too low to equip yourself with this item."));
 					return false;
 				}
 				break;
@@ -7435,7 +7435,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_DEX:
 				if (GetPoint(POINT_DX) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xCE\xC3\xB8\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your dexterity is too low to equip yourself with this item."));
 					return false;
 				}
 				break;
@@ -7443,7 +7443,7 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 			case LIMIT_CON:
 				if (GetPoint(POINT_HT) < limit)
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xBC\xB7\xC2\xC0\xCC \xB3\xB7\xBE\xC6 \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your vitality is too low to equip yourself with this item."));
 					return false;
 				}
 				break;
@@ -7455,14 +7455,14 @@ bool CHARACTER::CanEquipNow(const LPITEM item, const TItemPos& srcCell, const TI
 		if ((GetWear(WEAR_UNIQUE1) && GetWear(WEAR_UNIQUE1)->IsSameSpecialGroup(item)) ||
 			(GetWear(WEAR_UNIQUE2) && GetWear(WEAR_UNIQUE2)->IsSameSpecialGroup(item)))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xBA \xC1\xBE\xB7\xF9\xC0\xC7 \xC0\xAF\xB4\xCF\xC5\xA9 \xBE\xC6\xC0\xCC\xC5\xDB \xB5\xCE \xB0\xB3\xB8\xA6 \xB5\xBF\xBD\xC3\xBF\xA1 \xC0\xE5\xC2\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot equip this item twice."));
 			return false;
 		}
 
 		if (marriage::CManager::instance().IsMarriageUniqueItem(item->GetVnum()) && 
 			!marriage::CManager::instance().IsMarried(GetPlayerID()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE1\xC8\xA5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xBF\xB9\xB9\xB0\xC0\xBB \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this item because you are not married."));
 			return false;
 		}
 
@@ -7476,7 +7476,7 @@ bool CHARACTER::CanUnequipNow(const LPITEM item, const TItemPos& srcCell, const
 {	
 
 	if (ITEM_BELT == item->GetType())
-		VERIFY_MSG(CBeltInventoryHelper::IsExistItemInBeltInventory(this), "\xBA\xA7\xC6\xAE \xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xBF\xA1 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xB8\xC0\xE7\xC7\xCF\xB8\xE9 \xC7\xD8\xC1\xA6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.");
+		VERIFY_MSG(CBeltInventoryHelper::IsExistItemInBeltInventory(this), "You can only discard the belt when there are no longer any items in its inventory.");
 
 	// 영원히 해제할 수 없는 아이템
 	if (IS_SET(item->GetFlag(), ITEM_FLAG_IRREMOVABLE))
@@ -7491,7 +7491,7 @@ bool CHARACTER::CanUnequipNow(const LPITEM item, const TItemPos& srcCell, const
 		else
 			pos = GetEmptyInventory(item->GetSize());
 
-		VERIFY_MSG( -1 == pos, "\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." );
+		VERIFY_MSG( -1 == pos, "There isn't enough space in your inventory." );
 	}
 
 
diff --git a/src/game/src/char_skill.cpp b/src/game/src/char_skill.cpp
index 83b5bd3..8494a9e 100644
--- a/src/game/src/char_skill.cpp
+++ b/src/game/src/char_skill.cpp
@@ -267,7 +267,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 
 	if (!IsLearnableSkill(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill."));
 		return false;
 	}
 
@@ -282,7 +282,7 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 	   {
 	// 주안술서 사용중에는 시간 제한 무시
 	RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have escaped the evil ghost curse with the help of an Exorcism Scroll."));
 	}
 	else 	    
 	{
@@ -296,16 +296,16 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 	// bType이 0이면 처음부터 책으로 수련 가능
 	if (pkSk->dwType == 0)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xA3\xB5\xE5 \xB8\xB6\xBD\xBA\xC5\xCD \xBC\xF6\xB7\xC3\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill up to Grand Master level."));
 		return false;
 	}
 
 	if (GetSkillMasterType(dwSkillVnum) != SKILL_GRAND_MASTER)
 	{
 		if (GetSkillMasterType(dwSkillVnum) > SKILL_GRAND_MASTER)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xDB\xC6\xE5\xC6\xAE \xB8\xB6\xBD\xBA\xC5\xCD\xB5\xC8 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9. \xB4\xF5 \xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You already are a Master of this skill. You cannot train this skill any further."));
 		else
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBD\xBA\xC5\xB3\xC0\xBA \xBE\xC6\xC1\xF7 \xB1\xD7\xB7\xA3\xB5\xE5 \xB8\xB6\xBD\xBA\xC5\xCD \xBC\xF6\xB7\xC3\xC0\xBB \xC7\xD2 \xB0\xE6\xC1\xF6\xBF\xA1 \xC0\xCC\xB8\xA3\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your Skill is not high enough to become a Grand Master."));
 		return false;
 	}
 
@@ -386,15 +386,15 @@ bool CHARACTER::LearnGrandMasterSkill(DWORD dwSkillVnum)
 
 	if (bLastLevel == GetSkillLevel(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xC5\xA9\xC0\xB9, \xB1\xE2\xB0\xA1 \xBF\xAA\xB7\xF9\xC7\xCF\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC5 \xBC\xB3\xB8\xB6 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xC0\xCE\xB0\xA1!? \xC1\xA8\xC0\xE5!"));
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC0\xCC \xBD\xC7\xC6\xD0\xB7\xCE \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9. \xB4\xD9\xBD\xC3 \xB5\xB5\xC0\xFC\xC7\xD8\xC1\xD6\xBD\xC3\xB1\xE2 \xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("That did not work. Damn!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Training has failed. Please try again later."));
 		LogManager::instance().CharLog(this, dwSkillVnum, "GM_READ_FAIL", "");
 		return false;
 	}
 
-	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xF6\xBF\xA1\xBC\xAD \xB9\xBA\xB0\xA1 \xC8\xFB\xC0\xCC \xC5\xCD\xC1\xAE \xB3\xAA\xBF\xC0\xB4\xC2 \xB1\xE2\xBA\xD0\xC0\xCC\xBE\xDF!"));
-	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB6\xDF\xB0\xC5\xBF\xEE \xB9\xAB\xBE\xF9\xC0\xCC \xB0\xE8\xBC\xD3 \xBF\xEB\xBC\xDA\xC0\xBD\xC4\xA1\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC7, \xC0\xCC\xB0\xCD\xC0\xBA!"));
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5 \xB3\xF4\xC0\xBA \xB0\xE6\xC1\xF6\xC0\xC7 \xBC\xF6\xB7\xC3\xC0\xBB \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xB3\xA1\xB3\xBB\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("My body is full of energy!"));
+	ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("The training seems to be working already..."));
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You successfully finished your training with the book."));
 	LogManager::instance().CharLog(this, dwSkillVnum, "GM_READ_SUCCESS", "");
 	return true;
 }
@@ -421,7 +421,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 	if (!IsLearnableSkill(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBD\xBA\xC5\xB3\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill."));
 		return false;
 	}
 
@@ -433,7 +433,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 		if ( GetExp() < need_exp )
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot read this due to your lack of experience."));
 			return false;
 		}
 	}
@@ -444,9 +444,9 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 		if (GetSkillMasterType(dwSkillVnum) != SKILL_MASTER)
 		{
 			if (GetSkillMasterType(dwSkillVnum) > SKILL_MASTER)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBD\xBA\xC5\xB3\xC0\xBA \xC3\xA5\xC0\xB8\xB7\xCE \xB4\xF5\xC0\xCC\xBB\xF3 \xBC\xF6\xB7\xC3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot train this skill with a Book."));
 			else
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBD\xBA\xC5\xB3\xC0\xBA \xBE\xC6\xC1\xF7 \xC3\xA5\xC0\xB8\xB7\xCE \xBC\xF6\xB7\xC3\xC7\xD2 \xB0\xE6\xC1\xF6\xBF\xA1 \xC0\xCC\xB8\xA3\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This skill's level is not high enough to be trained with a Book."));
 			return false;
 		}
 	}
@@ -459,7 +459,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 			{
 				// 주안술서 사용중에는 시간 제한 무시
 				RemoveAffect(AFFECT_SKILL_NO_BOOK_DELAY);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xD6\xBE\xC8\xBC\xFA\xBC\xAD\xB8\xA6 \xC5\xEB\xC7\xD8 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xBF\xA1\xBC\xAD \xBA\xFC\xC1\xAE\xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have escaped the evil ghost curse with the help of an Exorcism Scroll."));
 			}
 			else 	    
 			{
@@ -533,7 +533,7 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 						SkillLevelUp(dwSkillVnum, SKILL_UP_BY_BOOK);
 						pPC->SetFlag(flag, 0);
 
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA5\xC0\xB8\xB7\xCE \xB4\xF5 \xB3\xF4\xC0\xBA \xB0\xE6\xC1\xF6\xC0\xC7 \xBC\xF6\xB7\xC3\xC0\xBB \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xB3\xA1\xB3\xBB\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully finished your training with the Book."));
 						LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", "");
 						return true;
 					}
@@ -544,20 +544,20 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 						switch (Random::get(1, 3))
 						{
 							case 1:
-								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBE\xEE\xB4\xC0\xC1\xA4\xB5\xB5 \xC0\xCC \xB1\xE2\xBC\xFA\xBF\xA1 \xB4\xEB\xC7\xD8 \xC0\xCC\xC7\xD8\xB0\xA1 \xB5\xC7\xBE\xFA\xC1\xF6\xB8\xB8 \xC1\xB6\xB1\xDD \xBA\xCE\xC1\xB7\xC7\xD1\xB5\xED \xC7\xD1\xB5\xA5.."));
+								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("I'm making progress, but I still haven't understood everything."));
 								break;
 											
 							case 2:
-								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB5\xE5\xB5\xF0\xBE\xEE \xB3\xA1\xC0\xCC \xBA\xB8\xC0\xCC\xB4\xC2 \xB0\xC7\xB0\xA1...  \xC0\xCC \xB1\xE2\xBC\xFA\xC0\xBA \xC0\xCC\xC7\xD8\xC7\xCF\xB1\xE2\xB0\xA1 \xB3\xCA\xB9\xAB \xC8\xFB\xB5\xE9\xBE\xEE.."));
+								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("These instructions are difficult to understand. I have to carry on studying."));
 								break;
 
 							case 3:
 							default:
-								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xBF\xAD\xBD\xC9\xC8\xF7 \xC7\xCF\xB4\xC2 \xB9\xE8\xBF\xF2\xC0\xBB \xB0\xA1\xC1\xF6\xB4\xC2 \xB0\xCD\xB8\xB8\xC0\xCC \xB1\xE2\xBC\xFA\xC0\xBB \xB9\xE8\xBF\xEF\xBC\xF6 \xC0\xD6\xB4\xC2 \xC0\xAF\xC0\xCF\xC7\xD1 \xB1\xE6\xC0\xCC\xB4\xD9.."));
+								ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("I understand this chapter. But I've got to carry on working hard."));
 								break;
 						}
 
-						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xB1\xC7\xC0\xBB \xB4\xF5 \xC0\xD0\xBE\xEE\xBE\xDF \xBC\xF6\xB7\xC3\xC0\xBB \xBF\xCF\xB7\xE1 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), need_bookcount - read_count);
+						ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to read %d more skill books to improve this skill."), need_bookcount - read_count);
 						return true;
 					}
 				}
@@ -602,15 +602,15 @@ bool CHARACTER::LearnSkillByBook(DWORD dwSkillVnum, BYTE bProb)
 
 	if (bLastLevel != GetSkillLevel(dwSkillVnum))
 	{
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB8\xF6\xBF\xA1\xBC\xAD \xB9\xBA\xB0\xA1 \xC8\xFB\xC0\xCC \xC5\xCD\xC1\xAE \xB3\xAA\xBF\xC0\xB4\xC2 \xB1\xE2\xBA\xD0\xC0\xCC\xBE\xDF!"));
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xB6\xDF\xB0\xC5\xBF\xEE \xB9\xAB\xBE\xF9\xC0\xCC \xB0\xE8\xBC\xD3 \xBF\xEB\xBC\xDA\xC0\xBD\xC4\xA1\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC7, \xC0\xCC\xB0\xCD\xC0\xBA!"));
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA5\xC0\xB8\xB7\xCE \xB4\xF5 \xB3\xF4\xC0\xBA \xB0\xE6\xC1\xF6\xC0\xC7 \xBC\xF6\xB7\xC3\xC0\xBB \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xB3\xA1\xB3\xBB\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("My body is full of energy!"));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("The training seems to be working already..."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have successfully finished your training with the Book."));
 		LogManager::instance().CharLog(this, dwSkillVnum, "READ_SUCCESS", "");
 	}
 	else
 	{
-		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("\xC5\xA9\xC0\xB9, \xB1\xE2\xB0\xA1 \xBF\xAA\xB7\xF9\xC7\xCF\xB0\xED \xC0\xD6\xBE\xEE! \xC0\xCC\xB0\xC5 \xBC\xB3\xB8\xB6 \xC1\xD6\xC8\xAD\xC0\xD4\xB8\xB6\xC0\xCE\xB0\xA1!? \xC1\xA8\xC0\xE5!"));
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xF6\xB7\xC3\xC0\xCC \xBD\xC7\xC6\xD0\xB7\xCE \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9. \xB4\xD9\xBD\xC3 \xB5\xB5\xC0\xFC\xC7\xD8\xC1\xD6\xBD\xC3\xB1\xE2 \xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_TALKING, LC_TEXT("That did not work. Damn!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Training has failed. Please try again later."));
 		LogManager::instance().CharLog(this, dwSkillVnum, "READ_FAIL", "");
 	}
 
@@ -694,7 +694,7 @@ void CHARACTER::SkillLevelUp(DWORD dwVnum, BYTE bMethod)
 
 	if (IsPolymorphed())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 		return;
 	}
 
@@ -1642,7 +1642,7 @@ EVENTFUNC(skill_gwihwan_event)
 	else
 	{
 		//실패
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xCD\xC8\xAF\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Teleportation has failed."));
 	}
 	return 0;
 }
@@ -2421,9 +2421,9 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 			return false;
 
 		if (GetHorseLevel() <= 0)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xB8\xB6\xB1\xC2\xB0\xA3 \xB0\xE6\xBA\xF1\xBA\xB4\xC0\xBB \xC3\xA3\xBE\xC6\xB0\xA1\xBC\xBC\xBF\xE4."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No Horse here. Ask the Stable Boy."));
 		else
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB \xBC\xD2\xC8\xAF \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xCF\xBC\xBC\xBF\xE4."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please use an item to call a Horse."));
 
 		return true;
 	}
@@ -2560,7 +2560,7 @@ bool CHARACTER::UseSkill(DWORD dwVnum, LPCHARACTER pkVictim, bool bUseGrandMaste
 			return false;
 
 		if (test_server)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s SP\xBC\xD2\xB8\xF0: %d"), pkSk->szName, iNeededSP);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s FP-Consumption: %d"), pkSk->szName, iNeededSP);
 
 		PointChange(POINT_SP, -iNeededSP);
 	}
@@ -2745,41 +2745,41 @@ void CHARACTER::SkillLearnWaitMoreTimeMessage(DWORD ms)
 	//const char* str = "";
 	//
 	if (ms < 3 * 60)
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB8\xF6 \xBC\xD3\xC0\xCC \xB6\xDF\xB0\xCC\xB1\xBA. \xC7\xCF\xC1\xF6\xB8\xB8 \xBE\xC6\xC1\xD6 \xC6\xED\xBE\xC8\xC7\xD8. \xC0\xCC\xB4\xEB\xB7\xCE \xB1\xE2\xB8\xA6 \xBE\xC8\xC1\xA4\xBD\xC3\xC5\xB0\xC0\xDA."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("I am burning inside, but it is calming down my body. My Chi has to stabilise."));
 	else if (ms < 5 * 60)
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB7\xA1, \xC3\xB5\xC3\xB5\xC8\xF7. \xC1\xBB\xB4\xF5 \xC3\xB5\xC3\xB5\xC8\xF7, \xB1\xD7\xB7\xAF\xB3\xAA \xB8\xB7\xC8\xFB \xBE\xF8\xC0\xCC \xBA\xFC\xB8\xA3\xB0\xD4!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("A little slow, but steady... Without stopping!"));
 	else if (ms < 10 * 60) // 10분
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB7\xA1, \xC0\xCC \xB4\xC0\xB3\xA6\xC0\xCC\xBE\xDF. \xC3\xBC\xB3\xBB\xBF\xA1 \xB1\xE2\xB0\xA1 \xBE\xC6\xC1\xD6 \xC3\xE6\xB8\xB8\xC7\xD8."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Yes, that feels great. My body is full of Chi."));
 	else if (ms < 30 * 60) // 30분
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB4\xD9 \xC0\xD0\xBE\xFA\xB4\xD9! \xC0\xCC\xC1\xA6 \xBA\xF1\xB1\xDE\xBF\xA1 \xC0\xFB\xC7\xF4\xC0\xD6\xB4\xC2 \xB4\xEB\xB7\xCE \xC0\xFC\xBD\xC5\xBF\xA1 \xB1\xE2\xB8\xA6 \xB5\xB9\xB8\xAE\xB1\xE2\xB8\xB8 \xC7\xCF\xB8\xE9,"));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB1\xD7\xB0\xCD\xC0\xB8\xB7\xCE \xBC\xF6\xB7\xC3\xC0\xBA \xB3\xA1\xB3\xAD \xB0\xC5\xBE\xDF!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("I have read it! Now the Chi will spread through my body."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("The training is completed."));
 	}
 	else if (ms < 1 * 3600) // 1시간
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xC1\xA6 \xC3\xA5\xC0\xC7 \xB8\xB6\xC1\xF6\xB8\xB7 \xC0\xE5\xC0\xCC\xBE\xDF! \xBC\xF6\xB7\xC3\xC0\xC7 \xB3\xA1\xC0\xCC \xB4\xAB\xBF\xA1 \xBA\xB8\xC0\xCC\xB0\xED \xC0\xD6\xBE\xEE!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("I am on the last page of the book. The training is nearly finished!"));
 	else if (ms < 2 * 3600) // 2시간
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBE\xF3\xB8\xB6 \xBE\xC8 \xB3\xB2\xBE\xD2\xBE\xEE! \xC1\xB6\xB1\xDD\xB8\xB8 \xB4\xF5!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Nearly finished! Just a little bit more to go!"));
 	else if (ms < 3 * 3600)
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC1\xC1\xBE\xD2\xBE\xEE! \xC1\xB6\xB1\xDD\xB8\xB8 \xB4\xF5 \xC0\xD0\xC0\xB8\xB8\xE9 \xB3\xA1\xC0\xCC\xB4\xD9!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Eureka! I have nearly finished reading it!"));
 	else if (ms < 6 * 3600)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC3\xA5\xC0\xE5\xB5\xB5 \xC0\xCC\xC1\xA6 \xBE\xF3\xB8\xB6 \xB3\xB2\xC1\xF6 \xBE\xCA\xBE\xD2\xB1\xBA."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB9\xBA\xB0\xA1 \xB8\xF6 \xBE\xC8\xBF\xA1 \xC8\xFB\xC0\xCC \xBB\xFD\xB1\xE2\xB4\xC2 \xB1\xE2\xBA\xD0\xC0\xCE \xB0\xC9."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Only a few more pages and then I'll have read everything."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("I feel refreshed."));
 	}
 	else if (ms < 12 * 3600)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xC1\xA6 \xC1\xBB \xBD\xBD\xBD\xBD \xB0\xA1\xB4\xDA\xC0\xCC \xC0\xE2\xC8\xF7\xB4\xC2 \xB0\xCD \xB0\xB0\xC0\xBA\xB5\xA5."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC1\xC1\xBE\xC6, \xC0\xCC \xB1\xE2\xBC\xBC\xB7\xCE \xB0\xE8\xBC\xD3 \xB3\xAA\xB0\xA3\xB4\xD9!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Now I understand it!"));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("Okay I have to stay concentrated!"));
 	}
 	else if (ms < 18 * 3600)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBE\xC6\xB4\xCF \xBE\xEE\xB6\xBB\xB0\xD4 \xB5\xC8 \xB0\xD4 \xC1\xBE\xC0\xCF \xC0\xD0\xBE\xEE\xB5\xB5 \xB8\xD3\xB8\xAE\xBF\xA1 \xBE\xC8 \xB5\xE9\xBE\xEE\xBF\xC0\xB3\xC4."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xB0\xF8\xBA\xCE\xC7\xCF\xB1\xE2 \xBD\xC8\xBE\xEE\xC1\xF6\xB3\xD7."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("I keep reading the same line over and over again."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("I do not want to learn any more."));
 	}
 	else //if (ms < 2 * 86400)
 	{
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xBB\xFD\xB0\xA2\xB8\xB8\xC5\xAD \xC0\xD0\xB1\xE2\xB0\xA1 \xBD\xB1\xC1\xF6\xB0\xA1 \xBE\xCA\xB1\xBA. \xC0\xCC\xC7\xD8\xB5\xB5 \xBE\xEE\xB7\xC6\xB0\xED \xB3\xBB\xBF\xEB\xB5\xB5 \xB3\xAD\xC7\xD8\xC7\xD8."));
-		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("\xC0\xCC\xB7\xA1\xBC\xAD\xBE\xDF \xB0\xF8\xBA\xCE\xB0\xA1 \xBE\xC8\xB5\xC8\xB4\xD9\xB1\xB8."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("It is a lot more complicated and more difficult to understand than I thought."));
+		ChatPacket(CHAT_TYPE_TALKING, "%s", LC_TEXT("It's hard for me to concentrate. I should take a break."));
 	}
 	/*
 	   str = "30%";
diff --git a/src/game/src/char_state.cpp b/src/game/src/char_state.cpp
index ccbffc6..7f38387 100644
--- a/src/game/src/char_state.cpp
+++ b/src/game/src/char_state.cpp
@@ -155,7 +155,7 @@ namespace
 								//pkChr->RemoveAffect(AFFECT_WAR_FLAG);
 
 								char buf[256];
-								snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xEA\xB9\xDF\xC0\xBB \xBB\xA9\xBE\xD1\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9!"), pMap->GetGuild(idx)->GetName(), pMap->GetGuild(idx_opp)->GetName());
+								snprintf(buf, sizeof(buf), LC_TEXT("The guild %s's flag has been stolen by player %s."), pMap->GetGuild(idx)->GetName(), pMap->GetGuild(idx_opp)->GetName());
 								pMap->Notice(buf);
 							}
 						}
@@ -1152,7 +1152,7 @@ void CHARACTER::StateFlag()
 
 	pMap->RemoveFlag(idx);
 
-	snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xEA\xB9\xDF\xC0\xBB %s \xB4\xD4\xC0\xCC \xC8\xB9\xB5\xE6\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pMap->GetGuild(idx)->GetName(), f.m_pkChrFind->GetName());
+	snprintf(buf, sizeof(buf), LC_TEXT("%s has captured the flag of %s!"), pMap->GetGuild(idx)->GetName(), f.m_pkChrFind->GetName());
 	pMap->Notice(buf);
 }
 
diff --git a/src/game/src/cmd.cpp b/src/game/src/cmd.cpp
index cc75cd2..e36cb85 100644
--- a/src/game/src/cmd.cpp
+++ b/src/game/src/cmd.cpp
@@ -162,7 +162,7 @@ ACMD(do_add_socket);
 
 ACMD(do_inputall)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xED\xB7\xC9\xBE\xEE\xB8\xA6 \xB8\xF0\xB5\xCE \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xBC\xBF\xE4."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please enter the Order in full length."));
 }
 
 ACMD(do_show_arena_list);
@@ -665,20 +665,20 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 		switch (ch->GetPosition())
 		{
 			case POS_MOUNTING:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot do this whilst sitting on a Horse."));
 				break;
 
 			case POS_DEAD:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xB2\xB7\xAF\xC1\xF8 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot do that while you are lying on the ground."));
 				break;
 
 			case POS_SLEEPING:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB2\xDE\xBC\xD3\xBF\xA1\xBC\xAD \xBE\xEE\xB6\xBB\xB0\xD4\xBF\xE4?"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("In my Dreams? What?"));
 				break;
 
 			case POS_RESTING:
 			case POS_SITTING:
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xD5\xC0\xFA \xC0\xCF\xBE\xEE \xB3\xAA\xBC\xBC\xBF\xE4."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Get up first."));
 				break;
 				/*
 				   case POS_FIGHTING:
@@ -695,13 +695,13 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 
 	if (*cmd_info[icmd].command == '\n')
 	{   
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This command does not exist."));
 		return;
 	}
 
 	if (cmd_info[icmd].gm_level && cmd_info[icmd].gm_level > ch->GetGMLevel())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This command does not exist."));
 		return;
 	}
 
diff --git a/src/game/src/cmd_emotion.cpp b/src/game/src/cmd_emotion.cpp
index e3d2d5e..1fc9f04 100644
--- a/src/game/src/cmd_emotion.cpp
+++ b/src/game/src/cmd_emotion.cpp
@@ -92,7 +92,7 @@ ACMD(do_emotion_allow)
 {
 	if ( ch->GetArena() )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
@@ -128,7 +128,7 @@ ACMD(do_emotion)
 	{
 		if (ch->IsRiding())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xB0\xA8\xC1\xA4\xC7\xA5\xC7\xF6\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot express emotions whilst riding a horse."));
 			return;
 		}
 	}
@@ -150,13 +150,13 @@ ACMD(do_emotion)
 
 	if (!CHARACTER_CanEmotion(*ch))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xAD\xC1\xA4\xC0\xC7 \xB0\xA1\xB8\xE9\xC0\xBB \xC2\xF8\xBF\xEB\xBD\xC3\xBF\xA1\xB8\xB8 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can do this when you wear an Emotion Mask."));
 		return;
 	}
 
 	if (IS_SET(emotion_types[i].flag, WOMAN_ONLY) && SEX_MALE==GET_SEX(ch))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xA9\xC0\xDA\xB8\xB8 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Only women can do this."));
 		return;
 	}
 
@@ -172,7 +172,7 @@ ACMD(do_emotion)
 	{
 		if (!victim)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xBB\xE7\xB6\xF7\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This person does not exist."));
 			return;
 		}
 	}
@@ -184,7 +184,7 @@ ACMD(do_emotion)
 
 		if (victim->IsRiding())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xB4\xEB\xBF\xCD \xB0\xA8\xC1\xA4\xC7\xA5\xC7\xF6\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use emotions with a player who is riding on a Horse."));
 			return;
 		}
 
@@ -192,13 +192,13 @@ ACMD(do_emotion)
 
 		if (distance < 10)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xCA\xB9\xAB \xB0\xA1\xB1\xEE\xC0\xCC \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are too near."));
 			return;
 		}
 
 		if (distance > 500)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xCA\xB9\xAB \xB8\xD6\xB8\xAE \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are too far away."));
 			return;
 		}
 
@@ -206,7 +206,7 @@ ACMD(do_emotion)
 		{
 			if (GET_SEX(ch)==GET_SEX(victim))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xBC\xBA\xB0\xA3\xBF\xA1\xB8\xB8 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This action can only be done with another gender."));
 				return;
 			}
 		}
@@ -223,13 +223,13 @@ ACMD(do_emotion)
 
 					if (0 == other || other != victim->GetPlayerID())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC7\xE0\xB5\xBF\xC0\xBA \xBB\xF3\xC8\xA3\xB5\xBF\xC0\xC7 \xC7\xCF\xBF\xA1 \xB0\xA1\xB4\xC9 \xC7\xD5\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need your fellow player's approval for this."));
 						return;
 					}
 				}
 				else
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xC7\xE0\xB5\xBF\xC0\xBA \xBB\xF3\xC8\xA3\xB5\xBF\xC0\xC7 \xC7\xCF\xBF\xA1 \xB0\xA1\xB4\xC9 \xC7\xD5\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need your fellow player's approval for this."));
 					return;
 				}
 			}
diff --git a/src/game/src/cmd_general.cpp b/src/game/src/cmd_general.cpp
index 92adf9e..be8f0aa 100644
--- a/src/game/src/cmd_general.cpp
+++ b/src/game/src/cmd_general.cpp
@@ -49,13 +49,13 @@ ACMD(do_user_horse_ride)
 		// 말이 아닌 다른탈것을 타고있다.
 		if (ch->GetMountVnum())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC5\xBB\xB0\xCD\xC0\xBB \xC0\xCC\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You're already riding. Get off first."));
 			return;
 		}
 
 		if (ch->GetHorse() == NULL)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please call your Horse first."));
 			return;
 		}
 
@@ -72,15 +72,15 @@ ACMD(do_user_horse_back)
 	if (ch->GetHorse() != NULL)
 	{
 		ch->HorseSummon(false);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB5\xB9\xB7\xC1\xBA\xB8\xB3\xC2\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have sent your horse away."));
 	}
 	else if (ch->IsHorseRiding() == true)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xBC\xAD \xB8\xD5\xC0\xFA \xB3\xBB\xB7\xC1\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have to get off your Horse."));
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please call your Horse first."));
 	}
 }
 
@@ -93,9 +93,9 @@ ACMD(do_user_horse_feed)
 	if (ch->GetHorse() == NULL)
 	{
 		if (ch->IsHorseRiding() == false)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please call your Horse first."));
 		else
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB8\xD4\xC0\xCC\xB8\xA6 \xC1\xD9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot feed your Horse whilst sitting on it."));
 		return;
 	}
 
@@ -105,12 +105,12 @@ ACMD(do_user_horse_feed)
 	{
 		ch->RemoveSpecifyItem(dwFood, 1);
 		ch->FeedHorse();
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xBF\xA1\xB0\xD4 %s%s \xC1\xD6\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have fed the Horse with %s%s."), 
 				ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName, "");
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9"), ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need %s."), ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName);
 	}
 }
 
@@ -209,7 +209,7 @@ EVENTFUNC(shutdown_event)
 	else
 	{
 		char buf[64];
-		snprintf(buf, sizeof(buf), LC_TEXT("\xBC\xCB\xB4\xD9\xBF\xEE\xC0\xCC %d\xC3\xCA \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."), *pSec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d seconds until Exit."), *pSec);
 		SendNotice(buf);
 
 		--*pSec;
@@ -228,7 +228,7 @@ void Shutdown(int iSec)
 	CWarMapManager::instance().OnShutdown();
 
 	char buf[64];
-	snprintf(buf, sizeof(buf), LC_TEXT("%d\xC3\xCA \xC8\xC4 \xB0\xD4\xC0\xD3\xC0\xCC \xBC\xCB\xB4\xD9\xBF\xEE \xB5\xCB\xB4\xCF\xB4\xD9."), iSec);
+	snprintf(buf, sizeof(buf), LC_TEXT("The game will be closed in %d seconds."), iSec);
 
 	SendNotice(buf);
 
@@ -317,7 +317,7 @@ EVENTFUNC(timed_event)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC3\xCA \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."), info->left_second);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d seconds until Exit."), info->left_second);
 		--info->left_second;
 	}
 
@@ -329,7 +329,7 @@ ACMD(do_cmd)
 	/* RECALL_DELAY
 	   if (ch->m_pkRecallEvent != NULL)
 	   {
-	   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+	   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your logout has been cancelled."));
 	   event_cancel(&ch->m_pkRecallEvent);
 	   return;
 	   }
@@ -337,7 +337,7 @@ ACMD(do_cmd)
 
 	if (ch->m_pkTimedEvent)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your logout has been cancelled."));
 		event_cancel(&ch->m_pkTimedEvent);
 		return;
 	}
@@ -345,15 +345,15 @@ ACMD(do_cmd)
 	switch (subcmd)
 	{
 		case SCMD_LOGOUT:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB7\xCE\xB1\xD7\xC0\xCE \xC8\xAD\xB8\xE9\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6 \xB0\xA9\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB8\xAE\xBC\xBC\xBF\xE4."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Back to login window. Please wait."));
 			break;
 
 		case SCMD_QUIT:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xD4\xC0\xD3\xC0\xBB \xC1\xBE\xB7\xE1 \xC7\xD5\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB8\xAE\xBC\xBC\xBF\xE4."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have been disconnected from the server. Please wait."));
 			break;
 
 		case SCMD_PHASE_SELECT:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xB3\xB8\xAF\xC5\xCD\xB8\xA6 \xC0\xFC\xC8\xAF \xC7\xD5\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB8\xAE\xBC\xBC\xBF\xE4."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are changing character. Please wait."));
 			break;
 	}
 
@@ -491,14 +491,14 @@ ACMD(do_restart)
 				//성지 맵일경우에는 체크 하지 않는다.
 				if (false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - (180 - g_nPortalLimitTime));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A new start is not possible at the moment. Please wait %d seconds."), iTimeToDead - (180 - g_nPortalLimitTime));
 					return;
 				}
 			}
 
 			if (iTimeToDead > 170)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - 170);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A new start is not possible at the moment. Please wait %d seconds."), iTimeToDead - 170);
 				return;
 			}
 		}
@@ -515,14 +515,14 @@ ACMD(do_restart)
 			if ((!ch->GetWarMap() || ch->GetWarMap()->GetType() == GUILD_WAR_TYPE_FLAG) ||
 			   	false == CThreeWayWar::instance().IsSungZiMapIndex(ch->GetMapIndex()))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d\xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - (180 - g_nPortalLimitTime));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A new start is not possible at the moment. Please wait %d seconds."), iTimeToDead - (180 - g_nPortalLimitTime));
 				return;
 			}
 		}
 
 		if (iTimeToDead > 173)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xB8\xB6\xC0\xBB\xBF\xA1\xBC\xAD \xC0\xE7\xBD\xC3\xC0\xDB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. (%d \xC3\xCA \xB3\xB2\xC0\xBD)"), iTimeToDead - 173);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot restart in the city yet. Wait another %d seconds."), iTimeToDead - 173);
 			return;
 		}
 	}
@@ -557,7 +557,7 @@ ACMD(do_restart)
 			{
 				if (CThreeWayWar::instance().GetReviveTokenForPlayer(ch->GetPlayerID()) <= 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xC1\xF6\xBF\xA1\xBC\xAD \xBA\xCE\xC8\xB0 \xB1\xE2\xC8\xB8\xB8\xA6 \xB8\xF0\xB5\xCE \xC0\xD2\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9! \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9!"));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The waiting time has expired. You will be revived in the city."));
 					ch->WarpSet(EMPIRE_START_X(ch->GetEmpire()), EMPIRE_START_Y(ch->GetEmpire()));
 				}
 				else
@@ -658,7 +658,7 @@ ACMD(do_stat_minus)
 
 	if (ch->IsPolymorphed())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 		return;
 	}
 
@@ -725,7 +725,7 @@ ACMD(do_stat)
 
 	if (ch->IsPolymorphed())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 		return;
 	}
 
@@ -770,7 +770,7 @@ ACMD(do_pvp)
 {
 	if (ch->GetArena() != NULL || CArenaManager::instance().IsArenaMap(ch->GetMapIndex()) == true)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
@@ -789,7 +789,7 @@ ACMD(do_pvp)
 
 	if (pkVictim->GetArena() != NULL)
 	{
-		pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB4\xEB\xB7\xC3\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."));
+		pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This player is currently fighting."));
 		return;
 	}
 
@@ -806,7 +806,7 @@ ACMD(do_guildskillup)
 
 	if (!ch->GetGuild())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] It does not belong to the guild."));
 		return;
 	}
 
@@ -820,7 +820,7 @@ ACMD(do_guildskillup)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3 \xB7\xB9\xBA\xA7\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to change the level of the guild skills."));
 	}
 }
 
@@ -893,13 +893,13 @@ ACMD(do_safebox_change_password)
 
 	if (!*arg1 || strlen(arg1)>6)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xDF\xB8\xF8\xB5\xC8 \xBE\xCF\xC8\xA3\xB8\xA6 \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have entered an incorrect password."));
 		return;
 	}
 
 	if (!*arg2 || strlen(arg2)>6)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xDF\xB8\xF8\xB5\xC8 \xBE\xCF\xC8\xA3\xB8\xA6 \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have entered an incorrect password."));
 		return;
 	}
 
@@ -934,7 +934,7 @@ ACMD(do_mall_password)
 
 	if (!*arg1 || strlen(arg1) > 6)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xDF\xB8\xF8\xB5\xC8 \xBE\xCF\xC8\xA3\xB8\xA6 \xC0\xD4\xB7\xC2\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have entered an incorrect password."));
 		return;
 	}
 
@@ -942,13 +942,13 @@ ACMD(do_mall_password)
 
 	if (ch->GetMall())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB0\xA1 \xC0\xCC\xB9\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The Storeroom is already open."));
 		return;
 	}
 
 	if (iPulse - ch->GetMallLoadTime() < passes_per_sec * 10) // 10초에 한번만 요청 가능
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB8\xA6 \xB4\xDD\xC0\xBA\xC1\xF6 10\xC3\xCA \xBE\xC8\xBF\xA1\xB4\xC2 \xBF\xAD \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have to wait 10 seconds before you can open the Storeroom again."));
 		return;
 	}
 
@@ -979,13 +979,13 @@ ACMD(do_ungroup)
 
 	if (!CPartyManager::instance().IsEnablePCParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xAD\xB9\xF6 \xB9\xAE\xC1\xA6\xB7\xCE \xC6\xC4\xC6\xBC \xB0\xFC\xB7\xC3 \xC3\xB3\xB8\xAE\xB8\xA6 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The server cannot execute this group request."));
 		return;
 	}
 
 	if (ch->GetDungeon())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC0\xFC \xBE\xC8\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA5 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot leave a group while you are in a dungeon."));
 		return;
 	}
 
@@ -998,7 +998,7 @@ ACMD(do_ungroup)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You have left the group."));
 		//pParty->SendPartyRemoveOneToAll(ch);
 		pParty->Quit(ch->GetPlayerID());
 		//pParty->SendPartyRemoveAllToOne(ch);
@@ -1037,7 +1037,7 @@ ACMD(do_war)
 	//전쟁중인지 체크한번!
 	if (g->UnderAnyWar())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xC0\xFC\xC0\xEF\xBF\xA1 \xC2\xFC\xC0\xFC \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Your guild is already participating in another war."));
 		return;
 	}
 
@@ -1063,7 +1063,7 @@ ACMD(do_war)
 	//마스터인지 체크(길전은 길드장만이 가능)
 	if (gm_pid != ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xB4\xEB\xC7\xD1 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] No one is entitled to a guild war."));
 		return;
 	}
 
@@ -1072,7 +1072,7 @@ ACMD(do_war)
 
 	if (!opp_g)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xB1 \xB1\xE6\xB5\xE5\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] No guild with this name exists."));
 		return;
 	}
 
@@ -1083,7 +1083,7 @@ ACMD(do_war)
 			{
 				if (opp_g->UnderAnyWar())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild is already participating in another war."));
 					return;
 				}
 
@@ -1091,13 +1091,13 @@ ACMD(do_war)
 
 				if (g->GetGuildMoney() < iWarPrice)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xFC\xBA\xF1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Not enough Yang to participate in a guild war."));
 					return;
 				}
 
 				if (opp_g->GetGuildMoney() < iWarPrice)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xC0\xFC\xBA\xF1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild does not have enough Yang to participate in a guild war."));
 					return;
 				}
 			}
@@ -1105,7 +1105,7 @@ ACMD(do_war)
 
 		case GUILD_WAR_SEND_DECLARE:
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xBC\xB1\xC0\xFC\xC6\xF7\xB0\xED \xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5\xC0\xD4\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild is already participating in a war."));
 				return;
 			}
 			break;
@@ -1114,7 +1114,7 @@ ACMD(do_war)
 			{
 				if (opp_g->UnderAnyWar())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild is already participating in another war."));
 					g->RequestRefuseWar(opp_g->GetID());
 					return;
 				}
@@ -1123,7 +1123,7 @@ ACMD(do_war)
 
 		case GUILD_WAR_RESERVE:
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF\xC0\xCC \xBF\xB9\xBE\xE0\xB5\xC8 \xB1\xE6\xB5\xE5 \xC0\xD4\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This Guild is already scheduled for another war."));
 				return;
 			}
 			break;
@@ -1132,7 +1132,7 @@ ACMD(do_war)
 			return;
 
 		default:
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF \xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild is taking part in a battle at the moment."));
 			g->RequestRefuseWar(opp_g->GetID());
 			return;
 	}
@@ -1142,12 +1142,12 @@ ACMD(do_war)
 		// 길드전을 할 수 있는 조건을 만족하지않는다.
 		if (g->GetLadderPoint() == 0)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB7\xB9\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 \xB8\xF0\xC0\xDA\xB6\xF3\xBC\xAD \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild level is too low."));
 			SPDLOG_DEBUG("GuildWar.StartError.NEED_LADDER_POINT");
 		}
 		else if (g->GetMemberCount() < GUILD_WAR_MIN_MEMBER_COUNT)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xCF\xB1\xE2 \xC0\xA7\xC7\xD8\xBC\xB1 \xC3\xD6\xBC\xD2\xC7\xD1 %d\xB8\xED\xC0\xCC \xC0\xD6\xBE\xEE\xBE\xDF \xC7\xD5\xB4\xCF\xB4\xD9."), GUILD_WAR_MIN_MEMBER_COUNT);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] A minimum of %d players are needed to participate in a guild war."), GUILD_WAR_MIN_MEMBER_COUNT);
 			SPDLOG_DEBUG("GuildWar.StartError.NEED_MINIMUM_MEMBER[{}]", (int) GUILD_WAR_MIN_MEMBER_COUNT);
 		}
 		else
@@ -1161,9 +1161,9 @@ ACMD(do_war)
 	if (!opp_g->CanStartWar(GUILD_WAR_TYPE_FIELD))
 	{
 		if (opp_g->GetLadderPoint() == 0)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB7\xB9\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 \xB8\xF0\xC0\xDA\xB6\xF3\xBC\xAD \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild does not have enough points to participate in a guild war."));
 		else if (opp_g->GetMemberCount() < GUILD_WAR_MIN_MEMBER_COUNT)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xE6\xB5\xE5\xBF\xF8 \xBC\xF6\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild does not have enough members to participate in a guild war."));
 		return;
 	}
 
@@ -1177,7 +1177,7 @@ ACMD(do_war)
 		if (pCCI != NULL)
 			break;
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xCC \xC1\xA2\xBC\xD3\xC1\xDF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The enemy's guild leader is offline."));
 		g->RequestRefuseWar(opp_g->GetID());
 		return;
 
@@ -1193,7 +1193,7 @@ ACMD(do_war)
 		if (pCCI != NULL)
 			break;
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xC0\xC7 \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xCC \xC1\xA2\xBC\xD3\xC1\xDF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The enemy's guild leader is offline."));
 		g->RequestRefuseWar(opp_g->GetID());
 		return;
 
@@ -1218,7 +1218,7 @@ ACMD(do_nowar)
 
 	if (gm_pid != ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xB4\xEB\xC7\xD1 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] No one is entitled to a guild war."));
 		return;
 	}
 
@@ -1226,7 +1226,7 @@ ACMD(do_nowar)
 
 	if (!opp_g)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xB1 \xB1\xE6\xB5\xE5\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] No guild with this name exists."));
 		return;
 	}
 
@@ -1267,7 +1267,7 @@ ACMD(do_messenger_auth)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
@@ -1284,7 +1284,7 @@ ACMD(do_messenger_auth)
 		LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(arg2);
 
 		if (tch)
-			tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xB8\xB7\xCE \xBA\xCE\xC5\xCD \xC4\xA3\xB1\xB8 \xB5\xEE\xB7\xCF\xC0\xBB \xB0\xC5\xBA\xCE \xB4\xE7\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), ch->GetName());
+			tch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s declined the invitation."), ch->GetName());
 	}
 
 	MessengerManager::instance().AuthToAdd(ch->GetName(), arg2, answer == 'y' ? false : true); // DENY
@@ -1384,13 +1384,13 @@ ACMD(do_party_request)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
 	if (ch->GetParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC6\xC4\xC6\xBC\xBF\xA1 \xBC\xD3\xC7\xD8 \xC0\xD6\xC0\xB8\xB9\xC7\xB7\xCE \xB0\xA1\xC0\xD4\xBD\xC5\xC3\xBB\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot accept the invitation because you are already in the group."));
 		return;
 	}
 
@@ -1448,14 +1448,14 @@ ACMD(do_monarch_warpto)
 
 	if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 		return;
 	}
 	
 	//군주 쿨타임 검사
 	if (!ch->IsMCOK(CHARACTER::MI_WARP))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_WARP));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Cooldown time for approximately %d seconds"), ch->GetMCLTime(CHARACTER::MI_WARP));
 		return;
 	}
 
@@ -1477,7 +1477,7 @@ ACMD(do_monarch_warpto)
 
 	if (!*arg1)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB\xB9\xFD: warpto "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Command: warpto "));
 		return;
 	}
 
@@ -1491,13 +1491,13 @@ ACMD(do_monarch_warpto)
 		{
 			if (pkCCI->bEmpire != ch->GetEmpire())
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("You cannot be warped to an unknown player."));
 				return;
 			}
 
 			if (pkCCI->bChannel != g_bChannel)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC0\xAF\xC0\xFA\xB4\xC2 %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE %d)"), pkCCI->bChannel, g_bChannel);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Adding player %d into the channel. (Present channel %d)"), pkCCI->bChannel, g_bChannel);
 				return;
 			}
 			if (!IsMonarchWarpZone(pkCCI->lMapIndex))
@@ -1513,7 +1513,7 @@ ACMD(do_monarch_warpto)
 			else
 			{
 				//ch->ChatPacket(CHAT_TYPE_INFO, "You warp to (%d, %d)", pos.x, pos.y);
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), arg1);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Warp to player %s."), arg1);
 				ch->WarpSet(pos.x, pos.y);
 				
 				//군주 돈 삭감	
@@ -1534,7 +1534,7 @@ ACMD(do_monarch_warpto)
 	{
 		if (tch->GetEmpire() != ch->GetEmpire())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot be warped to an unknown player."));
 			return;
 		}
 		if (!IsMonarchWarpZone(tch->GetMapIndex()))
@@ -1546,7 +1546,7 @@ ACMD(do_monarch_warpto)
 		y = tch->GetY();
 	}
 
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), arg1);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Warp to player %s."), arg1);
 	ch->WarpSet(x, y);
 	ch->Stop();
 
@@ -1567,20 +1567,20 @@ ACMD(do_monarch_transfer)
 
 	if (!*arg1)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xE7\xBF\xEB\xB9\xFD: transfer "));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Use: transfer "));
 		return;
 	}
 	
 	if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 		return;
 	}
 	
 	//군주 쿨타임 검사
 	if (!ch->IsMCOK(CHARACTER::MI_TRANSFER))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Cooldown time for approximately %d seconds"), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
 		return;
 	}
 
@@ -1606,12 +1606,12 @@ ACMD(do_monarch_transfer)
 		{
 			if (pkCCI->bEmpire != ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit players from another kingdom."));
 				return;
 			}
 			if (pkCCI->bChannel != g_bChannel)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC1\xA2\xBC\xD3 \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE: %d)"), arg1, pkCCI->bChannel, g_bChannel);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player %s is on channel %d at the moment. (Your channel: %d)"), arg1, pkCCI->bChannel, g_bChannel);
 				return;
 			}
 			if (!IsMonarchWarpZone(pkCCI->lMapIndex))
@@ -1633,7 +1633,7 @@ ACMD(do_monarch_transfer)
 			pgg.lY = ch->GetY();
 
 			P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGTransfer));
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), arg1);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have recruited %s players."), arg1);
 			
 			//군주 돈 삭감	
 			CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
@@ -1642,7 +1642,7 @@ ACMD(do_monarch_transfer)
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xD4\xB7\xC2\xC7\xCF\xBD\xC5 \xC0\xCC\xB8\xA7\xC0\xBB \xB0\xA1\xC1\xF8 \xBB\xE7\xBF\xEB\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no user with this name."));
 		}
 
 		return;
@@ -1651,13 +1651,13 @@ ACMD(do_monarch_transfer)
 
 	if (ch == tch)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit yourself."));
 		return;
 	}
 
 	if (tch->GetEmpire() != ch->GetEmpire())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit players from another kingdom."));
 		return;
 	}
 	if (!IsMonarchWarpZone(tch->GetMapIndex()))
@@ -1684,24 +1684,24 @@ ACMD(do_monarch_info)
 {
 	if (CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))	
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xC0\xC7 \xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("My information about the emperor"));
 		TMonarchInfo * p = CMonarch::instance().GetMonarch();
 		for (int n = 1; n < 4; ++n)
 		{
 			if (n == ch->GetEmpire())
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  \xBA\xB8\xC0\xAF\xB1\xDD\xBE\xD7 %lld "), EMPIRE_NAME(n), p->name[n], p->money[n]);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%sMonarch] : %s Yang owned %lld"), EMPIRE_NAME(n), p->name[n], p->money[n]);
 			else
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%sMonarch] : %s"), EMPIRE_NAME(n), p->name[n]);
 				
 		}
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Information about the emperor"));
 		TMonarchInfo * p = CMonarch::instance().GetMonarch();
 		for (int n = 1; n < 4; ++n)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[%sMonarch] : %s"), EMPIRE_NAME(n), p->name[n]);
 				
 		}
 	}
@@ -1769,7 +1769,7 @@ ACMD(do_monarch_tax)
 	// 군주 검사	
 	if (!ch->IsMonarch())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Only an emperor can use this."));
 		return;
 	}
 
@@ -1778,12 +1778,12 @@ ACMD(do_monarch_tax)
 	str_to_number(tax,  arg1);
 
 	if (tax < 1 || tax > 50)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("1-50 \xBB\xE7\xC0\xCC\xC0\xC7 \xBC\xF6\xC4\xA1\xB8\xA6 \xBC\xB1\xC5\xC3\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Choose a number between 1 and 50."));
 
 	quest::CQuestManager::instance().SetEventFlag("trade_tax", tax); 
 
 	// 군주에게 메세지 하나
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBC\xB1\xDD\xC0\xCC %d %\xB7\xCE \xBC\xB3\xC1\xA4\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Taxes are set to %d%%."));
 
 	// 공지 
 	char szMsg[1024];	
@@ -1832,7 +1832,7 @@ ACMD(do_monarch_mob)
 
 	if (!ch->IsMonarch())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB\xC7\xD2\xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Only an emperor can use this."));
 		return;
 	}
 	
@@ -1860,7 +1860,7 @@ ACMD(do_monarch_mob)
 	// 군주 쿨타임 검사
 	if (!ch->IsMCOK(CHARACTER::MI_SUMMON))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_SUMMON));	
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Cooldown time for approximately %d seconds"), ch->GetMCLTime(CHARACTER::MI_SUMMON));	
 		return;
 	}
 	
@@ -1899,7 +1899,7 @@ ACMD(do_monarch_mob)
 
 	if (0 == cs_dwMonarchMobVnums[count])
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC8\xAF\xC7\xD2\xBC\xF6 \xBE\xF8\xB4\xC2 \xB8\xF3\xBD\xBA\xC5\xCD \xC0\xD4\xB4\xCF\xB4\xD9. \xBC\xD2\xC8\xAF\xB0\xA1\xB4\xC9\xC7\xD1 \xB8\xF3\xBD\xBA\xC5\xCD\xB4\xC2 \xC8\xA8\xC6\xE4\xC0\xCC\xC1\xF6\xB8\xA6 \xC2\xFC\xC1\xB6\xC7\xCF\xBC\xBC\xBF\xE4"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Monster cannot be called. Check the Mob Number."));
 		return;
 	}
 
@@ -1927,90 +1927,90 @@ static const char* FN_point_string(int apply_number)
 {
 	switch (apply_number)
 	{
-		case POINT_MAX_HP:	return LC_TEXT("\xC3\xD6\xB4\xEB \xBB\xFD\xB8\xED\xB7\xC2 +%d");
-		case POINT_MAX_SP:	return LC_TEXT("\xC3\xD6\xB4\xEB \xC1\xA4\xBD\xC5\xB7\xC2 +%d");
-		case POINT_HT:		return LC_TEXT("\xC3\xBC\xB7\xC2 +%d");
-		case POINT_IQ:		return LC_TEXT("\xC1\xF6\xB4\xC9 +%d");
-		case POINT_ST:		return LC_TEXT("\xB1\xD9\xB7\xC2 +%d");
-		case POINT_DX:		return LC_TEXT("\xB9\xCE\xC3\xB8 +%d");
-		case POINT_ATT_SPEED:	return LC_TEXT("\xB0\xF8\xB0\xDD\xBC\xD3\xB5\xB5 +%d");
-		case POINT_MOV_SPEED:	return LC_TEXT("\xC0\xCC\xB5\xBF\xBC\xD3\xB5\xB5 %d");
-		case POINT_CASTING_SPEED:	return LC_TEXT("\xC4\xF0\xC5\xB8\xC0\xD3 -%d");
-		case POINT_HP_REGEN:	return LC_TEXT("\xBB\xFD\xB8\xED\xB7\xC2 \xC8\xB8\xBA\xB9 +%d");
-		case POINT_SP_REGEN:	return LC_TEXT("\xC1\xA4\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9 +%d");
-		case POINT_POISON_PCT:	return LC_TEXT("\xB5\xB6\xB0\xF8\xB0\xDD %d");
-		case POINT_STUN_PCT:	return LC_TEXT("\xBD\xBA\xC5\xCF +%d");
-		case POINT_SLOW_PCT:	return LC_TEXT("\xBD\xBD\xB7\xCE\xBF\xEC +%d");
-		case POINT_CRITICAL_PCT:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC4\xA1\xB8\xED\xC5\xB8 \xB0\xF8\xB0\xDD");
+		case POINT_MAX_HP:	return LC_TEXT("Hit Points +%d");
+		case POINT_MAX_SP:	return LC_TEXT("Spell Points +%d");
+		case POINT_HT:		return LC_TEXT("Endurance +%d");
+		case POINT_IQ:		return LC_TEXT("Intelligence +%d");
+		case POINT_ST:		return LC_TEXT("Strength +%d");
+		case POINT_DX:		return LC_TEXT("Dexterity +%d");
+		case POINT_ATT_SPEED:	return LC_TEXT("Attack Speed +%d");
+		case POINT_MOV_SPEED:	return LC_TEXT("Movement Speed %d");
+		case POINT_CASTING_SPEED:	return LC_TEXT("Cooldown Time -%d");
+		case POINT_HP_REGEN:	return LC_TEXT("Energy Recovery +%d");
+		case POINT_SP_REGEN:	return LC_TEXT("Spell Point Recovery +%d");
+		case POINT_POISON_PCT:	return LC_TEXT("Poison Attack %d");
+		case POINT_STUN_PCT:	return LC_TEXT("Star +%d");
+		case POINT_SLOW_PCT:	return LC_TEXT("Speed Reduction +%d");
+		case POINT_CRITICAL_PCT:	return LC_TEXT("Critical Attack with a chance of %d%%");
 		case POINT_RESIST_CRITICAL:	return LC_TEXT("\xBB\xF3\xB4\xEB\xC0\xC7 \xC4\xA1\xB8\xED\xC5\xB8 \xC8\xAE\xB7\xFC %d%% \xB0\xA8\xBC\xD2");
-		case POINT_PENETRATE_PCT:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xB0\xFC\xC5\xEB \xB0\xF8\xB0\xDD");
+		case POINT_PENETRATE_PCT:	return LC_TEXT("Chance of a Speared Attack of %d%%");
 		case POINT_RESIST_PENETRATE: return LC_TEXT("\xBB\xF3\xB4\xEB\xC0\xC7 \xB0\xFC\xC5\xEB \xB0\xF8\xB0\xDD \xC8\xAE\xB7\xFC %d%% \xB0\xA8\xBC\xD2");
-		case POINT_ATTBONUS_HUMAN:	return LC_TEXT("\xC0\xCE\xB0\xA3\xB7\xF9 \xB8\xF3\xBD\xBA\xC5\xCD \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
-		case POINT_ATTBONUS_ANIMAL:	return LC_TEXT("\xB5\xBF\xB9\xB0\xB7\xF9 \xB8\xF3\xBD\xBA\xC5\xCD \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
-		case POINT_ATTBONUS_ORC:	return LC_TEXT("\xBF\xF5\xB1\xCD\xC1\xB7 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
-		case POINT_ATTBONUS_MILGYO:	return LC_TEXT("\xB9\xD0\xB1\xB3\xB7\xF9 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
-		case POINT_ATTBONUS_UNDEAD:	return LC_TEXT("\xBD\xC3\xC3\xBC\xB7\xF9 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
-		case POINT_ATTBONUS_DEVIL:	return LC_TEXT("\xBE\xC7\xB8\xB6\xB7\xF9 \xC5\xB8\xB0\xDD\xC4\xA1 +%d%%");
-		case POINT_STEAL_HP:		return LC_TEXT("\xC5\xB8\xB0\xDD\xC4\xA1 %d%% \xB8\xA6 \xBB\xFD\xB8\xED\xB7\xC2\xC0\xB8\xB7\xCE \xC8\xED\xBC\xF6");
-		case POINT_STEAL_SP:		return LC_TEXT("\xC5\xB8\xB7\xC2\xC4\xA1 %d%% \xB8\xA6 \xC1\xA4\xBD\xC5\xB7\xC2\xC0\xB8\xB7\xCE \xC8\xED\xBC\xF6");
-		case POINT_MANA_BURN_PCT:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC5\xB8\xB0\xDD\xBD\xC3 \xBB\xF3\xB4\xEB \xC0\xFC\xBD\xC5\xB7\xC2 \xBC\xD2\xB8\xF0");
-		case POINT_DAMAGE_SP_RECOVER:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC7\xC7\xC7\xD8\xBD\xC3 \xC1\xA4\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9");
-		case POINT_BLOCK:			return LC_TEXT("\xB9\xB0\xB8\xAE\xC5\xB8\xB0\xDD\xBD\xC3 \xBA\xED\xB7\xB0 \xC8\xAE\xB7\xFC %d%%");
-		case POINT_DODGE:			return LC_TEXT("\xC8\xB0 \xB0\xF8\xB0\xDD \xC8\xB8\xC7\xC7 \xC8\xAE\xB7\xFC %d%%");
-		case POINT_RESIST_SWORD:	return LC_TEXT("\xC7\xD1\xBC\xD5\xB0\xCB \xB9\xE6\xBE\xEE %d%%");
-		case POINT_RESIST_TWOHAND:	return LC_TEXT("\xBE\xE7\xBC\xD5\xB0\xCB \xB9\xE6\xBE\xEE %d%%");
-		case POINT_RESIST_DAGGER:	return LC_TEXT("\xB5\xCE\xBC\xD5\xB0\xCB \xB9\xE6\xBE\xEE %d%%");
-		case POINT_RESIST_BELL:		return LC_TEXT("\xB9\xE6\xBF\xEF \xB9\xE6\xBE\xEE %d%%");
-		case POINT_RESIST_FAN:		return LC_TEXT("\xBA\xCE\xC3\xA4 \xB9\xE6\xBE\xEE %d%%");
-		case POINT_RESIST_BOW:		return LC_TEXT("\xC8\xB0\xB0\xF8\xB0\xDD \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_RESIST_FIRE:		return LC_TEXT("\xC8\xAD\xBF\xB0 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_RESIST_ELEC:		return LC_TEXT("\xC0\xFC\xB1\xE2 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_RESIST_MAGIC:	return LC_TEXT("\xB8\xB6\xB9\xFD \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_RESIST_WIND:		return LC_TEXT("\xB9\xD9\xB6\xF7 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_ATTBONUS_HUMAN:	return LC_TEXT("Player's Attack Power against Monsters +%d%%");
+		case POINT_ATTBONUS_ANIMAL:	return LC_TEXT("Horse's Attack Power against Monsters +%d%%");
+		case POINT_ATTBONUS_ORC:	return LC_TEXT("Attack Boost against Wonggui + %d%%");
+		case POINT_ATTBONUS_MILGYO:	return LC_TEXT("Attack Boost against Milgyo + %d%%");
+		case POINT_ATTBONUS_UNDEAD:	return LC_TEXT("Attack boost against zombies + %d%%");
+		case POINT_ATTBONUS_DEVIL:	return LC_TEXT("Attack boost against devils + %d%%");
+		case POINT_STEAL_HP:		return LC_TEXT("Absorbing of Energy %d%% while attacking.");
+		case POINT_STEAL_SP:		return LC_TEXT("Absorption of Spell Points (SP) %d%% while attacking.");
+		case POINT_MANA_BURN_PCT:	return LC_TEXT("With a chance of %d%% Spell Points (SP) will be taken from the enemy.");
+		case POINT_DAMAGE_SP_RECOVER:	return LC_TEXT("Absorbing of Spell Points (SP) with a chance of %d%%");
+		case POINT_BLOCK:			return LC_TEXT("%d%% Chance of blocking a close-combat attack");
+		case POINT_DODGE:			return LC_TEXT("%d%% Chance of blocking a long range attack");
+		case POINT_RESIST_SWORD:	return LC_TEXT("One-Handed Sword defence %d%%");
+		case POINT_RESIST_TWOHAND:	return LC_TEXT("Two-Handed Sword Defence %d%%");
+		case POINT_RESIST_DAGGER:	return LC_TEXT("Two-Handed Sword Defence %d%%");
+		case POINT_RESIST_BELL:		return LC_TEXT("Bell Defence %d%%");
+		case POINT_RESIST_FAN:		return LC_TEXT("Fan Defence %d%%");
+		case POINT_RESIST_BOW:		return LC_TEXT("Distant Attack Resistance %d%%");
+		case POINT_RESIST_FIRE:		return LC_TEXT("Fire Resistance %d%%");
+		case POINT_RESIST_ELEC:		return LC_TEXT("Lightning Resistance %d%%");
+		case POINT_RESIST_MAGIC:	return LC_TEXT("Magic Resistance %d%%");
+		case POINT_RESIST_WIND:		return LC_TEXT("Wind Resistance %d%%");
 		case POINT_RESIST_ICE:		return LC_TEXT("\xB3\xC3\xB1\xE2 \xC0\xFA\xC7\xD7 %d%%");
 		case POINT_RESIST_EARTH:	return LC_TEXT("\xB4\xEB\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
 		case POINT_RESIST_DARK:		return LC_TEXT("\xBE\xEE\xB5\xD2 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_REFLECT_MELEE:	return LC_TEXT("\xC1\xF7\xC1\xA2 \xC5\xB8\xB0\xDD\xC4\xA1 \xB9\xDD\xBB\xE7 \xC8\xAE\xB7\xFC : %d%%");
-		case POINT_REFLECT_CURSE:	return LC_TEXT("\xC0\xFA\xC1\xD6 \xB5\xC7\xB5\xB9\xB8\xAE\xB1\xE2 \xC8\xAE\xB7\xFC %d%%");
-		case POINT_POISON_REDUCE:	return LC_TEXT("\xB5\xB6 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_KILL_SP_RECOVER:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xC1\xA4\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9");
-		case POINT_EXP_DOUBLE_BONUS:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xB0\xE6\xC7\xE8\xC4\xA1 \xC3\xDF\xB0\xA1 \xBB\xF3\xBD\xC2");
-		case POINT_GOLD_DOUBLE_BONUS:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xB5\xB7 2\xB9\xE8 \xB5\xE5\xB7\xD3");
-		case POINT_ITEM_DROP_BONUS:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xBE\xC6\xC0\xCC\xC5\xDB 2\xB9\xE8 \xB5\xE5\xB7\xD3");
-		case POINT_POTION_BONUS:	return LC_TEXT("\xB9\xB0\xBE\xE0 \xBB\xE7\xBF\xEB\xBD\xC3 %d%% \xBC\xBA\xB4\xC9 \xC1\xF5\xB0\xA1");
-		case POINT_KILL_HP_RECOVERY:	return LC_TEXT("%d%% \xC8\xAE\xB7\xFC\xB7\xCE \xC0\xFB\xC5\xF0\xC4\xA1\xBD\xC3 \xBB\xFD\xB8\xED\xB7\xC2 \xC8\xB8\xBA\xB9");
-//		case POINT_IMMUNE_STUN:	return LC_TEXT("\xB1\xE2\xC0\xFD\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBD %d%%");
-//		case POINT_IMMUNE_SLOW:	return LC_TEXT("\xB4\xC0\xB7\xC1\xC1\xF6\xC1\xF6 \xBE\xCA\xC0\xBD %d%%");
-//		case POINT_IMMUNE_FALL:	return LC_TEXT("\xB3\xD1\xBE\xEE\xC1\xF6\xC1\xF6 \xBE\xCA\xC0\xBD %d%%");
+		case POINT_REFLECT_MELEE:	return LC_TEXT("Reflect Direct Hit: %d%%");
+		case POINT_REFLECT_CURSE:	return LC_TEXT("Reflect Curse: %d%%");
+		case POINT_POISON_REDUCE:	return LC_TEXT("Poison Resistance %d%%");
+		case POINT_KILL_SP_RECOVER:	return LC_TEXT("Spell Points (SP) will be increased by %d%% if you win.");
+		case POINT_EXP_DOUBLE_BONUS:	return LC_TEXT("Experience increases by %d%% if you win against an opponent.");
+		case POINT_GOLD_DOUBLE_BONUS:	return LC_TEXT("Increase of Yang up to %d%% if you win.");
+		case POINT_ITEM_DROP_BONUS:	return LC_TEXT("Increase of captured Items up to %d%% if you win.");
+		case POINT_POTION_BONUS:	return LC_TEXT("Power increase of up to %d%% after taking the potion.");
+		case POINT_KILL_HP_RECOVERY:	return LC_TEXT("%d%% Chance of filling up Hit Points after a victory.");
+//		case POINT_IMMUNE_STUN:	return LC_TEXT("No Dizziness %d%%");
+//		case POINT_IMMUNE_SLOW:	return LC_TEXT("No Slowing Down %d%%");
+//		case POINT_IMMUNE_FALL:	return LC_TEXT("No falling down %d%%");
 //		case POINT_SKILL:	return LC_TEXT("");
 //		case POINT_BOW_DISTANCE:	return LC_TEXT("");
-		case POINT_ATT_GRADE_BONUS:	return LC_TEXT("\xB0\xF8\xB0\xDD\xB7\xC2 +%d");
-		case POINT_DEF_GRADE_BONUS:	return LC_TEXT("\xB9\xE6\xBE\xEE\xB7\xC2 +%d");
-		case POINT_MAGIC_ATT_GRADE:	return LC_TEXT("\xB8\xB6\xB9\xFD \xB0\xF8\xB0\xDD\xB7\xC2 +%d");
-		case POINT_MAGIC_DEF_GRADE:	return LC_TEXT("\xB8\xB6\xB9\xFD \xB9\xE6\xBE\xEE\xB7\xC2 +%d");
+		case POINT_ATT_GRADE_BONUS:	return LC_TEXT("Attack Power + %d");
+		case POINT_DEF_GRADE_BONUS:	return LC_TEXT("Armour + %d");
+		case POINT_MAGIC_ATT_GRADE:	return LC_TEXT("Magical Attack + %d");
+		case POINT_MAGIC_DEF_GRADE:	return LC_TEXT("Magical Defence + %d");
 //		case POINT_CURSE_PCT:	return LC_TEXT("");
-		case POINT_MAX_STAMINA:	return LC_TEXT("\xC3\xD6\xB4\xEB \xC1\xF6\xB1\xB8\xB7\xC2 +%d");
-		case POINT_ATTBONUS_WARRIOR:	return LC_TEXT("\xB9\xAB\xBB\xE7\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
-		case POINT_ATTBONUS_ASSASSIN:	return LC_TEXT("\xC0\xDA\xB0\xB4\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
-		case POINT_ATTBONUS_SURA:		return LC_TEXT("\xBC\xF6\xB6\xF3\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
-		case POINT_ATTBONUS_SHAMAN:		return LC_TEXT("\xB9\xAB\xB4\xE7\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
-		case POINT_ATTBONUS_MONSTER:	return LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xBF\xA1\xB0\xD4 \xB0\xAD\xC7\xD4 +%d%%");
-		case POINT_MALL_ATTBONUS:		return LC_TEXT("\xB0\xF8\xB0\xDD\xB7\xC2 +%d%%");
-		case POINT_MALL_DEFBONUS:		return LC_TEXT("\xB9\xE6\xBE\xEE\xB7\xC2 +%d%%");
-		case POINT_MALL_EXPBONUS:		return LC_TEXT("\xB0\xE6\xC7\xE8\xC4\xA1 %d%%");
-		case POINT_MALL_ITEMBONUS:		return LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xB5\xE5\xB7\xD3\xC0\xB2 %.1f\xB9\xE8");
-		case POINT_MALL_GOLDBONUS:		return LC_TEXT("\xB5\xB7 \xB5\xE5\xB7\xD3\xC0\xB2 %.1f\xB9\xE8");
-		case POINT_MAX_HP_PCT:			return LC_TEXT("\xC3\xD6\xB4\xEB \xBB\xFD\xB8\xED\xB7\xC2 +%d%%");
-		case POINT_MAX_SP_PCT:			return LC_TEXT("\xC3\xD6\xB4\xEB \xC1\xA4\xBD\xC5\xB7\xC2 +%d%%");
-		case POINT_SKILL_DAMAGE_BONUS:	return LC_TEXT("\xBD\xBA\xC5\xB3 \xB5\xA5\xB9\xCC\xC1\xF6 %d%%");
-		case POINT_NORMAL_HIT_DAMAGE_BONUS:	return LC_TEXT("\xC6\xF2\xC5\xB8 \xB5\xA5\xB9\xCC\xC1\xF6 %d%%");
-		case POINT_SKILL_DEFEND_BONUS:		return LC_TEXT("\xBD\xBA\xC5\xB3 \xB5\xA5\xB9\xCC\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_NORMAL_HIT_DEFEND_BONUS:	return LC_TEXT("\xC6\xF2\xC5\xB8 \xB5\xA5\xB9\xCC\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_MAX_STAMINA:	return LC_TEXT("Maximum Endurance + %d");
+		case POINT_ATTBONUS_WARRIOR:	return LC_TEXT("Strong against Warriors + %d%%");
+		case POINT_ATTBONUS_ASSASSIN:	return LC_TEXT("Strong against Ninjas + %d%%");
+		case POINT_ATTBONUS_SURA:		return LC_TEXT("Strong against Sura + %d%%");
+		case POINT_ATTBONUS_SHAMAN:		return LC_TEXT("Strong against Shamans + %d%%");
+		case POINT_ATTBONUS_MONSTER:	return LC_TEXT("Strength against monsters + %d%%");
+		case POINT_MALL_ATTBONUS:		return LC_TEXT("Attack + %d%%");
+		case POINT_MALL_DEFBONUS:		return LC_TEXT("Defence + %d%%");
+		case POINT_MALL_EXPBONUS:		return LC_TEXT("Experience %d%%");
+		case POINT_MALL_ITEMBONUS:		return LC_TEXT("Chance to find an Item %. 1f");
+		case POINT_MALL_GOLDBONUS:		return LC_TEXT("Chance to find Yang %. 1f");
+		case POINT_MAX_HP_PCT:			return LC_TEXT("Maximum Energy +%d%%");
+		case POINT_MAX_SP_PCT:			return LC_TEXT("Maximum Energy +%d%%");
+		case POINT_SKILL_DAMAGE_BONUS:	return LC_TEXT("Skill Damage %d%%");
+		case POINT_NORMAL_HIT_DAMAGE_BONUS:	return LC_TEXT("Hit Damage %d%%");
+		case POINT_SKILL_DEFEND_BONUS:		return LC_TEXT("Resistance against Skill Damage %d%%");
+		case POINT_NORMAL_HIT_DEFEND_BONUS:	return LC_TEXT("Resistance against Hits %d%%");
 //		case POINT_EXTRACT_HP_PCT:	return LC_TEXT("");
-		case POINT_RESIST_WARRIOR:	return LC_TEXT("\xB9\xAB\xBB\xE7\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
-		case POINT_RESIST_ASSASSIN:	return LC_TEXT("\xC0\xDA\xB0\xB4\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
-		case POINT_RESIST_SURA:		return LC_TEXT("\xBC\xF6\xB6\xF3\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
-		case POINT_RESIST_SHAMAN:	return LC_TEXT("\xB9\xAB\xB4\xE7\xB0\xF8\xB0\xDD\xBF\xA1 %d%% \xC0\xFA\xC7\xD7");
+		case POINT_RESIST_WARRIOR:	return LC_TEXT("%d%% Resistance against Warrior Attacks");
+		case POINT_RESIST_ASSASSIN:	return LC_TEXT("%d%% Resistance against Ninja Attacks");
+		case POINT_RESIST_SURA:		return LC_TEXT("%d%% Resistance against Sura Attacks");
+		case POINT_RESIST_SHAMAN:	return LC_TEXT("%d%% Resistance against Shaman Attacks");
 		default:					return NULL;
 	}
 }
@@ -2048,7 +2048,7 @@ static bool FN_hair_affect_string(LPCHARACTER ch, char *buf, size_t bufsiz)
 	mon		= ltm.tm_mon + 1;
 	day		= ltm.tm_mday;
 
-	snprintf(buf + offset, bufsiz - offset, LC_TEXT(" (\xB8\xB8\xB7\xE1\xC0\xCF : %d\xB3\xE2 %d\xBF\xF9 %d\xC0\xCF)"), year, mon, day);
+	snprintf(buf + offset, bufsiz - offset, LC_TEXT("(Procedure: %d y- %d m - %d d)"), year, mon, day);
 
 	return true;
 }
@@ -2461,7 +2461,7 @@ ACMD(do_ride)
 
 
     // 타거나 내릴 수 없을때
-    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xB8\xD5\xC0\xFA \xBC\xD2\xC8\xAF\xC7\xD8\xC1\xD6\xBC\xBC\xBF\xE4."));
+    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please call your Horse first."));
 }
 
 #ifdef __AUCTION__
diff --git a/src/game/src/cmd_gm.cpp b/src/game/src/cmd_gm.cpp
index e93a634..15783c5 100644
--- a/src/game/src/cmd_gm.cpp
+++ b/src/game/src/cmd_gm.cpp
@@ -500,7 +500,7 @@ ACMD(do_item)
 				M2_DESTROY_ITEM(item);
 				if (!ch->DragonSoul_IsQualified())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xCE\xBA\xA5\xC0\xCC \xC8\xB0\xBC\xBA\xC8\xAD \xB5\xC7\xC1\xF6 \xBE\xCA\xC0\xBD.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy.");
 				}
 				else
 					ch->ChatPacket(CHAT_TYPE_INFO, "Not enough inventory space.");
@@ -1215,7 +1215,7 @@ ACMD(do_monarch_notice)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 	}
 }
 
@@ -1555,12 +1555,12 @@ ACMD(do_makeguild)
 
 	if (!check_name(cp.name))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xB1\xE6\xB5\xE5 \xC0\xCC\xB8\xA7 \xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This guild name is invalid."));
 		return;
 	}
 
 	gm.CreateGuild(cp);
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("(%s) \xB1\xE6\xB5\xE5\xB0\xA1 \xBB\xFD\xBC\xBA\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. [\xC0\xD3\xBD\xC3]"), cp.name);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("(%s) guild has been created. [Temporary]"), cp.name);
 }
 
 ACMD(do_deleteguild)
@@ -2110,7 +2110,7 @@ ACMD(do_level)
 
 ACMD(do_gwlist)
 {
-	ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC7\xF6\xC0\xE7 \xC0\xFC\xC0\xEF\xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5 \xC0\xD4\xB4\xCF\xB4\xD9"));
+	ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("This guild is at war."));
 	CGuildManager::instance().ShowGuildWarList(ch);
 }
 
@@ -2168,7 +2168,7 @@ ACMD(do_guild_state)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s: \xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xB1\xE6\xB5\xE5 \xC0\xD4\xB4\xCF\xB4\xD9."), arg1);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s: This guild does not exist."), arg1);
 	}
 }
 
@@ -2579,7 +2579,7 @@ ACMD(do_block_chat_list)
 	// GM이 아니거나 block_chat_privilege가 없는 사람은 명령어 사용 불가
 	if (!ch || (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chat_privilege.block") <= 0))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This command does not exist."));
 		return;
 	}
 
@@ -2645,7 +2645,7 @@ ACMD(do_block_chat)
 	// GM이 아니거나 block_chat_privilege가 없는 사람은 명령어 사용 불가
 	if (ch && (ch->GetGMLevel() < GM_HIGH_WIZARD && ch->GetQuestFlag("chat_privilege.block") <= 0))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xD7\xB7\xB1 \xB8\xED\xB7\xC9\xBE\xEE\xB4\xC2 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This command does not exist."));
 		return;
 	}
 
@@ -2776,7 +2776,7 @@ ACMD(do_build)
 				const TObjectProto * t = CManager::instance().GetObjectProto(dwVnum);
 				if (!t)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xB0\xC7\xB9\xB0\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The building does not exist."));
 					return;
 				}
 
@@ -2786,7 +2786,7 @@ ACMD(do_build)
 				{
 					if (pkLand->FindObjectByGroup(t->dwGroupVnum))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB0\xC0\xCC \xC1\xF6\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xBE\xB7\xF9\xC0\xC7 \xB0\xC7\xB9\xB0\xC0\xCC \xC1\xF6\xBE\xEE\xC1\xAE \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This type of building can only be erected once."));
 						return;
 					}
 				}
@@ -2800,7 +2800,7 @@ ACMD(do_build)
 						// 지어져있는가?
 						if (!pkLand->FindObjectByGroup(t->dwDependOnGroupVnum))
 						{
-							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xBC\xB3\xBF\xA1 \xC7\xCA\xBF\xE4\xC7\xD1 \xB0\xC7\xB9\xB0\xC0\xCC \xC1\xF6\xBE\xEE\xC1\xAE \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Main Building has to be erected first."));
 							return;
 						}
 					}
@@ -2812,13 +2812,13 @@ ACMD(do_build)
 					// 건설 비용 체크
 					if (t->dwPrice > BUILDING_MAX_PRICE)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xB9\xB0 \xBA\xF1\xBF\xEB \xC1\xA4\xBA\xB8 \xC0\xCC\xBB\xF3\xC0\xB8\xB7\xCE \xB0\xC7\xBC\xB3 \xC0\xDB\xBE\xF7\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Building failed because of incorrect pricing."));
 						return;
 					}
 
 					if (ch->GetGold() < (int)t->dwPrice)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xBC\xB3 \xBA\xF1\xBF\xEB\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your guild does not have enough Yang to erect this building."));
 						return;
 					}
 
@@ -2835,7 +2835,7 @@ ACMD(do_build)
 
 						if ((int) dwItemCount > ch->CountSpecifyItem(dwItemVnum))
 						{
-							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xC0\xE7\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB0\xC7\xBC\xB3\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough resources to build a building."));
 							return;
 						}
 					}
@@ -2869,7 +2869,7 @@ ACMD(do_build)
 				if (!isSuccess)
 				{
 					if (test_server)
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC7\xB9\xB0\xC0\xBB \xC1\xF6\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot erect a building at this place."));
 					return;
 				}
 
@@ -3051,7 +3051,7 @@ ACMD(do_horse_level)
 
 	if (NULL == victim)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xC4\xB3\xB8\xAF\xC5\xCD \xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This character does not exist."));
 		return;
 	}
 
@@ -3235,17 +3235,17 @@ ACMD(do_end_duel)
 	LPCHARACTER pChar = CHARACTER_MANAGER::instance().FindPC(szName);
 	if (pChar == NULL)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xB8\xC0\xE7\xC7\xCF\xC1\xF6 \xBE\xCA\xB4\xC2 \xC4\xB3\xB8\xAF\xC5\xCD \xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This character does not exist."));
 		return;
 	}
 
 	if (CArenaManager::instance().EndDuel(pChar->GetPlayerID()) == false)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xB0\xAD\xC1\xA6 \xC1\xBE\xB7\xE1 \xBD\xC7\xC6\xD0"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Duel has not been successfully cancelled."));
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xB0\xAD\xC1\xA6 \xC1\xBE\xB7\xE1 \xBC\xBA\xB0\xF8"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Duel cancelled successfully."));
 	}
 }
 
@@ -3301,7 +3301,7 @@ ACMD(do_duel)
 			}
 			else
 			{
-				pChar1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+				pChar1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You have left the group."));
 				pParty->Quit(pChar1->GetPlayerID());
 			}
 		}
@@ -3315,23 +3315,23 @@ ACMD(do_duel)
 			}
 			else
 			{
-				pChar2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+				pChar2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You have left the group."));
 				pParty->Quit(pChar2->GetPlayerID());
 			}
 		}
 		
 		if (CArenaManager::instance().StartDuel(pChar1, pChar2, set, minute) == true)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xCC \xBC\xBA\xB0\xF8\xC0\xFB\xC0\xB8\xB7\xCE \xBD\xC3\xC0\xDB \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The duel has been successfully started."));
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3 \xBD\xC3\xC0\xDB\xBF\xA1 \xB9\xAE\xC1\xA6\xB0\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a problem with initiating the duel."));
 		}
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There are no combatants."));
 	}
 }
 
@@ -3346,7 +3346,7 @@ ACMD(do_stat_plus_amount)
 
 	if (ch->IsPolymorphed())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 		return;
 	}
 
@@ -3354,7 +3354,7 @@ ACMD(do_stat_plus_amount)
 
 	if (nRemainPoint <= 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBD\xBA\xC5\xC8 \xC6\xF7\xC0\xCE\xC6\xAE\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("No status points left."));
 		return;
 	}
 
@@ -3363,13 +3363,13 @@ ACMD(do_stat_plus_amount)
 
 	if (nRemainPoint < nPoint)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBD\xBA\xC5\xC8 \xC6\xF7\xC0\xCE\xC6\xAE\xB0\xA1 \xC0\xFB\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Remaining status points are too low."));
 		return;
 	}
 
 	if (nPoint < 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xAA\xC0\xBB \xC0\xDF\xB8\xF8 \xC0\xD4\xB7\xC2\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You entered an incorrect value."));
 		return;
 	}
 	
@@ -3404,7 +3404,7 @@ ACMD(do_stat_plus_amount)
 			break;
 
 		default :
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xED\xB7\xC9\xBE\xEE\xC0\xC7 \xBC\xAD\xBA\xEA \xC4\xBF\xB8\xC7\xB5\xE5\xB0\xA1 \xC0\xDF\xB8\xF8 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Suborder or the Order is incorrect."));
 			return;
 			break;
 	}
@@ -3437,7 +3437,7 @@ ACMD(do_break_marriage)
 	str_to_number(pids.pid1, arg1);
 	str_to_number(pids.pid2, arg2);
 	
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xC3\xB7\xB9\xC0\xCC\xBE\xEE %d \xBF\xCD \xC7\xC3\xB7\xB9\xC0\xCC\xBE\xEE  %d\xB8\xA6 \xC6\xC4\xC8\xA5\xBD\xC3\xC5\xB5\xB4\xCF\xB4\xD9.."), pids.pid1, pids.pid2);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Broken contract between player %d and player %d."), pids.pid1, pids.pid2);
 	db_clientdesc->DBPacket(HEADER_GD_BREAK_MARRIAGE, 0, &pids, sizeof(pids));
 }
 
@@ -3471,8 +3471,8 @@ struct FCountInMap
 
 ACMD(do_threeway_war_info)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA2\xC1\xA6\xB1\xB9 \xC1\xF8\xC7\xE0 \xC1\xA4\xBA\xB8"));
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xC5\xC3 \xB8\xCA \xC1\xA4\xBA\xB8 \xBC\xBA\xC1\xF6 %d \xC5\xEB\xB7\xCE %d %d %d"), GetSungziMapIndex(), GetPassMapIndex(1), GetPassMapIndex(2), GetPassMapIndex(3)); 
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Information for the Kingdoms"));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Choose the Map Information of the Holy Land %d Entrance %d %d %d"), GetSungziMapIndex(), GetPassMapIndex(1), GetPassMapIndex(2), GetPassMapIndex(3)); 
 	ch->ChatPacket(CHAT_TYPE_INFO, "ThreewayPhase %d", CThreeWayWar::instance().GetRegenFlag());
 
 	for (int n = 1; n < 4; ++n)
@@ -3495,7 +3495,7 @@ ACMD(do_threeway_war_info)
 
 ACMD(do_threeway_war_myinfo)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xC0\xC7 \xBB\xEF\xB0\xC5\xB8\xAE \xC1\xF8\xC7\xE0\xC1\xA4\xBA\xB8"));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Information about the status of the kingdom battle"));
 	ch->ChatPacket(CHAT_TYPE_INFO, "Deadcount %d",
 			CThreeWayWar::instance().GetReviveTokenForPlayer(ch->GetPlayerID()));
 }
@@ -3856,13 +3856,13 @@ ACMD(do_set_stat)
 	{
 		if (tch->IsPolymorphed())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9 \xC1\xDF\xBF\xA1\xB4\xC2 \xB4\xC9\xB7\xC2\xC0\xBB \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your status while you are transformed."));
 			return;
 		}
 
 		if (subcmd != POINT_HT && subcmd != POINT_IQ && subcmd != POINT_ST && subcmd != POINT_DX)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xED\xB7\xC9\xBE\xEE\xC0\xC7 \xBC\xAD\xBA\xEA \xC4\xBF\xB8\xC7\xB5\xE5\xB0\xA1 \xC0\xDF\xB8\xF8 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Suborder or the Order is incorrect."));
 			return;
 		}
 		int nRemainPoint = tch->GetPoint(POINT_STAT);
@@ -3916,7 +3916,7 @@ ACMD(do_set_stat)
 
 		if (nRemainPoint < nChangeAmount)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xB2\xC0\xBA \xBD\xBA\xC5\xC8 \xC6\xF7\xC0\xCE\xC6\xAE\xB0\xA1 \xC0\xFB\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Remaining status points are too low."));
 			return;
 		}
 
diff --git a/src/game/src/cmd_oxevent.cpp b/src/game/src/cmd_oxevent.cpp
index be58381..992f930 100644
--- a/src/game/src/cmd_oxevent.cpp
+++ b/src/game/src/cmd_oxevent.cpp
@@ -19,16 +19,16 @@ ACMD(do_oxevent_log)
 {
 	if ( COXEventManager::instance().LogWinner() == false )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX\xC0\xCC\xBA\xA5\xC6\xAE\xC0\xC7 \xB3\xAA\xB8\xD3\xC1\xF6 \xC0\xCE\xBF\xF8\xC0\xBB \xB1\xE2\xB7\xCF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX The other event participants are being noted down."));
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX\xC0\xCC\xBA\xA5\xC6\xAE\xC0\xC7 \xB3\xAA\xB8\xD3\xC1\xF6 \xC0\xCE\xBF\xF8 \xB1\xE2\xB7\xCF\xC0\xBB \xBD\xC7\xC6\xD0\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("OX The other event participants have not been noted down."));
 	}
 }
 
 ACMD(do_oxevent_get_attender)
 {
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 \xB3\xB2\xC0\xBA \xC2\xFC\xB0\xA1\xC0\xDA\xBC\xF6 : %d"), COXEventManager::instance().GetAttenderCount());
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Number of other participants : %d"), COXEventManager::instance().GetAttenderCount());
 }
 
diff --git a/src/game/src/config.cpp b/src/game/src/config.cpp
index f10c68c..4da621c 100644
--- a/src/game/src/config.cpp
+++ b/src/game/src/config.cpp
@@ -1205,7 +1205,7 @@ void CheckClientVersion()
 		//if (0 != g_stClientVersion.compare(d->GetClientVersion()) )
 		if (version > date)
 		{
-			d->GetCharacter()->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC5\xAC\xB6\xF3\xC0\xCC\xBE\xF0\xC6\xAE \xB9\xF6\xC0\xFC\xC0\xCC \xC6\xB2\xB7\xC1 \xB7\xCE\xB1\xD7\xBE\xC6\xBF\xF4 \xB5\xCB\xB4\xCF\xB4\xD9. \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC6\xD0\xC4\xA1 \xC8\xC4 \xC1\xA2\xBC\xD3\xC7\xCF\xBC\xBC\xBF\xE4."));
+			d->GetCharacter()->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch."));
 			d->DelayedDisconnect(10);
 		}
 	}
diff --git a/src/game/src/constants.cpp b/src/game/src/constants.cpp
index 060e783..d2c4e96 100644
--- a/src/game/src/constants.cpp
+++ b/src/game/src/constants.cpp
@@ -1077,19 +1077,19 @@ const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
 
 const char * c_apszEmpireNames[EMPIRE_MAX_NUM] =
 {
-	"\xC0\xFC\xC1\xA6\xB1\xB9",
-	"\xBD\xC5\xBC\xF6\xB1\xB9",
-	"\xC3\xB5\xC1\xB6\xB1\xB9",
-	"\xC1\xF8\xB3\xEB\xB1\xB9"
+	"All kingdoms",
+	"Shinsoo Kingdom",
+	"Chunjo Kingdom",
+	"Jinno Kingdom"
 };
 
 const char * c_apszPrivNames[MAX_PRIV_NUM] =
 {
 	"",
-	"\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xB3\xAA\xBF\xC3 \xC8\xAE\xB7\xFC",
-	"\xB5\xB7\xC0\xCC \xB3\xAA\xBF\xC3 \xC8\xAE\xB7\xFC",
-	"\xB5\xB7 \xB4\xEB\xB9\xDA\xC0\xCC \xB3\xAA\xBF\xC3 \xC8\xAE\xB7\xFC",
-	"\xB0\xE6\xC7\xE8\xC4\xA1 \xB9\xE8\xC0\xB2",
+	"Item drop rate in percent",
+	"Yang drop rate in percent",
+	"Yang rain drop rate",
+	"Experience percentage",
 };
 
 const int aiPolymorphPowerByLevel[SKILL_MAX_LEVEL + 1] =
diff --git a/src/game/src/cube.cpp b/src/game/src/cube.cpp
index adaf3b7..b5cb036 100644
--- a/src/game/src/cube.cpp
+++ b/src/game/src/cube.cpp
@@ -308,12 +308,12 @@ void Cube_open (LPCHARACTER ch)
 
 	if (ch->IsCubeOpen())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC1\xA6\xC1\xB6\xC3\xA2\xC0\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Build window is already open."));
 		return;
 	}
 	if ( ch->GetExchange() || ch->GetMyShop() || ch->GetShopOwner() || ch->IsOpenSafebox() || ch->IsCubeOpen() )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot build something while another trade/storeroom window is open."));
 		return;
 	}
 
@@ -517,7 +517,7 @@ bool Cube_make (LPCHARACTER ch)
 
 	if (!(ch)->IsCubeOpen())
 	{
-		(ch)->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6\xC3\xA2\xC0\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+		(ch)->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The build window is not open."));
 		return false;
 	}
 
@@ -532,13 +532,13 @@ bool Cube_make (LPCHARACTER ch)
 
 	if (NULL == cube_proto)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6 \xC0\xE7\xB7\xE1\xB0\xA1 \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have the right material."));
 		return false;
 	}
 
 	if (ch->GetGold() < cube_proto->gold)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	// 이 텍스트는 이미 널리 쓰이는거라 추가번역 필요 없음
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough Yang or not enough space in the inventory."));	// 이 텍스트는 이미 널리 쓰이는거라 추가번역 필요 없음
 		return false;
 	}
 
diff --git a/src/game/src/db.cpp b/src/game/src/db.cpp
index b63492d..e039e49 100644
--- a/src/game/src/db.cpp
+++ b/src/game/src/db.cpp
@@ -493,7 +493,7 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg)
 						if (pkItem)
 						{
 							SPDLOG_DEBUG("GIVE LOTTO SUCCESS TO {} (pid {})", ch->GetName(), qi->dwIdent);
-							//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xC8\xB9\xB5\xE6: %s"), pkItem->GetName());
+							//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s received"), pkItem->GetName());
 
 							pkItem->SetSocket(0, pMsg->Get()->uiInsertID);
 							pkItem->SetSocket(1, pdw[2]);
diff --git a/src/game/src/desc.cpp b/src/game/src/desc.cpp
index f3d0fce..5dabf35 100644
--- a/src/game/src/desc.cpp
+++ b/src/game/src/desc.cpp
@@ -550,7 +550,7 @@ void DESC::DisconnectOfSameLogin()
 		if (m_pkDisconnectEvent)
 			return;
 
-		GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC4\xC4\xC7\xBB\xC5\xCD\xBF\xA1\xBC\xAD \xB7\xCE\xB1\xD7\xC0\xCE \xC7\xCF\xBF\xA9 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1 \xC7\xD5\xB4\xCF\xB4\xD9."));
+		GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Someone has logged into your account. You will be disconnected from the server."));
 		DelayedDisconnect(5);
 	}
 	else
diff --git a/src/game/src/exchange.cpp b/src/game/src/exchange.cpp
index 0784d71..9095d41 100644
--- a/src/game/src/exchange.cpp
+++ b/src/game/src/exchange.cpp
@@ -53,7 +53,7 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 
 	if (IsObserverMode())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC0\xFC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB1\xB3\xC8\xAF\xC0\xBB \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot trade while observing."));
 		return false;
 	}
 
@@ -63,13 +63,13 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 	//PREVENT_TRADE_WINDOW
 	if ( IsOpenSafebox() || GetShopOwner() || GetMyShop() || IsCubeOpen())
 	{
-		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC3\xA2\xC0\xCC \xBF\xAD\xB7\xC1\xC0\xD6\xC0\xBB\xB0\xE6\xBF\xEC \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
+		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("If the window is open, you cannot trade with others." ) );
 		return false;
 	}
 
 	if ( victim->IsOpenSafebox() || victim->GetShopOwner() || victim->GetMyShop() || victim->IsCubeOpen() )
 	{
-		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF\xC0\xCC\xB6\xF3 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
+		ChatPacket( CHAT_TYPE_INFO, LC_TEXT("The other person is currently busy so you cannot trade right now." ) );
 		return false;
 	}
 	//END_PREVENT_TRADE_WINDOW
@@ -90,7 +90,7 @@ bool CHARACTER::ExchangeStart(LPCHARACTER victim)
 
 	if (victim->IsBlockMode(BLOCK_EXCHANGE))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB1\xB3\xC8\xAF \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The other person has cancelled the trade."));
 		return false;
 	}
 
@@ -154,7 +154,7 @@ bool CExchange::AddItem(TItemPos item_pos, BYTE display_pos)
 
 	if (IS_SET(item->GetAntiFlag(), ITEM_ANTIFLAG_GIVE))
 	{
-		m_pOwner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xB0\xC7\xB3\xD7\xC1\xD9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		m_pOwner->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot trade this item."));
 		return false;
 	}
 
@@ -512,31 +512,31 @@ bool CExchange::Accept(bool bAccept)
 		// 를 리턴한다.
 		if (!Check(&iItemCount))
 		{
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough Yang or not enough space in the inventory."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The other person does not have enough Yang or does not have any space left in their inventory."));
 			goto EXCHANGE_END;
 		}
 
 		// 리턴 받은 아이템 개수로 상대방의 소지품에 남은 자리가 있나 확인한다.
 		if (!CheckSpace())
 		{
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The other person has no space left in their inventory."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There isn't enough space in your inventory."));
 			goto EXCHANGE_END;
 		}
 
 		// 상대방도 마찬가지로..
 		if (!GetCompany()->Check(&iItemCount))
 		{
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xC1\xA6\xC0\xDA\xB8\xAE\xBF\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not enough Yang or not enough space in the inventory."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The other person does not have enough Yang or does not have any space left in their inventory."));
 			goto EXCHANGE_END;
 		}
 
 		if (!GetCompany()->CheckSpace())
 		{
-			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC1\xF6\xC7\xB0\xBF\xA1 \xBA\xF3 \xB0\xF8\xB0\xA3\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The other person has no space left in their inventory."));
+			GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There isn't enough space in your inventory."));
 			goto EXCHANGE_END;
 		}
 
@@ -559,8 +559,8 @@ bool CExchange::Accept(bool bAccept)
 					victim->Save();
 
 				// INTERNATIONAL_VERSION
-				GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xB0\xFA\xC0\xC7 \xB1\xB3\xC8\xAF\xC0\xCC \xBC\xBA\xBB\xE7 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), victim->GetName());
-				victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xB0\xFA\xC0\xC7 \xB1\xB3\xC8\xAF\xC0\xCC \xBC\xBA\xBB\xE7 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), GetOwner()->GetName());
+				GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The trade with %s has been successful."), victim->GetName());
+				victim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The trade with %s has been successful."), GetOwner()->GetName());
 				// END_OF_INTERNATIONAL_VERSION
 			}
 		}
diff --git a/src/game/src/fishing.cpp b/src/game/src/fishing.cpp
index af4cb40..da7dd92 100644
--- a/src/game/src/fishing.cpp
+++ b/src/game/src/fishing.cpp
@@ -441,11 +441,11 @@ void FishingPractice(LPCHARACTER ch)
 		if ( rod->GetRefinedVnum()>0 && rod->GetSocket(0) < rod->GetValue(2) && Random::get(1,rod->GetValue(1))==1 )
 		{
 			rod->SetSocket(0, rod->GetSocket(0) + 1);
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3\xB4\xEB\xC0\xC7 \xBC\xF6\xB7\xC3\xB5\xB5\xB0\xA1 \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! (%d/%d)"),rod->GetSocket(0), rod->GetValue(2));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your fishing points have increased! (%d/%d)"),rod->GetSocket(0), rod->GetValue(2));
 			if (rod->GetSocket(0) == rod->GetValue(2))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAC\xBD\xC3\xB4\xEB\xB0\xA1 \xC3\xD6\xB4\xEB \xBC\xF6\xB7\xC3\xB5\xB5\xBF\xA1 \xB5\xB5\xB4\xDE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xEE\xBA\xCE\xB8\xA6 \xC5\xEB\xC7\xD8 \xB4\xD9\xC0\xBD \xB7\xB9\xBA\xA7\xC0\xC7 \xB3\xAC\xBD\xC3\xB4\xEB\xB7\xCE \xBE\xF7\xB1\xD7\xB7\xB9\xC0\xCC\xB5\xE5 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have reached the maximum number of fishing points."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Go to the Fisherman and get your Fishing Pole upgraded!"));
 			}
 		}
 	}
@@ -614,7 +614,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 			case -2: // 잡히지 않은 경우
 			case -3: // 난이도 때문에 실패
 			case -1: // 시간 확률 때문에 실패
-				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xB9\xCC\xB3\xA2\xB8\xB8 \xBB\xA9\xB8\xD4\xB0\xED \xC0\xEC\xBD\xCE\xB0\xD4 \xB5\xB5\xB8\xC1\xC4\xA8\xB4\xCF\xB4\xD9."));
+				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You lost your bait to the fish."));
 				{
 					int map_idx = ch->GetMapIndex();
 					int prob_idx = GetProbIndexByMapIndex(map_idx);
@@ -630,7 +630,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 				break;
 
 			case 0:
-				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xC0\xE2\xC7\xFB\xBD\xC0\xB4\xCF\xB4\xD9! (%s)"), fish_info[info->fish_id].name);
+				//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have caught a fish! (%s)"), fish_info[info->fish_id].name);
 				if (item_vnum)
 				{
 					FishingSuccess(ch);
@@ -647,7 +647,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 						item->SetSocket(0,GetFishLength(info->fish_id));
 						if (test_server)
 						{
-							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xF8\xBF\xA1 \xC0\xE2\xC0\xBA \xB9\xB0\xB0\xED\xB1\xE2\xC0\xC7 \xB1\xE6\xC0\xCC\xB4\xC2 %.2fcm"), item->GetSocket(0)/100.f);
+							ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The length of the captured fish is %.2fcm."), item->GetSocket(0)/100.f);
 						}
 					}
 
@@ -691,7 +691,7 @@ void Take(fishing_event_info* info, LPCHARACTER ch)
 				info->fish_id,
 				GetFishingLevel(ch),
 				7000);
-		//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xB9\xCC\xB3\xA2\xB8\xB8 \xBB\xA9\xB8\xD4\xB0\xED \xC0\xEC\xBD\xCE\xB0\xD4 \xB5\xB5\xB8\xC1\xC4\xA8\xB4\xCF\xB4\xD9."));
+		//ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You lost your bait to the fish."));
 		FishingFail(ch);
 	}
 	else
@@ -729,9 +729,9 @@ void Simulation(int level, int count, int prob_idx, LPCHARACTER ch)
 	}
 
 	for (std::map::iterator it = fished.begin(); it != fished.end(); ++it)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s : %d \xB8\xB6\xB8\xAE"), it->first.c_str(), it->second);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s: %d"), it->first.c_str(), it->second);
 
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC1\xBE\xB7\xF9 %d \xB8\xB6\xB8\xAE \xB3\xAC\xC0\xBD"), fished.size(), total_count);
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have caught %d of %d ."), fished.size(), total_count);
 }
 
 void UseFish(LPCHARACTER ch, LPITEM item)
@@ -768,7 +768,7 @@ void UseFish(LPCHARACTER ch, LPITEM item)
 			case USED_TREASURE_MAP:	// 3
 			case USED_NONE:		// 0
 			case USED_WATER_STONE:	// 2
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xED\xB1\xE2\xB0\xA1 \xC8\xE7\xC0\xFB\xB5\xB5 \xBE\xF8\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The fish vanished in the depths of the water."));
 				break;
 
 			case USED_SHELLFISH:	// 1
@@ -777,12 +777,12 @@ void UseFish(LPCHARACTER ch, LPITEM item)
 					if ( Random::get(0, 2) != 2 ) return;
 				}
 
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xE8 \xBC\xD3\xBF\xA1\xBC\xAD \xC1\xB6\xB0\xB3\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a Clam inside the Fish."));
 				ch->AutoGiveItem(SHELLFISH_VNUM);
 				break;
 
 			case USED_EARTHWARM:	// 4
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xE8 \xBC\xD3\xBF\xA1\xBC\xAD \xC1\xF6\xB7\xB7\xC0\xCC\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is a Worm inside the Fish."));
 				ch->AutoGiveItem(EARTHWORM_VNUM);
 				break;
 
@@ -813,7 +813,7 @@ void Grill(LPCHARACTER ch, LPITEM item)
 
 	int count = item->GetCount();
 
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB8\xA6 \xB1\xB8\xBF\xFC\xBD\xC0\xB4\xCF\xB4\xD9."), item->GetName());
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are roasting %s over the fire."), item->GetName());
 	item->SetCount(0);
 	ch->AutoGiveItem(fish_info[idx].grill_vnum, count);
 }
diff --git a/src/game/src/guild.cpp b/src/game/src/guild.cpp
index 64d5afc..3411a37 100644
--- a/src/game/src/guild.cpp
+++ b/src/game/src/guild.cpp
@@ -63,12 +63,12 @@ CGuild::CGuild(TGuildCreateParameter & cp)
 
 	strlcpy(m_data.name, cp.name, sizeof(m_data.name));
 	m_data.master_pid = cp.master->GetPlayerID();
-	strlcpy(m_data.grade_array[0].grade_name, LC_TEXT("\xB1\xE6\xB5\xE5\xC0\xE5"), sizeof(m_data.grade_array[0].grade_name));
+	strlcpy(m_data.grade_array[0].grade_name, LC_TEXT("Leader"), sizeof(m_data.grade_array[0].grade_name));
 	m_data.grade_array[0].auth_flag = GUILD_AUTH_ADD_MEMBER | GUILD_AUTH_REMOVE_MEMBER | GUILD_AUTH_NOTICE | GUILD_AUTH_USE_SKILL;
 
 	for (int i = 1; i < GUILD_GRADE_COUNT; ++i)
 	{
-		strlcpy(m_data.grade_array[i].grade_name, LC_TEXT("\xB1\xE6\xB5\xE5\xBF\xF8"), sizeof(m_data.grade_array[i].grade_name));
+		strlcpy(m_data.grade_array[i].grade_name, LC_TEXT("Member"), sizeof(m_data.grade_array[i].grade_name));
 		m_data.grade_array[i].auth_flag = 0;
 	}
 
@@ -920,7 +920,7 @@ bool CGuild::OfferExp(LPCHARACTER ch, int amount)
 
 	if (ch->GetExp() < (DWORD) amount)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xA6\xB0\xF8\xC7\xCF\xB0\xED\xC0\xDA \xC7\xCF\xB4\xC2 \xB0\xE6\xC7\xE8\xC4\xA1\xB0\xA1 \xB3\xB2\xC0\xBA \xB0\xE6\xC7\xE8\xC4\xA1\xBA\xB8\xB4\xD9 \xB8\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Provided Experience is larger then left Experience."));
 		return false;
 	}
 
@@ -1031,7 +1031,7 @@ void CGuild::DeleteComment(LPCHARACTER ch, DWORD comment_id)
 		pmsg = DBManager::instance().DirectQuery("DELETE FROM guild_comment%s WHERE id = %u AND guild_id = %u AND name = '%s'",get_table_postfix(), comment_id, m_data.guild_id, ch->GetName());
 
 	if (pmsg->Get()->uiAffectedRows == 0 || pmsg->Get()->uiAffectedRows == (uint32_t)-1)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xE8\xC1\xA6\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xB1\xDB\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This message cannot be deleted."));
 	else
 		RefreshCommentForce(ch->GetPlayerID());
 
@@ -1282,7 +1282,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 	if (GetSP() < iNeededSP)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBF\xEB\xBD\xC5\xB7\xC2\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. (%d, %d)"), GetSP(), iNeededSP);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Not enough Dragon Ghost. (%d, %d)"), GetSP(), iNeededSP);
 		return;
 	}
 
@@ -1291,7 +1291,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 	if (!abSkillUsable[dwRealVnum])
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xB3\xA1\xB3\xAA\xC1\xF6 \xBE\xCA\xBE\xC6 \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You cannot use the guild skills yet."));
 		return;
 	}
 
@@ -1331,7 +1331,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 					if (pcci->bChannel != g_bChannel)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB0\xA1 %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE %d)"), pcci->bChannel, g_bChannel);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This player is on channel %d. (Current channel: %d)"), pcci->bChannel, g_bChannel);
 					}
 					else
 					{
@@ -1344,7 +1344,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 					}
 				}
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB0\xA1 \xBF\xC2\xB6\xF3\xC0\xCE \xBB\xF3\xC5\xC2\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This player is not online."));
 			}
 			break;
 
@@ -1364,7 +1364,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 
 				if (!UnderAnyWar())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3\xC0\xBA \xB1\xE6\xB5\xE5\xC0\xFC \xC1\xDF\xBF\xA1\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild skill can only be used during war."));
 					return;
 				}
 
@@ -1805,7 +1805,7 @@ void CGuild::RequestDepositMoney(LPCHARACTER ch, int iGold)
 {
 	if (false==ch->CanDeposit())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xE1\xBD\xC3\xC8\xC4\xBF\xA1 \xC0\xCC\xBF\xEB\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Please try again later."));
 		return;
 	}
 
@@ -1832,19 +1832,19 @@ void CGuild::RequestWithdrawMoney(LPCHARACTER ch, int iGold)
 {
 	if (false==ch->CanDeposit())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xE1\xBD\xC3\xC8\xC4\xBF\xA1 \xC0\xCC\xBF\xEB\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Please try again later."));
 		return;
 	}
 
 	if (ch->GetPlayerID() != GetMasterPID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xB1\xDD\xB0\xED\xBF\xA1\xBC\xB1 \xB1\xE6\xB5\xE5\xC0\xE5\xB8\xB8 \xC3\xE2\xB1\xDD\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Only the guild leader can withdraw Yang."));
 		return;
 	}
 
 	if (m_data.gold < iGold)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xB4\xC2 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have enough Yang."));
 		return;
 	}
 
@@ -1949,17 +1949,17 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 
 	if ( pchInvitee->IsBlockMode( BLOCK_GUILD_INVITE ) ) 
 	{
-		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB1\xE6\xB5\xE5 \xC3\xCA\xB4\xEB \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9.") );
+		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] The player has declined the guild invitation.") );
 		return;
 	} 
 	else if ( !HasGradeAuth( GetMember( pchInviter->GetPlayerID() )->grade, GUILD_AUTH_ADD_MEMBER ) ) 
 	{
-		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xC3\xCA\xB4\xEB\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.") );
+		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to invite someone to join the guild.") );
 		return;
 	} 
 	else if ( pchInvitee->GetEmpire() != pchInviter->GetEmpire() ) 
 	{
-		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xBB\xE7\xB6\xF7\xC0\xBB \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.") );
+		pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] You cannot invite players from another kingdom into the guild.") );
 		return;
 	}
 
@@ -1969,16 +1969,16 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 		case GERR_NONE: break;
 		case GERR_WITHDRAWPENALTY:
 						pchInviter->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<\xB1\xE6\xB5\xE5> \xC5\xBB\xC5\xF0\xC7\xD1 \xC8\xC4 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
+								LC_TEXT("[Guild] This player can be invited again after %d day(s)."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_withdraw_delay" ) );
 						return;
 		case GERR_COMMISSIONPENALTY:
 						pchInviter->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB8\xA6 \xC7\xD8\xBB\xEA\xC7\xD1 \xC1\xF6 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
+								LC_TEXT("[Guild] After the rearrangement you can invite members again after %d days."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_disband_delay") );
 						return;
-		case GERR_ALREADYJOIN:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
-		case GERR_GUILDISFULL:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC3\xD6\xB4\xEB \xB1\xE6\xB5\xE5\xBF\xF8 \xBC\xF6\xB8\xA6 \xC3\xCA\xB0\xFA\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
+		case GERR_ALREADYJOIN:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This person is already a member of another Guild.")); return;
+		case GERR_GUILDISFULL:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The maximum guild capacity has been reached.")); return;
 		case GERR_GUILD_IS_IN_WAR : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
 		case GERR_INVITE_LIMIT : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xBD\xC5\xB1\xD4 \xB0\xA1\xC0\xD4 \xC1\xA6\xC7\xD1 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
 
@@ -2034,16 +2034,16 @@ void CGuild::InviteAccept( LPCHARACTER pchInvitee )
 		case GERR_NONE: break;
 		case GERR_WITHDRAWPENALTY:
 						pchInvitee->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<\xB1\xE6\xB5\xE5> \xC5\xBB\xC5\xF0\xC7\xD1 \xC8\xC4 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
+								LC_TEXT("[Guild] This player can be invited again after %d day(s)."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_withdraw_delay" ) );
 						return;
 		case GERR_COMMISSIONPENALTY:
 						pchInvitee->ChatPacket( CHAT_TYPE_INFO, 
-								LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB8\xA6 \xC7\xD8\xBB\xEA\xC7\xD1 \xC1\xF6 %d\xC0\xCF\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBA \xBB\xE7\xB6\xF7\xC0\xBA \xB1\xE6\xB5\xE5\xBF\xA1 \xC3\xCA\xB4\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
+								LC_TEXT("[Guild] After the rearrangement you can invite members again after %d days."), 
 								quest::CQuestManager::instance().GetEventFlag( "guild_disband_delay") );
 						return;
-		case GERR_ALREADYJOIN:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC0\xCC\xB9\xCC \xB4\xD9\xB8\xA5 \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
-		case GERR_GUILDISFULL:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC3\xD6\xB4\xEB \xB1\xE6\xB5\xE5\xBF\xF8 \xBC\xF6\xB8\xA6 \xC3\xCA\xB0\xFA\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9.")); return;
+		case GERR_ALREADYJOIN:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This person is already a member of another Guild.")); return;
+		case GERR_GUILDISFULL:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The maximum guild capacity has been reached.")); return;
 		case GERR_GUILD_IS_IN_WAR : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
 		case GERR_INVITE_LIMIT : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xBD\xC5\xB1\xD4 \xB0\xA1\xC0\xD4 \xC1\xA6\xC7\xD1 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
 
diff --git a/src/game/src/guild_manager.cpp b/src/game/src/guild_manager.cpp
index eceb7f2..8145d09 100644
--- a/src/game/src/guild_manager.cpp
+++ b/src/game/src/guild_manager.cpp
@@ -77,7 +77,7 @@ DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
 
 	if (!check_name(gcp.name))
 	{
-		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xC0\xCC\xB8\xA7\xC0\xCC \xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild name is invalid."));
 		return 0;
 	}
 
@@ -90,13 +90,13 @@ DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
 
 		if (!(row[0] && row[0][0] == '0'))
 		{
-			gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xCC\xB9\xCC \xB0\xB0\xC0\xBA \xC0\xCC\xB8\xA7\xC0\xC7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+			gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This guild name is already taken."));
 			return 0;
 		}
 	}
 	else
 	{
-		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB8\xA6 \xBB\xFD\xBC\xBA\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You cannot found a guild."));
 		return 0;
 	}
 
@@ -541,7 +541,7 @@ void CGuildManager::DeclareWar(DWORD guild_id1, DWORD guild_id2, BYTE bType)
 		if (false == LC_IsGermany())
 		{
 			char buf[256];
-			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xB1\xC0\xFC\xC6\xF7\xB0\xED\xB8\xA6 \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9!"), TouchGuild(guild_id1)->GetName(), TouchGuild(guild_id2)->GetName());
+			snprintf(buf, sizeof(buf), LC_TEXT("The guild %s has declared war on %s!"), TouchGuild(guild_id1)->GetName(), TouchGuild(guild_id2)->GetName());
 			SendNotice(buf);
 		}
 	}
@@ -555,7 +555,7 @@ void CGuildManager::RefuseWar(DWORD guild_id1, DWORD guild_id2)
 	if (g1 && g2)
 	{
 		if (g2->GetMasterCharacter())
-			g2->GetMasterCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %s \xB1\xE6\xB5\xE5\xB0\xA1 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xB0\xC5\xBA\xCE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName());
+			g2->GetMasterCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] %s has refused the Guild war."), g1->GetName());
 	}
 
 	if ( g1 != NULL )
@@ -579,7 +579,7 @@ void CGuildManager::WaitStartWar(DWORD guild_id1, DWORD guild_id2)
 	if (g1->WaitStartWar(guild_id2) || g2->WaitStartWar(guild_id1) )
 	{
 		char buf[256];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xE1\xBD\xC3 \xC8\xC4 \xC0\xFC\xC0\xEF\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD5\xB4\xCF\xB4\xD9!"), g1->GetName(), g2->GetName());
+		snprintf(buf, sizeof(buf), LC_TEXT("The guild war between %s and %s will start in a few seconds!"), g1->GetName(), g2->GetName());
 		SendNotice(buf);
 	}
 }
@@ -627,7 +627,7 @@ void CGuildManager::StartWar(DWORD guild_id1, DWORD guild_id2)
 	g2->StartWar(guild_id1);
 
 	char buf[256];
-	snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9!"), g1->GetName(), g2->GetName());
+	snprintf(buf, sizeof(buf), LC_TEXT("The guild war between %s and %s has begun!"), g1->GetName(), g2->GetName());
 	SendNotice(buf);
 
 	if (guild_id1 > guild_id2)
@@ -645,17 +645,17 @@ void SendGuildWarOverNotice(CGuild* g1, CGuild* g2, bool bDraw)
 
 		if (bDraw)
 		{
-			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5 \xBB\xE7\xC0\xCC\xC0\xC7 \xC0\xFC\xC0\xEF\xC0\xCC \xB9\xAB\xBD\xC2\xBA\xCE\xB7\xCE \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName(), g2->GetName());
+			snprintf(buf, sizeof(buf), LC_TEXT("The guild war between %s and %s has ended in a draw."), g1->GetName(), g2->GetName());
 		}
 		else
 		{
 			if ( g1->GetWarScoreAgainstTo( g2->GetID() ) > g2->GetWarScoreAgainstTo( g1->GetID() ) )
 			{
-				snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xBF\xCD\xC0\xC7 \xC0\xFC\xC0\xEF\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName(), g2->GetName());
+				snprintf(buf, sizeof(buf), LC_TEXT("%s has won the guild war against %s."), g1->GetName(), g2->GetName());
 			}
 			else
 			{
-				snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xB0\xA1 %s \xB1\xE6\xB5\xE5\xBF\xCD\xC0\xC7 \xC0\xFC\xC0\xEF\xBF\xA1\xBC\xAD \xBD\xC2\xB8\xAE \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), g2->GetName(), g1->GetName());
+				snprintf(buf, sizeof(buf), LC_TEXT("%s has won the guild war against %s."), g2->GetName(), g1->GetName());
 			}
 		}
 
@@ -739,7 +739,7 @@ void CGuildManager::CancelWar(DWORD guild_id1, DWORD guild_id2)
 		LPCHARACTER master1 = g1->GetMasterCharacter();
 
 		if (master1)
-			master1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			master1->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild war has been cancelled."));
 	}
 
 	if (g2)
@@ -747,13 +747,13 @@ void CGuildManager::CancelWar(DWORD guild_id1, DWORD guild_id2)
 		LPCHARACTER master2 = g2->GetMasterCharacter();
 
 		if (master2)
-			master2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC3\xEB\xBC\xD2 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			master2->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild war has been cancelled."));
 	}
 
 	if (g1 && g2)
 	{
 		char buf[256+1];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xBF\xCD %s \xB1\xE6\xB5\xE5 \xBB\xE7\xC0\xCC\xC0\xC7 \xC0\xFC\xC0\xEF\xC0\xCC \xC3\xEB\xBC\xD2\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), g1->GetName(), g2->GetName());
+		snprintf(buf, sizeof(buf), LC_TEXT("The guild war between %s and %s has been cancelled."), g1->GetName(), g2->GetName());
 		SendNotice(buf);
 	}
 }
diff --git a/src/game/src/guild_war.cpp b/src/game/src/guild_war.cpp
index 2a2c33c..a7ffcf3 100644
--- a/src/game/src/guild_war.cpp
+++ b/src/game/src/guild_war.cpp
@@ -43,7 +43,7 @@ void CGuild::GuildWarPacket(DWORD dwOppGID, BYTE bWarType, BYTE bWarState)
 		LPCHARACTER ch = *it;
 
 		if (bWarState == GUILD_WAR_ON_WAR)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC\xC1\xDF\xBF\xA1\xB4\xC2 \xBB\xE7\xB3\xC9\xBF\xA1 \xB5\xFB\xB8\xA5 \xC0\xCC\xC0\xCD\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] There are no experience points for hunting during a guild war."));
 
 		LPDESC d = ch->GetDesc();
 
@@ -313,7 +313,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 					GetID(), dwOppGID, type, GuildWar_GetTypeMapIndex(type));
 
 			map_allow_log();
-			NotifyGuildMaster(LC_TEXT("\xC0\xFC\xC0\xEF \xBC\xAD\xB9\xF6\xB0\xA1 \xBF\xAD\xB7\xC1\xC0\xD6\xC1\xF6 \xBE\xCA\xBE\xC6 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			NotifyGuildMaster(LC_TEXT("[Guild] The enemy's guild leader is offline."));
 			return;
 		}
 
@@ -353,7 +353,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 							GetID(), dwOppGID, type, GuildWar_GetTypeMapIndex(type));
 
 					map_allow_log();
-					NotifyGuildMaster(LC_TEXT("\xC0\xFC\xC0\xEF \xBC\xAD\xB9\xF6\xB0\xA1 \xBF\xAD\xB7\xC1\xC0\xD6\xC1\xF6 \xBE\xCA\xBE\xC6 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xBB \xBD\xC3\xC0\xDB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					NotifyGuildMaster(LC_TEXT("[Guild] The enemy's guild leader is offline."));
 					return;
 				}
 
@@ -379,7 +379,7 @@ void CGuild::RequestDeclareWar(DWORD dwOppGID, BYTE type)
 			break;
 		case GUILD_WAR_SEND_DECLARE:
 			{
-				NotifyGuildMaster(LC_TEXT("\xC0\xCC\xB9\xCC \xBC\xB1\xC0\xFC\xC6\xF7\xB0\xED \xC1\xDF\xC0\xCE \xB1\xE6\xB5\xE5\xC0\xD4\xB4\xCF\xB4\xD9."));
+				NotifyGuildMaster(LC_TEXT("[Guild] This guild is already participating in a war."));
 			}
 			break;
 		default:
@@ -651,7 +651,7 @@ void CGuild::GuildWarEntryAccept(DWORD dwOppGID, LPCHARACTER ch)
 
 	if (gw.state != GUILD_WAR_ON_WAR)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC\xB9\xCC \xC0\xFC\xC0\xEF\xC0\xCC \xB3\xA1\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The war is already over."));
 		return;
 	}
 
@@ -727,7 +727,7 @@ void CGuild::SetLadderPoint(int point)
 	if (m_data.ladder_point != point)
 	{
 		char buf[256];
-		snprintf(buf, sizeof(buf), LC_TEXT("<\xB1\xE6\xB5\xE5> \xB7\xA1\xB4\xF5 \xC1\xA1\xBC\xF6\xB0\xA1 %d \xC1\xA1\xC0\xCC \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9"), point);
+		snprintf(buf, sizeof(buf), LC_TEXT("[Guild] The guild has reached %d points."), point);
 		for (itertype(m_memberOnline) it = m_memberOnline.begin(); it!=m_memberOnline.end();++it)
 		{
 			LPCHARACTER ch = (*it);
diff --git a/src/game/src/input_db.cpp b/src/game/src/input_db.cpp
index 6ea37d3..372da34 100644
--- a/src/game/src/input_db.cpp
+++ b/src/game/src/input_db.cpp
@@ -1142,7 +1142,7 @@ void CInputDB::SafeboxLoad(LPDESC d, const char * c_pData)
 	//PREVENT_TRADE_WINDOW
 	if (ch->GetShopOwner() || ch->GetExchange() || ch->GetMyShop() || ch->IsCubeOpen() )
 	{
-		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5\xB0\xC5\xB7\xA1\xC3\xA2\xC0\xCC \xBF\xAD\xB8\xB0\xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAD\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
+		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot open a Storeroom while another window is open." ) );
 		d->GetCharacter()->CancelSafeboxLoad();
 		return;
 	}
@@ -1203,11 +1203,11 @@ void CInputDB::SafeboxChangePasswordAnswer(LPDESC d, const char* c_pData)
 	TSafeboxChangePasswordPacketAnswer* p = (TSafeboxChangePasswordPacketAnswer*) c_pData;
 	if (p->flag)
 	{
-		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED \xBA\xF1\xB9\xD0\xB9\xF8\xC8\xA3\xB0\xA1 \xBA\xAF\xB0\xE6\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] Storeroom password has been changed."));
 	}
 	else
 	{
-		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xB1\xE2\xC1\xB8 \xBA\xF1\xB9\xD0\xB9\xF8\xC8\xA3\xB0\xA1 \xC6\xB2\xB7\xC8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		d->GetCharacter()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have entered the wrong password."));
 	}
 }
 
@@ -2369,7 +2369,7 @@ void CInputDB::DecMonarchMoney(LPDESC d, const char * data)
 
 	if (ch)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 %s \xB1\xB9\xB0\xED\xBF\xA1\xB4\xC2 %d \xC0\xC7 \xB5\xB7\xC0\xCC \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s still has %d Yang available."), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
 	}
 }
 
@@ -2390,14 +2390,14 @@ void CInputDB::TakeMonarchMoney(LPDESC d, const char * data)
 			return;
 
 		LPCHARACTER ch = d->GetCharacter();
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xB0\xC5\xB3\xAA \xB5\xB7\xC0\xBB \xB0\xA1\xC1\xAE\xBF\xC3\xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC8\xB2\xC0\xD4\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You do not have enough Yang."));
 	}
 }
 
 void CInputDB::ChangeMonarchLord(TPacketChangeMonarchLordACK* info)
 {
 	char notice[256];
-	snprintf(notice, sizeof(notice), LC_TEXT("%s\xC0\xC7 \xB1\xBA\xC1\xD6\xB0\xA1 %s \xB4\xD4\xC0\xB8\xB7\xCE \xB1\xB3\xC3\xBC\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(info->bEmpire), info->szName);
+	snprintf(notice, sizeof(notice), LC_TEXT("The emperor of %s has changed to %s."), EMPIRE_NAME(info->bEmpire), info->szName);
 	SendNotice(notice);
 }
 
diff --git a/src/game/src/input_login.cpp b/src/game/src/input_login.cpp
index cc1f3ec..28f3122 100644
--- a/src/game/src/input_login.cpp
+++ b/src/game/src/input_login.cpp
@@ -44,22 +44,22 @@ static void _send_bonus_info(LPCHARACTER ch)
 	if (item_drop_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB \xB5\xE5\xB7\xD3\xB7\xFC  %d%% \xC3\xDF\xB0\xA1 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), item_drop_bonus);
+				LC_TEXT("The quota of the Item Drop is at the moment plus %d%%"), item_drop_bonus);
 	}
 	if (gold_drop_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT("\xB0\xF1\xB5\xE5 \xB5\xE5\xB7\xD3\xB7\xFC %d%% \xC3\xDF\xB0\xA1 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), gold_drop_bonus);
+				LC_TEXT("The quota of the Yang Drop is at the moment plus %d%%"), gold_drop_bonus);
 	}
 	if (gold10_drop_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT("\xB4\xEB\xB9\xDA\xB0\xF1\xB5\xE5 \xB5\xE5\xB7\xD3\xB7\xFC %d%% \xC3\xDF\xB0\xA1 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), gold10_drop_bonus);
+				LC_TEXT("The drop rate for Yang rain is currently %d%% higher."), gold10_drop_bonus);
 	}
 	if (exp_bonus)
 	{
 		ch->ChatPacket(CHAT_TYPE_NOTICE, 
-				LC_TEXT("\xB0\xE6\xC7\xE8\xC4\xA1 %d%% \xC3\xDF\xB0\xA1 \xC8\xB9\xB5\xE6 \xC0\xCC\xBA\xA5\xC6\xAE \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), exp_bonus);
+				LC_TEXT("The experience bonus is currently an additional %d%%."), exp_bonus);
 	}
 }
 
@@ -638,7 +638,7 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 				//if (0 != g_stClientVersion.compare(d->GetClientVersion()))
 				if (version > date)
 				{
-					ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC5\xAC\xB6\xF3\xC0\xCC\xBE\xF0\xC6\xAE \xB9\xF6\xC0\xFC\xC0\xCC \xC6\xB2\xB7\xC1 \xB7\xCE\xB1\xD7\xBE\xC6\xBF\xF4 \xB5\xCB\xB4\xCF\xB4\xD9. \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC6\xD0\xC4\xA1 \xC8\xC4 \xC1\xA2\xBC\xD3\xC7\xCF\xBC\xBC\xBF\xE4."));
+					ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch."));
 					d->DelayedDisconnect(10);
 					LogManager::instance().HackLog("VERSION_CONFLICT", ch);
 
diff --git a/src/game/src/input_main.cpp b/src/game/src/input_main.cpp
index 69a72a1..ebe58a4 100644
--- a/src/game/src/input_main.cpp
+++ b/src/game/src/input_main.cpp
@@ -52,7 +52,7 @@ void SendBlockChatInfo(LPCHARACTER ch, int sec)
 {
 	if (sec <= 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xC6\xC3 \xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your chat is blocked."));
 		return;
 	}
 
@@ -65,13 +65,13 @@ void SendBlockChatInfo(LPCHARACTER ch, int sec)
 	char buf[128+1];
 
 	if (hour > 0 && min > 0)
-		snprintf(buf, sizeof(buf), LC_TEXT("%d \xBD\xC3\xB0\xA3 %d \xBA\xD0 %d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), hour, min, sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d hours %d minutes %d seconds left on your chat block"), hour, min, sec);
 	else if (hour > 0 && min == 0)
-		snprintf(buf, sizeof(buf), LC_TEXT("%d \xBD\xC3\xB0\xA3 %d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), hour, sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d hours %d seconds left on your chat block"), hour, sec);
 	else if (hour == 0 && min > 0)
-		snprintf(buf, sizeof(buf), LC_TEXT("%d \xBA\xD0 %d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), min, sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d minutes %d seconds left on your chat block"), min, sec);
 	else
-		snprintf(buf, sizeof(buf), LC_TEXT("%d \xC3\xCA \xB5\xBF\xBE\xC8 \xC3\xA4\xC6\xC3\xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9"), sec);
+		snprintf(buf, sizeof(buf), LC_TEXT("%d seconds left on your chat block"), sec);
 
 	ch->ChatPacket(CHAT_TYPE_INFO, buf);
 }
@@ -295,7 +295,7 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 	if (ch->FindAffect(AFFECT_BLOCK_CHAT))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xC6\xC3 \xB1\xDD\xC1\xF6 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your chat is blocked."));
 		return (iExtraLen);
 	}
 
@@ -446,9 +446,9 @@ int CInputMain::Whisper(LPCHARACTER ch, const char * data, size_t uiBytes)
 						char buf[128];
 						int len;
 						if (3==processReturn) //교환중
-							len = snprintf(buf, sizeof(buf), LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
+							len = snprintf(buf, sizeof(buf), LC_TEXT("You can't use a private shop now."), pTable->szLocaleName);
 						else
-							len = snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
+							len = snprintf(buf, sizeof(buf), LC_TEXT("%s needed."), pTable->szLocaleName);
 						
 
 						if (len < 0 || len >= (int) sizeof(buf))
@@ -711,9 +711,9 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		if (NULL != pTable)
 		{
 			if (3==processReturn) //교환중
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF(\xC3\xA2\xB0\xED,\xB1\xB3\xC8\xAF,\xBB\xF3\xC1\xA1)\xBF\xA1\xB4\xC2 \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't use a private shop now."), pTable->szLocaleName);
 			else
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xC0\xCC \xC7\xCA\xBF\xE4\xC7\xD5\xB4\xCF\xB4\xD9."), pTable->szLocaleName);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s needed."), pTable->szLocaleName);
 						
 		}
 
@@ -726,7 +726,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 		if (ch->GetLevel() < SHOUT_LIMIT_LEVEL)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xDC\xC4\xA1\xB1\xE2\xB4\xC2 \xB7\xB9\xBA\xA7 %d \xC0\xCC\xBB\xF3\xB8\xB8 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9 \xC7\xD5\xB4\xCF\xB4\xD9."), SHOUT_LIMIT_LEVEL);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need a minimum level of %d to be able to call."), SHOUT_LIMIT_LEVEL);
 			return (iExtraLen);
 		}
 
@@ -789,7 +789,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		case CHAT_TYPE_PARTY:
 			{
 				if (!ch->GetParty())
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC4\xC6\xBC \xC1\xDF\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are not in this Group."));
 				else
 				{
 					TEMP_BUFFER tbuf;
@@ -806,7 +806,7 @@ int CInputMain::Chat(LPCHARACTER ch, const char * data, size_t uiBytes)
 		case CHAT_TYPE_GUILD:
 			{
 				if (!ch->GetGuild())
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xE6\xB5\xE5\xBF\xA1 \xB0\xA1\xC0\xD4\xC7\xCF\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You did not join this Guild."));
 				else
 					ch->GetGuild()->Chat(chatbuf);
 			}
@@ -930,7 +930,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 				if (ch_companion->IsBlockMode(BLOCK_MESSENGER_INVITE))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB8\xDE\xBD\xC5\xC1\xAE \xC3\xDF\xB0\xA1 \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player has rejected your request to add him to your friend list."));
 					return sizeof(TPacketCGMessengerAddByVID);
 				}
 
@@ -941,7 +941,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 				if (ch->GetGMLevel() == GM_PLAYER && ch_companion->GetGMLevel() != GM_PLAYER)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> \xBF\xEE\xBF\xB5\xC0\xDA\xB4\xC2 \xB8\xDE\xBD\xC5\xC1\xAE\xBF\xA1 \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Friends] You cannot add a GM to your list."));
 					return sizeof(TPacketCGMessengerAddByVID);
 				}
 
@@ -963,14 +963,14 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 				if (ch->GetGMLevel() == GM_PLAYER && gm_get_level(name) != GM_PLAYER)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> \xBF\xEE\xBF\xB5\xC0\xDA\xB4\xC2 \xB8\xDE\xBD\xC5\xC1\xAE\xBF\xA1 \xC3\xDF\xB0\xA1\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Friends] You cannot add a GM to your list."));
 					return CHARACTER_NAME_MAX_LEN;
 				}
 
 				LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(name);
 
 				if (!tch)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA \xC1\xA2\xBC\xD3\xB5\xC7 \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."), name);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s is not online."), name);
 				else
 				{
 					if (tch == ch) // 자신은 추가할 수 없다.
@@ -978,7 +978,7 @@ int CInputMain::Messenger(LPCHARACTER ch, const char* c_pData, size_t uiBytes)
 
 					if (tch->IsBlockMode(BLOCK_MESSENGER_INVITE) == true)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB8\xDE\xBD\xC5\xC1\xAE \xC3\xDF\xB0\xA1 \xB0\xC5\xBA\xCE \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player has rejected your request to add him to your friend list."));
 					}
 					else
 					{
@@ -1097,7 +1097,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 	{
 		if (iPulse - to_ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 		{
-			to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1 \xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAD\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+			to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After a trade, you have to wait %d seconds before you can open a shop."), g_nPortalLimitTime);
 			return;
 		}
 
@@ -1111,7 +1111,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 	if (iPulse - ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1 \xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAD\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After a trade, you have to wait %d seconds before you can open a shop."), g_nPortalLimitTime);
 		return;
 	}
 
@@ -1134,7 +1134,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 					*/
 					if (iPulse - ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can trade again in %d seconds."), g_nPortalLimitTime);
 
 						if (test_server)
 							ch->ChatPacket(CHAT_TYPE_INFO, "[TestOnly][Safebox]Pulse %d LoadTime %d PASS %d", iPulse, ch->GetSafeboxLoadTime(), PASSES_PER_SEC(g_nPortalLimitTime));
@@ -1143,7 +1143,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 					if (iPulse - to_ch->GetSafeboxLoadTime() < PASSES_PER_SEC(g_nPortalLimitTime))
 					{
-						to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xB0\xED\xB8\xA6 \xBF\xAC\xC8\xC4 %d\xC3\xCA \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), g_nPortalLimitTime);
+						to_ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can trade again in %d seconds."), g_nPortalLimitTime);
 
 
 						if (test_server)
@@ -1153,7 +1153,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 					if (ch->GetGold() >= GOLD_MAX)
 					{	
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xD7\xBC\xF6\xB0\xA1 20\xBE\xEF \xB3\xC9\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xA9 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have more than 2 Billion Yang. You cannot trade."));
 
 						SPDLOG_ERROR("[OVERFLOG_GOLD] START ({}) id {} name {} ", ch->GetGold(), ch->GetPlayerID(), ch->GetName());
 						return;
@@ -1171,7 +1171,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 					if (ch->GetMyShop() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF\xC0\xCF\xB0\xE6\xBF\xEC \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot open a private shop while another window is open."));
 						return;
 					}
 
@@ -1203,7 +1203,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 
 				if (GOLD_MAX <= nTotalGold)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xC7 \xC3\xD1\xB1\xDD\xBE\xD7\xC0\xCC 20\xBE\xEF \xB3\xC9\xC0\xBB \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xA9 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player has more than 2 Billion Yang. You cannot trade with him."));
 
 					SPDLOG_ERROR("[OVERFLOW_GOLD] ELK_ADD ({}) id {} name {} ",
 							ch->GetExchange()->GetCompany()->GetOwner()->GetGold(),
@@ -2058,25 +2058,25 @@ void CInputMain::SafeboxCheckin(LPCHARACTER ch, const char * c_pData)
 
 	if (!pkSafebox->IsEmpty(p->bSafePos, pkItem->GetSize()))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] No movement possible."));
 		return;
 	}
 
 	if (pkItem->GetVnum() == UNIQUE_ITEM_SAFEBOX_EXPAND)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB3\xD6\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The item cannot be stored."));
 		return;
 	}
 
 	if( IS_SET(pkItem->GetAntiFlag(), ITEM_ANTIFLAG_SAFEBOX) )
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB3\xD6\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The item cannot be stored."));
 		return;
 	}
 
 	if (true == pkItem->isLocked())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xB3\xD6\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The item cannot be stored."));
 		return;
 	}
 
@@ -2127,7 +2127,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 
 		if (DRAGON_SOUL_INVENTORY != p->ItemPos.window_type)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] No movement possible."));
 			return;
 		}
 		
@@ -2137,7 +2137,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 			int iCell = ch->GetEmptyDragonSoulInventory(pkItem);
 			if (iCell < 0)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] No movement possible."));
 				return ;
 			}
 			DestPos = TItemPos (DRAGON_SOUL_INVENTORY, iCell);
@@ -2151,7 +2151,7 @@ void CInputMain::SafeboxCheckout(LPCHARACTER ch, const char * c_pData, bool bMal
 	{
 		if (DRAGON_SOUL_INVENTORY == p->ItemPos.window_type)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC0\xA7\xC4\xA1\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] No movement possible."));
 			return;
 		}
 
@@ -2203,7 +2203,7 @@ void CInputMain::PartyInvite(LPCHARACTER ch, const char * c_pData)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
@@ -2224,7 +2224,7 @@ void CInputMain::PartyInviteAnswer(LPCHARACTER ch, const char * c_pData)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
@@ -2235,7 +2235,7 @@ void CInputMain::PartyInviteAnswer(LPCHARACTER ch, const char * c_pData)
 	// pInviter 가 ch 에게 파티 요청을 했었다.
 
 	if (!pInviter)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xE4\xC3\xBB\xC0\xBB \xC7\xD1 \xC4\xB3\xB8\xAF\xC5\xCD\xB8\xA6 \xC3\xA3\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The player who invited you is not online."));
 	else if (!p->accept)
 		pInviter->PartyInviteDeny(ch->GetPlayerID());
 	else
@@ -2247,7 +2247,7 @@ void CInputMain::PartySetState(LPCHARACTER ch, const char* c_pData)
 {
 	if (!CPartyManager::instance().IsEnablePCParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xAD\xB9\xF6 \xB9\xAE\xC1\xA6\xB7\xCE \xC6\xC4\xC6\xBC \xB0\xFC\xB7\xC3 \xC3\xB3\xB8\xAE\xB8\xA6 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The server cannot execute this group request."));
 		return;
 	}
 
@@ -2258,13 +2258,13 @@ void CInputMain::PartySetState(LPCHARACTER ch, const char* c_pData)
 
 	if (ch->GetParty()->GetLeaderPID() != ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB8\xAE\xB4\xF5\xB8\xB8 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Only the group leader can change this."));
 		return;
 	}
 
 	if (!ch->GetParty()->IsMember(p->pid))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBB\xF3\xC5\xC2\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xCF\xB7\xC1\xB4\xC2 \xBB\xE7\xB6\xF7\xC0\xCC \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xCC \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The target is not a member of your group."));
 		return;
 	}
 
@@ -2305,19 +2305,19 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 {
 	if (ch->GetArena())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xEB\xB7\xC3\xC0\xE5\xBF\xA1\xBC\xAD \xBB\xE7\xBF\xEB\xC7\xCF\xBD\xC7 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use this in the duel arena."));
 		return;
 	}
 
 	if (!CPartyManager::instance().IsEnablePCParty())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xAD\xB9\xF6 \xB9\xAE\xC1\xA6\xB7\xCE \xC6\xC4\xC6\xBC \xB0\xFC\xB7\xC3 \xC3\xB3\xB8\xAE\xB8\xA6 \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The server cannot execute this group request."));
 		return;
 	}
 
 	if (ch->GetDungeon())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC0\xFC \xBE\xC8\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xC3\xDF\xB9\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot kick out a player while you are in a dungeon."));
 		return;
 	}
 
@@ -2331,7 +2331,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 	{
 		if (ch->GetDungeon())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC1\xAF\xB3\xBB\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xBB \xC3\xDF\xB9\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot kick out a player while you are in a dungeon."));
 		}
 		else
 		{
@@ -2347,7 +2347,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 				if (B)
 				{
 					//pParty->SendPartyRemoveOneToAll(B);
-					B->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xC3\xDF\xB9\xE6\xB4\xE7\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+					B->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You have been out kicked of the group."));
 					//pParty->Unlink(B);
 					//CPartyManager::instance().SetPartyMember(B->GetPlayerID(), NULL);
 				}
@@ -2362,7 +2362,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 		{
 			if (ch->GetDungeon())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xF8\xC1\xAF\xB3\xBB\xBF\xA1\xBC\xAD\xB4\xC2 \xC6\xC4\xC6\xBC\xB8\xA6 \xB3\xAA\xB0\xA5 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot leave a group while you are in a dungeon."));
 			}
 			else
 			{
@@ -2373,7 +2373,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 				}
 				else
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xA1\xBC\xAD \xB3\xAA\xB0\xA1\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You have left the group."));
 					//pParty->SendPartyRemoveOneToAll(ch);
 					pParty->Quit(ch->GetPlayerID());
 					//pParty->SendPartyRemoveAllToOne(ch);
@@ -2383,7 +2383,7 @@ void CInputMain::PartyRemove(LPCHARACTER ch, const char* c_pData)
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xD9\xB8\xA5 \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xBB \xC5\xBB\xC5\xF0\xBD\xC3\xC5\xB3 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot kick out group members."));
 		}
 	}
 }
@@ -2398,7 +2398,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 	if (get_global_time() - ch->GetQuestFlag("guild_manage.new_disband_time") <
 			CGuildManager::instance().GetDisbandDelay())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xD8\xBB\xEA\xC7\xD1 \xC8\xC4 %d\xC0\xCF \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xE6\xB5\xE5\xB8\xA6 \xB8\xB8\xB5\xE9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] After disbanding a guild, you cannot create a new one for %d days."), 
 				quest::CQuestManager::instance().GetEventFlag("guild_disband_delay"));
 		return;
 	}
@@ -2406,7 +2406,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 	if (get_global_time() - ch->GetQuestFlag("guild_manage.new_withdraw_time") <
 			CGuildManager::instance().GetWithdrawDelay())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC5\xBB\xC5\xF0\xC7\xD1 \xC8\xC4 %d\xC0\xCF \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB1\xE6\xB5\xE5\xB8\xA6 \xB8\xB8\xB5\xE9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."), 
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] After leaving a guild, you cannot create a new one for %d days."), 
 				quest::CQuestManager::instance().GetEventFlag("guild_withdraw_delay"));
 		return;
 	}
@@ -2424,7 +2424,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 
 	if (cp.name[0] == 0 || !check_name(cp.name))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xB1\xE6\xB5\xE5 \xC0\xCC\xB8\xA7 \xC0\xD4\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This guild name is invalid."));
 		return;
 	}
 
@@ -2432,7 +2432,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 
 	if (dwGuildID)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> [%s] \xB1\xE6\xB5\xE5\xB0\xA1 \xBB\xFD\xBC\xBA\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), cp.name);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] [%s] guild has been created."), cp.name);
 
 		int GuildCreateFee;
 
@@ -2457,7 +2457,7 @@ void CInputMain::AnswerMakeGuild(LPCHARACTER ch, const char* c_pData)
 		//ch->SendGuildName(dwGuildID);
 	}
 	else
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5 \xBB\xFD\xBC\xBA\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Creation of the guild has failed."));
 }
 
 void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData)
@@ -2468,7 +2468,7 @@ void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData)
 
 	if (ch->GetPlayerID() != ch->GetParty()->GetLeaderPID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC \xB1\xE2\xBC\xFA\xC0\xBA \xC6\xC4\xC6\xBC\xC0\xE5\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Only the group leader can use group skills."));
 		return;
 	}
 
@@ -2483,7 +2483,7 @@ void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData)
 				if (pch)
 					ch->GetParty()->SummonToLeader(pch->GetPlayerID());
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xD2\xC8\xAF\xC7\xCF\xB7\xC1\xB4\xC2 \xB4\xEB\xBB\xF3\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The target has not been found."));
 			}
 			break;
 	}
@@ -2545,7 +2545,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 	{
 		if (SubHeader != GUILD_SUBHEADER_CG_GUILD_INVITE_ANSWER)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xA1 \xBC\xD3\xC7\xD8\xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] It does not belong to the guild."));
 			return SubPacketLen;
 		}
 	}
@@ -2561,13 +2561,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (gold < 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xDF\xB8\xF8\xB5\xC8 \xB1\xDD\xBE\xD7\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] That is not the correct amount of Yang."));
 					return SubPacketLen;
 				}
 
 				if (ch->GetGold() < gold)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xB4\xC2 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have enough Yang."));
 					return SubPacketLen;
 				}
 
@@ -2584,7 +2584,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (gold < 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xDF\xB8\xF8\xB5\xC8 \xB1\xDD\xBE\xD7\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] That is not the correct amount of Yang."));
 					return SubPacketLen;
 				}
 
@@ -2599,7 +2599,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (!newmember)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xAF\xC7\xD1 \xBB\xE7\xB6\xF7\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The person you were searching for cannot be found."));
 					return SubPacketLen;
 				}
 
@@ -2639,13 +2639,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 				{
 					if (member->GetGuild() != pGuild)
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xB0\xB0\xC0\xBA \xB1\xE6\xB5\xE5\xB0\xA1 \xBE\xC6\xB4\xD5\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This person is not in the same guild."));
 						return SubPacketLen;
 					}
 
 					if (!pGuild->HasGradeAuth(m->grade, GUILD_AUTH_REMOVE_MEMBER))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xB0\xAD\xC1\xA6 \xC5\xBB\xC5\xF0 \xBD\xC3\xC5\xB3 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to kick out guild members."));
 						return SubPacketLen;
 					}
 
@@ -2661,14 +2661,14 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 				{
 					if (!pGuild->HasGradeAuth(m->grade, GUILD_AUTH_REMOVE_MEMBER))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xB0\xAD\xC1\xA6 \xC5\xBB\xC5\xF0 \xBD\xC3\xC5\xB3 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to kick out guild members."));
 						return SubPacketLen;
 					}
 
 					if (pGuild->RequestRemoveMember(pid))
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xB0\xAD\xC1\xA6 \xC5\xBB\xC5\xF0 \xBD\xC3\xC4\xD7\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You have kicked a guild member out."));
 					else
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xD7\xB7\xAF\xC7\xD1 \xBB\xE7\xB6\xF7\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The person you were searching for cannot be found."));
 				}
 			}
 			return SubPacketLen;
@@ -2685,15 +2685,15 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (m->grade != GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xF7\xC0\xA7 \xC0\xCC\xB8\xA7\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to change your rank name."));
 				}
 				else if (*c_pData == GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xC7 \xC1\xF7\xC0\xA7 \xC0\xCC\xB8\xA7\xC0\xBA \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild leader's rights cannot be changed."));
 				}
 				else if (!check_name(gradename))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xFB\xC7\xD5\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBA \xC1\xF7\xC0\xA7 \xC0\xCC\xB8\xA7 \xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This rank name is invalid."));
 				}
 				else
 				{
@@ -2711,11 +2711,11 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (m->grade != GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xF7\xC0\xA7 \xB1\xC7\xC7\xD1\xC0\xBB \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to change your position."));
 				}
 				else if (*c_pData == GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xC7 \xB1\xC7\xC7\xD1\xC0\xBA \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The rights of the guild leader cannot be changed."));
 				}
 				else
 				{
@@ -2739,11 +2739,11 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 					if (pGuild->OfferExp(ch, offer))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %u\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC5\xF5\xC0\xDA\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), offer);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] %u experience points used."), offer);
 					}
 					else
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xE6\xC7\xE8\xC4\xA1 \xC5\xF5\xC0\xDA\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Experience usage has failed."));
 					}
 				}
 			}
@@ -2756,13 +2756,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (offer < 0 || gold < offer || gold < 0 || ch->GetGold() < gold)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Insufficient Yang in the guild treasury."));
 					return SubPacketLen;
 				}
 
 				if (!pGuild->ChargeSP(ch, offer))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBF\xEB\xBD\xC5\xB7\xC2 \xC8\xB8\xBA\xB9\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Dragon ghost was not restored."));
 				}
 			}
 			return SubPacketLen;
@@ -2789,7 +2789,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (length && !pGuild->HasGradeAuth(m->grade, GUILD_AUTH_NOTICE) && *(c_pData + 1) == '!')
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB0\xF8\xC1\xF6\xB1\xDB\xC0\xBB \xC0\xDB\xBC\xBA\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to make an announcement."));
 				}
 				else
 				{
@@ -2822,11 +2822,11 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 					return -1;
 
 				if (m->grade != GUILD_LEADER_GRADE)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC1\xF7\xC0\xA7\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to change the position."));
 				else if (ch->GetPlayerID() == pid)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xC7 \xC1\xF7\xC0\xA7\xB4\xC2 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The guild leader's position cannot be changed."));
 				else if (grade == 1)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xC0\xB8\xB7\xCE \xC1\xF7\xC0\xA7\xB8\xA6 \xBA\xAF\xB0\xE6\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You cannot make yourself guild leader."));
 				else
 					pGuild->ChangeMemberGrade(pid, grade);
 			}
@@ -2851,13 +2851,13 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (m->grade != GUILD_LEADER_GRADE)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC0\xE5\xB1\xBA\xC0\xBB \xC1\xF6\xC1\xA4\xC7\xD2 \xB1\xC7\xC7\xD1\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You do not have the authority to choose the guild leader."));
 				}
 				else
 				{
 					if (!pGuild->ChangeMemberGeneral(pid, is_general))
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB4\xF5\xC0\xCC\xBB\xF3 \xC0\xE5\xBC\xF6\xB8\xA6 \xC1\xF6\xC1\xA4\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You cannot choose any more guild leaders."));
 					}
 				}
 			}
@@ -2901,7 +2901,7 @@ void CInputMain::ItemGive(LPCHARACTER ch, const char* c_pData)
 	if (to_ch)
 		ch->GiveItem(to_ch, p->ItemPos);
 	else
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBB \xB0\xC7\xB3\xD7\xC1\xD9 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot trade this item."));
 }
 
 int CInputMain::MyShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes)
@@ -2914,7 +2914,7 @@ int CInputMain::MyShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes)
 
 	if (ch->GetGold() >= GOLD_MAX)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC0\xAF \xB5\xB7\xC0\xCC 20\xBE\xEF\xB3\xC9\xC0\xBB \xB3\xD1\xBE\xEE \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xDB\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have more than 2 Billion Yang with you. You cannot trade."));
         SPDLOG_DEBUG("MyShop ==> OverFlow Gold id {} name {} ", ch->GetPlayerID(), ch->GetName());
 		return (iExtraLen);
 	}
@@ -2924,7 +2924,7 @@ int CInputMain::MyShop(LPCHARACTER ch, const char * c_pData, size_t uiBytes)
 
 	if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->IsCubeOpen())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC1\xDF\xC0\xCF\xB0\xE6\xBF\xEC \xB0\xB3\xC0\xCE\xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot open a private shop while another window is open."));
 		return (iExtraLen);
 	}
 
@@ -2939,7 +2939,7 @@ void CInputMain::Refine(LPCHARACTER ch, const char* c_pData)
 
 	if (ch->GetExchange() || ch->IsOpenSafebox() || ch->GetShopOwner() || ch->GetMyShop() || ch->IsCubeOpen())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("\xC3\xA2\xB0\xED,\xB0\xC5\xB7\xA1\xC3\xA2\xB5\xEE\xC0\xCC \xBF\xAD\xB8\xB0 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB0\xB3\xB7\xAE\xC0\xBB \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+		ch->ChatPacket(CHAT_TYPE_INFO,  LC_TEXT("You cannot upgrade anything while another window is open."));
 		ch->ClearRefineMode();
 		return;
 	}
@@ -2996,7 +2996,7 @@ void CInputMain::Refine(LPCHARACTER ch, const char* c_pData)
 				}
 				else
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xBB\xE7\xB1\xCD \xC5\xB8\xBF\xF6 \xBF\xCF\xB7\xE1 \xBA\xB8\xBB\xF3\xC0\xBA \xC7\xD1\xB9\xF8\xB1\xEE\xC1\xF6 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "You can only be rewarded once for the Demon Tower Quest.");
 				}
 			}
 		}
@@ -3060,7 +3060,7 @@ int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData)
 					//if (0 != g_stClientVersion.compare(d->GetClientVersion()))
 					if (version > date)
 					{
-						ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC5\xAC\xB6\xF3\xC0\xCC\xBE\xF0\xC6\xAE \xB9\xF6\xC0\xFC\xC0\xCC \xC6\xB2\xB7\xC1 \xB7\xCE\xB1\xD7\xBE\xC6\xBF\xF4 \xB5\xCB\xB4\xCF\xB4\xD9. \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC6\xD0\xC4\xA1 \xC8\xC4 \xC1\xA2\xBC\xD3\xC7\xCF\xBC\xBC\xBF\xE4."));
+						ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You do not have the correct client version. Please install the normal patch."));
 						d->DelayedDisconnect(10);
 						LogManager::instance().HackLog("VERSION_CONFLICT", d->GetAccountTable().login, ch->GetName(), d->GetHostName());
 					}
diff --git a/src/game/src/item.cpp b/src/game/src/item.cpp
index 4da87d1..0fcc07d 100644
--- a/src/game/src/item.cpp
+++ b/src/game/src/item.cpp
@@ -1692,7 +1692,7 @@ void CItem::AccessorySocketDegrade()
 
 		if (ch)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xBF\xA1 \xB9\xDA\xC7\xF4\xC0\xD6\xB4\xF8 \xBA\xB8\xBC\xAE\xC0\xCC \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."), GetName());
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A gem socketed in the %s has vanished."), GetName());
 		}
 
 		ModifyPoints(false);
diff --git a/src/game/src/main.cpp b/src/game/src/main.cpp
index 094c987..4425765 100644
--- a/src/game/src/main.cpp
+++ b/src/game/src/main.cpp
@@ -165,11 +165,11 @@ void ShutdownOnFatalError()
 		{
 			char buf[256];
 
-			strlcpy(buf, LC_TEXT("\xBC\xAD\xB9\xF6\xBF\xA1 \xC4\xA1\xB8\xED\xC0\xFB\xC0\xCE \xBF\xC0\xB7\xF9\xB0\xA1 \xB9\xDF\xBB\xFD\xC7\xCF\xBF\xA9 \xC0\xDA\xB5\xBF\xC0\xB8\xB7\xCE \xC0\xE7\xBA\xCE\xC6\xC3\xB5\xCB\xB4\xCF\xB4\xD9."), sizeof(buf));
+			strlcpy(buf, LC_TEXT("A critical server error has occurred. The server will restart automatically."), sizeof(buf));
 			SendNotice(buf);
-			strlcpy(buf, LC_TEXT("10\xC3\xCA\xC8\xC4 \xC0\xDA\xB5\xBF\xC0\xB8\xB7\xCE \xC1\xA2\xBC\xD3\xC0\xCC \xC1\xBE\xB7\xE1\xB5\xC7\xB8\xE7,"), sizeof(buf));
+			strlcpy(buf, LC_TEXT("You will be disconnected automatically in 10 seconds."), sizeof(buf));
 			SendNotice(buf);
-			strlcpy(buf, LC_TEXT("5\xBA\xD0 \xC8\xC4\xBF\xA1 \xC1\xA4\xBB\xF3\xC0\xFB\xC0\xB8\xB7\xCE \xC1\xA2\xBC\xD3\xC7\xCF\xBD\xC7\xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), sizeof(buf));
+			strlcpy(buf, LC_TEXT("You can connect again after 5 minutes."), sizeof(buf));
 			SendNotice(buf);
 		}
 
diff --git a/src/game/src/messenger_manager.cpp b/src/game/src/messenger_manager.cpp
index e5236d6..8f42d03 100644
--- a/src/game/src/messenger_manager.cpp
+++ b/src/game/src/messenger_manager.cpp
@@ -171,7 +171,7 @@ void MessengerManager::__AddToList(MessengerManager::keyA account, MessengerMana
 
 	if (d)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> %s \xB4\xD4\xC0\xBB \xC4\xA3\xB1\xB8\xB7\xCE \xC3\xDF\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), companion.c_str());
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Friends] You have added %s as a friend."), companion.c_str());
 	}
 
 	LPCHARACTER tch = CHARACTER_MANAGER::instance().FindPC(companion.c_str());
@@ -213,7 +213,7 @@ void MessengerManager::__RemoveFromList(MessengerManager::keyA account, Messenge
 	LPDESC d = ch ? ch->GetDesc() : NULL;
 
 	if (d)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB8\xDE\xBD\xC5\xC1\xAE> %s \xB4\xD4\xC0\xBB \xB8\xDE\xBD\xC5\xC0\xFA\xBF\xA1\xBC\xAD \xBB\xE8\xC1\xA6\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), companion.c_str());
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Friends] You have deleted %s from the list."), companion.c_str());
 }
 
 void MessengerManager::RemoveFromList(MessengerManager::keyA account, MessengerManager::keyA companion)
diff --git a/src/game/src/mining.cpp b/src/game/src/mining.cpp
index d035b17..ad34f28 100644
--- a/src/game/src/mining.cpp
+++ b/src/game/src/mining.cpp
@@ -292,7 +292,7 @@ namespace mining
 		CItem& pick = *item;
 		Pick_MaxCurExp(pick);
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC \xBC\xF6\xB7\xC3\xB5\xB5\xB0\xA1 \xC3\xD6\xB4\xEB(%d)\xB0\xA1 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), Pick_GetCurExp(pick));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your mining points have reached their maximum. (%d)"), Pick_GetCurExp(pick));
 	}
 
 	void PracticePick(LPCHARACTER ch, LPITEM item)
@@ -312,20 +312,20 @@ namespace mining
 
 			if (Pick_Refinable(pick))
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xB0\xA1 \xC3\xD6\xB4\xEB \xBC\xF6\xB7\xC3\xB5\xB5\xBF\xA1 \xB5\xB5\xB4\xDE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xB9\xAB\xB2\xDB\xB8\xA6 \xC5\xEB\xC7\xD8 \xB4\xD9\xC0\xBD \xB7\xB9\xBA\xA7\xC0\xC7 \xB0\xEE\xB1\xAA\xC0\xCC\xB7\xCE \xBE\xF7\xB1\xD7\xB7\xB9\xC0\xCC\xB5\xE5 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your mining points have reached their maximum level."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can get lumberjack Deokbae to upgrade your Pickaxe."));
 			}
 			else
 			{
 				Pick_IncCurExp(pick);	
 
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xC0\xC7 \xBC\xF6\xB7\xC3\xB5\xB5\xB0\xA1 \xC1\xF5\xB0\xA1\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9! (%d/%d)"),
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your Mining Points have increased! (%d/%d)"),
 						Pick_GetCurExp(pick), Pick_GetMaxExp(pick));
 
 				if (Pick_Refinable(pick))
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xB0\xA1 \xC3\xD6\xB4\xEB \xBC\xF6\xB7\xC3\xB5\xB5\xBF\xA1 \xB5\xB5\xB4\xDE\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xB9\xAB\xB2\xDB\xB8\xA6 \xC5\xEB\xC7\xD8 \xB4\xD9\xC0\xBD \xB7\xB9\xBA\xA7\xC0\xC7 \xB0\xEE\xB1\xAA\xC0\xCC\xB7\xCE \xBE\xF7\xB1\xD7\xB7\xB9\xC0\xCC\xB5\xE5 \xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your mining points have reached their maximum level."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can get lumberjack Deokbae to upgrade your Pickaxe."));
 				}
 			}
 		}
@@ -355,14 +355,14 @@ namespace mining
 		// REFINE_PICK
 		if (!pick || !Pick_Check(*pick))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xEE\xB1\xAA\xC0\xCC\xB8\xA6 \xB5\xE9\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBE\xC6\xBC\xAD \xC4\xB6 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot mine without a Pick."));
 			return 0;
 		}
 		// END_OF_REFINE_PICK
 
 		if (!load)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xF5\xC0\xCC\xBB\xF3 \xC4\xB3\xB3\xBE \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Nothing to mine here."));
 			return 0;
 		}
 
@@ -371,11 +371,11 @@ namespace mining
 		if (Random::get(1, 100) <= iPct)
 		{
 			OreDrop(ch, load->GetRaceNum());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xB1\xA4\xBF\xA1 \xBC\xBA\xB0\xF8\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The mining has been successful."));
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xB1\xA4\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The mining has failed."));
 		}
 
 		PracticePick(ch, pick);
diff --git a/src/game/src/monarch.cpp b/src/game/src/monarch.cpp
index 244eabb..b29cded 100644
--- a/src/game/src/monarch.cpp
+++ b/src/game/src/monarch.cpp
@@ -40,7 +40,7 @@ struct FHealMyEmpire
 
 			if (ch->IsPC() && m_bEmpire == ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB0\xA1 \xB3\xBB\xB8\xB0 \xC3\xE0\xBA\xB9\xC0\xB8\xB7\xCE \xB8\xF0\xB5\xE7 \xBF\xA1\xB3\xCA\xC1\xF6\xB0\xA1 \xB0\xA1\xB5\xE6 \xC3\xA4\xBF\xF6\xC1\xFD\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The energy is reflected because of the Emperors Blessing."));
 				ch->PointChange(POINT_HP, ch->GetMaxHP() - ch->GetHP());
 				ch->PointChange(POINT_SP, ch->GetMaxSP() - ch->GetSP());
 				ch->EffectPacket(SE_SPUP_BLUE);
@@ -61,7 +61,7 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 	{
 		if (!ch->IsGM())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 			SPDLOG_ERROR("No Monarch pid {} ", pid);
 			return 0;
 		}
@@ -69,7 +69,7 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 
 	if (!ch->IsMCOK(CHARACTER::MI_HEAL))
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA \xC8\xC4\xBF\xA1 \xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), ch->GetMCLTime(CHARACTER::MI_HEAL));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After %d seconds you can use the Emperors Blessing."), ch->GetMCLTime(CHARACTER::MI_HEAL));
 
 		return 0;
 	}
@@ -93,7 +93,7 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 	ch->SetMC(CHARACTER::MI_HEAL);
 
 	if (test_server)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[TEST_ONLY]\xC7\xF6\xC0\xE7 \xB1\xB9\xB0\xED : %d "), GetMoney(Empire) - price);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[TEST_ONLY]Tax : %d"), GetMoney(Empire) - price);
 	return 1;
 }
 
diff --git a/src/game/src/party.cpp b/src/game/src/party.cpp
index b2b2ad0..469b647 100644
--- a/src/game/src/party.cpp
+++ b/src/game/src/party.cpp
@@ -323,7 +323,7 @@ void CParty::Destroy()
 				p.header = HEADER_GC_PARTY_REMOVE;
 				p.pid = rMember.pCharacter->GetPlayerID();
 				rMember.pCharacter->GetDesc()->Packet(&p, sizeof(p));
-				rMember.pCharacter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xB0\xA1 \xC7\xD8\xBB\xEA \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
+				rMember.pCharacter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] This group has been disbanded."));
 			}
 			else
 			{
@@ -1121,7 +1121,7 @@ void CParty::SummonToLeader(DWORD pid)
 
 	if (m_memberMap.find(pid) == m_memberMap.end())
 	{
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xD2\xC8\xAF\xC7\xCF\xB7\xC1\xB4\xC2 \xB4\xEB\xBB\xF3\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The target has not been found."));
 		return;
 	}
 
@@ -1129,13 +1129,13 @@ void CParty::SummonToLeader(DWORD pid)
 
 	if (!ch)
 	{
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBC\xD2\xC8\xAF\xC7\xCF\xB7\xC1\xB4\xC2 \xB4\xEB\xBB\xF3\xC0\xBB \xC3\xA3\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The target has not been found."));
 		return;
 	}
 
 	if (!ch->CanSummon(m_iLeadership))
 	{
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xB4\xEB\xBB\xF3\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot call the target."));
 		return;
 	}
 
@@ -1152,7 +1152,7 @@ void CParty::SummonToLeader(DWORD pid)
 	}
 
 	if (n == 0)
-		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xC6\xC4\xC6\xBC\xBF\xF8\xC0\xBB \xC7\xF6\xC0\xE7 \xC0\xA7\xC4\xA1\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		l->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot call group members over to your current position."));
 	else
 	{
 		int i = Random::get(0, n - 1);
@@ -1371,7 +1371,7 @@ void CParty::Update()
 			continue;
 
 		if (bLongTimeExpBonusChanged && ch->GetDesc())
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC4\xC6\xBC\xC0\xC7 \xC7\xF9\xB5\xBF\xB7\xC2\xC0\xCC \xB3\xF4\xBE\xC6\xC1\xAE \xC1\xF6\xB1\xDD\xBA\xCE\xC5\xCD \xC3\xDF\xB0\xA1 \xB0\xE6\xC7\xE8\xC4\xA1 \xBA\xB8\xB3\xCA\xBD\xBA\xB8\xA6 \xB9\xDE\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your group works well together, and group members near the group leader will receive an experience bonus."));
 
 		bool bNear = it->second.bNear;
 
diff --git a/src/game/src/polymorph.cpp b/src/game/src/polymorph.cpp
index 7f779b1..4255fb0 100644
--- a/src/game/src/polymorph.cpp
+++ b/src/game/src/polymorph.cpp
@@ -69,14 +69,14 @@ bool CPolymorphUtils::PolymorphCharacter(LPCHARACTER pChar, LPITEM pItem, const
 
 	if (iPolyPercent <= 0)
 	{
-		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xBF\xA1 \xBD\xC7\xC6\xD0 \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
+		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Transformation error."));
 		return false;
 	}
 	else
 	{
 		if (Random::get(1, 100) > iPolyPercent)
 		{
-			pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xBF\xA1 \xBD\xC7\xC6\xD0 \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"));
+			pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Transformation error."));
 			return false;
 		}
 	}
@@ -116,7 +116,7 @@ bool CPolymorphUtils::UpdateBookPracticeGrade(LPCHARACTER pChar, LPITEM pItem)
 	if (pItem->GetSocket(1) > 0)
 		pItem->SetSocket(1, pItem->GetSocket(1) - 1);
 	else
-		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xBC\xAD \xBC\xF6\xB7\xC3\xC0\xBB \xB8\xB6\xC3\xBA\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xC5\xBC\xB1\xBF\xA1\xB0\xD4 \xC3\xA3\xBE\xC6\xB0\xA1\xBC\xBC\xBF\xE4."));
+		pChar->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You learned the transmutation completely."));
 
 	return true;
 }
diff --git a/src/game/src/priv_manager.cpp b/src/game/src/priv_manager.cpp
index 3d83034..c3f3a78 100644
--- a/src/game/src/priv_manager.cpp
+++ b/src/game/src/priv_manager.cpp
@@ -105,13 +105,13 @@ void CPrivManager::GiveGuildPriv(DWORD guild_id, BYTE type, int value, BYTE bLog
 		if (value)
 		{
 			char buf[100];
-			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xC0\xC7 %s\xC0\xCC %d%% \xC1\xF5\xB0\xA1\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9!"), g->GetName(), GetPrivName(type), value);
+			snprintf(buf, sizeof(buf), LC_TEXT("%s of the Guild %s raised up to %d%% !"), g->GetName(), GetPrivName(type), value);
 			SendNotice(buf);
 		}
 		else
 		{
 			char buf[100];
-			snprintf(buf, sizeof(buf), LC_TEXT("%s \xB1\xE6\xB5\xE5\xC0\xC7 %s\xC0\xCC \xC1\xA4\xBB\xF3\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), g->GetName(), GetPrivName(type));
+			snprintf(buf, sizeof(buf), LC_TEXT("%s of the Guild %s normal again."), g->GetName(), GetPrivName(type));
 			SendNotice(buf);
 		}
 
@@ -160,7 +160,7 @@ void CPrivManager::GiveEmpirePriv(BYTE empire, BYTE type, int value, BYTE bLog,
 	if (value)
 	{
 		char buf[100];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xC7 %s\xC0\xCC %d%% \xC1\xF5\xB0\xA1\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9!"), GetEmpireName(empire), GetPrivName(type), value);
+		snprintf(buf, sizeof(buf), LC_TEXT("%s: %s has increased by %d%%!"), GetEmpireName(empire), GetPrivName(type), value);
 
 		if (empire)
 			SendNotice(buf);
@@ -170,7 +170,7 @@ void CPrivManager::GiveEmpirePriv(BYTE empire, BYTE type, int value, BYTE bLog,
 	else
 	{
 		char buf[100];
-		snprintf(buf, sizeof(buf), LC_TEXT("%s\xC0\xC7 %s\xC0\xCC \xC1\xA4\xBB\xF3\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9."), GetEmpireName(empire), GetPrivName(type));
+		snprintf(buf, sizeof(buf), LC_TEXT("%s 's %s normal again."), GetEmpireName(empire), GetPrivName(type));
 
 		if (empire)
 			SendNotice(buf);
diff --git a/src/game/src/pvp.cpp b/src/game/src/pvp.cpp
index e50ff1b..e2b83f8 100644
--- a/src/game/src/pvp.cpp
+++ b/src/game/src/pvp.cpp
@@ -183,8 +183,8 @@ void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 		// 복수할 수 있으면 바로 싸움!
 		if (pkPVP->Agree(pkChr->GetPlayerID()))
 		{
-			pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xB0\xFA\xC0\xC7 \xB4\xEB\xB0\xE1 \xBD\xC3\xC0\xDB!"), pkChr->GetName());
-			pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xB0\xFA\xC0\xC7 \xB4\xEB\xB0\xE1 \xBD\xC3\xC0\xDB!"), pkVictim->GetName());
+			pkVictim->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The battle with %s has begun!"), pkChr->GetName());
+			pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The battle with %s has begun!"), pkVictim->GetName());
 		}
 		return;
 	}
@@ -202,10 +202,10 @@ void CPVPManager::Insert(LPCHARACTER pkChr, LPCHARACTER pkVictim)
 	pkPVP->Packet();
 
 	char msg[CHAT_MAX_LEN + 1];
-	snprintf(msg, sizeof(msg), LC_TEXT("%s\xB4\xD4\xC0\xCC \xB4\xEB\xB0\xE1\xBD\xC5\xC3\xBB\xC0\xBB \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xC2\xB3\xAB\xC7\xCF\xB7\xC1\xB8\xE9 \xB4\xEB\xB0\xE1\xB5\xBF\xC0\xC7\xB8\xA6 \xC7\xCF\xBC\xBC\xBF\xE4."), pkChr->GetName());
+	snprintf(msg, sizeof(msg), LC_TEXT("%s challenged you to a battle!"), pkChr->GetName());
 
 	pkVictim->ChatPacket(CHAT_TYPE_INFO, msg);
-	pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xBF\xA1\xB0\xD4 \xB4\xEB\xB0\xE1\xBD\xC5\xC3\xBB\xC0\xBB \xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), pkVictim->GetName());
+	pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have challenged %s to a battle."), pkVictim->GetName());
 
 	// NOTIFY_PVP_MESSAGE
 	LPDESC pkVictimDesc = pkVictim->GetDesc();
diff --git a/src/game/src/questlua_global.cpp b/src/game/src/questlua_global.cpp
index 70da03b..005750d 100644
--- a/src/game/src/questlua_global.cpp
+++ b/src/game/src/questlua_global.cpp
@@ -938,7 +938,7 @@ namespace quest
 
 		event_create(warp_all_to_village_event, info, PASSES_PER_SEC(iSec));
 
-		SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3\xC8\xC4 \xB8\xF0\xB5\xCE \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xB5\xCB\xB4\xCF\xB4\xD9."), iMapIndex, false);
+		SendNoticeMap(LC_TEXT("Everyone will be teleported into the city shortly."), iMapIndex, false);
 
 		return 0;
 	}
diff --git a/src/game/src/questlua_monarch.cpp b/src/game/src/questlua_monarch.cpp
index 5cb2736..fae1bf8 100644
--- a/src/game/src/questlua_monarch.cpp
+++ b/src/game/src/questlua_monarch.cpp
@@ -137,7 +137,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -151,10 +151,10 @@ namespace quest
 		{
 			char szNotice[256];
 			snprintf(szNotice, sizeof(szNotice),
-					LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 HP,SP\xB0\xA1 \xB8\xF0\xB5\xCE \xC3\xA4\xBF\xF6\xC1\xFD\xB4\xCF\xB4\xD9."), EMPIRE_NAME(ch->GetEmpire()));
+					LC_TEXT("When the Blessing of the Emperor is used %s the HP and SP are restored again."), EMPIRE_NAME(ch->GetEmpire()));
 			SendNoticeMap(szNotice, ch->GetMapIndex(), false);
 
-			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC3\xE0\xBA\xB9\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("The Emperor Blessing is activated."));
 		}
 
 		return 1;
@@ -173,7 +173,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -191,7 +191,7 @@ namespace quest
 		if (!CMonarch::instance().CheckPowerUpCT(ch->GetEmpire()))
 		{
 			int	next_sec = CMonarch::instance().GetPowerUpCT(ch->GetEmpire()) / passes_per_sec;
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF0\xC5\xB8\xC0\xD3 \xC0\xFB\xBF\xEB\xC1\xDF  %d \xC8\xC4 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9"), next_sec);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After %d seconds you can use the Emperors Blessing."), next_sec);
 			return 0;
 		}
 
@@ -210,7 +210,7 @@ namespace quest
 		CMonarch::instance().SendtoDBDecMoney(5000000, ch->GetEmpire(), ch);
 		
 		char szNotice[256];
-		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xBB\xE7\xC0\xDA\xC8\xC4 \xBF\xB5\xC7\xE2\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 3\xBA\xD0\xB0\xA3 10 %% \xC0\xC7 \xB0\xF8\xB0\xDD\xB7\xC2\xC0\xCC  \xC1\xF5\xB0\xA1\xB5\xCB\xB4\xCF\xB4\xD9"), EMPIRE_NAME(ch->GetEmpire()));
+		snprintf(szNotice, sizeof(szNotice), LC_TEXT("Due to Emperor Sa-Za-Hu, the player %s will receive an attack power increase of 10 %% for 3 minutes in this area."), EMPIRE_NAME(ch->GetEmpire()));
 		
 		SendNoticeMap(szNotice, ch->GetMapIndex(), false);
 
@@ -231,7 +231,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -248,7 +248,7 @@ namespace quest
 		if (!CMonarch::instance().CheckDefenseUpCT(ch->GetEmpire()))
 		{
 			int	next_sec = CMonarch::instance().GetDefenseUpCT(ch->GetEmpire()) / passes_per_sec;
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF0\xC5\xB8\xC0\xD3 \xC0\xFB\xBF\xEB\xC1\xDF  %d \xC8\xC4 \xBB\xE7\xBF\xEB\xB0\xA1\xB4\xC9"), next_sec);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After %d seconds you can use the Emperors Blessing."), next_sec);
 			return 0;
 		}	
 		
@@ -267,7 +267,7 @@ namespace quest
 		CMonarch::instance().SendtoDBDecMoney(5000000, ch->GetEmpire(), ch);
 		
 		char szNotice[256];
-		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xB1\xDD\xB0\xAD\xB1\xC7 \xBF\xB5\xC7\xE2\xC0\xB8\xB7\xCE \xC0\xCC\xC1\xF6\xBF\xAA %s \xC0\xAF\xC0\xFA\xB4\xC2 3\xBA\xD0\xB0\xA3 10 %% \xC0\xC7 \xB9\xE6\xBE\xEE\xB7\xC2\xC0\xCC  \xC1\xF5\xB0\xA1\xB5\xCB\xB4\xCF\xB4\xD9"), EMPIRE_NAME(ch->GetEmpire()));
+		snprintf(szNotice, sizeof(szNotice), LC_TEXT("By the Emperor Geum-Gang-Gwon the player %s gets 10 %% more armour for 3 minutes."), EMPIRE_NAME(ch->GetEmpire()));
 
 		SendNoticeMap(szNotice, ch->GetMapIndex(), false);
 
@@ -311,7 +311,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -399,7 +399,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -407,7 +407,7 @@ namespace quest
 
 		if (false==castle_is_my_castle(ch->GetEmpire(), ch->GetMapIndex()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xBA\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are only able to use this function while you are at the castle."));
 			return 0;
 		}
 
@@ -448,7 +448,7 @@ namespace quest
 		{
 			if (!ch->IsGM())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("\xB1\xBA\xC1\xD6\xC0\xC7 \xC0\xDA\xB0\xDD\xC0\xBB \xB0\xA1\xC1\xF6\xB0\xED \xC0\xD6\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO ,LC_TEXT("You do not have the emperor qualification."));
 				quest_err("No Monarch pid %d ", ch->GetPlayerID());
 				return 0;
 			}
@@ -457,14 +457,14 @@ namespace quest
 		if (castle_frog_to_empire_money(ch))
 		{
 			int empire_money = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : \xC8\xB2\xB1\xDD\xB5\xCE\xB2\xA8\xBA\xF1\xB0\xA1 \xB1\xB9\xB0\xED\xB7\xCE \xC8\xAF\xBF\xF8\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."));
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : \xC7\xF6\xC0\xE7 \xB1\xB9\xB0\xED : %d"), empire_money);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST: The Gold Bar has been paid back to your kingdom's safe."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST: In your kingdom's safe there are: %d"), empire_money);
 			castle_save();
 			return 1;
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST : \xC8\xB2\xB1\xDD\xB5\xCE\xB2\xA8\xBA\xF1\xB8\xA6 \xB1\xB9\xB0\xED\xB7\xCE \xC8\xAF\xBF\xF8\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("TEST: You cannot pay the Gold Bar back into your kingdom's safe."));
 			return 0;
 		}
 	}
@@ -487,14 +487,14 @@ namespace quest
 		
 		if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 			return 0;
 		}
 
 		//군주 쿨타임 검사
 		if (!ch->IsMCOK(CHARACTER::MI_WARP))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_WARP));	
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Cooldown time for approximately %d seconds"), ch->GetMCLTime(CHARACTER::MI_WARP));	
 			return 0;
 		}
 
@@ -522,12 +522,12 @@ namespace quest
 			{
 				if (pkCCI->bEmpire != ch->GetEmpire())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot be warped to an unknown player."));
 					return 0;
 				}
 				if (pkCCI->bChannel != g_bChannel)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC0\xAF\xC0\xFA\xB4\xC2 %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE %d)"), pkCCI->bChannel, g_bChannel);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Adding player %d into the channel. (Present channel %d)"), pkCCI->bChannel, g_bChannel);
 					return 0;
 				}
 	
@@ -544,7 +544,7 @@ namespace quest
 				else
 				{
 					//ch->ChatPacket(CHAT_TYPE_INFO, "You warp to (%d, %d)", pos.x, pos.y);
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), name.c_str());
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Warp to player %s."), name.c_str());
 					ch->WarpSet(pos.x, pos.y);
 
 					//군주 돈 삭감	
@@ -566,7 +566,7 @@ namespace quest
 		{
 			if (tch->GetEmpire() != ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xB8\xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xBF\xA1\xB0\xD4\xB4\xC2 \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot be warped to an unknown player."));
 				return 0;
 			}
 
@@ -580,7 +580,7 @@ namespace quest
 			y = tch->GetY();
 		}
 
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBF\xA1\xB0\xD4\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD5\xB4\xCF\xB4\xD9"), name.c_str());
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Warp to player %s."), name.c_str());
 		ch->WarpSet(x,y);
 		ch->Stop();
 
@@ -604,22 +604,22 @@ namespace quest
 
 		if (CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))	
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("\xB3\xAA\xC0\xC7 \xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
+			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("My information about the emperor"));
 		
 			for (int n = 1; n < 4; ++n)
 			{
 				if (n == ch->GetEmpire())
-					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  \xBA\xB8\xC0\xAF\xB1\xDD\xBE\xD7 %lld "), EMPIRE_NAME(n), p->name[n], p->money[n]);
+					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%sMonarch] : %s Yang owned %lld"), EMPIRE_NAME(n), p->name[n], p->money[n]);
 				else
-					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
+					ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%sMonarch] : %s"), EMPIRE_NAME(n), p->name[n]);
 			}
 		}
 		else
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("\xB1\xBA\xC1\xD6 \xC1\xA4\xBA\xB8"));
+			ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("Information about the emperor"));
 
 			for (int n = 1; n < 4; ++n)
-				ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%s\xB1\xBA\xC1\xD6] : %s  "), EMPIRE_NAME(n), p->name[n]);
+				ch->ChatPacket(CHAT_TYPE_INFO,LC_TEXT("[%sMonarch] : %s"), EMPIRE_NAME(n), p->name[n]);
 		}
 
 		return 0;
@@ -642,14 +642,14 @@ namespace quest
 
 		if (!CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 			return 0;
 		}
 
 		// 군주 쿨타임 검사
 		if (!ch->IsMCOK(CHARACTER::MI_TRANSFER))
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Cooldown time for approximately %d seconds"), ch->GetMCLTime(CHARACTER::MI_TRANSFER));	
 			return 0;
 		}
 
@@ -674,13 +674,13 @@ namespace quest
 			{
 				if (pkCCI->bEmpire != ch->GetEmpire())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit players from another kingdom."));
 					return 0;
 				}
 
 				if (pkCCI->bChannel != g_bChannel)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC1\xA2\xBC\xD3 \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE: %d)"), name.c_str(), pkCCI->bChannel, g_bChannel);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player %s is on channel %d at the moment. (Your channel: %d)"), name.c_str(), pkCCI->bChannel, g_bChannel);
 					return 0;
 				}
 
@@ -703,7 +703,7 @@ namespace quest
 				pgg.lY = ch->GetY();
 
 				P2P_MANAGER::instance().Send(&pgg, sizeof(TPacketGGTransfer));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), name.c_str());
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have recruited %s players."), name.c_str());
 
 				// 군주 돈 삭감
 				CMonarch::instance().SendtoDBDecMoney(WarpPrice, ch->GetEmpire(), ch);
@@ -713,7 +713,7 @@ namespace quest
 			}
 			else
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xD4\xB7\xC2\xC7\xCF\xBD\xC5 \xC0\xCC\xB8\xA7\xC0\xBB \xB0\xA1\xC1\xF8 \xBB\xE7\xBF\xEB\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no user with this name."));
 			}
 
 			return 0;
@@ -721,13 +721,13 @@ namespace quest
 
 		if (ch == tch)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit yourself."));
 			return 0;
 		}
 
 		if (tch->GetEmpire() != ch->GetEmpire())
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit players from another kingdom."));
 			return 0;
 		}
 
@@ -762,7 +762,7 @@ namespace quest
 		
 		if (ch->IsMonarch() == false)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 			return 0;
 		}
 
@@ -826,13 +826,13 @@ namespace quest
 
 		if (CMonarch::instance().IsMonarch(ch->GetPlayerID(), ch->GetEmpire()) == false)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xB8\xB8\xC0\xCC \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD1 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This function can only be used by the emperor."));
 			return 0;
 		}
 
 		if (ch->IsMCOK(CHARACTER::MI_TRANSFER) == false)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d \xC3\xCA\xB0\xA3 \xC4\xF0\xC5\xB8\xC0\xD3\xC0\xCC \xC0\xFB\xBF\xEB\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9."), ch->GetMCLTime(CHARACTER::MI_TRANSFER));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Cooldown time for approximately %d seconds"), ch->GetMCLTime(CHARACTER::MI_TRANSFER));
 			return 0;
 		}
 		
@@ -857,7 +857,7 @@ namespace quest
 			{
 				if (pCCI->bEmpire != ch->GetEmpire())
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit players from another kingdom."));
 					return 0;
 				}
 
@@ -893,7 +893,7 @@ namespace quest
 			}
 			else
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xD4\xB7\xC2\xC7\xCF\xBD\xC5 \xC0\xCC\xB8\xA7\xC0\xBB \xB0\xA1\xC1\xF8 \xBB\xE7\xBF\xEB\xC0\xDA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is no user with this name."));
 				return 0;
 			}
 		}
@@ -901,13 +901,13 @@ namespace quest
 		{
 			if (pTargetChar == ch)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit yourself."));
 				return 0;
 			}
 
 			if (pTargetChar->GetEmpire() != ch->GetEmpire())
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xC1\xA6\xB1\xB9 \xC0\xAF\xC0\xFA\xB4\xC2 \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot recruit players from another kingdom."));
 				return 0;
 			}
 
diff --git a/src/game/src/questlua_pc.cpp b/src/game/src/questlua_pc.cpp
index bd9d642..25ee11f 100644
--- a/src/game/src/questlua_pc.cpp
+++ b/src/game/src/questlua_pc.cpp
@@ -400,12 +400,12 @@ namespace quest
 			{
 				if (dwVnums[i] == 1)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xB7 %d \xB3\xC9\xC0\xBB \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d Yang."), dwCounts[i]);
 				}
 				else if (dwVnums[i] == 2)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB3\xAA\xB9\xAB\xBF\xA1\xBC\xAD \xBA\xCE\xC5\xCD \xBD\xC5\xBA\xF1\xC7\xD1 \xBA\xFB\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC0\xC7 \xB0\xE6\xC7\xE8\xC4\xA1\xB8\xA6 \xC8\xB9\xB5\xE6\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), dwCounts[i]);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("A mysterious light appears from the tree."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have received %d experience points."), dwCounts[i]);
 				}
 			}
 		}
diff --git a/src/game/src/questmanager.cpp b/src/game/src/questmanager.cpp
index ec0e0f2..bc2d1dc 100644
--- a/src/game/src/questmanager.cpp
+++ b/src/game/src/questmanager.cpp
@@ -577,7 +577,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 
 				if (ch)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 
 				return;
 			}
@@ -602,7 +602,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 				}
 				return;
 			}
@@ -627,7 +627,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 				}
 				return false;
 			}
@@ -654,7 +654,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 				}
 				return false;
 			}
@@ -696,7 +696,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 				}
 				return false;
 			}
@@ -750,7 +750,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 
 				if (ch)
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 
 				return false;
 			}
@@ -1753,7 +1753,7 @@ namespace quest
 				LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID(pc);
 				if (ch)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC4\xF9\xBD\xBA\xC6\xAE\xB8\xA6 \xB7\xCE\xB5\xE5\xC7\xCF\xB4\xC2 \xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. \xC0\xE1\xBD\xC3\xB8\xB8 \xB1\xE2\xB4\xD9\xB7\xC1 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Your request is loading. Please wait."));
 				}
 				return false;
 			}
diff --git a/src/game/src/questnpc.cpp b/src/game/src/questnpc.cpp
index 446a7c3..ddaf676 100644
--- a/src/game/src/questnpc.cpp
+++ b/src/game/src/questnpc.cpp
@@ -917,7 +917,7 @@ namespace quest
 			{
 				os << ",\"" << ScriptToString(AvailScript[i]->arg.c_str()) << '"';
 			}
-			os << ", '"<ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC4\xF9\xBD\xBA\xC6\xAE> \xC0\xCC\xC0\xFC\xBF\xA1 \xB0\xB0\xC0\xBA \xBA\xB8\xBB\xF3\xC0\xBB \xB9\xDE\xC0\xBA \xC0\xFB\xC0\xCC \xC0\xD6\xBE\xEE \xB4\xD9\xBD\xC3 \xB9\xDE\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Quest] You have already received your reward."));
 			m_bIsGivenReward = false;
 		}
 
diff --git a/src/game/src/shop.cpp b/src/game/src/shop.cpp
index 4163b90..4b55903 100644
--- a/src/game/src/shop.cpp
+++ b/src/game/src/shop.cpp
@@ -370,7 +370,7 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos)
 		m_pkPC->PointChange(POINT_GOLD, dwPrice, false);
 
 		if (iVal > 0)
-			m_pkPC->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC7\xB8\xC5\xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xBC\xBC\xB1\xDD\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9"), iVal);
+			m_pkPC->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This sale will be taxed %d%%."), iVal);
 
 		CMonarch::instance().SendtoDBAddMoney(dwTax, m_pkPC->GetEmpire(), m_pkPC);
 	}
diff --git a/src/game/src/shop_manager.cpp b/src/game/src/shop_manager.cpp
index aa04963..8018ddf 100644
--- a/src/game/src/shop_manager.cpp
+++ b/src/game/src/shop_manager.cpp
@@ -112,7 +112,7 @@ bool CShopManager::StartShopping(LPCHARACTER pkChr, LPCHARACTER pkChrShopKeeper,
 	//PREVENT_TRADE_WINDOW
 	if (pkChr->IsOpenSafebox() || pkChr->GetExchange() || pkChr->GetMyShop() || pkChr->IsCubeOpen())
 	{
-		pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xD9\xB8\xA5 \xB0\xC5\xB7\xA1\xC3\xA2\xC0\xCC \xBF\xAD\xB8\xB0\xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xBB\xF3\xC1\xA1\xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6 \xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		pkChr->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot trade in the shop while another window is open."));
 		return false;
 	}
 	//END_PREVENT_TRADE_WINDOW
@@ -214,7 +214,7 @@ void CShopManager::Buy(LPCHARACTER ch, BYTE pos)
 
 	if (DISTANCE_APPROX(ch->GetX() - ch->GetShopOwner()->GetX(), ch->GetY() - ch->GetShopOwner()->GetY()) > 2000)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC1\xA1\xB0\xFA\xC0\xC7 \xB0\xC5\xB8\xAE\xB0\xA1 \xB3\xCA\xB9\xAB \xB8\xD6\xBE\xEE \xB9\xB0\xB0\xC7\xC0\xBB \xBB\xEC \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are too far away from the shop to buy something."));
 		return;
 	}
 
@@ -271,7 +271,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 
 	if (DISTANCE_APPROX(ch->GetX()-ch->GetShopOwner()->GetX(), ch->GetY()-ch->GetShopOwner()->GetY())>2000)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xC1\xA1\xB0\xFA\xC0\xC7 \xB0\xC5\xB8\xAE\xB0\xA1 \xB3\xCA\xB9\xAB \xB8\xD6\xBE\xEE \xB9\xB0\xB0\xC7\xC0\xBB \xC6\xC8 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You are too far away from the shop to sell something."));
 		return;
 	}
 	
@@ -335,7 +335,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 	if (GOLD_MAX <= nTotalMoney)
 	{
 		SPDLOG_ERROR("[OVERFLOW_GOLD] id {} name {} gold {}", ch->GetPlayerID(), ch->GetName(), ch->GetGold());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20\xBE\xEF\xB3\xC9\xC0\xCC \xC3\xCA\xB0\xFA\xC7\xCF\xBF\xA9 \xB9\xB0\xC7\xB0\xC0\xBB \xC6\xC8\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot trade because you are carrying more than 2 billion Yang."));
 		return;
 	}
 
@@ -343,7 +343,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 	SPDLOG_DEBUG("SHOP: SELL: {} item name: {}(x{}):{} price: {}", ch->GetName(), item->GetName(), bCount, item->GetID(), dwPrice);
 
 	if (iVal > 0)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC6\xC7\xB8\xC5\xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xBC\xBC\xB1\xDD\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9"), iVal);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This sale will be taxed %d%%."), iVal);
 
 	DBManager::instance().SendMoneyLog(MONEY_LOG_SHOP, item->GetVnum(), dwPrice);
 
diff --git a/src/game/src/start_position.cpp b/src/game/src/start_position.cpp
index 4cc5e74..0cb76bb 100644
--- a/src/game/src/start_position.cpp
+++ b/src/game/src/start_position.cpp
@@ -5,14 +5,14 @@
 char g_nation_name[4][32] =
 {
 	"",
-	"\xBD\xC5\xBC\xF6\xB1\xB9",
-	"\xC3\xB5\xC1\xB6\xB1\xB9",
-	"\xC1\xF8\xB3\xEB\xB1\xB9",
+	"Shinsoo Kingdom",
+	"Chunjo Kingdom",
+	"Jinno Kingdom",
 };
 
-//	LC_TEXT("\xBD\xC5\xBC\xF6\xB1\xB9")
-//	LC_TEXT("\xC3\xB5\xC1\xB6\xB1\xB9")
-//	LC_TEXT("\xC1\xF8\xB3\xEB\xB1\xB9")
+//	LC_TEXT("Shinsoo Kingdom")
+//	LC_TEXT("Chunjo Kingdom")
+//	LC_TEXT("Jinno Kingdom")
 
 int g_start_map[4] =
 {
diff --git a/src/game/src/threeway_war.cpp b/src/game/src/threeway_war.cpp
index fa12cde..d622e23 100644
--- a/src/game/src/threeway_war.cpp
+++ b/src/game/src/threeway_war.cpp
@@ -340,7 +340,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 	{
 		char szBuf[64 + 1];
 
-		snprintf(szBuf, sizeof(szBuf), LC_TEXT("\xC7\xF6\xC0\xE7 \xBD\xBA\xC4\xDA\xBE\xEE \xBD\xC5\xBC\xF6\xB1\xB9:%d \xC3\xB5\xC1\xB6\xB1\xB9:%d \xC1\xF8\xB3\xEB\xB1\xB9:%d"),
+		snprintf(szBuf, sizeof(szBuf), LC_TEXT("Current score: Shinsoo %d, Chunjo %d, Jinno %d"),
 				GetKillScore(1), GetKillScore(2), GetKillScore(3));
 
 		SendNoticeMap(szBuf, GetSungziMapIndex(), false);
@@ -406,9 +406,9 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		//----------------------
 		const std::string Nation(EMPIRE_NAME(bLoseEmpire));
 		const std::string Script(
-				LC_TEXT("\xBC\xBA\xC1\xF6\xC0\xC7 \xB8\xB6\xBF\xD5: \xB3\xCA\xC8\xF1 ") +
+				LC_TEXT("The devil of the hallowed place: [ENTER][ENTER]") +
 				Nation +
-				LC_TEXT("\xB3\xE0\xBC\xAE\xB5\xE9\xC0\xBA \xC0\xCC\xB0\xF7 \xBC\xBA\xC1\xF6\xBF\xA1 \xC0\xD6\xC0\xBB \xC0\xDA\xB0\xDD\xC0\xBB \xC0\xD2\xBE\xFA\xB4\xD9. \xB8\xF0\xB5\xCE \xBC\xBA\xC1\xF6\xBF\xA1\xBC\xAD \xB9\xB0\xB7\xAF\xB3\xAA\xB0\xC5\xB6\xF3~~[ENTER][ENTER] 10\xC3\xCA \xC8\xC4\xBF\xA1 \xB8\xF0\xB5\xCE \xB8\xB6\xC0\xBB\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xCF\xB0\xD4 \xB5\xCB\xB4\xCF\xB4\xD9. ") +
+				LC_TEXT(", you don't have any right to be here! The members of your kingdom will leave this hallowed ground in 10 seconds.") +
 				"[ENTER][DONE]"
 				);
 
@@ -418,7 +418,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		// 공지 한방 날려줌.
 		//----------------------
 		char szNotice[512+1];
-		snprintf(szNotice, sizeof(szNotice), LC_TEXT("\xBB\xEF\xB0\xC5\xB8\xAE \xC0\xFC\xC5\xF5\xBF\xA1\xBC\xAD %s \xB1\xB9\xB0\xA1\xB0\xA1 \xB0\xA1\xC0\xE5\xB8\xD5\xC0\xFA \xC5\xBB\xB6\xF4\xC0\xBB \xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9"), Nation.c_str());
+		snprintf(szNotice, sizeof(szNotice), LC_TEXT("%s has been defeated and drops out of the Kingdom Battle."), Nation.c_str());
 		BroadcastNotice(szNotice);
 
 		snprintf(szNotice, sizeof(szNotice), "First Step: %s exclusion", Nation.c_str());
@@ -496,7 +496,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 		//------------------------------
 		{
 			char szBuf[64 + 1];
-			snprintf(szBuf, sizeof(szBuf), LC_TEXT("\xC7\xF6\xC0\xE7 \xBD\xBA\xC4\xDA\xBE\xEE \xBD\xC5\xBC\xF6\xB1\xB9:%d \xC3\xB5\xC1\xB6\xB1\xB9:%d \xC1\xF8\xB3\xEB\xB1\xB9:%d"),
+			snprintf(szBuf, sizeof(szBuf), LC_TEXT("Current score: Shinsoo %d, Chunjo %d, Jinno %d"),
 					GetKillScore(1), GetKillScore(2), GetKillScore(3));
 
 			SendNoticeMap(szBuf, GetSungziMapIndex(), false);
@@ -510,7 +510,7 @@ void CThreeWayWar::onDead(LPCHARACTER pChar, LPCHARACTER pkKiller)
 			const std::string EmpireName(EMPIRE_NAME(nVictoryEmpireIndex));
 			const std::string Script(
 					EmpireName +
-					LC_TEXT(". \xB3\xCA\xC8\xF1\xB0\xA1 \xBC\xBA\xC1\xF6\xC0\xC7 \xBC\xF6\xC8\xA3\xC0\xDA\xB8\xA6 \xC0\xE2\xB0\xD4 \xB5\xC8\xB4\xD9\xB8\xE9 \xB3\xCA\xC8\xF1\xB4\xC2 \xBC\xBA\xC1\xF6\xC0\xC7 \xC1\xD6\xC0\xCE\xC0\xCC \xB5\xC8\xB4\xD9.[ENTER][ENTER] ") +
+					LC_TEXT("If you defeat the Guard of the Holy Place, you will become the owner of it.") +
 					"[ENTER][DONE]");
 
 			struct packet_script pack_script;
diff --git a/src/game/src/war_map.cpp b/src/game/src/war_map.cpp
index 4989087..257a559 100644
--- a/src/game/src/war_map.cpp
+++ b/src/game/src/war_map.cpp
@@ -382,8 +382,8 @@ void CWarMap::IncMember(LPCHARACTER ch)
 		++m_iObserverCount; 
 		SPDLOG_DEBUG("WarMap +o {}", m_iObserverCount);
 		ch->SetObserverMode(true);
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xFC\xC0\xFC \xB8\xF0\xB5\xE5\xB7\xCE \xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xC2\xFC\xB0\xA1\xC7\xCF\xBC\xCC\xBD\xC0\xB4\xCF\xB4\xD9."));
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xBD\xC5\xC0\xBB \xBC\xB1\xC5\xC3\xC7\xCF\xBD\xC3\xB8\xE9 \xB9\xDB\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA5 \xBC\xF6 \xC0\xD6\xB4\xC2 <\xB0\xFC\xB6\xF7 \xC1\xBE\xB7\xE1> \xB9\xF6\xC6\xB0\xC0\xCC \xB3\xAA\xBF\xC9\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can participate in the guild battle in viewer mode."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("While choosing a character, an icon appears."));
 	}
 
 	UpdateUserCount();
@@ -480,8 +480,8 @@ void CWarMap::CheckWarEnd()
 		if (m_pkTimeoutEvent)
 			return;
 
-		Notice(LC_TEXT("\xB1\xE6\xB5\xE5\xC0\xFC\xBF\xA1 \xC2\xFC\xB0\xA1\xC7\xD1 \xBB\xF3\xB4\xEB\xB9\xE6 \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xCC \xBE\xC6\xB9\xAB\xB5\xB5 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
-		Notice(LC_TEXT("1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1 \xBE\xC6\xB9\xAB\xB5\xB5 \xC1\xA2\xBC\xD3\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xB8\xB8\xE9 \xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC0\xDA\xB5\xBF \xC1\xBE\xB7\xE1\xB5\xCB\xB4\xCF\xB4\xD9."));
+		Notice(LC_TEXT("There are no opponents."));
+		Notice(LC_TEXT("If no enemy can be found, the guild war will be ended automatically."));
 
 		SPDLOG_DEBUG("CheckWarEnd: Timeout begin {} vs {}", m_TeamData[0].dwID, m_TeamData[1].dwID);
 
@@ -523,7 +523,7 @@ void CWarMap::Timeout()
 
 	if (get_dword_time() - m_dwStartTime < 60000 * 5)
 	{
-		Notice(LC_TEXT("\xB1\xE6\xB5\xE5\xC0\xFC\xC0\xCC \xC0\xCF\xC2\xEF \xC1\xBE\xB7\xE1\xB5\xC7\xBE\xEE \xB9\xAB\xBD\xC2\xBA\xCE\xB7\xCE \xC6\xC7\xC1\xA4 \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. (5\xBA\xD0\xC0\xCC \xC1\xF6\xB3\xAA\xC1\xF6 \xBE\xCA\xC0\xBD)"));
+		Notice(LC_TEXT("Because the guild war finished early, the result will judged as a draw."));
 		dwWinner = 0;
 		dwLoser = 0;
 	}
diff --git a/src/game/src/wedding.cpp b/src/game/src/wedding.cpp
index 9f28315..9028707 100644
--- a/src/game/src/wedding.cpp
+++ b/src/game/src/wedding.cpp
@@ -78,8 +78,8 @@ namespace marriage
 
 		m_pEndEvent = event_create(wedding_end_event, info, PASSES_PER_SEC(5));
 
-		Notice(LC_TEXT("\xB0\xE1\xC8\xA5\xBD\xC4\xC0\xCC \xC1\xBE\xB7\xE1\xB5\xCB\xB4\xCF\xB4\xD9."));
-		Notice(LC_TEXT("\xC0\xDA\xB5\xBF\xC0\xB8\xB7\xCE \xB3\xAA\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9."));
+		Notice(LC_TEXT("The wedding is finishing soon."));
+		Notice(LC_TEXT("Will be left automatically."));
 
 		for (itertype(m_set_pkChr) it = m_set_pkChr.begin(); it != m_set_pkChr.end(); ++it)
 		{

From 326c134f9ee0920c51e6d713f92e734506b9b477 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 11:13:11 +0200
Subject: [PATCH 15/21] manual translation of non-localized strings

---
 src/db/src/GuildManager.cpp      |  6 ++--
 src/game/src/BattleArena.cpp     | 30 +++++++++----------
 src/game/src/auction_manager.cpp | 50 ++++++++++++++++----------------
 src/game/src/char_battle.cpp     | 14 ++++-----
 src/game/src/char_dragonsoul.cpp |  4 +--
 src/game/src/char_horse.cpp      |  4 +--
 6 files changed, 53 insertions(+), 55 deletions(-)

diff --git a/src/db/src/GuildManager.cpp b/src/db/src/GuildManager.cpp
index 4f71dc2..5799b2f 100644
--- a/src/db/src/GuildManager.cpp
+++ b/src/db/src/GuildManager.cpp
@@ -1135,11 +1135,9 @@ void CGuildManager::ProcessReserveWar()
 					pk->SetLastNoticeMin(iMin);
 
 					if (!g_stLocale.compare("euckr"))
-						// "%s 길드와 %s 길드의 전쟁이 약 %d분 후 시작 됩니다!"
-						CClientManager::instance().SendNotice("%s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCB\xB4\xCF\xB4\xEF\xBF\xBD!", r_1.szName, r_2.szName, iMin);
+						CClientManager::instance().SendNotice("The war between guild %s and guild %s will begin in approximately %d minutes!", r_1.szName, r_2.szName, iMin);
 					else if (!g_stLocale.compare("gb2312"))
-						// "%s 곤삔뵨 %s 곤삔돨곤삔濫轢쉥瞳 %d롸爐빈역迦!"
-						CClientManager::instance().SendNotice("%s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC4\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xD5\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD3\xBA\xEF\xBF\xBD\xCA\xBC!", r_1.szName, r_2.szName, iMin);
+						CClientManager::instance().SendNotice("The war between guild %s and guild %s will begin in approximately %d minutes!", r_1.szName, r_2.szName, iMin);
 				}
 			}
 		}
diff --git a/src/game/src/BattleArena.cpp b/src/game/src/BattleArena.cpp
index e7cfed9..2752239 100644
--- a/src/game/src/BattleArena.cpp
+++ b/src/game/src/BattleArena.cpp
@@ -102,14 +102,14 @@ EVENTFUNC(battle_arena_event)
 			case 0:
 				{
 					++pInfo->state;
-					BroadcastNotice(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xC7 \xB0\xF8\xB0\xDD\xB1\xEE\xC1\xF6 5\xBA\xD0 \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9!!!"));
+					BroadcastNotice(LC_TEXT("Five minutes until the monsters attack!!!"));
 				}
 				return test_server ? PASSES_PER_SEC(60) : PASSES_PER_SEC(60*4);
 
 			case 1:
 				{
 					++pInfo->state;
-					BroadcastNotice(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xC7 \xB0\xF8\xB0\xDD\xB1\xEE\xC1\xF6 1\xBA\xD0 \xB3\xB2\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9!!!"));
+					BroadcastNotice(LC_TEXT("One minute left until the monsters attack!!!"));
 				}
 				return test_server ? PASSES_PER_SEC(10) : PASSES_PER_SEC(60);
 
@@ -119,7 +119,7 @@ EVENTFUNC(battle_arena_event)
 					pInfo->wait_count = 0;
 
 					quest::CQuestManager::instance().RequestSetEventFlag("battle_arena", 0);
-					BroadcastNotice(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xBC\xBA\xC0\xBB \xB0\xF8\xB0\xDD\xC7\xCF\xB1\xE2 \xBD\xC3\xC0\xDB\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."));
+					BroadcastNotice(LC_TEXT("Monsters have started attacking your castle."));
 
 					LPSECTREE_MAP sectree = SECTREE_MANAGER::instance().GetMap(pInfo->nMapIndex);
 
@@ -141,7 +141,7 @@ EVENTFUNC(battle_arena_event)
 					if ( SECTREE_MANAGER::instance().GetMonsterCountInMap(pInfo->nMapIndex) <= 0 )
 					{
 						pInfo->state = 6;
-						SendNoticeMap(LC_TEXT("\xC1\xDF\xBE\xD3 \xC1\xA6\xB4\xDC\xBF\xA1 \xBE\xC7\xC0\xC7 \xB1\xE2\xBF\xEE\xC0\xCC \xB8\xF0\xBF\xA9\xB5\xEC\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("Evil energy gathers at the center altar."), pInfo->nMapIndex, false);
 					}
 					else
 					{
@@ -150,7 +150,7 @@ EVENTFUNC(battle_arena_event)
 						if ( pInfo->wait_count >= 5 )
 						{
 							pInfo->state++;
-							SendNoticeMap(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xB9\xB0\xB7\xAF\xB0\xA5 \xC1\xB6\xC1\xFC\xC0\xBB \xBA\xB8\xC0\xD4\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+							SendNoticeMap(LC_TEXT("The monsters are showing signs of retreating."), pInfo->nMapIndex, false);
 						}
 						else
 						{
@@ -163,8 +163,8 @@ EVENTFUNC(battle_arena_event)
 			case 4 :
 				{
 					pInfo->state++;
-					SendNoticeMap(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xB9\xB0\xB7\xAF\xB0\xA1\xB1\xE2 \xBD\xC3\xC0\xDB\xC7\xDF\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
-					SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3 \xC8\xC4 \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("The monsters began to retreat."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("After a while, you'll return to the village."), pInfo->nMapIndex, false);
 
 					SECTREE_MANAGER::instance().PurgeMonstersInMap(pInfo->nMapIndex);
 				}
@@ -189,8 +189,8 @@ EVENTFUNC(battle_arena_event)
 					pInfo->state++;
 					pInfo->wait_count = 0;
 
-					SendNoticeMap(LC_TEXT("\xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xC7 \xB4\xEB\xC0\xE5\xC0\xCC \xB3\xAA\xC5\xB8\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
-					SendNoticeMap(LC_TEXT("30\xBA\xD0 \xB3\xBB\xB7\xCE \xB1\xCD\xB8\xF1\xB7\xC9\xC1\xD6\xB8\xA6 \xB9\xB0\xB8\xAE\xC3\xC4\xC1\xD6\xBC\xBC\xBF\xE4."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("The monster boss has appeared."), pInfo->nMapIndex, false);
+					SendNoticeMap(LC_TEXT("You have 30 minutes to defeat the boss."), pInfo->nMapIndex, false);
 
 					CBattleArena::instance().SpawnLastBoss();
 				}
@@ -200,8 +200,8 @@ EVENTFUNC(battle_arena_event)
 				{
 					if ( SECTREE_MANAGER::instance().GetMonsterCountInMap(pInfo->nMapIndex) <= 0 )
 					{
-						SendNoticeMap(LC_TEXT("\xB1\xCD\xB8\xF1\xB7\xC9\xC1\xD6\xBF\xCD \xB1\xD7\xC0\xC7 \xBA\xCE\xC7\xCF\xB5\xE9\xC0\xBB \xB8\xF0\xB5\xCE \xB9\xB0\xB8\xAE\xC3\xC6\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
-						SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3 \xC8\xC4 \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("You have defeated the boss and all of his minions."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("After a while, you'll return to the village."), pInfo->nMapIndex, false);
 
 						pInfo->state = 5;
 
@@ -212,8 +212,8 @@ EVENTFUNC(battle_arena_event)
 
 					if ( pInfo->wait_count >= 6 )
 					{
-						SendNoticeMap(LC_TEXT("\xB1\xCD\xB8\xF1\xB7\xC9\xC1\xD6\xB0\xA1 \xC5\xF0\xB0\xA2\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
-						SendNoticeMap(LC_TEXT("\xC0\xE1\xBD\xC3 \xC8\xC4 \xB8\xB6\xC0\xBB\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA9\xB4\xCF\xB4\xD9."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("The monsters have retreated."), pInfo->nMapIndex, false);
+						SendNoticeMap(LC_TEXT("After a while, you'll return to the village."), pInfo->nMapIndex, false);
 
 						SECTREE_MANAGER::instance().PurgeMonstersInMap(pInfo->nMapIndex);
 						SECTREE_MANAGER::instance().PurgeStonesInMap(pInfo->nMapIndex);
@@ -243,9 +243,9 @@ bool CBattleArena::Start(int nEmpire)
 	m_nEmpire = nEmpire;
 
 	char szBuf[1024];
-	snprintf(szBuf, sizeof(szBuf), LC_TEXT("%s\xC0\xC7 \xBC\xBA\xC0\xB8\xB7\xCE \xB8\xF3\xBD\xBA\xC5\xCD\xB5\xE9\xC0\xCC \xC1\xF8\xB1\xBA\xC7\xCF\xB0\xED \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."), EMPIRE_NAME(m_nEmpire));
+	snprintf(szBuf, sizeof(szBuf), LC_TEXT("Monsters are marching on %s's castle."), EMPIRE_NAME(m_nEmpire));
 	BroadcastNotice(szBuf);
-	BroadcastNotice(LC_TEXT("10\xBA\xD0 \xB5\xDA \xBC\xBA\xC0\xBB \xB0\xF8\xB0\xDD\xC7\xD2 \xBF\xB9\xC1\xA4\xC0\xD4\xB4\xCF\xB4\xD9."));
+	BroadcastNotice(LC_TEXT("We will attack the castle in 10 minutes."));
 
 	if (m_pEvent != NULL) {
 		event_cancel(&m_pEvent);
diff --git a/src/game/src/auction_manager.cpp b/src/game/src/auction_manager.cpp
index 801a657..03cbff7 100644
--- a/src/game/src/auction_manager.cpp
+++ b/src/game/src/auction_manager.cpp
@@ -881,21 +881,21 @@ void AuctionManager::enroll_auction (LPCHARACTER ch, LPITEM item, BYTE empire, i
 	}
 	if (item->IsEquipped())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xE5\xC2\xF8\xC7\xD1 \xB0\xC7 \xB5\xEE\xB7\xCF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBE\xEE.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I can't register anything that's equipped.");
 		return;
 	}
 
 	if (GetAuctionItemInfo (item->GetID()))
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB5\xEE\xB7\xCF\xC7\xD1 \xB0\xC5\xBE\xDF. \xB5\xB5\xB4\xEB\xC3\xBC \xB9\xB9\xC1\xF6?");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I'm already registered. What the heck?");
 		return;
 	}
 
 	if (item->GetWindow() == AUCTION)
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xBE\xEB \xB6\xC7 \xB9\xB9\xB3\xC4..");
+		ch->ChatPacket(CHAT_TYPE_INFO, "What the hell is this...");
 		return;
 	}
 
@@ -918,21 +918,21 @@ void AuctionManager::enroll_sale (LPCHARACTER ch, LPITEM item, DWORD wisher_id,
 	}
 	if (item->IsEquipped())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xE5\xC2\xF8\xC7\xD1 \xB0\xC7 \xB5\xEE\xB7\xCF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBE\xEE.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I can't register anything that's equipped.");
 		return;
 	}
 
 	if (GetSaleItemInfo (item->GetID()))
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xCC\xB9\xCC \xB5\xEE\xB7\xCF\xC7\xD1 \xB0\xC5\xBE\xDF. \xB5\xB5\xB4\xEB\xC3\xBC \xB9\xB9\xC1\xF6?");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I'm already registered. What the heck?");
 		return;
 	}
 
 	if (item->GetWindow() == AUCTION)
 	{
 		SPDLOG_ERROR("Item {} is already in auction.", item->GetID());
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xBE\xEB \xB6\xC7 \xB9\xB9\xB3\xC4..");
+		ch->ChatPacket(CHAT_TYPE_INFO, "What the hell is this...");
 		return;
 	}
 
@@ -959,11 +959,11 @@ void AuctionManager::bid (LPCHARACTER ch, DWORD item_id, int bid_price)
 	std::pair  mb = MyBid.GetMoney(ch->GetPlayerID(), item_id);
 	if (mb.first != -1)
 	{
-		ch->ChatPacket (CHAT_TYPE_INFO, "\xC0\xE7\xC0\xD4\xC2\xFB\xC0\xBB \xC7\xCF\xB6\xF5 \xB8\xBB\xC0\xCC\xB4\xD9.");
+		ch->ChatPacket (CHAT_TYPE_INFO, "Re-bid.");
 	}
 	if (ch->GetGold() < bid_price)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD8");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I don't have enough money");
 		return;
 	}
 
@@ -988,13 +988,13 @@ void AuctionManager::immediate_purchase (LPCHARACTER ch, DWORD item_id)
 
 	if (item_info->get_impur_price() == 0)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC1\xEF\xB1\xB8 \xC7\xD2 \xBC\xF6 \xBE\xF6\xBC\xAD");
+		ch->ChatPacket(CHAT_TYPE_INFO, "Improvisation");
 		return;
 	}
 
 	if (ch->GetGold() < item_info->get_impur_price())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD8");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I don't have enough money");
 		return;
 	}
 
@@ -1013,7 +1013,7 @@ void AuctionManager::get_auctioned_item (LPCHARACTER ch, DWORD item_id, DWORD it
 
 	if (pos == -1)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xDA\xB8\xAE\xB0\xA1 \xBE\xF6\xBC\xAD");
+		ch->ChatPacket(CHAT_TYPE_INFO, "Tight Spot");
 		return;
 	}
 
@@ -1069,13 +1069,13 @@ void AuctionManager::rebid (LPCHARACTER ch, DWORD item_id, int bid_price)
 	
 	if (lock)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xD4\xC2\xFB \xC1\xDF\xC0\xCC\xBE\xDF.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "You're bidding.");
 		return;
 	}
 
 	if (ch->GetGold() + money < bid_price)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD8");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I don't have enough money");
 		return;
 	}
 
@@ -1101,14 +1101,14 @@ void AuctionManager::bid_cancel (LPCHARACTER ch, DWORD item_id)
 	
 	if (lock)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xD4\xC2\xFB \xC1\xDF\xC0\xCC\xBE\xDF.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "You're bidding.");
 		return;
 	}
 
 	TAuctionItemInfo* item_info = GetAuctionItemInfo(item_id);
 	if (item_info->get_bidder_id() == ch->GetPlayerID())
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xB4\xCF\xB0\xA1 \xC3\xD6\xB0\xED \xC0\xD4\xC2\xFB\xC0\xDA\xBE\xDF. \xC3\xEB\xBC\xD2 \xB8\xF8\xC7\xD8.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "You're the highest bidder. I can't cancel.");
 		return;
 	}
 
@@ -1142,7 +1142,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 				Auction.InsertItemInfo (item_info);
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xE6\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xDF\xBE\xEE.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "You've registered for the auction.");
 				}
 				break;
 			}
@@ -1157,7 +1157,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 					LPCHARACTER ch = CHARACTER_MANAGER::instance().FindByPID (player_item->owner);
 
 					ch->AutoGiveItem (item, true);
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xE6\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xDF\xBE\xEE.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "Failed to register for the auction house.");
 				}
 				break;
 			}
@@ -1179,7 +1179,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 				Sale.InsertItemInfo (item_info);
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xC6\xC7\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xDF\xBE\xEE.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "You've signed up for a storefront.");
 				}
 				break;
 			}
@@ -1193,7 +1193,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 
 
 					ch->AutoGiveItem (item, true);
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xC6\xC7\xB8\xC5\xC0\xE5\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xDF\xBE\xEE.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "Failed to enroll in a storefront.");
 				}
 				break;
 			}
@@ -1210,7 +1210,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 				Wish.InsertItemInfo (item_info);
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xBB\xF0\xB4\xCF\xB4\xD9\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xDF\xBE\xEE.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "Signed Up.");
 				}
 				break;
 			}
@@ -1218,7 +1218,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			{
 				if (ch != NULL)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, "\xBB\xF0\xB4\xCF\xB4\xD9\xBF\xA1 \xB5\xEE\xB7\xCF\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xDF\xBE\xEE.");
+					ch->ChatPacket(CHAT_TYPE_INFO, "Failed to sign up.");
 				}
 				break;
 			}
@@ -1238,7 +1238,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			MyBid.Insert(new_item_info->bidder_id, new_item_info->item_id, new_item_info->get_bid_price());
 			if (ch != NULL)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xD4\xC2\xFB\xC7\xDF\xBE\xEE.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "You bid.");
 			}
 		}
 		break;
@@ -1254,7 +1254,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			memcpy (old_item_info, new_item_info, sizeof(TAuctionItemInfo));
 			if (ch != NULL)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, "\xC1\xEF\xB1\xB8 \xC7\xD8\xB9\xF6\xB7\xC8\xBE\xEE.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "I improvised.");
 			}
 		}
 		break;
@@ -1277,7 +1277,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			{
 				LPITEM item = ITEM_MANAGER::instance().CreateItem(player_item->vnum, player_item->count, item_id);
 				ch->AutoGiveItem (item, true);
-				ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xA1\xC1\xAE\xBF\xD4\xBE\xEE.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "Imported.");
 				if (cmd == AUCTION_GET_AUC || cmd == AUCTION_CANCEL_AUC)
 				{
 					TPacketGDCommnadAuction pack_dai;
@@ -1337,7 +1337,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc
 			}
 			else if (ch != NULL)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, "\xC3\xEB\xBC\xD2\xC7\xDF\xBE\xEE.");
+				ch->ChatPacket(CHAT_TYPE_INFO, "Canceled.");
 			}
 		}
 		break;
diff --git a/src/game/src/char_battle.cpp b/src/game/src/char_battle.cpp
index b1339e8..c91f6ac 100644
--- a/src/game/src/char_battle.cpp
+++ b/src/game/src/char_battle.cpp
@@ -1792,8 +1792,8 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			{
 				if (test_server)
 				{
-					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBA\xED\xB7\xB0! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xBA\xED\xB7\xB0! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
+					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Block! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Block! (%d%%)"), GetName(), GetPoint(POINT_BLOCK));
 				}
 
 				SendDamagePacket(pAttacker, 0, DAMAGE_BLOCK);
@@ -1807,8 +1807,8 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 			{
 				if (test_server)
 				{
-					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xC8\xB8\xC7\xC7! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xC8\xB8\xC7\xC7! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
+					pAttacker->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Miss! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Miss! (%d%%)"), GetName(), GetPoint(POINT_DODGE));
 				}
 
 				SendDamagePacket(pAttacker, 0, DAMAGE_DODGE);
@@ -2260,7 +2260,7 @@ bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // retu
 
 		if (m_bDetailLog)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s[%d]\xB0\xA1 \xB0\xF8\xB0\xDD \xC0\xA7\xC4\xA1: %d %d"), pAttacker->GetName(), (DWORD) pAttacker->GetVID(), pAttacker->GetX(), pAttacker->GetY());
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s[%d]attack location: %d %d"), pAttacker->GetName(), (DWORD) pAttacker->GetVID(), pAttacker->GetX(), pAttacker->GetY());
 		}
 	}
 
@@ -3187,7 +3187,7 @@ void CHARACTER::SetVictim(LPCHARACTER pkVictim)
 	if (!pkVictim)
 	{
 		if (0 != (DWORD)m_kVIDVictim)
-			MonsterLog("\xB0\xF8\xB0\xDD \xB4\xEB\xBB\xF3\xC0\xBB \xC7\xD8\xC1\xA6");
+			MonsterLog("Disable the attack target");
 
 		m_kVIDVictim.Reset();
 		battle_end(this);
@@ -3195,7 +3195,7 @@ void CHARACTER::SetVictim(LPCHARACTER pkVictim)
 	else
 	{
 		if (m_kVIDVictim != pkVictim->GetVID())
-			MonsterLog("\xB0\xF8\xB0\xDD \xB4\xEB\xBB\xF3\xC0\xBB \xBC\xB3\xC1\xA4: %s", pkVictim->GetName());
+			MonsterLog("Set the attack target: %s", pkVictim->GetName());
 
 		m_kVIDVictim = pkVictim->GetVID();
 		m_dwLastVictimSetTime = get_dword_time();
diff --git a/src/game/src/char_dragonsoul.cpp b/src/game/src/char_dragonsoul.cpp
index 7bf7b6b..f76967c 100644
--- a/src/game/src/char_dragonsoul.cpp
+++ b/src/game/src/char_dragonsoul.cpp
@@ -73,7 +73,7 @@ bool CHARACTER::DragonSoul_ActivateDeck(int deck_idx)
 
 	if (!DragonSoul_IsQualified())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xEB\xC8\xA5\xBC\xAE \xBB\xF3\xC0\xDA\xB0\xA1 \xC8\xB0\xBC\xBA\xC8\xAD\xB5\xC7\xC1\xF6 \xBE\xCA\xBE\xD2\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Dragon Soul Alchemy is not active"));
 		return false;
 	}
 
@@ -142,4 +142,4 @@ bool CHARACTER::DragonSoul_RefineWindow_Close()
 bool CHARACTER::DragonSoul_RefineWindow_CanRefine()
 {
 	return NULL != m_pointsInstant.m_pDragonSoulRefineWindowOpener;
-}
\ No newline at end of file
+}
diff --git a/src/game/src/char_horse.cpp b/src/game/src/char_horse.cpp
index bf39b18..05317a7 100644
--- a/src/game/src/char_horse.cpp
+++ b/src/game/src/char_horse.cpp
@@ -17,7 +17,7 @@ bool CHARACTER::StartRiding()
 {
 	if (IsDead() == true)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xB2\xB7\xAF\xC1\xF8 \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB8\xBB\xBF\xA1 \xC5\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot ride a Horse while downed."));
 		return false;
 	}
 	
@@ -343,7 +343,7 @@ STM
 		{
 			ChatPacket(CHAT_TYPE_COMMAND, "horse_state %d %d %d", GetHorseLevel(), iHealthGrade, iStaminaGrade);
 
-			// FIX : 클라이언트에 "\xB8\xBB \xBB\xF3\xC5\xC2 \xB9\xF6\xC7\xC1" 아이콘을 표시하지 않을 목적으로 함수 초입에 return함으로써 아래 코드를 무시한다면
+			// FIX : 클라이언트에 "말 상태 버프" 아이콘을 표시하지 않을 목적으로 함수 초입에 return함으로써 아래 코드를 무시한다면
 			// 말을 무한대로 소환하는 무시무시한 버그가 생김.. 정확한 원인은 파악 안해봐서 모름.
 			m_bSendHorseLevel = GetHorseLevel();
 			m_bSendHorseHealthGrade = iHealthGrade;

From dfb3d08998ed56ecb0199e7edc8ade9039f49e72 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 12:50:34 +0200
Subject: [PATCH 16/21] manual translation of non-localized strings

---
 src/game/src/char_item.cpp  | 68 ++++++++++++++++++-------------------
 src/game/src/char_skill.cpp |  6 ++--
 src/game/src/char_state.cpp | 12 +++----
 3 files changed, 43 insertions(+), 43 deletions(-)

diff --git a/src/game/src/char_item.cpp b/src/game/src/char_item.cpp
index 2fbf426..3b149c8 100644
--- a/src/game/src/char_item.cpp
+++ b/src/game/src/char_item.cpp
@@ -1052,7 +1052,7 @@ bool CHARACTER::DoRefineWithScroll(LPITEM item)
 	{
 		if (item->GetType() != ITEM_METIN || item->GetRefineLevel() != 4)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't improve with this item."));
 			return false;
 		}
 	}
@@ -1862,7 +1862,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xC0\xCE \xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xF6\xBF\xAA\xC0\xD4\xB4\xCF\xB4\xD9"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't open a personal shop in this region"));
 											}
 										}
 										else
@@ -2030,7 +2030,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 				{
 					if (GetLevel() < 15)
 					{
-						ChatPacket(CHAT_TYPE_INFO, "15\xB7\xB9\xBA\xA7 \xC0\xCC\xC7\xCF\xBF\xA1\xBC\xAD\xB4\xC2 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9.");
+						ChatPacket(CHAT_TYPE_INFO, "Not available at level 15 and below.");
 						return false;
 					}
 				}
@@ -2116,7 +2116,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 			{
 				if (IsPolymorphed())
 				{
-					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 					return false;
 				}
 
@@ -2371,7 +2371,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										sprintf(buf, "Inc %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									}
 
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC3\xCA \xB8\xB8\xC5\xAD \xC3\xE6\xC0\xFC\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), ret);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Charged for %d seconds."), ret);
 									item->SetCount(item->GetCount() - 1);
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_SUCCESS", buf);
 									return true;
@@ -2387,7 +2387,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 										sprintf(buf, "No change by item{VN:%d VAL%d:%d}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									}
 
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xE6\xC0\xFC\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Unable to charge."));
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_FAILED", buf);
 									return false;
 								}
@@ -2410,7 +2410,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								char buf[128];
 								if (ret)
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%d\xC3\xCA \xB8\xB8\xC5\xAD \xC3\xE6\xC0\xFC\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9."), ret);
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Charged for %d seconds."), ret);
 									sprintf(buf, "Increase %ds by item{VN:%d VAL%d:%d}", ret, item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_SUCCESS", buf);
 									item->SetCount(item->GetCount() - 1);
@@ -2418,7 +2418,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								else
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xE6\xC0\xFC\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Unable to charge."));
 									sprintf(buf, "No change by item{VN:%d VAL%d:%d}", item->GetVnum(), ITEM_VALUE_CHARGING_AMOUNT_IDX, item->GetValue(ITEM_VALUE_CHARGING_AMOUNT_IDX));
 									LogManager::instance().ItemLog(this, item, "DS_CHARGING_FAILED", buf);
 									return false;
@@ -2905,12 +2905,12 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA8\xC1\xF6\xB1\xE2\xB8\xA6 \xC0\xDB\xBF\xEB\xC7\xCF\xBF\xB4\xC0\xB8\xB3\xAA \xB0\xA8\xC1\xF6\xB5\xC7\xB4\xC2 \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You triggered the detector, but no stones were detected."));
 											}
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xA8\xC1\xF6\xB1\xE2\xB8\xA6 \xC0\xDB\xBF\xEB\xC7\xCF\xBF\xB4\xC0\xB8\xB3\xAA \xB0\xA8\xC1\xF6\xB5\xC7\xB4\xC2 \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You triggered the detector, but no stones were detected."));
 										}
 
 										if (item->GetSocket(0) >= 6)
@@ -3020,7 +3020,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									}
 									else
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xB3\xC0\xCE \xBB\xF3\xC1\xA1\xC0\xBB \xBF\xAD \xBC\xF6 \xBE\xF8\xB4\xC2 \xC1\xF6\xBF\xAA\xC0\xD4\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't open a personal shop in this region"));
 									}
 								}
 								else
@@ -3076,7 +3076,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 										return false;
 										
 									}
@@ -3117,7 +3117,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 										return false;
 										
 									}
@@ -3145,7 +3145,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 										return false;
 										
 									}
@@ -3249,7 +3249,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 										return false;
 										
 									}
@@ -3291,7 +3291,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 										return false;
 										
 									}
@@ -3321,7 +3321,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								{
 									if (IsPolymorphed())
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBA\xAF\xBD\xC5\xC1\xDF\xBF\xA1\xB4\xC2 \xC3\xA5\xC0\xBB \xC0\xD0\xC0\xBB\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't read while transformed."));
 										return false;
 										
 									}
@@ -3410,18 +3410,18 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 									{
 										if (test_server == false)
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not yet available."));
 											return false;
 										}
 										else
 										{
-											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC5\xD7\xBD\xBA\xC6\xAE \xBC\xAD\xB9\xF6 \xBD\xC3\xB0\xA3\xC1\xA6\xC7\xD1 \xC5\xEB\xB0\xFA"));
+											ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Passed the test server timeout"));
 										}
 									}
 									
 									if (GetAlignment() == 200000)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xB1\xBE\xC7\xC4\xA1\xB8\xA6 \xB4\xF5 \xC0\xCC\xBB\xF3 \xBF\xC3\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can no longer raise your rank points."));
 										return false;
 									}
 									
@@ -3470,7 +3470,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 											case ARMOR_EAR:
 											case ARMOR_WRIST:
 											case ARMOR_NECK:
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xA9\xB3\xBE \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There are no stones to remove"));
 												return false;
 											}
 											break;
@@ -3497,7 +3497,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (socket.size() == 0)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xA9\xB3\xBE \xBF\xB5\xBC\xAE\xC0\xCC \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There are no stones to remove"));
 										return false;
 									}
 
@@ -4055,7 +4055,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 
 									if (get_global_time() - last_use_time < 10*60)
 									{
-										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+										ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Not yet available."));
 										return false;
 									}
 
@@ -4410,7 +4410,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 	
 							if (item2->GetVnum() >= 28330 && item2->GetVnum() <= 28343) // 영석+3
 							{
-								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("+3 \xBF\xB5\xBC\xAE\xC0\xBA \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+								ChatPacket(CHAT_TYPE_INFO, LC_TEXT("+3 Spirit Stones cannot be improved with this item"));
 								return false;
 							}
 							
@@ -4422,7 +4422,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 								}
 								else
 								{
-									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBF\xB5\xBC\xAE\xC0\xBA \xC0\xCC \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xB8\xB7\xCE \xB0\xB3\xB7\xAE\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"));
+									ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Spirit Stones cannot be improved with this item"));
 								}
 							}
 							else
@@ -4588,13 +4588,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 												}
 												if (false == bCanUse)
 												{
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xBF\xEB \xB7\xB9\xBA\xA7\xBA\xB8\xB4\xD9 \xB3\xF4\xBE\xC6 \xBB\xE7\xBF\xEB\xC0\xCC \xBA\xD2\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The item is of too high level and cannot be used with this."));
 													break;
 												}
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB1\xE2\xBF\xCD \xB0\xA9\xBF\xCA\xBF\xA1\xB8\xB8 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Only available for weapons and armor."));
 												break;
 											}
 										}
@@ -4638,13 +4638,13 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell)
 												}
 												if (false == bCanUse)
 												{
-													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xFB\xBF\xEB \xB7\xB9\xBA\xA7\xBA\xB8\xB4\xD9 \xB3\xF4\xBE\xC6 \xBB\xE7\xBF\xEB\xC0\xCC \xBA\xD2\xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+													ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The item is of too high level and cannot be used with this."));
 													break;
 												}
 											}
 											else
 											{
-												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB9\xAB\xB1\xE2\xBF\xCD \xB0\xA9\xBF\xCA\xBF\xA1\xB8\xB8 \xBB\xE7\xBF\xEB \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+												ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Only available for weapons and armor."));
 												break;
 											}
 										}
@@ -5408,7 +5408,7 @@ bool CHARACTER::DropGold(int gold)
 	{
 		if (get_dword_time() < m_dwLastGoldDropTime+g_GoldDropTimeLimitValue)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBE\xC6\xC1\xF7 \xB0\xF1\xB5\xE5\xB8\xA6 \xB9\xF6\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't drop gold yet."));
 			return false;
 		}
 	}
@@ -5445,12 +5445,12 @@ bool CHARACTER::DropGold(int gold)
 			if (false == LC_IsBrazil())
 			{
 				item->StartDestroyEvent(150);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB6\xB3\xBE\xEE\xC1\xF8 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA %d\xBA\xD0 \xC8\xC4 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."), 150/60);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in %d minutes."), 150/60);
 			}
 			else
 			{
 				item->StartDestroyEvent(60);
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB6\xB3\xBE\xEE\xC1\xF8 \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA %d\xBA\xD0 \xC8\xC4 \xBB\xE7\xB6\xF3\xC1\xFD\xB4\xCF\xB4\xD9."), 1);
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The dropped item will vanish in %d minutes."), 1);
 			}
 		}
 
@@ -6033,7 +6033,7 @@ bool CHARACTER::EquipItem(LPITEM item, int iCandidateCell)
 	// 무언가를 탄 상태에서 턱시도 입기 금지
 	if (iWearCell == WEAR_BODY && IsRiding() && (item->GetVnum() >= 11901 && item->GetVnum() <= 11904))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xBB\xC0\xBB \xC5\xBA \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD \xBF\xB9\xBA\xB9\xC0\xBB \xC0\xD4\xC0\xBB \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't wear this while on horseback."));
 		return false;
 	}
 
@@ -7106,7 +7106,7 @@ bool CHARACTER::ItemProcess_Polymorph(LPITEM item)
 
 	if (true == IsRiding())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB5\xD0\xB0\xA9\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't transform while riding a horse."));
 		return false;
 	}
 
diff --git a/src/game/src/char_skill.cpp b/src/game/src/char_skill.cpp
index 8494a9e..bdbdcf5 100644
--- a/src/game/src/char_skill.cpp
+++ b/src/game/src/char_skill.cpp
@@ -1178,7 +1178,7 @@ struct FuncSplashDamage
 
 		if (test_server && iAmount == 0 && m_pkSk->bPointOn != POINT_NONE)
 		{
-			m_pkChr->ChatPacket(CHAT_TYPE_INFO, "\xC8\xBF\xB0\xFA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xBA\xC5\xB3 \xB0\xF8\xBD\xC4\xC0\xBB \xC8\xAE\xC0\xCE\xC7\xCF\xBC\xBC\xBF\xE4");
+			m_pkChr->ChatPacket(CHAT_TYPE_INFO, "Not working, check the skill formula");
 		}
 		////////////////////////////////////////////////////////////////////////////////
 		iAmount = -iAmount;
@@ -1754,7 +1754,7 @@ int CHARACTER::ComputeSkillAtPosition(DWORD dwVnum, const PIXEL_POSITION& posTar
 
 	if (test_server && iAmount == 0 && pkSk->bPointOn != POINT_NONE)
 	{
-		ChatPacket(CHAT_TYPE_INFO, "\xC8\xBF\xB0\xFA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xBA\xC5\xB3 \xB0\xF8\xBD\xC4\xC0\xBB \xC8\xAE\xC0\xCE\xC7\xCF\xBC\xBC\xBF\xE4");
+		ChatPacket(CHAT_TYPE_INFO, "Not working, check the skill formula");
 	}
 
 	if (IS_SET(pkSk->dwFlag, SKILL_FLAG_REMOVE_BAD_AFFECT))
@@ -2093,7 +2093,7 @@ int CHARACTER::ComputeSkill(DWORD dwVnum, LPCHARACTER pkVictim, BYTE bSkillLevel
 
 	if (test_server && iAmount == 0 && pkSk->bPointOn != POINT_NONE)
 	{
-		ChatPacket(CHAT_TYPE_INFO, "\xC8\xBF\xB0\xFA\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9. \xBD\xBA\xC5\xB3 \xB0\xF8\xBD\xC4\xC0\xBB \xC8\xAE\xC0\xCE\xC7\xCF\xBC\xBC\xBF\xE4");
+		ChatPacket(CHAT_TYPE_INFO, "Not working, check the skill formula");
 	}
 	// END_OF_ADD_GRANDMASTER_SKILL
 
diff --git a/src/game/src/char_state.cpp b/src/game/src/char_state.cpp
index 7f38387..38e8310 100644
--- a/src/game/src/char_state.cpp
+++ b/src/game/src/char_state.cpp
@@ -690,7 +690,7 @@ void CHARACTER::__StateIdle_Monster()
 		{
 			if (Follow(pkChrProtege, Random::get(150, 400)))
 			{
-				MonsterLog("[IDLE] \xB8\xAE\xB4\xF5\xB7\xCE\xBA\xCE\xC5\xCD \xB3\xCA\xB9\xAB \xB8\xD6\xB8\xAE \xB6\xB3\xBE\xEE\xC1\xB3\xB4\xD9! \xBA\xB9\xB1\xCD\xC7\xD1\xB4\xD9.");
+				MonsterLog("[IDLE] You're too far from the leader! Return to the leader.");
 				return;
 			}
 		}
@@ -877,7 +877,7 @@ void CHARACTER::StateMove()
 	{
 		if (IsPC())
 		{
-			SPDLOG_DEBUG("\xB5\xB5\xC2\xF8 {} {} {}", GetName(), x, y);
+			SPDLOG_DEBUG("Arrival {} {} {}", GetName(), x, y);
 			GotoState(m_stateIdle);
 			StopStaminaConsume();
 		}
@@ -886,7 +886,7 @@ void CHARACTER::StateMove()
 			if (GetVictim() && !IsCoward())
 			{
 				if (!IsState(m_stateBattle))
-					MonsterLog("[BATTLE] \xB1\xD9\xC3\xB3\xBF\xA1 \xBF\xD4\xC0\xB8\xB4\xCF \xB0\xF8\xB0\xDD\xBD\xC3\xC0\xDB %s", GetVictim()->GetName());
+					MonsterLog("[BATTLE] Now that you're nearby, start attacking %s", GetVictim()->GetName());
 
 				GotoState(m_stateBattle);
 				m_dwStateDuration = 1;
@@ -894,7 +894,7 @@ void CHARACTER::StateMove()
 			else
 			{
 				if (!IsState(m_stateIdle))
-					MonsterLog("[IDLE] \xB4\xEB\xBB\xF3\xC0\xCC \xBE\xF8\xC0\xB8\xB4\xCF \xBD\xAC\xC0\xDA");
+					MonsterLog("[IDLE] No target, let's take a break");
 
 				GotoState(m_stateIdle);
 
@@ -1014,7 +1014,7 @@ void CHARACTER::StateBattle()
 
 		if (bPct && pParty->CountMemberByVnum(GetSummonVnum()) < SUMMON_MONSTER_COUNT)
 		{
-			MonsterLog("\xBA\xCE\xC7\xCF \xB8\xF3\xBD\xBA\xC5\xCD \xBC\xD2\xC8\xAF!");
+			MonsterLog("Summon Subordinate Monsters!");
 			// 모자라는 녀석을 불러내 채웁시다.
 			int sx = GetX() - 300;
 			int sy = GetY() - 300;
@@ -1037,7 +1037,7 @@ void CHARACTER::StateBattle()
 
 	if (fDist >= 4000.0f)   // 40미터 이상 멀어지면 포기
 	{
-		MonsterLog("\xC5\xB8\xB0\xD9\xC0\xCC \xB8\xD6\xBE\xEE\xBC\xAD \xC6\xF7\xB1\xE2");
+		MonsterLog("Give up because the target is far away");
 		SetVictim(NULL);
 
 		// 보호할 것(돌, 파티장) 주변으로 간다.

From 8fede9a1df452ac9c23d7f7395a60c57774e644c Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 17:28:22 +0200
Subject: [PATCH 17/21] manual translation of non-localized strings

---
 src/game/src/DragonLair.cpp               |   4 +-
 src/game/src/char.cpp                     | 166 +++++++++++-----------
 src/game/src/cmd.cpp                      |   3 +-
 src/game/src/cmd_general.cpp              |  50 +++----
 src/game/src/cmd_gm.cpp                   |  10 +-
 src/game/src/cube.cpp                     |   2 +-
 src/game/src/guild.cpp                    |  16 +--
 src/game/src/input_db.cpp                 |   2 +-
 src/game/src/input_login.cpp              |   6 +-
 src/game/src/input_main.cpp               |  12 +-
 src/game/src/input_teen.cpp               |  32 ++---
 src/game/src/item.cpp                     |   4 +-
 src/game/src/item_manager.cpp             |   4 +-
 src/game/src/item_manager_read_tables.cpp |   1 +
 src/game/src/messenger_manager.cpp        |   2 +-
 src/game/src/monarch.cpp                  |   4 +-
 src/game/src/questlua_monarch.cpp         |  42 +++---
 src/game/src/questlua_pc.cpp              |   6 +-
 src/game/src/shop_manager.cpp             |   2 +-
 19 files changed, 185 insertions(+), 183 deletions(-)

diff --git a/src/game/src/DragonLair.cpp b/src/game/src/DragonLair.cpp
index 1ec3659..2769b1f 100644
--- a/src/game/src/DragonLair.cpp
+++ b/src/game/src/DragonLair.cpp
@@ -91,7 +91,7 @@ EVENTFUNC( DragonLair_Collapse_Event )
 	if (0 == pInfo->step)
 	{
 		char buf[512];
-		snprintf(buf, 512, LC_TEXT("\xBF\xEB\xB0\xA1\xB8\xAE\xB0\xA1 %d \xC3\xCA\xB8\xB8\xBF\xA1 \xC1\xD7\xBE\xEE\xBD\xE1\xC8\xBF\xA4\xD0\xA4\xD0"), pInfo->pLair->GetEstimatedTime());
+		snprintf(buf, 512, LC_TEXT("Dragon died in %d seconds."), pInfo->pLair->GetEstimatedTime());
 		SendNoticeMap(buf, pInfo->InstanceMapIndex, true);
 
 		pInfo->step++;
@@ -146,7 +146,7 @@ DWORD CDragonLair::GetEstimatedTime() const
 
 void CDragonLair::OnDragonDead(LPCHARACTER pDragon)
 {
-	SPDLOG_DEBUG("DragonLair: \xB5\xB5\xB6\xF3\xB0\xEF\xC0\xCC \xC1\xD7\xBE\xEE\xBD\xE1\xC8\xBF");
+	SPDLOG_DEBUG("DragonLair: Dragon is dead and stale");
 
 	LogManager::instance().DragonSlayLog(  GuildID_, pDragon->GetMobTable().dwVnum, StartTime_, get_global_time() );
 }
diff --git a/src/game/src/char.cpp b/src/game/src/char.cpp
index a8b6cdc..1fd2070 100644
--- a/src/game/src/char.cpp
+++ b/src/game/src/char.cpp
@@ -554,7 +554,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 {
 	if (GetPart(PART_MAIN) > 2)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can only open the shop if you take off your armour."));
 		return;
 	}
 
@@ -586,7 +586,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	if (GOLD_MAX <= nTotalMoney)
 	{
 		SPDLOG_ERROR("[OVERFLOW_GOLD] Overflow (GOLD_MAX) id {} name {}", GetPlayerID(), GetName());
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("20\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have more than 2 Billion Yang. You cannot trade."));
 		return;
 	}
 
@@ -602,7 +602,7 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 	{
 		if (CBanwordManager::instance().CheckString(m_stShopSign.c_str(), m_stShopSign.length()))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xD3\xBE\xEE\xB3\xAA \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEE\xB0\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD4\xB5\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));	
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't give your shop an invalid name."));	
 			return;
 		}
 	}
@@ -629,19 +629,19 @@ void CHARACTER::OpenMyShop(const char * c_pszSign, TShopItemTable * pTable, BYTE
 
 			if (item_table && (IS_SET(item_table->dwAntiFlags, ITEM_ANTIFLAG_GIVE | ITEM_ANTIFLAG_MYSHOP)))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC7\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sell Item-Shop items in a private shop."));
 				return;
 			}
 
 			if (pkItem->IsEquipped() == true)
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC7\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Items that are equipped can't be sold in the private shop."));
 				return;
 			}
 
 			if (true == pkItem->isLocked())
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC7\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Items that are in use can't be sold in the private shop."));
 				return;
 			}
 
@@ -1092,14 +1092,14 @@ void CHARACTER::SetPosition(int pos)
 		{
 			case POS_FIGHTING:
 				if (!IsState(m_stateBattle))
-					MonsterLog("[BATTLE] \xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
+					MonsterLog("[BATTLE] Fighting state");
 
 				GotoState(m_stateBattle);
 				break;
 
 			default:
 				if (!IsState(m_stateIdle))
-					MonsterLog("[IDLE] \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
+					MonsterLog("[IDLE] Resting state");
 
 				GotoState(m_stateIdle);
 				break;
@@ -2636,7 +2636,7 @@ bool CHARACTER::Sync(int x, int y)
 void CHARACTER::Stop()
 {
 	if (!IsState(m_stateIdle))
-		MonsterLog("[IDLE] \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
+		MonsterLog("[IDLE] stop");
 
 	GotoState(m_stateIdle);
 
@@ -2671,7 +2671,7 @@ bool CHARACTER::Goto(int x, int y)
 	
 	if (!IsState(m_stateMove))
 	{
-		MonsterLog("[MOVE] %s", GetVictim() ? "\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD" : "\xEF\xBF\xBD\xD7\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD");
+		MonsterLog("[MOVE] %s", GetVictim() ? "tracking target" : "moving");
 
 		if (GetVictim())
 		{
@@ -3889,7 +3889,7 @@ void CHARACTER::mining_cancel()
 	{
         SPDLOG_DEBUG("XXX MINING CANCEL");
 		event_cancel(&m_pkMiningEvent);
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xDF\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Mining is finished."));
 	}
 }
 
@@ -3911,7 +3911,7 @@ void CHARACTER::mining(LPCHARACTER chLoad)
 
 	if (!pick || pick->GetType() != ITEM_PICK)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEE\xB1\xAA\xEF\xBF\xBD\xCC\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You need a Pickaxe in order to extract ore!"));
 		return;
 	}
 
@@ -3950,7 +3950,7 @@ void CHARACTER::fishing()
 
 		if (IS_SET(dwAttr, ATTR_BLOCK))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC6\xB4\xD5\xB4\xCF\xB4\xEF\xBF\xBD"));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This is not a place to fish"));
 			return;
 		}
 	}
@@ -3960,13 +3960,13 @@ void CHARACTER::fishing()
 	// 낚시대 장착
 	if (!rod || rod->GetType() != ITEM_ROD)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCF\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Please choose a Fishing Pole."));
 		return;
 	}
 
 	if (0 == rod->GetSocket(2))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Place the Bait on the Hook first."));
 		return;
 	}
 
@@ -3992,7 +3992,7 @@ void CHARACTER::fishing_take()
 	}
 	else
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB4\xEB\xB0\xA1 \xEF\xBF\xBD\xC6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC3\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD!"));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't go fishing without a fishing pole!"));
 	}
 
 	event_cancel(&m_pkFishingEvent);
@@ -4032,7 +4032,7 @@ void CHARACTER::SetNextStatePulse(int iNextPulse)
 	m_dwNextStatePulse = iNextPulse;
 
 	if (iNextPulse < 10)
-		MonsterLog("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xB7\xCE\xBE\xEE\xBC\xAD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD");
+		MonsterLog("Go to the next state");
 }
 
 
@@ -4269,7 +4269,7 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
 
 	if (!leader)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xC6\xB4\xCF\xB6\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC3\xBB\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The request can't be made because the party leader isn't online."));
 		return false;
 	}
 
@@ -4290,38 +4290,38 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
 			break;
 
 		case PERR_SERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot make a request because the group leader is not online."));
 			return false;
 
 		case PERR_DIFFEMPIRE:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot form a group with players from another kingdom."));
 			return false;
 
 		case PERR_DUNGEON:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite players while you are in a dungeon.")); 
 			return false;
 
 		case PERR_OBSERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite a player while you are in observer mode.")); 
 			return false;
 
 		case PERR_LVBOUNDARY:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Only players with a level difference of -30 to +30 can be invited.")); 
 			return false;
 
 		case PERR_LOWLEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too low."));
 			return false;
 
 		case PERR_HILEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too high.")); 
 			return false;
 
 		case PERR_ALREADYJOIN: 	
 			return false;
 
 		case PERR_PARTYISFULL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); 
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite any more players into your group.")); 
 			return false;
 
 		default:
@@ -4337,7 +4337,7 @@ bool CHARACTER::RequestToParty(LPCHARACTER leader)
 	SetPartyRequestEvent(event_create(party_request_event, info, PASSES_PER_SEC(10)));
 
 	leader->ChatPacket(CHAT_TYPE_COMMAND, "PartyRequest %u", (DWORD) GetVID());
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xEF\xBF\xBD\xD4\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC3\xBB\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xDF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), leader->GetName());
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You want to join %s's group."), leader->GetName());
 	return true;
 }
 
@@ -4391,7 +4391,7 @@ void CHARACTER::AcceptToParty(LPCHARACTER member)
 	event_cancel(&member->m_pkPartyRequestEvent);
 
 	if (!GetParty())
-		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This player is not in this group."));
 	else 
 	{
 		if (GetPlayerID() != GetParty()->GetLeaderPID())
@@ -4401,16 +4401,16 @@ void CHARACTER::AcceptToParty(LPCHARACTER member)
 		switch (errcode) 
 		{
 			case PERR_NONE: 		member->PartyJoin(this); return;
-			case PERR_SERVER:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
-			case PERR_DUNGEON:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
-			case PERR_OBSERVER: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
-			case PERR_LVBOUNDARY:	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
-			case PERR_LOWLEVEL: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
-			case PERR_HILEVEL: 		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD.")); break;
+			case PERR_SERVER:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The server cannot execute this group request.")); break;
+			case PERR_DUNGEON:		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite players while you are in a dungeon.")); break;
+			case PERR_OBSERVER: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite a player while you are in observer mode.")); break;
+			case PERR_LVBOUNDARY:	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Only players with a level difference of -30 to +30 can be invited.")); break;
+			case PERR_LOWLEVEL: 	member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too low.")); break;
+			case PERR_HILEVEL: 		member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too high.")); break;
 			case PERR_ALREADYJOIN: 	break;
 			case PERR_PARTYISFULL: {
-									   ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
-									   member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+									   ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite any more players into your group."));
+									   member->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot join this group because it is already full."));
 									   break;
 								   }
 			default: SPDLOG_ERROR("Do not process party join error({})", (int) errcode);
@@ -4449,12 +4449,12 @@ void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)
 {
 	if (GetParty() && GetParty()->GetLeaderPID() != GetPlayerID())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You do not have the right to invite someone."));
 		return;
 	}
 	else if (pchInvitee->IsBlockMode(BLOCK_PARTY_INVITE))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xC5\xBA\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD4\xB4\xCF\xB4\xEF\xBF\xBD."), pchInvitee->GetName());
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] %s has declined your group invitation."), pchInvitee->GetName());
 		return;
 	}
 
@@ -4466,39 +4466,39 @@ void CHARACTER::PartyInvite(LPCHARACTER pchInvitee)
 			break;
 
 		case PERR_SERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The server cannot execute this group request."));
 			return;
 
 		case PERR_DIFFEMPIRE:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot form a group with players from another kingdom."));
 			return;
 
 		case PERR_DUNGEON:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite players while you are in a dungeon."));
 			return;
 
 		case PERR_OBSERVER:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite a player while you are in observer mode."));
 			return;
 
 		case PERR_LVBOUNDARY:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Only players with a level difference of -30 to +30 can be invited."));
 			return;
 
 		case PERR_LOWLEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too low."));
 			return;
 
 		case PERR_HILEVEL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too high."));
 			return;
 
 		case PERR_ALREADYJOIN:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xCC\xB9\xEF\xBF\xBD %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), pchInvitee->GetName());
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] %s is already in the group."), pchInvitee->GetName());
 			return;
 
 		case PERR_PARTYISFULL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite any more players into your group."));
 			return;
 
 		default:
@@ -4544,7 +4544,7 @@ void CHARACTER::PartyInviteAccept(LPCHARACTER pchInvitee)
 
 	if (GetParty() && GetParty()->GetLeaderPID() != GetPlayerID())
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You do not have the right to invite someone."));
 		return;
 	}
 
@@ -4556,36 +4556,36 @@ void CHARACTER::PartyInviteAccept(LPCHARACTER pchInvitee)
 			break;
 
 		case PERR_SERVER:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] The server cannot execute this group request."));
 			return;
 
 		case PERR_DUNGEON:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xBF\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot accept an invitation into a dungeon."));
 			return;
 
 		case PERR_OBSERVER:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xE5\xBF\xA1\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<파티> 관전 모드에선 파티 초대를 할 수 없습니다."));
 			return;
 
 		case PERR_LVBOUNDARY:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> -30 ~ +30 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xE6\xB8\xB8 \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Only players with a level difference of -30 to +30 can be invited."));
 			return;
 
 		case PERR_LOWLEVEL:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too low."));
 			return;
 
 		case PERR_HILEVEL:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 30\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite this player, as their level is too high."));
 			return;
 
 		case PERR_ALREADYJOIN:
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xBF\xA1 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot accept the invitation."));
 			return;
 
 		case PERR_PARTYISFULL:
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xBB\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB4\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
-			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCA\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot invite any more players into your group."));
+			pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] You cannot join this group because it is already full."));
 			return;
 
 		default:
@@ -4624,13 +4624,13 @@ void CHARACTER::PartyInviteDeny(DWORD dwPID)
 
 	LPCHARACTER pchInvitee = CHARACTER_MANAGER::instance().FindByPID(dwPID);
 	if (pchInvitee)
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC \xEF\xBF\xBD\xCA\xB4\xEB\xB8\xA6 \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), pchInvitee->GetName());
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] %s has declined your invitation."), pchInvitee->GetName());
 }
 
 void CHARACTER::PartyJoin(LPCHARACTER pLeader)
 {
-	pLeader->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), GetName());
-	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC> %s\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC6\xBC\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), pLeader->GetName());
+	pLeader->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] %s has joined your group."), GetName());
+	ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] %s has joined your Group."), pLeader->GetName());
 
 	pLeader->GetParty()->Join(GetPlayerID());
 	pLeader->GetParty()->Link(this);
@@ -4841,7 +4841,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 				{
 					if ((GetExchange() || IsOpenSafebox() || GetShopOwner()) || IsCubeOpen())
 					{
-						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD(\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD)\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't use a private shop now."));
 						return;
 					}
 				}
@@ -4850,7 +4850,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 					// 클릭한 사람이 교환/창고/개인상점/상점이용중이라면 불가
 					if ((pkChrCauser->GetExchange() || pkChrCauser->IsOpenSafebox() || pkChrCauser->GetMyShop() || pkChrCauser->GetShopOwner()) || pkChrCauser->IsCubeOpen() )
 					{
-						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD(\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD)\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xBB\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't use a private shop now."));
 						return;
 					}
 
@@ -4858,7 +4858,7 @@ void CHARACTER::OnClick(LPCHARACTER pkChrCauser)
 					//if ((GetExchange() || IsOpenSafebox() || GetShopOwner()))
 					if ((GetExchange() || IsOpenSafebox() || IsCubeOpen()))
 					{
-						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCF\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD4\xB4\xCF\xB4\xEF\xBF\xBD."));
+						pkChrCauser->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This player is already trading with another player."));
 						return;
 					}
 				}
@@ -5303,7 +5303,7 @@ bool CHARACTER::Return()
 
 	SendMovePacket(FUNC_WAIT, 0, 0, 0, 0);
 
-    SPDLOG_TRACE("{} {} \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC6\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD! {} {}", GetName(), (void*) this, x, y);
+    SPDLOG_TRACE("{} {} Give up and go home! {} {}", GetName(), (void*) this, x, y);
 
 	if (GetParty())
 		GetParty()->SendMessage(this, PM_RETURN, x, y);
@@ -5456,7 +5456,7 @@ bool CHARACTER::Follow(LPCHARACTER pkChr, float fMinDistance)
 	}
 
 	SendMovePacket(FUNC_WAIT, 0, 0, 0, 0);
-	//MonsterLog("\xEF\xBF\xBD\xD1\xBE\xC6\xB0\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD; %s", pkChr->GetName());
+	//MonsterLog("Chase; %s", pkChr->GetName());
 	return true;
 }
 
@@ -5479,12 +5479,12 @@ void CHARACTER::ReqSafeboxLoad(const char* pszPassword)
 {
 	if (!*pszPassword || strlen(pszPassword) > SAFEBOX_PASSWORD_MAX_LEN)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xEF\xBF\xBD\xDF\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC8\xA3\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD4\xB7\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xBC\xCC\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have entered an incorrect password."));
 		return;
 	}
 	else if (m_pkSafebox)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB9\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The Storeroom is already open."));
 		return;
 	}
 
@@ -5492,12 +5492,12 @@ void CHARACTER::ReqSafeboxLoad(const char* pszPassword)
 
 	if (iPulse - GetSafeboxLoadTime()  < PASSES_PER_SEC(10))
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD 10\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC8\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You have to wait 10 seconds before you can open the Storeroom again."));
 		return;
 	}
 	else if (GetDistanceFromSafeboxOpen() > 1000)
 	{
-		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD> \xEF\xBF\xBD\xC5\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBE\xEE\xBC\xAD \xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+		ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] You are too far away to open the storeroom."));
 		return;
 	}
 	else if (m_bOpeningSafebox)
@@ -5768,9 +5768,9 @@ void CHARACTER::SetNowWalking(bool bWalkFlag)
 		if (IsNPC())
 		{
 			if (m_bNowWalking)
-				MonsterLog("\xEF\xBF\xBD\xC8\xB4\xC2\xB4\xEF\xBF\xBD");
+				MonsterLog("Walk");
 			else
-				MonsterLog("\xEF\xBF\xBD\xDA\xB4\xEF\xBF\xBD");
+				MonsterLog("Run");
 		}
 	}
 }
@@ -6474,13 +6474,13 @@ bool CHARACTER::WarpToPID(DWORD dwPID)
 			}
 			else
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot teleport to the player."));
 				return false;
 			}
 		}
 		else
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot teleport to the player."));
 			return false;
 		}
 	}
@@ -6494,25 +6494,25 @@ bool CHARACTER::WarpToPID(DWORD dwPID)
 
 		if (!pcci)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xC2\xB6\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xB0\xEF\xBF\xBD \xEF\xBF\xBD\xC6\xB4\xD5\xB4\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This player is not online."));
 			return false;
 		}
 
 		if (pcci->bChannel != g_bChannel)
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d \xC3\xA4\xEF\xBF\xBD\xCE\xBF\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD. (\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xC3\xA4\xEF\xBF\xBD\xEF\xBF\xBD %d)"), pcci->bChannel, g_bChannel);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player is playing on channel %d. (You are on channel %d.)"), pcci->bChannel, g_bChannel);
 			return false;
 		}
 		else if (false == IS_SUMMONABLE_ZONE(pcci->lMapIndex))
 		{
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot teleport to the player."));
 			return false;
 		}
 		else
 		{
 			if (!CAN_ENTER_ZONE(this, pcci->lMapIndex))
 			{
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD6\xB4\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot teleport to the player."));
 				return false;
 			}
 
@@ -6594,7 +6594,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (iPulse - GetSafeboxLoadTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD\xEF\xBF\xBD\xD2\xBC\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After opening the Storeroom, you cannot go anywhere else for %d seconds."), limittime);
 
 		if (test_server)
 			ChatPacket(CHAT_TYPE_INFO, "[TestOnly]Pulse %d LoadTime %d PASS %d", iPulse, GetSafeboxLoadTime(), PASSES_PER_SEC(limittime));
@@ -6607,7 +6607,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 		if (GetExchange() || GetMyShop() || GetShopOwner() || IsOpenSafebox() || IsCubeOpen())
 		{
 			if (bSendMsg)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xC3\xA2,\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD2\xBC\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD"));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot go elsewhere for a period of time after the trade."));
 
 			return true;
 		}
@@ -6617,7 +6617,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 		if (GetExchange() || GetMyShop() || IsOpenSafebox() || IsCubeOpen())
 		{
 			if (bSendMsg)
-				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD\xC3\xA2,\xC3\xA2\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xC2\xBF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD2\xBC\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD"));
+				ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot go elsewhere for a period of time after the trade."));
 
 			return true;
 		}
@@ -6628,7 +6628,7 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (iPulse - GetExchangeTime()  < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime );
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After trading you cannot go elsewhere for %d seconds."), limittime );
 		return true;
 	}
 	//END_PREVENT_PORTAL_AFTER_EXCHANGE
@@ -6637,14 +6637,14 @@ bool CHARACTER::IsHack(bool bSendMsg, bool bCheckShopOwner, int limittime)
 	if (iPulse - GetMyShopTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xC5\xB7\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xD9\xB8\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB5\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After trading you cannot go elsewhere for %d seconds."), limittime);
 		return true;
 	}
 
 	if (iPulse - GetRefineTime() < PASSES_PER_SEC(limittime))
 	{
 		if (bSendMsg)
-			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD %d\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xCC\xB3\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF\xEF\xBF\xBD\xEF\xBF\xBD,\xEF\xBF\xBD\xEF\xBF\xBD\xC8\xAF\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCE\xB8\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD \xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xCF\xB4\xEF\xBF\xBD."), limittime);
+			ChatPacket(CHAT_TYPE_INFO, LC_TEXT("After a trade, you cannot use a scroll for another %d seconds."), limittime);
 		return true; 
 	}
 	//END_PREVENT_ITEM_COPY
diff --git a/src/game/src/cmd.cpp b/src/game/src/cmd.cpp
index e36cb85..fe35b87 100644
--- a/src/game/src/cmd.cpp
+++ b/src/game/src/cmd.cpp
@@ -391,6 +391,7 @@ struct command_info cmd_info[] =
 	{ "delqf",		do_delqf,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 	{ "set_state",	do_set_state,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 
+	// TODO: these can probably be removed
 	{ "\xB7\xCE\xB1\xD7\xB8\xA6\xBA\xB8\xBF\xA9\xC1\xE0",	do_detaillog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 	{ "\xB8\xF3\xBD\xBA\xC5\xCD\xBA\xB8\xBF\xA9\xC1\xE0",	do_monsterlog,		0,			POS_DEAD,	GM_LOW_WIZARD	},
 
@@ -682,7 +683,7 @@ void interpret_command(LPCHARACTER ch, const char * argument, size_t len)
 				break;
 				/*
 				   case POS_FIGHTING:
-				   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB8\xF1\xBC\xFB\xC0\xBB \xB0\xC9\xB0\xED \xC0\xFC\xC5\xF5 \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9. \xC1\xFD\xC1\xDF \xC7\xCF\xBC\xBC\xBF\xE4."));
+				   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You're in a fight for your life. Stay focused."));
 				   break;
 				 */
 			default:
diff --git a/src/game/src/cmd_general.cpp b/src/game/src/cmd_general.cpp
index be8f0aa..da851b0 100644
--- a/src/game/src/cmd_general.cpp
+++ b/src/game/src/cmd_general.cpp
@@ -415,7 +415,7 @@ ACMD(do_mount)
 
 	if (distance > 600.0f)
 	{
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xBB \xB4\xF5 \xB0\xA1\xB1\xEE\xC0\xCC \xB0\xA1\xBC\xAD \xB3\xBB\xB8\xAE\xBC\xBC\xBF\xE4."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Get a little closer and get off."));
 	return;
 	}
 
@@ -432,7 +432,7 @@ ACMD(do_mount)
 
 	if (!tch->IsNPC() || !tch->IsMountable())
 	{
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB1\xE2\xBF\xA1\xB4\xC2 \xC5\xBB \xBC\xF6 \xBE\xF8\xBE\xEE\xBF\xE4."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't ride there."));
 	return;
 	}
 
@@ -440,7 +440,7 @@ ACMD(do_mount)
 
 	if (distance > 600.0f)
 	{
-	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xBB \xB4\xF5 \xB0\xA1\xB1\xEE\xC0\xCC \xB0\xA1\xBC\xAD \xC5\xB8\xBC\xBC\xBF\xE4."));
+	ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Get a little closer and ride."));
 	return;
 	}
 
@@ -912,7 +912,7 @@ ACMD(do_safebox_change_password)
 
 			if (isalpha(arg2[i]) == false)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xBA\xF1\xB9\xD0\xB9\xF8\xC8\xA3\xB4\xC2 \xBF\xB5\xB9\xAE\xC0\xDA\xB8\xB8 \xB0\xA1\xB4\xC9\xC7\xD5\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The password must be alphanumeric."));
 				return;
 			}
 		}
@@ -1317,7 +1317,7 @@ ACMD(do_unmount)
 	}
 	else
 	{
-		ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xC0\xCE\xBA\xA5\xC5\xE4\xB8\xAE\xB0\xA1 \xB2\xCB \xC2\xF7\xBC\xAD \xB3\xBB\xB8\xB1 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("There isn't enough space in your inventory."));
 	}
 
 }
@@ -1371,7 +1371,7 @@ ACMD(do_view_equip)
 
 		   if (ch->GetSP() < iSPCost)
 		   {
-		   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA4\xBD\xC5\xB7\xC2\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xCF\xBF\xA9 \xB4\xD9\xB8\xA5 \xBB\xE7\xB6\xF7\xC0\xC7 \xC0\xE5\xBA\xF1\xB8\xA6 \xBA\xBC \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't see other people's equipment due to lack of mental acuity."));
 		   return;
 		   }
 		   ch->PointChange(POINT_SP, -iSPCost);
@@ -1466,7 +1466,7 @@ ACMD(do_monarch_warpto)
 	if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, WarpPrice);
 		return;	
 	}
 
@@ -1502,7 +1502,7 @@ ACMD(do_monarch_warpto)
 			}
 			if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 				return;
 			}
 
@@ -1539,7 +1539,7 @@ ACMD(do_monarch_warpto)
 		}
 		if (!IsMonarchWarpZone(tch->GetMapIndex()))
 		{
-			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 			return;
 		}
 		x = tch->GetX();
@@ -1591,7 +1591,7 @@ ACMD(do_monarch_transfer)
 	if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, WarpPrice);
 		return;	
 	}
 
@@ -1616,12 +1616,12 @@ ACMD(do_monarch_transfer)
 			}
 			if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 				return;
 			}
 			if (!IsMonarchWarpZone(ch->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to summon to the region."));
 				return;
 			}
 
@@ -1662,12 +1662,12 @@ ACMD(do_monarch_transfer)
 	}
 	if (!IsMonarchWarpZone(tch->GetMapIndex()))
 	{
-		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 		return;
 	}
 	if (!IsMonarchWarpZone(ch->GetMapIndex()))
 	{
-		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to summon to the region."));
 		return;
 	}
 
@@ -1788,10 +1788,10 @@ ACMD(do_monarch_tax)
 	// 공지 
 	char szMsg[1024];	
 
-	snprintf(szMsg, sizeof(szMsg), "\xB1\xBA\xC1\xD6\xC0\xC7 \xB8\xED\xC0\xB8\xB7\xCE \xBC\xBC\xB1\xDD\xC0\xCC %d %% \xB7\xCE \xBA\xAF\xB0\xE6\xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9", tax);
+	snprintf(szMsg, sizeof(szMsg), "In the name of the monarch, the tax has been changed to %d %%", tax);
 	BroadcastNotice(szMsg);
 
-	snprintf(szMsg, sizeof(szMsg), "\xBE\xD5\xC0\xB8\xB7\xCE\xB4\xC2 \xB0\xC5\xB7\xA1 \xB1\xDD\xBE\xD7\xC0\xC7 %d %% \xB0\xA1 \xB1\xB9\xB0\xED\xB7\xCE \xB5\xE9\xBE\xEE\xB0\xA1\xB0\xD4\xB5\xCB\xB4\xCF\xB4\xD9.", tax);
+	snprintf(szMsg, sizeof(szMsg), "Going forward, %d %% of the transaction amount will go to the Treasury.", tax);
 	BroadcastNotice(szMsg);
 
 	// 쿨타임 초기화 
@@ -1849,7 +1849,7 @@ ACMD(do_monarch_mob)
 	{
 		if (mapEmpire != pcEmpire && mapEmpire != 0)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC0\xDA\xB1\xB9 \xBF\xB5\xC5\xE4\xBF\xA1\xBC\xAD\xB8\xB8 \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xB4\xC2 \xB1\xE2\xB4\xC9\xC0\xD4\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("This feature is only available in your home territory"));
 			return;
 		}
 	}
@@ -1868,7 +1868,7 @@ ACMD(do_monarch_mob)
 	if (!CMonarch::instance().IsMoneyOk(SummonPrice, ch->GetEmpire()))
 	{
 		int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, SummonPrice);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, SummonPrice);
 		return;	
 	}
 
@@ -1942,9 +1942,9 @@ static const char* FN_point_string(int apply_number)
 		case POINT_STUN_PCT:	return LC_TEXT("Star +%d");
 		case POINT_SLOW_PCT:	return LC_TEXT("Speed Reduction +%d");
 		case POINT_CRITICAL_PCT:	return LC_TEXT("Critical Attack with a chance of %d%%");
-		case POINT_RESIST_CRITICAL:	return LC_TEXT("\xBB\xF3\xB4\xEB\xC0\xC7 \xC4\xA1\xB8\xED\xC5\xB8 \xC8\xAE\xB7\xFC %d%% \xB0\xA8\xBC\xD2");
+		case POINT_RESIST_CRITICAL:	return LC_TEXT("Reduced Critical Chance %d%%");
 		case POINT_PENETRATE_PCT:	return LC_TEXT("Chance of a Speared Attack of %d%%");
-		case POINT_RESIST_PENETRATE: return LC_TEXT("\xBB\xF3\xB4\xEB\xC0\xC7 \xB0\xFC\xC5\xEB \xB0\xF8\xB0\xDD \xC8\xAE\xB7\xFC %d%% \xB0\xA8\xBC\xD2");
+		case POINT_RESIST_PENETRATE: return LC_TEXT("Reduced Speared Chance %d%%");
 		case POINT_ATTBONUS_HUMAN:	return LC_TEXT("Player's Attack Power against Monsters +%d%%");
 		case POINT_ATTBONUS_ANIMAL:	return LC_TEXT("Horse's Attack Power against Monsters +%d%%");
 		case POINT_ATTBONUS_ORC:	return LC_TEXT("Attack Boost against Wonggui + %d%%");
@@ -1967,9 +1967,9 @@ static const char* FN_point_string(int apply_number)
 		case POINT_RESIST_ELEC:		return LC_TEXT("Lightning Resistance %d%%");
 		case POINT_RESIST_MAGIC:	return LC_TEXT("Magic Resistance %d%%");
 		case POINT_RESIST_WIND:		return LC_TEXT("Wind Resistance %d%%");
-		case POINT_RESIST_ICE:		return LC_TEXT("\xB3\xC3\xB1\xE2 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_RESIST_EARTH:	return LC_TEXT("\xB4\xEB\xC1\xF6 \xC0\xFA\xC7\xD7 %d%%");
-		case POINT_RESIST_DARK:		return LC_TEXT("\xBE\xEE\xB5\xD2 \xC0\xFA\xC7\xD7 %d%%");
+		case POINT_RESIST_ICE:		return LC_TEXT("Ice Resistance %d%%");
+		case POINT_RESIST_EARTH:	return LC_TEXT("Earth Resistance %d%%");
+		case POINT_RESIST_DARK:		return LC_TEXT("Darkness Resistance %d%%");
 		case POINT_REFLECT_MELEE:	return LC_TEXT("Reflect Direct Hit: %d%%");
 		case POINT_REFLECT_CURSE:	return LC_TEXT("Reflect Curse: %d%%");
 		case POINT_POISON_REDUCE:	return LC_TEXT("Poison Resistance %d%%");
@@ -2377,9 +2377,9 @@ ACMD(do_dice)
 	int n = Random::get(start, end);
 	
 	if (ch->GetParty())
-		ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_INFO, LC_TEXT("%s\xB4\xD4\xC0\xCC \xC1\xD6\xBB\xE7\xC0\xA7\xB8\xA6 \xB1\xBC\xB7\xC1 %d\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9. (%d-%d)"), ch->GetName(), n, start, end);
+		ch->GetParty()->ChatPacketToAllMember(CHAT_TYPE_INFO, LC_TEXT("%s rolled the dice and came up with %d. (%d-%d)"), ch->GetName(), n, start, end);
 	else
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xCC \xC1\xD6\xBB\xE7\xC0\xA7\xB8\xA6 \xB1\xBC\xB7\xC1 %d\xB0\xA1 \xB3\xAA\xBF\xD4\xBD\xC0\xB4\xCF\xB4\xD9. (%d-%d)"), n, start, end);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You rolled the dice and came up with %d. (%d-%d)"), n, start, end);
 }
 
 ACMD(do_click_mall)
diff --git a/src/game/src/cmd_gm.cpp b/src/game/src/cmd_gm.cpp
index 15783c5..0a8ba5c 100644
--- a/src/game/src/cmd_gm.cpp
+++ b/src/game/src/cmd_gm.cpp
@@ -2667,8 +2667,8 @@ ACMD(do_block_chat)
 	{
 		if (ch)
 		{
-			ch->ChatPacket(CHAT_TYPE_INFO, "\xC0\xDF\xB8\xF8\xB5\xC8 \xC7\xFC\xBD\xC4\xC0\xC7 \xBD\xC3\xB0\xA3\xC0\xD4\xB4\xCF\xB4\xD9. h, m, s\xB8\xA6 \xBA\xD9\xBF\xA9\xBC\xAD \xC1\xF6\xC1\xA4\xC7\xD8 \xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0.");
-			ch->ChatPacket(CHAT_TYPE_INFO, "\xBF\xB9) 10s, 10m, 1m 30s");
+			ch->ChatPacket(CHAT_TYPE_INFO, "The time is incorrectly formatted. Please specify it with an h, m, or s.");
+			ch->ChatPacket(CHAT_TYPE_INFO, "Example) 10s, 10m, 1m 30s");
 		}
 		return;
 	}
@@ -2848,7 +2848,7 @@ ACMD(do_build)
 				/*
 				   if (x_rot != 0.0f || y_rot != 0.0f || z_rot != 0.0f)
 				   {
-				   ch->ChatPacket(CHAT_TYPE_INFO, "\xB0\xC7\xB9\xB0 \xC8\xB8\xC0\xFC \xB1\xE2\xB4\xC9\xC0\xBA \xBE\xC6\xC1\xF7 \xC1\xA6\xB0\xF8\xB5\xC7\xC1\xF6 \xBE\xCA\xBD\xC0\xB4\xCF\xB4\xD9");
+				   ch->ChatPacket(CHAT_TYPE_INFO, "Rotating buildings is not yet available");
 				   return;
 				   }
 				 */
@@ -3577,7 +3577,7 @@ ACMD(do_check_monarch_money)
 	str_to_number(empire, arg1);
 	int NationMoney = CMonarch::instance().GetMoney(empire);
 
-	ch->ChatPacket(CHAT_TYPE_INFO, "\xB1\xB9\xB0\xED: %d \xBF\xF8", NationMoney);
+	ch->ChatPacket(CHAT_TYPE_INFO, "Treasury: %d Yang", NationMoney);
 }
 
 ACMD(do_reset_subskill)
@@ -4261,7 +4261,7 @@ ACMD (do_use_item)
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, "\xBE\xC6\xC0\xCC\xC5\xDB\xC0\xCC \xBE\xF8\xBE\xEE\xBC\xAD \xC2\xF8\xBF\xEB\xC7\xD2 \xBC\xF6 \xBE\xF8\xBE\xEE.");
+		ch->ChatPacket(CHAT_TYPE_INFO, "I can't wear it because I don't have the item.");
 	}
 }
 
diff --git a/src/game/src/cube.cpp b/src/game/src/cube.cpp
index b5cb036..ed27bd8 100644
--- a/src/game/src/cube.cpp
+++ b/src/game/src/cube.cpp
@@ -565,7 +565,7 @@ bool Cube_make (LPCHARACTER ch)
 	else
 	{
 		// 실패
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC1\xA6\xC1\xB6\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."));	// 2012.11.12 새로 추가된 메세지 (locale_string.txt 에 추가해야 함)
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Manufacturing failed."));	// 2012.11.12 새로 추가된 메세지 (locale_string.txt 에 추가해야 함)
 		ch->ChatPacket(CHAT_TYPE_COMMAND, "cube fail");
 		LogManager::instance().CubeLog(ch->GetPlayerID(), ch->GetX(), ch->GetY(),
 				reward_value->vnum, 0, 0, 0);
diff --git a/src/game/src/guild.cpp b/src/game/src/guild.cpp
index 3411a37..854dca5 100644
--- a/src/game/src/guild.cpp
+++ b/src/game/src/guild.cpp
@@ -1310,7 +1310,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 	//GuildPointChange(POINT_SP, -iNeededSP);
 
 	if (test_server)
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %d \xBD\xBA\xC5\xB3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD4 (%d, %d) to %u"), dwVnum, GetSP(), iNeededSP, pid);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] %d skill used (%d, %d) to %u"), dwVnum, GetSP(), iNeededSP, pid);
 
 	switch (dwVnum)
 	{
@@ -1358,7 +1358,7 @@ void CGuild::UseSkill(DWORD dwVnum, LPCHARACTER ch, DWORD pid)
 			{
 				/*if (ch->GetPlayerID() != GetMasterPID())
 				  {
-				  ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xE5\xB8\xB8 \xB1\xE6\xB5\xE5 \xBD\xBA\xC5\xB3\xC0\xBB \xBB\xE7\xBF\xEB\xC7\xD2 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+				  ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Only guild leaders can use guild skills."));
 				  return;
 				  }*/
 
@@ -1731,7 +1731,7 @@ bool CGuild::ChargeSP(LPCHARACTER ch, int iSP)
 
 	SendDBSkillUpdate(iSP);
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> %u\xC0\xC7 \xBF\xEB\xBD\xC5\xB7\xC2\xC0\xBB \xC8\xB8\xBA\xB9\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9."), iSP);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] %u Dragon ghost points have been restored."), iSP);
 	}
 	return true;
 }
@@ -1939,7 +1939,7 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 {
 	if (quest::CQuestManager::instance().GetPCForce(pchInviter->GetPlayerID())->IsRunning() == true)
 	{
-	    pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC3\xCA\xB4\xEB \xBD\xC5\xC3\xBB\xC0\xBB \xB9\xDE\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+	    pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The other person is unable to accept the invitation."));
 	    return;
 	}
 
@@ -1979,8 +1979,8 @@ void CGuild::Invite( LPCHARACTER pchInviter, LPCHARACTER pchInvitee )
 						return;
 		case GERR_ALREADYJOIN:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This person is already a member of another Guild.")); return;
 		case GERR_GUILDISFULL:	pchInviter->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The maximum guild capacity has been reached.")); return;
-		case GERR_GUILD_IS_IN_WAR : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
-		case GERR_INVITE_LIMIT : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xBD\xC5\xB1\xD4 \xB0\xA1\xC0\xD4 \xC1\xA6\xC7\xD1 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
+		case GERR_GUILD_IS_IN_WAR : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] Your guild is currently at war.") ); return;
+		case GERR_INVITE_LIMIT : pchInviter->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] You are currently closed to new signups.") ); return;
 
 		default: SPDLOG_ERROR("ignore guild join error({})", (int) errcode ); return;
 	}
@@ -2044,8 +2044,8 @@ void CGuild::InviteAccept( LPCHARACTER pchInvitee )
 						return;
 		case GERR_ALREADYJOIN:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This person is already a member of another Guild.")); return;
 		case GERR_GUILDISFULL:	pchInvitee->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] The maximum guild capacity has been reached.")); return;
-		case GERR_GUILD_IS_IN_WAR : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xFC\xC0\xEF \xC1\xDF \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
-		case GERR_INVITE_LIMIT : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xC7\xF6\xC0\xE7 \xBD\xC5\xB1\xD4 \xB0\xA1\xC0\xD4 \xC1\xA6\xC7\xD1 \xBB\xF3\xC5\xC2 \xC0\xD4\xB4\xCF\xB4\xD9.") ); return;
+		case GERR_GUILD_IS_IN_WAR : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] Your guild is currently at war.") ); return;
+		case GERR_INVITE_LIMIT : pchInvitee->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("[Guild] You are currently closed to new signups.") ); return;
 
 		default: SPDLOG_ERROR("ignore guild join error({})", (int) errcode); return;
 	}
diff --git a/src/game/src/input_db.cpp b/src/game/src/input_db.cpp
index 372da34..70e4e33 100644
--- a/src/game/src/input_db.cpp
+++ b/src/game/src/input_db.cpp
@@ -2349,7 +2349,7 @@ void CInputDB::AddMonarchMoney(LPDESC d, const char * data )
 	if (ch)
 	{
 		if (Random::get(1, 100) > 95)
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC7\xF6\xC0\xE7 %s \xB1\xB9\xB0\xED\xBF\xA1\xB4\xC2 %u \xC0\xC7 \xB5\xB7\xC0\xCC \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("There is currently %u Yang in the %s treasury"), EMPIRE_NAME(Empire), CMonarch::instance().GetMoney(Empire));
 	}
 }
 	
diff --git a/src/game/src/input_login.cpp b/src/game/src/input_login.cpp
index 28f3122..f6b9ad3 100644
--- a/src/game/src/input_login.cpp
+++ b/src/game/src/input_login.cpp
@@ -778,9 +778,9 @@ void CInputLogin::Entergame(LPDESC d, const char * data)
 	{
 		if (FN_is_battle_zone(ch))
 		{
-			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC0\xCC \xB8\xCA\xBF\xA1\xBC\xB1 \xB0\xAD\xC1\xA6\xC0\xFB\xC0\xCE \xB4\xEB\xC0\xFC\xC0\xCC \xC0\xD6\xC0\xBB\xBC\xF6 \xB5\xB5 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
-			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC0\xCC \xC1\xB6\xC7\xD7\xBF\xA1 \xB5\xBF\xC0\xC7\xC7\xCF\xC1\xF6 \xBE\xCA\xC0\xBB\xBD\xC3"));
-			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xBA\xBB\xC0\xCE\xC0\xC7 \xC1\xD6\xBC\xBA \xB9\xD7 \xBA\xCE\xBC\xBA\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xB0\xA1\xBD\xC3\xB1\xE2 \xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("There may be forced matches on this map."));
+			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("If you do not agree to these terms,"));
+			ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("please return to your home province."));
 		}
 	}
 }
diff --git a/src/game/src/input_main.cpp b/src/game/src/input_main.cpp
index ebe58a4..62f48bc 100644
--- a/src/game/src/input_main.cpp
+++ b/src/game/src/input_main.cpp
@@ -1127,7 +1127,7 @@ void CInputMain::Exchange(LPCHARACTER ch, const char * data)
 					/*
 					if (to_ch->IsMonarch() || ch->IsMonarch())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xBA\xC1\xD6\xBF\xCD\xB4\xC2 \xB0\xC5\xB7\xA1\xB8\xA6 \xC7\xD2\xBC\xF6\xB0\xA1 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9"), g_nPortalLimitTime);
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("군주와는 거래를 할수가 없습니다"), g_nPortalLimitTime);
 						return;
 					}
 					//END_MONARCH_LIMIT
@@ -2052,7 +2052,7 @@ void CInputMain::SafeboxCheckin(LPCHARACTER ch, const char * c_pData)
 
 	if (pkItem->GetCell() >= INVENTORY_MAX_NUM && IS_SET(pkItem->GetFlag(), ITEM_FLAG_IRREMOVABLE))
 	{
-	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC3\xA2\xB0\xED> \xC3\xA2\xB0\xED\xB7\xCE \xBF\xC5\xB1\xE6 \xBC\xF6 \xBE\xF8\xB4\xC2 \xBE\xC6\xC0\xCC\xC5\xDB \xC0\xD4\xB4\xCF\xB4\xD9."));
+	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Storeroom] The item cannot be stored."));
 	    return;
 	}
 
@@ -2292,7 +2292,7 @@ void CInputMain::PartySetState(LPCHARACTER ch, const char* c_pData)
 				db_clientdesc->DBPacket(HEADER_GD_PARTY_STATE_CHANGE, 0, &pack, sizeof(pack));
 			}
 			/* else
-			   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xC6\xC4\xC6\xBC> \xBE\xEE\xC5\xC2\xC4\xBF \xBC\xB3\xC1\xA4\xBF\xA1 \xBD\xC7\xC6\xD0\xC7\xCF\xBF\xB4\xBD\xC0\xB4\xCF\xB4\xD9.")); */
+			   ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Group] Failed to set the role..")); */
 			break;
 
 		default:
@@ -2610,7 +2610,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 				{
 					if (newmember->GetQuestFlag("change_guild_master.be_other_member") > get_global_time())
 					{
-						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xBE\xC6\xC1\xF7 \xB0\xA1\xC0\xD4\xC7\xD2 \xBC\xF6 \xBE\xF8\xB4\xC2 \xC4\xB3\xB8\xAF\xC5\xCD\xC0\xD4\xB4\xCF\xB4\xD9"));
+						ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] This character can't join yet"));
 						return SubPacketLen;
 					}
 				}
@@ -2623,7 +2623,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 			{
 				if (pGuild->UnderAnyWar() != 0)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xC0\xFC \xC1\xDF\xBF\xA1\xB4\xC2 \xB1\xE6\xB5\xE5\xBF\xF8\xC0\xBB \xC5\xBB\xC5\xF0\xBD\xC3\xC5\xB3 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] You cannot remove a guild member during a guild war."));
 					return SubPacketLen;
 				}
 
@@ -2730,7 +2730,7 @@ int CInputMain::Guild(LPCHARACTER ch, const char * data, size_t uiBytes)
 
 				if (pGuild->GetLevel() >= GUILD_MAX_LEVEL && LC_IsHongKong() == false)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<\xB1\xE6\xB5\xE5> \xB1\xE6\xB5\xE5\xB0\xA1 \xC0\xCC\xB9\xCC \xC3\xD6\xB0\xED \xB7\xB9\xBA\xA7\xC0\xD4\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("[Guild] Your guild is already the highest level."));
 				}
 				else
 				{
diff --git a/src/game/src/input_teen.cpp b/src/game/src/input_teen.cpp
index 91a2760..ea4d8b5 100644
--- a/src/game/src/input_teen.cpp
+++ b/src/game/src/input_teen.cpp
@@ -95,32 +95,32 @@ static void __proc_teen_notice(char *login, int hour)
 		case 1:
 		case 2:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xCC \xC0\xCC\xB9\xCC %d\xBD\xC3\xB0\xA3\xC0\xCC \xC1\xF6\xB3\xB5\xBD\xC0\xB4\xCF\xB4\xD9."), hour);
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative online time is already %d hours."), hour);
 				SET_OVER_TIME(ch, OT_NONE);
 			}
 			break;
 		case 3:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xCC \xC0\xCC\xB9\xCC %d\xBD\xC3\xB0\xA3\xC0\xCC \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9,"), hour);
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC1\xB6\xBC\xD3\xC8\xF7 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBD\xC5 \xC8\xC4 \xB0\xC7\xB0\xAD\xC0\xBB \xC0\xA7\xC7\xD8 \xC8\xDE\xBD\xC4\xC0\xBB \xC3\xEB\xC7\xD8\xC1\xD6\xBD\xC3\xB1\xE2\xB9\xD9\xB6\xF8\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative online time has already reached %d hours,"), hour);
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Please disconnect as soon as possible and get some rest for your health."));
 				SET_OVER_TIME(ch, OT_3HOUR);
 			}
 			break;
 		case 4:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xBA \xC0\xCC\xB9\xCC \xB0\xD4\xC0\xD3 \xC7\xC7\xB7\xCE \xBB\xF3\xC5\xC2\xBF\xA1 \xB5\xE9\xBE\xEE\xBC\xB9\xC0\xB8\xB8\xE7,"));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB0\xD4\xC0\xD3 \xB3\xBB\xC0\xC7 \xBC\xF6\xC0\xCD\xC0\xCC \xC1\xA4\xBB\xF3\xC4\xA1\xC0\xC7 50%\xB7\xCE \xC7\xCF\xC7\xE2\xB5\xCB\xB4\xCF\xB4\xD9."));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB0\xC7\xB0\xAD\xC0\xBB \xC0\xA7\xC7\xD8 \xC1\xB6\xBC\xD3\xC8\xF7 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBD\xC3\xB0\xED"));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xC8\xDE\xBD\xC4 \xB9\xD7 \xC7\xD0\xBE\xF7\xBF\xA1 \xBF\xAD\xC1\xDF\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You have already entered game fatigue,"));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("your in-game earnings are reduced to 50%% of normal."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("For your own health, please disconnect as soon as possible"));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("and focus on resting and studying."));
 				SET_OVER_TIME(ch, OT_3HOUR);
 			}
 			break;
 		default:
 			{
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xBA \xC0\xCC\xB9\xCC \xBF\xC2\xC0\xFC\xC7\xCF\xC1\xF6 \xB8\xF8\xC7\xD1 \xB0\xD4\xC0\xD3 \xBD\xC3\xB0\xA3\xBF\xA1 \xB5\xE9\xBE\xEE\xBC\xB9\xBD\xC0\xB4\xCF\xB4\xD9."));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB0\xC7\xB0\xAD\xC0\xBB \xC0\xA7\xC7\xD8 \xC1\xB6\xBC\xD3\xC8\xF7 \xC1\xA2\xBC\xD3\xC0\xBB \xC1\xBE\xB7\xE1\xC7\xCF\xBD\xC5 \xC8\xC4 \xC8\xDE\xBD\xC4\xC0\xBB \xC3\xEB\xC7\xD8\xC1\xD6\xBD\xCA\xBD\xC3\xBF\xC0,"));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB1\xD7\xB7\xB8\xC1\xF6 \xBE\xCA\xC0\xB8\xB8\xE9 \xB0\xC7\xB0\xAD \xBB\xF3\xBF\xA1 \xC7\xC7\xC7\xD8\xB8\xA6 \xC0\xD4\xC0\xBB \xBC\xF6 \xC0\xD6\xC0\xB8\xB8\xE7 \xB0\xD4\xC0\xD3 \xB3\xBB\xC0\xC7 \xBC\xF6\xC4\xA1\xB4\xC2 0\xC0\xCC \xB5\xCB\xB4\xCF\xB4\xD9."));
-				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xA9\xC0\xFB \xBF\xC0\xC7\xC1\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xCC 5\xBD\xC3\xB0\xA3\xC0\xCC \xB5\xC7\xB8\xE9 \xC1\xA4\xBB\xF3\xC0\xB8\xB7\xCE \xB5\xB9\xBE\xC6\xBF\xC9\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You have already entered an unhealthy game time."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("For your health, please disconnect and rest as soon as possible,"));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("otherwise you may suffer health damage and your in-game numbers will be zeroed out."));
+				ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("You will return to normal when your cumulative offline time reaches 5 hours."));
 				SET_OVER_TIME(ch, OT_5HOUR);
 			}
 			break;
@@ -133,9 +133,9 @@ static inline void __sec_to_timestring(int sec, char *buf, size_t buflen)
 	int min		= (sec/60);
 
 	if (hour>0)
-		snprintf(buf, buflen, LC_TEXT("%d\xBD\xC3\xB0\xA3"), hour);
+		snprintf(buf, buflen, LC_TEXT("%dh"), hour);
 	else
-		snprintf(buf, buflen, LC_TEXT("%d\xBA\xD0"), min);
+		snprintf(buf, buflen, LC_TEXT("%dm"), min);
 }
 
 static void __proc_login_notice(char *login, int on_time, int off_time)
@@ -156,13 +156,13 @@ static void __proc_login_notice(char *login, int on_time, int off_time)
 
 	if (0==on_time)
 	{
-		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC0\xC7\xC1\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA %s\xC0\xD4\xB4\xCF\xB4\xD9."), off_time_string);
-		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA 0\xC0\xCC \xB5\xC7\xBE\xFA\xBD\xC0\xB4\xCF\xB4\xD9. 100% \xC8\xBF\xB0\xFA\xB8\xA6 \xBE\xF2\xC0\xB8\xBD\xC7 \xBC\xF6 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative offline time is %s."), off_time_string);
+		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative online time is now zero. You are 100%% effective."));
 		return;
 	}
 	else
 	{
-		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("\xB4\xE7\xBD\xC5\xC0\xC7 \xB4\xA9\xC0\xFB \xBF\xC0\xC7\xC1\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA %s\xC0\xCC\xB8\xE7, \xB4\xA9\xC0\xFB \xBF\xC2\xB6\xF3\xC0\xCE \xBD\xC3\xB0\xA3\xC0\xBA %s\xC0\xD4\xB4\xCF\xB4\xD9."),
+		ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("Your cumulative offline time is %s, and your cumulative online time is %s."),
 				off_time_string, on_time_string);
 	}
 }
diff --git a/src/game/src/item.cpp b/src/game/src/item.cpp
index 0fcc07d..b604459 100644
--- a/src/game/src/item.cpp
+++ b/src/game/src/item.cpp
@@ -1544,7 +1544,7 @@ void CItem::SetAccessorySocketDownGradeTime(DWORD time)
 	SetSocket(2, time); 
 
 	if (test_server && GetOwner())
-		GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s\xBF\xA1\xBC\xAD \xBC\xD2\xC4\xCF \xBA\xFC\xC1\xFA\xB6\xA7\xB1\xEE\xC1\xF6 \xB3\xB2\xC0\xBA \xBD\xC3\xB0\xA3 %d"), GetName(), time);
+		GetOwner()->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s Time remaining until socket drops from %d"), GetName(), time);
 }
 
 EVENTFUNC(accessory_socket_expire_event)
@@ -2061,4 +2061,4 @@ bool CItem::IsSameSpecialGroup(const LPITEM item) const
 		return true;
 
 	return false;
-}
\ No newline at end of file
+}
diff --git a/src/game/src/item_manager.cpp b/src/game/src/item_manager.cpp
index 7d635e9..09912a4 100644
--- a/src/game/src/item_manager.cpp
+++ b/src/game/src/item_manager.cpp
@@ -1474,7 +1474,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	//육각보합
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2006_drop") >= Random::get(1, iRandRange))
 	{
-        SPDLOG_DEBUG("\xC0\xB0\xB0\xA2\xBA\xB8\xC7\xD5 DROP EVENT ");
+        SPDLOG_DEBUG("Hexagonal Treasure Chest DROP EVENT ");
 
 		const static DWORD dwVnum = 50037;
 
@@ -1486,7 +1486,7 @@ void ITEM_MANAGER::CreateQuestDropItem(LPCHARACTER pkChr, LPCHARACTER pkKiller,
 	//육각보합+
 	if (GetDropPerKillPct(100, g_iUseLocale ? 2000 : 800, iDeltaPercent, "2007_drop") >= Random::get(1, iRandRange))
 	{
-        SPDLOG_DEBUG("\xC0\xB0\xB0\xA2\xBA\xB8\xC7\xD5 DROP EVENT ");
+        SPDLOG_DEBUG("Hexagonal Treasure Chest DROP EVENT ");
 
 		const static DWORD dwVnum = 50043;
 
diff --git a/src/game/src/item_manager_read_tables.cpp b/src/game/src/item_manager_read_tables.cpp
index a059bac..97a4dc7 100644
--- a/src/game/src/item_manager_read_tables.cpp
+++ b/src/game/src/item_manager_read_tables.cpp
@@ -373,6 +373,7 @@ bool ITEM_MANAGER::ConvSpecialDropItemFile()
 				if (!GetVnumByOriginalName(name.c_str(), dwVnum))
 				{
 					if (	name == "\xB0\xE6\xC7\xE8\xC4\xA1" ||
+						name == "exp" ||
 						name == "mob" ||
 						name == "slow" ||
 						name == "drain_hp" ||
diff --git a/src/game/src/messenger_manager.cpp b/src/game/src/messenger_manager.cpp
index 8f42d03..1d8641a 100644
--- a/src/game/src/messenger_manager.cpp
+++ b/src/game/src/messenger_manager.cpp
@@ -118,7 +118,7 @@ void MessengerManager::RequestToAdd(LPCHARACTER ch, LPCHARACTER target)
 	
 	if (quest::CQuestManager::instance().GetPCForce(ch->GetPlayerID())->IsRunning() == true)
 	{
-	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBB\xF3\xB4\xEB\xB9\xE6\xC0\xCC \xC4\xA3\xB1\xB8 \xC3\xDF\xB0\xA1\xB8\xA6 \xB9\xDE\xC0\xBB \xBC\xF6 \xBE\xF8\xB4\xC2 \xBB\xF3\xC5\xC2\xC0\xD4\xB4\xCF\xB4\xD9."));
+	    ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The other person is unable to accept friend requests."));
 	    return;
 	}
 
diff --git a/src/game/src/monarch.cpp b/src/game/src/monarch.cpp
index b29cded..28c2ad8 100644
--- a/src/game/src/monarch.cpp
+++ b/src/game/src/monarch.cpp
@@ -76,7 +76,7 @@ int CMonarch::HealMyEmpire(LPCHARACTER ch ,DWORD price)
 
 	if (!IsMoneyOk(price, Empire)) 
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), GetMoney(Empire), price);
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), GetMoney(Empire), price);
 		return 0;
 	}
 
@@ -270,4 +270,4 @@ bool IsMonarchWarpZone (int map_idx)
 	}
 
 	return (map_idx != 208 && map_idx != 216 && map_idx != 217);
-}
\ No newline at end of file
+}
diff --git a/src/game/src/questlua_monarch.cpp b/src/game/src/questlua_monarch.cpp
index fae1bf8..10ac588 100644
--- a/src/game/src/questlua_monarch.cpp
+++ b/src/game/src/questlua_monarch.cpp
@@ -184,7 +184,7 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, money_need);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, money_need);
 			return 0;
 		}
 
@@ -241,7 +241,7 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, money_need);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, money_need);
 			return 0;
 		}
 	
@@ -332,7 +332,7 @@ namespace quest
 				if (!CMonarch::instance().IsMoneyOk(CASTLE_FROG_PRICE, ch->GetEmpire()))
 				{
 					int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, CASTLE_FROG_PRICE);
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, CASTLE_FROG_PRICE);
 					return 0;
 				}
 
@@ -421,7 +421,7 @@ namespace quest
 			if (!CMonarch::instance().IsMoneyOk(money_need, ch->GetEmpire()))
 			{
 				int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, money_need);
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, money_need);
 				return 0;
 			}
 			guard_leader = castle_spawn_guard(ch->GetEmpire(), group_vnum, region_index);
@@ -506,7 +506,7 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, WarpPrice);
 			return 0;	
 		}
 
@@ -533,7 +533,7 @@ namespace quest
 	
 				if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));	
 					return 0;
 				}
 
@@ -572,7 +572,7 @@ namespace quest
 
 			if (!IsMonarchWarpZone(tch->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 				return 0;
 			}
 
@@ -660,7 +660,7 @@ namespace quest
 		if (!CMonarch::instance().IsMoneyOk(WarpPrice, ch->GetEmpire()))
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, WarpPrice);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, WarpPrice);
 			return 0;	
 		}
 
@@ -686,12 +686,12 @@ namespace quest
 
 				if (!IsMonarchWarpZone(pkCCI->lMapIndex))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));	
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));	
 					return 0;
 				}
 				if (!IsMonarchWarpZone(ch->GetMapIndex()))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to summon to the region."));
 					return 0;
 				}
 
@@ -733,12 +733,12 @@ namespace quest
 
 		if (!IsMonarchWarpZone(tch->GetMapIndex()))
 		{
-			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 			return 0;
 		}
 		if (!IsMonarchWarpZone(ch->GetMapIndex()))
 		{
-			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+			ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to summon to the region."));
 			return 0;
 		}
 		tch->WarpSet(ch->GetX(), ch->GetY(), ch->GetMapIndex());
@@ -841,7 +841,7 @@ namespace quest
 		if (CMonarch::instance().IsMoneyOk(ciTransferCost, ch->GetEmpire()) == false)
 		{
 			int NationMoney = CMonarch::instance().GetMoney(ch->GetEmpire());
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xB1\xB9\xB0\xED\xBF\xA1 \xB5\xB7\xC0\xCC \xBA\xCE\xC1\xB7\xC7\xD5\xB4\xCF\xB4\xD9. \xC7\xF6\xC0\xE7 : %u \xC7\xCA\xBF\xE4\xB1\xDD\xBE\xD7 : %u"), NationMoney, ciTransferCost);
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The Treasury is running out of money. Currently: %u Amount needed: %u"), NationMoney, ciTransferCost);
 			return 0;
 		}
 
@@ -863,19 +863,19 @@ namespace quest
 
 				if (pCCI->bChannel != g_bChannel)
 				{
-					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA %d \xC3\xA4\xB3\xCE\xBF\xA1 \xC1\xA2\xBC\xD3\xC1\xDF\xC0\xD4\xB4\xCF\xB4\xD9. (\xC7\xF6\xC0\xE7 \xC3\xA4\xB3\xCE: %d)"),
+					ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("The player %s is on channel %d at the moment. (Your channel: %d)"),
 						   strTargetName.c_str(), pCCI->bChannel, g_bChannel);
 					return 0;
 				}
 
 				if (!IsMonarchWarpZone(pCCI->lMapIndex))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 					return 0;
 				}
 				if (!IsMonarchWarpZone(ch->GetMapIndex()))
 				{
-					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+					ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to summon to the region."));
 					return 0;
 				}
 
@@ -886,7 +886,7 @@ namespace quest
 				packet.y = ch->GetY();
 
 				P2P_MANAGER::instance().Send(&packet, sizeof(TPacketMonarchGGTransfer));
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC8\xAF \xBF\xE4\xC3\xBB\xC0\xBB \xBA\xB8\xB3\xC2\xBD\xC0\xB4\xCF\xB4\xD9"));
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You sent a summons request"));
 
 				CMonarch::instance().SendtoDBDecMoney(ciTransferCost, ch->GetEmpire(), ch);
 				ch->SetMC(CHARACTER::MI_TRANSFER);
@@ -913,18 +913,18 @@ namespace quest
 
 			if (DISTANCE_APPROX(pTargetChar->GetX() - ch->GetX(), pTargetChar->GetY() - ch->GetY()) <= 5000)
 			{
-				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s \xB4\xD4\xC0\xBA \xB1\xD9\xC3\xB3\xBF\xA1 \xC0\xD6\xBD\xC0\xB4\xCF\xB4\xD9"), pTargetChar->GetName());
+				ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("%s is too far away."), pTargetChar->GetName());
 				return 0;
 			}
 
 			if (!IsMonarchWarpZone(pTargetChar->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to navigate to the region."));
 				return 0;
 			}
 			if (!IsMonarchWarpZone(ch->GetMapIndex()))
 			{
-				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("\xC7\xD8\xB4\xE7 \xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xBC\xD2\xC8\xAF\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+				ch->ChatPacket (CHAT_TYPE_INFO, LC_TEXT("Unable to summon to the region."));
 				return 0;
 			}
 
@@ -937,7 +937,7 @@ namespace quest
 
 			event_create(monarch_transfer2_event, info, 1);
 
-			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xBC\xD2\xC8\xAF \xBF\xE4\xC3\xBB\xC0\xBB \xBA\xB8\xB3\xC2\xBD\xC0\xB4\xCF\xB4\xD9"));
+			ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You sent a summons request"));
 
 			CMonarch::instance().SendtoDBDecMoney(ciTransferCost, ch->GetEmpire(), ch);
 			ch->SetMC(CHARACTER::MI_TRANSFER);
diff --git a/src/game/src/questlua_pc.cpp b/src/game/src/questlua_pc.cpp
index 25ee11f..205831f 100644
--- a/src/game/src/questlua_pc.cpp
+++ b/src/game/src/questlua_pc.cpp
@@ -227,7 +227,7 @@ namespace quest
 		int iPulse = thecore_pulse();	
 		if ( pkChr->GetExchange() || pkChr->GetMyShop() || pkChr->GetShopOwner() || pkChr->IsOpenSafebox() )
 		{
-			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1\xC3\xA2,\xC3\xA2\xB0\xED \xB5\xEE\xC0\xBB \xBF\xAC \xBB\xF3\xC5\xC2\xBF\xA1\xBC\xAD\xB4\xC2 \xB4\xD9\xB8\xA5\xB0\xF7\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF\xC7\xD2\xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9" ));
+			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("You can't teleport while a trading window, storeroom, etc. is open" ));
 
 			return;
 		}
@@ -235,7 +235,7 @@ namespace quest
 		//교환 후 시간체크
 		if ( iPulse - pkChr->GetExchangeTime()  < PASSES_PER_SEC(60) )
 		{
-			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xB8\xA5\xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
+			pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("You cannot go elsewhere for a period of time after the trade." ) );
 			return;
 		}
 		//END_PREVENT_PORTAL_AFTER_EXCHANGE
@@ -243,7 +243,7 @@ namespace quest
 		{
 			if ( iPulse - pkChr->GetMyShopTime() < PASSES_PER_SEC(60) )
 			{
-				pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("\xB0\xC5\xB7\xA1 \xC8\xC4 1\xBA\xD0 \xC0\xCC\xB3\xBB\xBF\xA1\xB4\xC2 \xB4\xD9\xB8\xA5\xC1\xF6\xBF\xAA\xC0\xB8\xB7\xCE \xC0\xCC\xB5\xBF \xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9." ) );
+				pkChr->ChatPacket( CHAT_TYPE_INFO, LC_TEXT("You cannot go elsewhere for a period of time after the trade." ) );
 				return;
 			}
 
diff --git a/src/game/src/shop_manager.cpp b/src/game/src/shop_manager.cpp
index 8018ddf..0cb59ff 100644
--- a/src/game/src/shop_manager.cpp
+++ b/src/game/src/shop_manager.cpp
@@ -282,7 +282,7 @@ void CShopManager::Sell(LPCHARACTER ch, BYTE bCell, BYTE bCount)
 
 	if (item->IsEquipped() == true)
 	{
-		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("\xC2\xF8\xBF\xEB \xC1\xDF\xC0\xCE \xBE\xC6\xC0\xCC\xC5\xDB\xC0\xBA \xC6\xC7\xB8\xC5\xC7\xD2 \xBC\xF6 \xBE\xF8\xBD\xC0\xB4\xCF\xB4\xD9."));
+		ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can't sell items that you're wearing."));
 		return;
 	}
 

From 1ba21fb1f939b681d7aea2aa3839cd57257b7a04 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 17:57:14 +0200
Subject: [PATCH 18/21] translate remaining SPDLOG calls

---
 src/db/src/ClientManagerBoot.cpp | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/db/src/ClientManagerBoot.cpp b/src/db/src/ClientManagerBoot.cpp
index cfaa57c..f3488f6 100644
--- a/src/db/src/ClientManagerBoot.cpp
+++ b/src/db/src/ClientManagerBoot.cpp
@@ -203,7 +203,7 @@ bool CClientManager::InitializeMobTable()
 	cCsvTable nameData;
 	if(!nameData.Load("mob_names.txt",'\t'))
 	{
-		SPDLOG_ERROR("mob_names.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("mob_names.txt Failed to read the file");
 		isNameFile = false;
 	} else {
 		nameData.Next();	//설명row 생략.
@@ -224,7 +224,7 @@ bool CClientManager::InitializeMobTable()
 	cCsvTable test_data;
 	if(!test_data.Load("mob_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("테스트 파일이 없습니다. 그대로 진행합니다.");
+		SPDLOG_ERROR("No test file exists, proceed as is.");
 		isTestFile = false;
 	}
 	//2. (c)[test_map_mobTableByVnum](vnum:TMobTable) 맵 생성.
@@ -243,7 +243,7 @@ bool CClientManager::InitializeMobTable()
 
 			if (!Set_Proto_Mob_Table(test_mob_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("몹 프로토 테이블 셋팅 실패.");
+				SPDLOG_ERROR("Mob proto table setup failed.");
 			}
 
 			test_map_mobTableByVnum.insert(std::map::value_type(test_mob_table->dwVnum, test_mob_table));
@@ -264,7 +264,7 @@ bool CClientManager::InitializeMobTable()
 	//1. 파일 읽기.
 	cCsvTable data;
 	if(!data.Load("mob_proto.txt",'\t')) {
-		SPDLOG_ERROR("mob_proto.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("mob_proto.txt Failed to read the file");
 		return false;
 	}
 	data.Next();					//설명 row 넘어가기
@@ -283,7 +283,7 @@ bool CClientManager::InitializeMobTable()
 	data.Destroy();
 	if(!data.Load("mob_proto.txt",'\t'))
 	{
-		SPDLOG_ERROR("mob_proto.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("mob_proto.txt Failed to read the file");
 		return false;
 	}
 	data.Next(); //맨 윗줄 제외 (아이템 칼럼을 설명하는 부분)
@@ -378,7 +378,7 @@ bool CClientManager::InitializeMobTable()
 
 			if (!Set_Proto_Mob_Table(mob_table, data, localMap))
 			{
-				SPDLOG_ERROR("몹 프로토 테이블 셋팅 실패.");
+				SPDLOG_ERROR("Mob proto table setup failed.");
 			}
 
 						
@@ -402,7 +402,7 @@ bool CClientManager::InitializeMobTable()
 	test_data;
 	if(!test_data.Load("mob_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("테스트 파일이 없습니다. 그대로 진행합니다.");
+		SPDLOG_ERROR("No test file exists, proceed as is.");
 		isTestFile = false;
 	}
 	if(isTestFile) {
@@ -419,7 +419,7 @@ bool CClientManager::InitializeMobTable()
 
 			if (!Set_Proto_Mob_Table(mob_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("몹 프로토 테이블 셋팅 실패.");
+				SPDLOG_ERROR("Mob proto table setup failed.");
 			}
 
 			SPDLOG_DEBUG("MOB #{:<5} {:24} {:24} level: {:<3} rank: {} empire: {}", mob_table->dwVnum, mob_table->szName, mob_table->szLocaleName, mob_table->bLevel, mob_table->bRank, mob_table->bEmpire);
@@ -603,7 +603,7 @@ bool CClientManager::InitializeItemTable()
 	cCsvTable nameData;
 	if(!nameData.Load("item_names.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_names.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("item_names.txt Failed to read the file");
 		isNameFile = false;
 	} else {
 		nameData.Next();
@@ -622,7 +622,7 @@ bool CClientManager::InitializeItemTable()
 	cCsvTable test_data;
 	if(!test_data.Load("item_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto_test.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("item_proto_test.txt Failed to read the file");
 		//return false;
 	} else {
 		test_data.Next();	//설명 로우 넘어가기.
@@ -639,7 +639,7 @@ bool CClientManager::InitializeItemTable()
 
 			if (!Set_Proto_Item_Table(test_item_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("아이템 프로토 테이블 셋팅 실패.");
+				SPDLOG_ERROR("Item proto table setup failed.");
 			}
 
 			test_map_itemTableByVnum.insert(std::map::value_type(test_item_table->dwVnum, test_item_table));
@@ -666,7 +666,7 @@ bool CClientManager::InitializeItemTable()
 	cCsvTable data;
 	if(!data.Load("item_proto.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("item_proto.txt Failed to read the file");
 		return false;
 	}
 	data.Next(); //맨 윗줄 제외 (아이템 칼럼을 설명하는 부분)
@@ -693,7 +693,7 @@ bool CClientManager::InitializeItemTable()
 	data.Destroy();
 	if(!data.Load("item_proto.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("item_proto.txt Failed to read the file");
 		return false;
 	}
 	data.Next(); //맨 윗줄 제외 (아이템 칼럼을 설명하는 부분)
@@ -715,7 +715,7 @@ bool CClientManager::InitializeItemTable()
 			
 			if (!Set_Proto_Item_Table(item_table, data, localMap))
 			{
-				SPDLOG_ERROR("아이템 프로토 테이블 셋팅 실패.");
+				SPDLOG_ERROR("Item proto table setup failed.");
 			}
 
 
@@ -782,7 +782,7 @@ bool CClientManager::InitializeItemTable()
 	test_data.Destroy();
 	if(!test_data.Load("item_proto_test.txt",'\t'))
 	{
-		SPDLOG_ERROR("item_proto_test.txt 파일을 읽어오지 못했습니다");
+		SPDLOG_ERROR("item_proto_test.txt Failed to read the file");
 		//return false;
 	} else {
 		test_data.Next();	//설명 로우 넘어가기.
@@ -798,7 +798,7 @@ bool CClientManager::InitializeItemTable()
 			
 			if (!Set_Proto_Item_Table(item_table, test_data, localMap))
 			{
-				SPDLOG_ERROR("아이템 프로토 테이블 셋팅 실패.");
+				SPDLOG_ERROR("Item proto table setup failed.");
 			}
 
 

From 026cb861a880074cfc6800a6bed74f20b775e389 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 17:57:30 +0200
Subject: [PATCH 19/21] fix missing quote mark

---
 src/game/src/OXEvent.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/game/src/OXEvent.cpp b/src/game/src/OXEvent.cpp
index 4153eac..a63e3ba 100644
--- a/src/game/src/OXEvent.cpp
+++ b/src/game/src/OXEvent.cpp
@@ -247,7 +247,7 @@ bool COXEventManager::Quiz(unsigned char level, int timelimit)
 
 	int idx = Random::get(0, m_vec_quiz[level].size() - 1);
 
-	SendNoticeMap(LC_TEXT("OX-Question: ), OXEVENT_MAP_INDEX, true);
+	SendNoticeMap(LC_TEXT("OX-Question: "), OXEVENT_MAP_INDEX, true);
 	SendNoticeMap(m_vec_quiz[level][idx].Quiz, OXEVENT_MAP_INDEX, true);
 	SendNoticeMap(LC_TEXT("If it's correct, then go to O. If it's wrong, go to X."), OXEVENT_MAP_INDEX, true);
 

From eafbee616fd71b6805325dc46ebbce9e3b337aa6 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 17:58:03 +0200
Subject: [PATCH 20/21] english locale as base

---
 gamefiles/locale/english/locale_string.txt | 1524 ++++++++++----------
 1 file changed, 762 insertions(+), 762 deletions(-)

diff --git a/gamefiles/locale/english/locale_string.txt b/gamefiles/locale/english/locale_string.txt
index b630594..572c426 100644
--- a/gamefiles/locale/english/locale_string.txt
+++ b/gamefiles/locale/english/locale_string.txt
@@ -1,2285 +1,2285 @@
-" ش    ̵˴ϴ.";
+"Everyone will be teleported into the city shortly.";
 "Everyone will be teleported into the city shortly.";
 
-" ʴ  Դϴ";
+"This item does not exist.";
 "This item does not exist.";
 
-"ڰ ڱ Ͽϴ!  ߽ϴ.";
+"The box suddenly exploded! You have lost Hit Points (HP).";
 "The box suddenly exploded! You have lost Hit Points (HP).";
 
-"ڿ   ⸦ ̸  ¸ ϴ!";
+"If you inhale the green smoke that is coming out of the box, the poison will spread through your body!";
 "If you inhale the green smoke that is coming out of the box, the poison will spread through your body!";
 
-"%s   ȹϼ̽ϴ";
+"You have received %s, %d units.";
 "You have received %s, %d units.";
 
-"ڿ %s  Խϴ.";
+"The box contains %s.";
 "The box contains %s.";
 
-"谡  ʴ  .";
+"This key does not seem to fit the lock.";
 "This key does not seem to fit the lock.";
 
-"ƹ͵   ϴ.";
+"You have not received anything.";
 "You have not received anything.";
 
-" ϱ   մϴ.";
+"You do not have enough Yang to use this item.";
 "You do not have enough Yang to use this item.";
 
-" Ͽ     ϴ.";
+"You do not have enough Yang to use this item.";
 "You do not have enough Yang to use this item.";
 
-"ų  µ Ͽϴ.";
+"You have lowered your Skill Level.";
 "You have lowered your Skill Level.";
 
-"ų    ϴ.";
+"You cannot lower your Skill Level.";
 "You cannot lower your Skill Level.";
 
-"̹ ȿ ɷ ֽϴ.";
+"This effect is already activated.";
 "This effect is already activated.";
 
-"  PC濡   ֽϴ.";
+"This item can only be used in an Internet cafe.";
 "This item can only be used in an Internet cafe.";
 
-" ѷ ʰϿϴ.";
+"That is over the limit.";
 "That is over the limit.";
 
-"ǰ  κ丮 մϴ. κ丮 ּ!";
+"Unfortunately you don't have enough space in your inventory.";
 "Unfortunately you don't have enough space in your inventory.";
 
-" Ǵ   Ͽϴ";
+"Used Moon Cake or Seed.";
 "Used Moon Cake or Seed.";
 
-"ȥ ° ƴϸ ȥ   ϴ.";
+"You cannot wear a Wedding Ring if you are not married.";
 "You cannot wear a Wedding Ring if you are not married.";
 
-"  ̺Ʈ Ⱑ  ʴ° ϴ.";
+"You cannot use the Event Detector from this position.";
 "You cannot use the Event Detector from this position.";
 
-"    ϴ.";
+"This item cannot be absorbed.";
 "This item cannot be absorbed.";
 
-"̺Ʈ Ⱑ źο   ϴ.";
+"The Event Detector vanished in a mysterious light.";
 "The Event Detector vanished in a mysterious light.";
 
-"̺Ʈ Ⱑ   ϴ.";
+"The Event Detector has vanished.";
 "The Event Detector has vanished.";
 
-"   Ⱑ  ʴ° ϴ.";
+"The Compass for Metin Stones does not work in dungeons.";
 "The Compass for Metin Stones does not work in dungeons.";
 
-" Ⱑ źο   ϴ.";
+"The Compass for Metin Stones has vanished in the mysterious light.";
 "The Compass for Metin Stones has vanished in the mysterious light.";
 
-"ڿ %s  %d  Խϴ.";
+"Receive: %s - %d";
 "Receive: %s - %d";
 
-" Ⱑ   ϴ.";
+"The Compass for Metin Stones has vanished.";
 "The Compass for Metin Stones has vanished.";
 
-"  Խϴ.";
+"You find a simple Piece of Stone in the Clam.";
 "You find a simple Piece of Stone in the Clam.";
 
-"   ϴ.";
+"The Clam has vanished.";
 "The Clam has vanished.";
 
-" ְ Խϴ.";
+"There is a White Pearl inside the Clam.";
 "There is a White Pearl inside the Clam.";
 
-" ûְ Խϴ.";
+"There is a Blue Pearl inside the Clam.";
 "There is a Blue Pearl inside the Clam.";
 
-" ְ Խϴ.";
+"There is a Blood-Red Pearl inside the Clam.";
 "There is a Blood-Red Pearl inside the Clam.";
 
-" å ʹ  ϱⰡ ϴ.";
+"It isn't easy to understand this book.";
 "It isn't easy to understand this book.";
 
-" å ƹ      ʽϴ.";
+"This book will not help you.";
 "This book will not help you.";
 
-" 30 DZ       ʽϴ.";
+"You need to have a minimum level of 30 to understand this book.";
 "You need to have a minimum level of 30 to understand this book.";
 
-" 50 DZ       ʽϴ.";
+"You need a minimum level of 50 to understand this book.";
 "You need a minimum level of 50 to understand this book.";
 
-" ̻   ϴ.";
+"You can't train any more Combos.";
 "You can't train any more Combos.";
 
-"%s   %s  ȹϿϴ.";
+"%s has captured the flag of %s!";
 "%s has captured the flag of %s!";
 
-"̹ Ϻϰ ˾Ƶ  ִ ̴.";
+"You already understand this language.";
 "You already understand this language.";
 
-" å    ÷ մϴ.";
+"You have to improve your Level to read this Book.";
 "You have to improve your Level to read this Book.";
 
-" å ʹ    ϴ.";
+"The book is too hard for practising.";
 "The book is too hard for practising.";
 
-" åδ  ̻   ϴ.";
+"You cannot train with this Book any more.";
 "You cannot train with this Book any more.";
 
-" %d % Ǿϴ";
+"Taxes are set to %d%%.";
 "Taxes are set to %d%%.";
 
-" ¸ ų   ִ  ƴմϴ.";
+"You need a minimum level of 50 to get riding training.";
 "You need a minimum level of 50 to get riding training.";
 
-"־ȼ  ȭԸ Խϴ.";
+"You have escaped the evil ghost curse with the help of an Exorcism Scroll.";
 "You have escaped the evil ghost curse with the help of an Exorcism Scroll.";
 
-" ̻ ¸ ü   ϴ.";
+"You cannot read any more Riding Guides.";
 "You cannot read any more Riding Guides.";
 
-"¸ ü о ¸ ų Ʈ ϴ.";
+"You read the Horse Riding Manual and received a Riding Point.";
 "You read the Horse Riding Manual and received a Riding Point.";
 
-" Ʈδ ¸ ų  ø  ֽϴ.";
+"You can use this point to improve your riding skill!";
 "You can use this point to improve your riding skill!";
 
-"%s 尡 %s   Ѿҽϴ!";
+"The guild %s's flag has been stolen by player %s.";
 "The guild %s's flag has been stolen by player %s.";
 
-"¸ ü ؿ Ͽϴ.";
+"You did not understand the riding guide.";
 "You did not understand the riding guide.";
 
-" ±.   𰡰   ̾.";
+"Your mind is clear. You can concentrate really well now.";
 "Your mind is clear. You can concentrate really well now.";
 
-"ġ %d Ͽϴ.";
+"Your rank has increased by %d points.";
 "Your rank has increased by %d points.";
 
-" ŸϿ  Ż Ұմϴ.";
+"You cannot dye or bleach your current hairstyle.";
 "You cannot dye or bleach your current hairstyle.";
 
-"%d  Ǿ ٽ Ͻ  ֽϴ.";
+"You need to have reached level %d to be able to dye your hair again.";
 "You need to have reached level %d to be able to dye your hair again.";
 
-" ʾ     ϴ.";
+"This item can only be opened by the another gender.";
 "This item can only be opened by the another gender.";
 
-" ġ   ϴ.";
+"You cannot use this from your current position.";
 "You cannot use this from your current position.";
 
-"̵ غ Ǿ ȯθ Ҽ ϴ";
+"You are ready to warp, so you cannot use the Scroll of the Location.";
 "You are ready to warp, so you cannot use the Scroll of the Location.";
 
-" ġ ";
+"You are being brought back to the place of origin.";
 "You are being brought back to the place of origin.";
 
-" ȿ %s%s   ϴ.";
+"%s%s cannot be used in a dungeon.";
 "%s%s cannot be used in a dungeon.";
 
-"<Ʈ>      ־ ٽ  ʽϴ.";
+"[Quest] You have already received your reward.";
 "[Quest] You have already received your reward.";
 
-"";
+"the";
 "the";
 
-"";
+"the";
 "the";
 
-"û   ʽϴ.";
+"There aren't any Pieces of Broken Stone available for removal.";
 "There aren't any Pieces of Broken Stone available for removal.";
 
-"Ӽ    Դϴ.";
+"You cannot change the upgrade of this item.";
 "You cannot change the upgrade of this item.";
 
-" Ӽ ϴ.";
+"There is no upgrade that you can change.";
 "There is no upgrade that you can change.";
 
-"Ӽ ٲ %d ̳ ٽ   ϴ.(%d  )";
+"You can only do this %d minutes after an upgrade. (%d minutes left)";
 "You can only do this %d minutes after an upgrade. (%d minutes left)";
 
-"Ӽ Ͽϴ.";
+"You have changed the upgrade.";
 "You have changed the upgrade.";
 
-"Ӽ ߰ Ͽϴ.";
+"Upgrade successfully added.";
 "Upgrade successfully added.";
 
-"Ӽ ߰ Ͽϴ.";
+"No upgrade added.";
 "No upgrade added.";
 
-"̻   ̿Ͽ Ӽ ߰  ϴ.";
+"You must use the Blessing Marble in order to add another bonus to this item.";
 "You must use the Blessing Marble in order to add another bonus to this item.";
 
-"忡 Ͻ  ϴ.";
+"You cannot use this in the duel arena.";
 "You cannot use this in the duel arena.";
 
-" ̻   ̿Ͽ Ӽ ߰  ϴ.";
+"This item can no longer be improved. The maximum number of bonuses has been reached.";
 "This item can no longer be improved. The maximum number of bonuses has been reached.";
 
-" 簡񼭸 ̿Ͽ Ӽ ߰ ּ.";
+"You can only use the Blessing Marble with an item which already has 4 bonuses.";
 "You can only use the Blessing Marble with an item which already has 4 bonuses.";
 
-"  ߰Ǿϴ.";
+"Socket successfully added.";
 "Socket successfully added.";
 
-" ߰ Ͽϴ.";
+"No socket added.";
 "No socket added.";
 
-" ׼ ̻  ߰  ϴ.";
+"No additional sockets could be added to this item.";
 "No additional sockets could be added to this item.";
 
-"   ߰   Դϴ.";
+"You cannot add a socket to this item.";
 "You cannot add a socket to this item.";
 
-" Ͽϴ.";
+"Arming successful.";
 "Arming successful.";
 
-" Ͽϴ.";
+"Arming has failed.";
 "Arming has failed.";
 
-" ̾Ƹ Ǽ  ߰ؾմϴ.";
+"You have to add a socket first. Use a diamond in order to do this.";
 "You have to add a socket first. Use a diamond in order to do this.";
 
-" ׼ ̻   ϴ.";
+"There are no sockets for gemstones in this item.";
 "There are no sockets for gemstones in this item.";
 
-"  ÿ   ֽϴ.";
+"You can do this when you wear an Emotion Mask.";
 "You can do this when you wear an Emotion Mask.";
 
-"̾Ƹ  ߰ؾմϴ.";
+"You have to add a socket if you want to use a Diamond.";
 "You have to add a socket if you want to use a Diamond.";
 
-" ׼ ̻    ϴ.";
+"No more gems can be added to this item.";
 "No more gems can be added to this item.";
 
-"    ϴ.";
+"These items cannot be used together.";
 "These items cannot be used together.";
 
-" ߿ ̳ Ƴ  ϴ.";
+"You cannot change the Bait whilst fishing.";
 "You cannot change the Bait whilst fishing.";
 
-"̹ ִ ̳  %s ϴ.";
+"You are exchanging the current Bait for %s.";
 "You are exchanging the current Bait for %s.";
 
-"ô뿡 %s ̳ ϴ.";
+"You attached %s to the hook as bait.";
 "You attached %s to the hook as bait.";
 
-"   ᰡ մϴ.";
+"You are missing some ingredients to make the potion.";
 "You are missing some ingredients to make the potion.";
 
-"(%s) մϴ.";
+"You do not have enough material (%s).";
 "You do not have enough material (%s).";
 
-"  ڸϴ.";
+"You do not have enough empty bottles.";
 "You do not have enough empty bottles.";
 
-"  ߽ϴ.";
+"The potion production has failed.";
 "The potion production has failed.";
 
-"ڸ   ֽϴ.";
+"Only women can do this.";
 "Only women can do this.";
 
-"  ƾ    ϴ.";
+"You cannot attach several stones of the same type.";
 "You cannot attach several stones of the same type.";
 
-" ƾ    ϴ.";
+"This Spirit Stone cannot be attached to this type of item.";
 "This Spirit Stone cannot be attached to this type of item.";
 
-" ƾ ⿡   ϴ.";
+"You cannot attach this Spirit Stone to a weapon.";
 "You cannot attach this Spirit Stone to a weapon.";
 
-"ƾ  Ͽϴ.";
+"You have attached the Spirit Stone successfully.";
 "You have attached the Spirit Stone successfully.";
 
-"ƾ  Ͽϴ.";
+"The Spirit Stone broke while being attached.";
 "The Spirit Stone broke while being attached.";
 
-"  ִ  ϴ.";
+"No slot free.";
 "No slot free.";
 
-"Ҽ ϴ.";
+"This function is not available right now.";
 "This function is not available right now.";
 
-"Ÿ  ߿ ȯ,ȯθ Ҽ ϴ.";
+"You cannot use a Scroll of the Location whilst taking part in a kingdom battle.";
 "You cannot use a Scroll of the Location whilst taking part in a kingdom battle.";
 
-"â  %d ̳ ȯ,ȯθ   ϴ.";
+"After opening the Storeroom you cannot use a Scroll of the Location for %d seconds.";
 "After opening the Storeroom you cannot use a Scroll of the Location for %d seconds.";
 
-"ŷâ,â   ¿ ȯ,ȯ  Ҽ ϴ.";
+"You cannot use a Scroll of the Location while another window is open.";
 "You cannot use a Scroll of the Location while another window is open.";
 
-"׷  ϴ.";
+"This person does not exist.";
 "This person does not exist.";
 
-"  %d ̳ ȯ,ȯθ   ϴ.";
+"After a trade, you cannot use a scroll for another %d seconds.";
 "After a trade, you cannot use a scroll for another %d seconds.";
 
-"λ  %d ̳ ȯ,ȯθ   ϴ.";
+"After opening a storeroom you cannot use a Scroll of the Location for another %d seconds.";
 "After opening a storeroom you cannot use a Scroll of the Location for another %d seconds.";
 
-"̵ Ǿ ġ ʹ  ȯθ Ҽ ϴ.";
+"You cannot use the Scroll of the Location because the distance is too small.";
 "You cannot use the Scroll of the Location because the distance is too small.";
 
-"ŷ  %d ̳ ȯ,ȯε   ϴ.";
+"After a trade you cannot use a Scroll of the Location for %d seconds.";
 "After a trade you cannot use a Scroll of the Location for %d seconds.";
 
-"ŷâ,â   ¿ ,ܺ Ҽ ϴ.";
+"You cannot open the Storeroom if another window is already open.";
 "You cannot open the Storeroom if another window is already open.";
 
-"   Դϴ.";
+"You cannot drop this item.";
 "You cannot drop this item.";
 
-"  3  ϴ.";
+"The dropped item will vanish in 5 minutes.";
 "The dropped item will vanish in 5 minutes.";
 
-" ȹ: %s";
+"%s received";
 "%s received";
 
-"ϰ ִ  ʹ ϴ.";
+"You have too many items in your inventory.";
 "You have too many items in your inventory.";
 
-" ȹ: %s κ %s";
+"%s receives %s.";
 "%s receives %s.";
 
-"   ̵˴ϴ.";
+"Everyone will be teleported into the city shortly.";
 "Everyone will be teleported into the city shortly.";
 
-"ʹ  ֽϴ.";
+"You are too near.";
 "You are too near.";
 
-" : %s Կ %s";
+"Item Trade: %s, %s";
 "Item Trade: %s, %s";
 
-"а ߿     ϴ.";
+"You cannot change the equipped item while you are transformed.";
 "You cannot change the equipped item while you are transformed.";
 
-"     ֽϴ.";
+"You have to stand still to equip the item.";
 "You have to stand still to equip the item.";
 
-"   ʸ   ϴ.";
+"Monkey Herbs cannot be fed to living horses. It is used to revive dead horses.";
 "Monkey Herbs cannot be fed to living horses. It is used to revive dead horses.";
 
-"  Ḧ   ϴ.";
+"You cannot feed a dead Horse.";
 "You cannot feed a dead Horse.";
 
-" ʸ ־ϴ.";
+"You fed the Horse with Herbs.";
 "You fed the Horse with Herbs.";
 
-" Ḧ ־ϴ.";
+"You have fed the Horse.";
 "You have fed the Horse.";
 
-"  Ӹ    Դϴ.";
+"Your level is too low to wear this Hairstyle.";
 "Your level is too low to wear this Hairstyle.";
 
-" Ӹ ŸϷδ ü  ϴ.";
+"You already have this Hairstyle.";
 "You already have this Hairstyle.";
 
-"̹ а Դϴ.";
+"You have already transformed.";
 "You have already transformed.";
 
-"ʹ ָ ֽϴ";
+"You are too far away.";
 "You are too far away.";
 
-"߸ а Դϴ.";
+"That's the wrong trading item.";
 "That's the wrong trading item.";
 
-" ʹ   ͷδ    ϴ.";
+"You cannot transform into a monster who has a higher level than you.";
 "You cannot transform into a monster who has a higher level than you.";
 
-"    ϴ.";
+"Your level is too low to equip this item.";
 "Your level is too low to equip this item.";
 
-"ٷ    ϴ.";
+"You are not strong enough to equip yourself with this item.";
 "You are not strong enough to equip yourself with this item.";
 
-"    ϴ.";
+"Your intelligence is too low to equip yourself with this item.";
 "Your intelligence is too low to equip yourself with this item.";
 
-"ø    ϴ.";
+"Your dexterity is too low to equip yourself with this item.";
 "Your dexterity is too low to equip yourself with this item.";
 
-"ü    ϴ.";
+"Your vitality is too low to equip yourself with this item.";
 "Your vitality is too low to equip yourself with this item.";
 
-"ȥ  ¿    ϴ.";
+"You cannot use this item because you are not married.";
 "You cannot use this item because you are not married.";
 
-"  ũ    ÿ   ϴ.";
+"You cannot equip this item twice.";
 "You cannot equip this item twice.";
 
-"%s     ð %d";
+"Time left until the removal of the socket of %s: %d";
 "Time left until the removal of the socket of %s: %d";
 
-"̼   ֽϴ.";
+"This action can only be done with another gender.";
 "This action can only be done with another gender.";
 
-"%s ִ  ϴ.";
+"A gem socketed in the %s has vanished.";
 "A gem socketed in the %s has vanished.";
 
-"<>  ̸  ʽϴ.";
+"[Guild] This guild name is invalid.";
 "[Guild] This guild name is invalid.";
 
-"<> ̹  ̸ 尡 ֽϴ.";
+"[Guild] This guild name is already taken.";
 "[Guild] This guild name is already taken.";
 
-"<> 带   ϴ.";
+"[Guild] You cannot found a guild.";
 "[Guild] You cannot found a guild.";
 
-"%s 尡 %s 忡  Ͽϴ!";
+"The guild %s has declared war on %s!";
 "The guild %s has declared war on %s!";
 
-"<> %s 尡  źϿϴ.";
+"[Guild] %s has refused the Guild war.";
 "[Guild] %s has refused the Guild war.";
 
-"%s  %s 尡    մϴ!";
+"The guild war between %s and %s will start in a few seconds!";
 "The guild war between %s and %s will start in a few seconds!";
 
-"%s  %s 尡  Ͽϴ!";
+"The guild war between %s and %s has begun!";
 "The guild war between %s and %s has begun!";
 
-"%s  %s    ºη ϴ.";
+"The guild war between %s and %s has ended in a draw.";
 "The guild war between %s and %s has ended in a draw.";
 
-"%s 尡 %s  £ ¸ ߽ϴ.";
+"%s has won the guild war against %s.";
 "%s has won the guild war against %s.";
 
-" ൿ ȣ Ͽ  մϴ.";
+"You need your fellow player's approval for this.";
 "You need your fellow player's approval for this.";
 
-"<>   Ǿϴ.";
+"[Guild] The guild war has been cancelled.";
 "[Guild] The guild war has been cancelled.";
 
-"%s  %s    ҵǾϴ.";
+"The guild war between %s and %s has been cancelled.";
 "The guild war between %s and %s has been cancelled.";
 
-"ݱ";
+"Close";
 "Close";
 
-"  Ǿ  Ǿϴ.";
+"Action cancelled. You have entered a battle.";
 "Action cancelled. You have entered a battle.";
 
-"ٸ ǻͿ α Ͽ   մϴ.";
+"Someone has logged into your account. You will be disconnected from the server.";
 "Someone has logged into your account. You will be disconnected from the server.";
 
-"  ź  ɴϴ.";
+"A mysterious light appears from the tree.";
 "A mysterious light appears from the tree.";
 
-"%d ð ߰ Ǿϴ. (ȣ %d)";
+"%d Playtime added to your account. (Payment number %d)";
 "%d Playtime added to your account. (Payment number %d)";
 
-"   ϼ̽ϴ.";
+"You can participate in the guild battle in viewer mode.";
 "You can participate in the guild battle in viewer mode.";
 
-"ڽ Ͻø    ִ < > ư ɴϴ.";
+"While choosing a character, an icon appears.";
 "While choosing a character, an icon appears.";
 
-"    ƹ ϴ.";
+"There are no opponents.";
 "There are no opponents.";
 
-"%s԰  !";
+"The battle with %s has begun!";
 "The battle with %s has begun!";
 
-"1 ̳ ƹ    ڵ ˴ϴ.";
+"If no enemy can be found, the guild war will be ended automatically.";
 "If no enemy can be found, the guild war will be ended automatically.";
 
-"  Ǿ ºη  Ǿϴ. (5  )";
+"Because the guild war finished early, the result will judged as a draw.";
 "Because the guild war finished early, the result will judged as a draw.";
 
-"ְ  ູ    äϴ";
+"The energy is reflected because of the Emperors Blessing.";
 "The energy is reflected because of the Emperors Blessing.";
 
-"%d  Ŀ  ູ   ֽϴ";
+"After %d seconds you can use the Emperors Blessing.";
 "After %d seconds you can use the Emperors Blessing.";
 
-"Ÿ   %d  밡";
+"After %d seconds you can use the Emperors Blessing.";
 "After %d seconds you can use the Emperors Blessing.";
 
-" ڱ ڶϴ  : %d ";
+"Not enough tax income : %d.";
 "Not enough tax income : %d.";
 
-"[TEST_ONLY]  : %d ";
+"[TEST_ONLY]Tax : %d";
 "[TEST_ONLY]Tax : %d";
 
-"а  Ͽϴ";
+"Transformation error.";
 "Transformation error.";
 
-"а  úϴ. ż ãư.";
+"You learned the transmutation completely.";
 "You learned the transmutation completely.";
 
-"  ȯּ.";
+"Please call your Horse first.";
 "Please call your Horse first.";
 
-" ½ϴ.";
+"You have sent your horse away.";
 "You have sent your horse away.";
 
-"%s û ߽ϴ. ³Ϸ ᵿǸ ϼ.";
+"%s challenged you to a battle!";
 "%s challenged you to a battle!";
 
-"   մϴ.";
+"You have to get off your Horse.";
 "You have to get off your Horse.";
 
-" ź ¿ ̸   ϴ.";
+"You cannot feed your Horse whilst sitting on it.";
 "You cannot feed your Horse whilst sitting on it.";
 
-" %s%s ־ϴ.";
+"You have fed the Horse with %s%s.";
 "You have fed the Horse with %s%s.";
 
-"%s  ʿմϴ";
+"You need %s.";
 "You need %s.";
 
-"˴ٿ %d ҽϴ.";
+"%d seconds until Exit.";
 "%d seconds until Exit.";
 
-"%d   ˴ٿ ˴ϴ.";
+"The game will be closed in %d seconds.";
 "The game will be closed in %d seconds.";
 
-"%d ҽϴ.";
+"%d seconds until Exit.";
 "%d seconds until Exit.";
 
-" Ǿϴ.";
+"Your logout has been cancelled.";
 "Your logout has been cancelled.";
 
-"α ȭ  ϴ. ø ٸ.";
+"Back to login window. Please wait.";
 "Back to login window. Please wait.";
 
-"  մϴ. ø ٸ.";
+"You have been disconnected from the server. Please wait.";
 "You have been disconnected from the server. Please wait.";
 
-"%s û ߽ϴ.";
+"You have challenged %s to a battle.";
 "You have challenged %s to a battle.";
 
-"ij͸ ȯ մϴ. ø ٸ.";
+"You are changing character. Please wait.";
 "You are changing character. Please wait.";
 
-"    ϴ. (%d )";
+"A new start is not possible at the moment. Please wait %d seconds.";
 "A new start is not possible at the moment. Please wait %d seconds.";
 
-"    ϴ.(%d )";
+"You cannot restart yet. Please wait another %d seconds.";
 "You cannot restart yet. Please wait another %d seconds.";
 
-"    ϴ.(%d  )";
+"You cannot restart yet. Please wait another %d seconds.";
 "You cannot restart yet. Please wait another %d seconds.";
 
-"     ϴ. (%d  )";
+"You cannot restart in the city yet. Wait another %d seconds.";
 "You cannot restart in the city yet. Wait another %d seconds.";
 
-" Ȱ ȸ  Ҿϴ!  ̵մϴ!";
+"The waiting time has expired. You will be revived in the city.";
 "The waiting time has expired. You will be revived in the city.";
 
-"а ߿ ɷ ø  ϴ.";
+"You cannot change your status while you are transformed.";
 "You cannot change your status while you are transformed.";
 
-" Դϴ.";
+"This player is currently fighting.";
 "This player is currently fighting.";
 
-"<> 忡  ʽϴ.";
+"[Guild] It does not belong to the guild.";
 "[Guild] It does not belong to the guild.";
 
-"<>  ų    ϴ.";
+"[Guild] You do not have the authority to change the level of the guild skills.";
 "[Guild] You do not have the authority to change the level of the guild skills.";
 
-"߸  ߽ϴ";
+"Your choice is incorrect.";
 "Your choice is incorrect.";
 
-"<â> ߸ ȣ Էϼ̽ϴ.";
+"[Storeroom] You have entered an incorrect password.";
 "[Storeroom] You have entered an incorrect password.";
 
-"<â> â ̹ ֽϴ.";
+"[Storeroom] The Storeroom is already open.";
 "[Storeroom] The Storeroom is already open.";
 
-"<â> â  10 ȿ   ϴ.";
+"[Storeroom] You have to wait 10 seconds before you can open the Storeroom again.";
 "[Storeroom] You have to wait 10 seconds before you can open the Storeroom again.";
 
-"<â> Ÿ ־ â   ϴ.";
+"[Storeroom] You are too far away to open the storeroom.";
 "[Storeroom] You are too far away to open the storeroom.";
 
-"<Ƽ>   Ƽ  ó   ϴ.";
+"[Group] The server cannot execute this group request.";
 "[Group] The server cannot execute this group request.";
 
-"<Ƽ>  ȿ Ƽ   ϴ.";
+"[Group] You cannot leave a group while you are in a dungeon.";
 "[Group] You cannot leave a group while you are in a dungeon.";
 
-"<Ƽ> Ƽ ̽ϴ.";
+"[Group] You have left the group.";
 "[Group] You have left the group.";
 
-"<> ̹ ٸ £   Դϴ.";
+"[Guild] Your guild is already participating in another war.";
 "[Guild] Your guild is already participating in another war.";
 
-"<>    ϴ.";
+"[Guild] No one is entitled to a guild war.";
 "[Guild] No one is entitled to a guild war.";
 
-"<> ׷ 尡 ϴ.";
+"[Guild] No guild with this name exists.";
 "[Guild] No guild with this name exists.";
 
-"̹ ĺǾֽϴ";
+"There already is a candidacy.";
 "There already is a candidacy.";
 
-"̹   Դϴ.";
+"[Guild] This guild is already participating in a war.";
 "[Guild] This guild is already participating in a war.";
 
-"<>  Ͽ    ϴ.";
+"[Guild] Not enough Yang to participate in a guild war.";
 "[Guild] Not enough Yang to participate in a guild war.";
 
-"<>    Ͽ    ϴ.";
+"[Guild] The guild does not have enough Yang to participate in a guild war.";
 "[Guild] The guild does not have enough Yang to participate in a guild war.";
 
-"<> ̹    Դϴ.";
+"[Guild] This Guild is already scheduled for another war.";
 "[Guild] This Guild is already scheduled for another war.";
 
-"<>  尡 ̹   Դϴ.";
+"[Guild] This guild is already participating in another war.";
 "[Guild] This guild is already participating in another war.";
 
-"<>  ϱ ؼ ּ %d ־ մϴ.";
+"[Guild] A minimum of %d players are needed to participate in a guild war.";
 "[Guild] A minimum of %d players are needed to participate in a guild war.";
 
-"<>     ڶ    ϴ.";
+"[Guild] The guild does not have enough points to participate in a guild war.";
 "[Guild] The guild does not have enough points to participate in a guild war.";
 
-"<>     Ͽ    ϴ.";
+"[Guild] The guild does not have enough members to participate in a guild war.";
 "[Guild] The guild does not have enough members to participate in a guild war.";
 
-" 20 ϴ ڵ ȣ   ϴ.";
+"Your level has to be higher than 20 to register a cell phone number.";
 "Your level has to be higher than 20 to register a cell phone number.";
 
-" ڰ   ʽϴ";
+"You do not have the emperor qualification.";
 "You do not have the emperor qualification.";
 
-"%s   ģ  ź ߽ϴ.";
+"%s declined the invitation.";
 "%s declined the invitation.";
 
-"̹ Ƽ  Ƿ Խû   ϴ.";
+"You cannot accept the invitation because you are already in the group.";
 "You cannot accept the invitation because you are already in the group.";
 
-"ָ 밡  Դϴ";
+"Only the emperor can use this.";
 "Only the emperor can use this.";
 
-"%d ʰ Ÿ Դϴ.";
+"Cooldown time for approximately %d seconds";
 "Cooldown time for approximately %d seconds";
 
-"  մϴ.  : %lu ʿݾ : %lu";
+"Lack of Taxes. Current Capital : %u Missing Capital : %u";
 "Lack of Taxes. Current Capital : %u Missing Capital : %u";
 
-": warpto ";
+"Command: warpto ";
 "Command: warpto ";
 
-"Ÿ Դ ̵Ҽ ϴ";
+"You cannot be warped to an unknown player.";
 "You cannot be warped to an unknown player.";
 
-"ش  %d äο ֽϴ. ( ä %d)";
+"Adding player %d into the channel. (Present channel %d)";
 "Adding player %d into the channel. (Present channel %d)";
 
-"%s Է ̵մϴ";
+"Warp to player %s.";
 "Warp to player %s.";
 
-"Ÿ  ȯ Ҽ ϴ";
+"You cannot call unknown players.";
 "You cannot call unknown players.";
 
-"<> ߿ ɿ   ϴ.";
+"[Guild] There are no experience points for hunting during a guild war.";
 "[Guild] There are no experience points for hunting during a guild war.";
 
-" ູ  %s  HP,SP  äϴ.";
+"When the Blessing of the Emperor is used %s the HP and SP are restored again.";
 "When the Blessing of the Emperor is used %s the HP and SP are restored again.";
 
-"  ";
+"My information about the emperor";
 "My information about the emperor";
 
-"[%s] : %s  ݾ %lld ";
+"[%sMonarch] : %s Yang owned %lld";
 "[%sMonarch] : %s Yang owned %lld";
 
-"[%s] : %s  ";
+"[%sMonarch] : %s";
 "[%sMonarch] : %s";
 
-" ";
+"Information about the emperor";
 "Information about the emperor";
 
-"ָ Ҽ ִ Դϴ";
+"Only an emperor can use this.";
 "Only an emperor can use this.";
 
-"1-50  ġ ּ";
+"Choose a number between 1 and 50.";
 "Choose a number between 1 and 50.";
 
-"ȯҼ   Դϴ. ȯ ʹ Ȩ ϼ";
+"The Monster cannot be called. Check the Mob Number.";
 "The Monster cannot be called. Check the Mob Number.";
 
-"ִ  +%d";
+"Hit Points +%d";
 "Hit Points +%d";
 
-"ִ ŷ +%d";
+"Spell Points +%d";
 "Spell Points +%d";
 
-" ູ Ͽϴ.";
+"The Emperor Blessing is activated.";
 "The Emperor Blessing is activated.";
 
-"ü +%d";
+"Endurance +%d";
 "Endurance +%d";
 
-" +%d";
+"Intelligence +%d";
 "Intelligence +%d";
 
-"ٷ +%d";
+"Strength +%d";
 "Strength +%d";
 
-"ø +%d";
+"Dexterity +%d";
 "Dexterity +%d";
 
-"ݼӵ +%d";
+"Attack Speed +%d";
 "Attack Speed +%d";
 
-"̵ӵ %d";
+"Movement Speed %d";
 "Movement Speed %d";
 
-"Ÿ -%d";
+"Cooldown Time -%d";
 "Cooldown Time -%d";
 
-" ȸ +%d";
+"Energy Recovery +%d";
 "Energy Recovery +%d";
 
-"ŷ ȸ +%d";
+"Spell Point Recovery +%d";
 "Spell Point Recovery +%d";
 
-" %d";
+"Poison Attack %d";
 "Poison Attack %d";
 
-" +%d";
+"Star +%d";
 "Star +%d";
 
-"ο +%d";
+"Speed Reduction +%d";
 "Speed Reduction +%d";
 
-"%d%% Ȯ ġŸ ";
+"Critical Attack with a chance of %d%%";
 "Critical Attack with a chance of %d%%";
 
-"%d%% Ȯ  ";
+"Chance of a Speared Attack of %d%%";
 "Chance of a Speared Attack of %d%%";
 
-"ΰ  Ÿġ +%d%%";
+"Player's Attack Power against Monsters +%d%%";
 "Player's Attack Power against Monsters +%d%%";
 
-"  Ÿġ +%d%%";
+"Horse's Attack Power against Monsters +%d%%";
 "Horse's Attack Power against Monsters +%d%%";
 
-" Ÿġ +%d%%";
+"Attack Boost against Wonggui + %d%%";
 "Attack Boost against Wonggui + %d%%";
 
-"б Ÿġ +%d%%";
+"Attack Boost against Milgyo + %d%%";
 "Attack Boost against Milgyo + %d%%";
 
-"ü Ÿġ +%d%%";
+"Attack boost against zombies + %d%%";
 "Attack boost against zombies + %d%%";
 
-"Ǹ Ÿġ +%d%%";
+"Attack boost against devils + %d%%";
 "Attack boost against devils + %d%%";
 
-"    %s  3а 10 %%  ݷ  ˴ϴ";
+"Due to Emperor Sa-Za-Hu, the player %s will receive an attack power increase of 10 %% for 3 minutes in this area.";
 "Due to Emperor Sa-Za-Hu, the player %s will receive an attack power increase of 10 %% for 3 minutes in this area.";
 
-"Ÿġ %d%%   ";
+"Absorbing of Energy %d%% while attacking.";
 "Absorbing of Energy %d%% while attacking.";
 
-"Ÿġ %d%%  ŷ ";
+"Absorption of Spell Points (SP) %d%% while attacking.";
 "Absorption of Spell Points (SP) %d%% while attacking.";
 
-"%d%% Ȯ Ÿݽ  ŷ Ҹ";
+"With a chance of %d%% Spell Points (SP) will be taken from the enemy.";
 "With a chance of %d%% Spell Points (SP) will be taken from the enemy.";
 
-"%d%% Ȯ ؽ ŷ ȸ";
+"Absorbing of Spell Points (SP) with a chance of %d%%";
 "Absorbing of Spell Points (SP) with a chance of %d%%";
 
-"Ÿݽ  Ȯ %d%%";
+"%d%% Chance of blocking a close-combat attack";
 "%d%% Chance of blocking a close-combat attack";
 
-"Ȱ  ȸ Ȯ %d%%";
+"%d%% Chance of blocking a long range attack";
 "%d%% Chance of blocking a long range attack";
 
-"Ѽհ  %d%%";
+"One-Handed Sword defence %d%%";
 "One-Handed Sword defence %d%%";
 
-"հ  %d%%";
+"Two-Handed Sword Defence %d%%";
 "Two-Handed Sword Defence %d%%";
 
-"μհ  %d%%";
+"Two-Handed Sword Defence %d%%";
 "Two-Handed Sword Defence %d%%";
 
-"  %d%%";
+"Bell Defence %d%%";
 "Bell Defence %d%%";
 
-" ݰ   %s  3а 10 %%    ˴ϴ";
+"By the Emperor Geum-Gang-Gwon the player %s gets 10 %% more armour for 3 minutes.";
 "By the Emperor Geum-Gang-Gwon the player %s gets 10 %% more armour for 3 minutes.";
 
-"ä  %d%%";
+"Fan Defence %d%%";
 "Fan Defence %d%%";
 
-"Ȱ  %d%%";
+"Distant Attack Resistance %d%%";
 "Distant Attack Resistance %d%%";
 
-"ȭ  %d%%";
+"Fire Resistance %d%%";
 "Fire Resistance %d%%";
 
-"  %d%%";
+"Lightning Resistance %d%%";
 "Lightning Resistance %d%%";
 
-"  %d%%";
+"Magic Resistance %d%%";
 "Magic Resistance %d%%";
 
-"ٶ  %d%%";
+"Wind Resistance %d%%";
 "Wind Resistance %d%%";
 
-" Ÿġ ݻ Ȯ : %d%%";
+"Reflect Direct Hit: %d%%";
 "Reflect Direct Hit: %d%%";
 
-" ǵ Ȯ %d%%";
+"Reflect Curse: %d%%";
 "Reflect Curse: %d%%";
 
-"  %d%%";
+"Poison Resistance %d%%";
 "Poison Resistance %d%%";
 
-"%d%% Ȯ ġ ŷ ȸ";
+"Spell Points (SP) will be increased by %d%% if you win.";
 "Spell Points (SP) will be increased by %d%% if you win.";
 
-"OX ̺Ʈ ̹ Դϴ(flag: %d)";
+"The event is already running. (Flag: %d)";
 "The event is already running. (Flag: %d)";
 
-"%d%% Ȯ ġ ġ ߰ ";
+"Experience increases by %d%% if you win against an opponent.";
 "Experience increases by %d%% if you win against an opponent.";
 
-"%d%% Ȯ ġ  2 ";
+"Increase of Yang up to %d%% if you win.";
 "Increase of Yang up to %d%% if you win.";
 
-"%d%% Ȯ ġ  2 ";
+"Increase of captured Items up to %d%% if you win.";
 "Increase of captured Items up to %d%% if you win.";
 
-"  %d%%  ";
+"Power increase of up to %d%% after taking the potion.";
 "Power increase of up to %d%% after taking the potion.";
 
-"%d%% Ȯ ġ  ȸ";
+"%d%% Chance of filling up Hit Points after a victory.";
 "%d%% Chance of filling up Hit Points after a victory.";
 
-"  %d%%";
+"No Dizziness %d%%";
 "No Dizziness %d%%";
 
-"  %d%%";
+"No Slowing Down %d%%";
 "No Slowing Down %d%%";
 
-"Ѿ  %d%%";
+"No falling down %d%%";
 "No falling down %d%%";
 
-"ݷ +%d";
+"Attack Power + %d";
 "Attack Power + %d";
 
-" +%d";
+"Armour + %d";
 "Armour + %d";
 
-"OX  ũƮ ε ";
+"OX quiz script could not be loaded.";
 "OX quiz script could not be loaded.";
 
-" ݷ +%d";
+"Magical Attack + %d";
 "Magical Attack + %d";
 
-"  +%d";
+"Magical Defence + %d";
 "Magical Defence + %d";
 
-"ִ  +%d";
+"Maximum Endurance + %d";
 "Maximum Endurance + %d";
 
-"翡  +%d%%";
+"Strong against Warriors + %d%%";
 "Strong against Warriors + %d%%";
 
-"ڰ  +%d%%";
+"Strong against Ninjas + %d%%";
 "Strong against Ninjas + %d%%";
 
-"󿡰  +%d%%";
+"Strong against Sura + %d%%";
 "Strong against Sura + %d%%";
 
-"翡  +%d%%";
+"Strong against Shamans + %d%%";
 "Strong against Shamans + %d%%";
 
-"Ϳ  +%d%%";
+"Strength against monsters + %d%%";
 "Strength against monsters + %d%%";
 
-"ݷ +%d%%";
+"Attack + %d%%";
 "Attack + %d%%";
 
-" +%d%%";
+"Defence + %d%%";
 "Defence + %d%%";
 
-"OX  ũƮ ε ";
+"OX quiz script has loaded.";
 "OX quiz script has loaded.";
 
-"ġ %d%%";
+"Experience %d%%";
 "Experience %d%%";
 
-"  %.1f";
+"Chance to find an Item %. 1f";
 "Chance to find an Item %. 1f";
 
-"  %.1f";
+"Chance to find Yang %. 1f";
 "Chance to find Yang %. 1f";
 
-"ִ  +%d%%";
+"Maximum Energy +%d%%";
 "Maximum Energy +%d%%";
 
-"ִ ŷ +%d%%";
+"Maximum Energy +%d%%";
 "Maximum Energy +%d%%";
 
-"ų  %d%%";
+"Skill Damage %d%%";
 "Skill Damage %d%%";
 
-"Ÿ  %d%%";
+"Hit Damage %d%%";
 "Hit Damage %d%%";
 
-"ų   %d%%";
+"Resistance against Skill Damage %d%%";
 "Resistance against Skill Damage %d%%";
 
-"Ÿ   %d%%";
+"Resistance against Hits %d%%";
 "Resistance against Hits %d%%";
 
-"ݿ %d%% ";
+"%d%% Resistance against Warrior Attacks";
 "%d%% Resistance against Warrior Attacks";
 
-"ȳϼ. ƾ2 Դϴ.";
+"Welcome to Metin2.";
 "Welcome to Metin2.";
 
-"ڰݿ %d%% ";
+"%d%% Resistance against Ninja Attacks";
 "%d%% Resistance against Ninja Attacks";
 
-"ݿ %d%% ";
+"%d%% Resistance against Sura Attacks";
 "%d%% Resistance against Sura Attacks";
 
-"ݿ %d%% ";
+"%d%% Resistance against Shaman Attacks";
 "%d%% Resistance against Shaman Attacks";
 
-" ( : %d %d %d)";
+"(Procedure: %d y- %d m - %d d)";
 "(Procedure: %d y- %d m - %d d)";
 
-"ä  Դϴ.";
+"Your chat is blocked.";
 "Your chat is blocked.";
 
-"ġ ȸ Ҽ ֽϴ";
+"You need a higher level to be able to call.";
 "You need a higher level to be able to call.";
 
-"ġ  %d ̻   մϴ.";
+"You need a minimum level of %d to be able to call.";
 "You need a minimum level of %d to be able to call.";
 
-"Ƽ  ƴմϴ.";
+"You are not in this Group.";
 "You are not in this Group.";
 
-"忡  ʾҽϴ.";
+"You did not join this Guild.";
 "You did not join this Guild.";
 
-" ޽ ߰ ź Դϴ.";
+"The player has rejected your request to add him to your friend list.";
 "The player has rejected your request to add him to your friend list.";
 
-"OX ̺Ʈ ۵Ǿϴ.";
+"OX Event has started.";
 "OX Event has started.";
 
-"<޽> ڴ ޽ ߰  ϴ.";
+"[Friends] You cannot add a GM to your list.";
 "[Friends] You cannot add a GM to your list.";
 
-"%s  ӵ  ʽϴ.";
+"%s is not online.";
 "%s is not online.";
 
-"ŷ  %d ̳ â  ϴ.";
+"After a trade, you have to wait %d seconds before you can open a shop.";
 "After a trade, you have to wait %d seconds before you can open a shop.";
 
-"â  %d ̳ ŷ Ҽ ϴ.";
+"You can trade again in %d seconds.";
 "You can trade again in %d seconds.";
 
-"׼ 20  ʰϿ ŷ Ҽ ϴ..";
+"You have more than 2 Billion Yang. You cannot trade.";
 "You have more than 2 Billion Yang. You cannot trade.";
 
-"ٸ ŷϰ λ  ϴ.";
+"You cannot open a private shop while another window is open.";
 "You cannot open a private shop while another window is open.";
 
-" ѱݾ 20  ʰϿ ŷ Ҽ ϴ..";
+"The player has more than 2 Billion Yang. You cannot trade with him.";
 "The player has more than 2 Billion Yang. You cannot trade with him.";
 
-"<â> ű   ġԴϴ.";
+"[Storeroom] No movement possible.";
 "[Storeroom] No movement possible.";
 
-"<â>     ϴ.";
+"[Storeroom] The item cannot be stored.";
 "[Storeroom] The item cannot be stored.";
 
-"<Ƽ> Ƽû  ij͸ ã ϴ.";
+"[Group] The player who invited you is not online.";
 "[Group] The player who invited you is not online.";
 
-" Ͽ  մϴ.";
+"Uriel allowed to enter.";
 "Uriel allowed to enter.";
 
-"<Ƽ>    ֽϴ.";
+"[Group] Only the group leader can change this.";
 "[Group] Only the group leader can change this.";
 
-"<Ƽ> ¸ Ϸ  Ƽ ƴմϴ.";
+"[Group] The target is not a member of your group.";
 "[Group] The target is not a member of your group.";
 
-"<Ƽ>  ȿ Ƽ ߹  ϴ.";
+"[Group] You cannot kick out a player while you are in a dungeon.";
 "[Group] You cannot kick out a player while you are in a dungeon.";
 
-"<Ƽ>  Ƽ ߹  ϴ.";
+"[Group] You cannot kick out a player while you are in a dungeon.";
 "[Group] You cannot kick out a player while you are in a dungeon.";
 
-"<Ƽ> Ƽ ߹ϼ̽ϴ.";
+"[Group] You have been out kicked of the group.";
 "[Group] You have been out kicked of the group.";
 
-"<Ƽ>  Ƽ   ϴ.";
+"[Group] You cannot leave a group while you are in a dungeon.";
 "[Group] You cannot leave a group while you are in a dungeon.";
 
-"<Ƽ> ٸ Ƽ Żų  ϴ.";
+"[Group] You cannot kick out group members.";
 "[Group] You cannot kick out group members.";
 
-"<> ػ  %d ̳ 带   ϴ.";
+"[Guild] After disbanding a guild, you cannot create a new one for %d days.";
 "[Guild] After disbanding a guild, you cannot create a new one for %d days.";
 
-"<> Ż  %d ̳ 带   ϴ.";
+"[Guild] After leaving a guild, you cannot create a new one for %d days.";
 "[Guild] After leaving a guild, you cannot create a new one for %d days.";
 
-"   ̸ Դϴ.";
+"This guild name is invalid.";
 "This guild name is invalid.";
 
-"  Ź帳ϴ.";
+"We request the participation of a lot of players.";
 "We request the participation of a lot of players.";
 
-"<> [%s] 尡 Ǿϴ.";
+"[Guild] [%s] guild has been created.";
 "[Guild] [%s] guild has been created.";
 
-"<>   Ͽϴ.";
+"[Guild] Creation of the guild has failed.";
 "[Guild] Creation of the guild has failed.";
 
-"<Ƽ> Ƽ  Ƽ常   ֽϴ.";
+"[Group] Only the group leader can use group skills.";
 "[Group] Only the group leader can use group skills.";
 
-"<Ƽ> ȯϷ  ã  ϴ.";
+"[Group] The target has not been found.";
 "[Group] The target has not been found.";
 
-"<> ߸ ݾԴϴ.";
+"[Guild] That is not the correct amount of Yang.";
 "[Guild] That is not the correct amount of Yang.";
 
-"<>  ִ  մϴ.";
+"[Guild] You do not have enough Yang.";
 "[Guild] You do not have enough Yang.";
 
-"<> ׷  ã  ϴ.";
+"[Guild] The person you were searching for cannot be found.";
 "[Guild] The person you were searching for cannot be found.";
 
-"<>   尡 ƴմϴ.";
+"[Guild] This person is not in the same guild.";
 "[Guild] This person is not in the same guild.";
 
-"<>   Ż ų  ϴ.";
+"[Guild] You do not have the authority to kick out guild members.";
 "[Guild] You do not have the authority to kick out guild members.";
 
-"<>  %s   Ż ׽ϴ.";
+"[Guild] The guild member %s has been kicked out of the Guild.";
 "[Guild] The guild member %s has been kicked out of the Guild.";
 
-"OX̺Ʈ  ʾҰų,  Դϴ.(flag: %d)";
+"OX The Event has not ended yet. An error has occurred. (flag: %d)";
 "OX The Event has not ended yet. An error has occurred. (flag: %d)";
 
-"<>   Ż ׽ϴ.";
+"[Guild] You have kicked a guild member out.";
 "[Guild] You have kicked a guild member out.";
 
-"<>  ̸   ϴ.";
+"[Guild] You do not have the authority to change your rank name.";
 "[Guild] You do not have the authority to change your rank name.";
 
-"<>   ̸   ϴ.";
+"[Guild] The guild leader's rights cannot be changed.";
 "[Guild] The guild leader's rights cannot be changed.";
 
-"<>    ̸ Դϴ.";
+"[Guild] This rank name is invalid.";
 "[Guild] This rank name is invalid.";
 
-"<>     ϴ.";
+"[Guild] You do not have the authority to change your position.";
 "[Guild] You do not have the authority to change your position.";
 
-"<>     ϴ.";
+"[Guild] The rights of the guild leader cannot be changed.";
 "[Guild] The rights of the guild leader cannot be changed.";
 
-"<> %u ġ Ͽϴ.";
+"[Guild] %u experience points used.";
 "[Guild] %u experience points used.";
 
-"<> ġ ڿ Ͽϴ.";
+"[Guild] Experience usage has failed.";
 "[Guild] Experience usage has failed.";
 
-"<>  մϴ.";
+"[Guild] Insufficient Yang in the guild treasury.";
 "[Guild] Insufficient Yang in the guild treasury.";
 
-"<> ŷ ȸ Ͽϴ.";
+"[Guild] Dragon ghost was not restored.";
 "[Guild] Dragon ghost was not restored.";
 
-"  OX ̺Ʈ ٽ ϰڽϴ.";
+"The OX Event will be restarted shortly.";
 "The OX Event will be restarted shortly.";
 
-"<>  ۼ  ϴ.";
+"[Guild] You do not have the authority to make an announcement.";
 "[Guild] You do not have the authority to make an announcement.";
 
-"<>    ϴ.";
+"[Guild] You do not have the authority to change the position.";
 "[Guild] You do not have the authority to change the position.";
 
-"<>     ϴ.";
+"[Guild] The guild leader's position cannot be changed.";
 "[Guild] The guild leader's position cannot be changed.";
 
-"<>     ϴ.";
+"[Guild] You cannot make yourself guild leader.";
 "[Guild] You cannot make yourself guild leader.";
 
-"<> 屺   ϴ.";
+"[Guild] You do not have the authority to choose the guild leader.";
 "[Guild] You do not have the authority to choose the guild leader.";
 
-"<> ̻    ϴ.";
+"[Guild] You cannot choose any more guild leaders.";
 "[Guild] You cannot choose any more guild leaders.";
 
-" dz  ϴ.";
+"You cannot trade this item.";
 "You cannot trade this item.";
 
-"ҹ α׷  Ǿ   ˴ϴ.";
+"Illegal software has been detected. The game is being shut down.";
 "Illegal software has been detected. The game is being shut down.";
 
-"  20 Ѿ ŷ ۼ ϴ.";
+"You have more than 2 Billion Yang with you. You cannot trade.";
 "You have more than 2 Billion Yang with you. You cannot trade.";
 
-"ݾ մϴ.";
+"Invalid Yang.";
 "Invalid Yang.";
 
-" ̺Ʈ  е  ̵ ǰڽϴ.";
+"The present event is limited to one area.";
 "The present event is limited to one area.";
 
-" 귿 .";
+"Start Item Roulette.";
 "Start Item Roulette.";
 
-"Ӵ  귿 .";
+"Start Yang Roulette.";
 "Start Yang Roulette.";
 
-" ¶  Դϴ. Ӹ ̿ϼ.";
+"The player is online. Please use whisper to chat.";
 "The player is online. Please use whisper to chat.";
 
-"ڵ ȣ ϵǾ  ʽϴ.";
+"The cell phone number is not registered.";
 "The cell phone number is not registered.";
 
-" ޼   20   ֽϴ.";
+"You need to be at least on level 20 to be able to send text messages.";
 "You need to be at least on level 20 to be able to send text messages.";
 
-" ޼ ۿ 2000 ʿ մϴ.";
+"You need 2000 DT to send a text message.";
 "You need 2000 DT to send a text message.";
 
-" ޼  ߽ϴ.";
+"Your text message has been sent.";
 "Your text message has been sent.";
 
-"%s  %s %d%% ߽ϴ!";
+"%s of the Guild %s raised up to %d%% !";
 "%s of the Guild %s raised up to %d%% !";
 
-"%s  %s  ƿԽϴ.";
+"%s of the Guild %s normal again.";
 "%s of the Guild %s normal again.";
 
-"%s %s %d%% ߽ϴ!";
+"%s: %s has increased by %d%%!";
 "%s: %s has increased by %d%%!";
 
-"%s %s  ƿԽϴ.";
+"%s 's %s normal again.";
 "%s 's %s normal again.";
 
-" õ ִ(%d) Ǿϴ.";
+"Your mining points have reached their maximum. (%d)";
 "Your mining points have reached their maximum. (%d)";
 
-"̰ ִ õ Ͽϴ.";
+"Your mining points have reached their maximum level.";
 "Your mining points have reached their maximum level.";
 
-"۸    ̷ ׷̵   ֽϴ.";
+"You can get lumberjack Deokbae to upgrade your Pickaxe.";
 "You can get lumberjack Deokbae to upgrade your Pickaxe.";
 
-" õ Ͽϴ! (%d/%d)";
+"Your Mining Points have increased! (%d/%d)";
 "Your Mining Points have increased! (%d/%d)";
 
-"̸   ʾƼ Ķ  ϴ.";
+"You cannot mine without a Pick.";
 "You cannot mine without a Pick.";
 
-"̻ ij  ϴ.";
+"Nothing to mine here.";
 "Nothing to mine here.";
 
-"ä Ͽϴ.";
+"The mining has been successful.";
 "The mining has been successful.";
 
-"ä Ͽϴ.";
+"The mining has failed.";
 "The mining has failed.";
 
-"<޽> %s  ģ ߰Ͽϴ.";
+"[Friends] You have added %s as a friend.";
 "[Friends] You have added %s as a friend.";
 
-"   ̵ǰڽϴ.";
+"The player will be teleported into the city shortly.";
 "The player will be teleported into the city shortly.";
 
-"<޽> %s  ޽ Ͽϴ.";
+"[Friends] You have deleted %s from the list.";
 "[Friends] You have deleted %s from the list.";
 
-" ġ  ߻Ͽ ڵ õ˴ϴ.";
+"A critical server error has occurred. The server will restart automatically.";
 "A critical server error has occurred. The server will restart automatically.";
 
-"10 ڵ  Ǹ,";
+"You will be disconnected automatically in 10 seconds.";
 "You will be disconnected automatically in 10 seconds.";
 
-"5 Ŀ  ϽǼ ֽϴ.";
+"You can connect again after 5 minutes.";
 "You can connect again after 5 minutes.";
 
-"(%s) 尡 Ǿϴ. [ӽ]";
+"(%s) guild has been created. [Temporary]";
 "(%s) guild has been created. [Temporary]";
 
-"   Դϴ";
+"This guild is at war.";
 "This guild is at war.";
 
-"%s:  ʴ  Դϴ.";
+"%s: This guild does not exist.";
 "%s: This guild does not exist.";
 
-"׷ ̸ Ǵ ȣ 尡 ϴ.";
+"A guild with this name or number does not exist.";
 "A guild with this name or number does not exist.";
 
-" ʴ ǹԴϴ.";
+"The building does not exist.";
 "The building does not exist.";
 
-"     ǹ  ֽϴ.";
+"This type of building can only be erected once.";
 "This type of building can only be erected once.";
 
-"OX̺Ʈ   ݾ ּ.(Flag: %d)";
+"Close the OX event card first. (Flag: %d)";
 "Close the OX event card first. (Flag: %d)";
 
-"Ǽ ʿ ǹ   ʽϴ.";
+"The Main Building has to be erected first.";
 "The Main Building has to be erected first.";
 
-"ǹ   ̻ Ǽ ۾ ߽ϴ.";
+"Building failed because of incorrect pricing.";
 "Building failed because of incorrect pricing.";
 
-"Ǽ  մϴ.";
+"Your guild does not have enough Yang to erect this building.";
 "Your guild does not have enough Yang to erect this building.";
 
-"簡 Ͽ Ǽ  ϴ.";
+"You do not have enough resources to build a building.";
 "You do not have enough resources to build a building.";
 
-"ǹ    ġԴϴ.";
+"You cannot erect a building at this place.";
 "You cannot erect a building at this place.";
 
-" ʴ ij Դϴ.";
+"This character does not exist.";
 "This character does not exist.";
 
-"   ";
+"Duel has not been successfully cancelled.";
 "Duel has not been successfully cancelled.";
 
-"   ";
+"Duel cancelled successfully.";
 "Duel cancelled successfully.";
 
-"   Ǿϴ.";
+"The duel has been successfully started.";
 "The duel has been successfully started.";
 
-" ۿ  ֽϴ.";
+"There is a problem with initiating the duel.";
 "There is a problem with initiating the duel.";
 
-"  ߽ϴ.";
+"No errors occurred.";
 "No errors occurred.";
 
-"ڰ ϴ.";
+"There are no combatants.";
 "There are no combatants.";
 
-"  Ʈ ϴ.";
+"No status points left.";
 "No status points left.";
 
-"  Ʈ ϴ.";
+"Remaining status points are too low.";
 "Remaining status points are too low.";
 
-" ߸ ԷϿϴ.";
+"You entered an incorrect value.";
 "You entered an incorrect value.";
 
-"ɾ  Ŀǵ尡 ߸ Ǿϴ.";
+"Suborder or the Order is incorrect.";
 "Suborder or the Order is incorrect.";
 
-"÷̾ %d  ÷̾  %d ȥŵϴ..";
+"Broken contract between player %d and player %d.";
 "Broken contract between player %d and player %d.";
 
-" ϴ. ݾ %d";
+"Turn the Roulette for %d Yang.";
 "Turn the Roulette for %d Yang.";
 
-"۷αװ syslog  ҽϴ";
+"The Item log placed into the syslog.";
 "The Item log placed into the syslog.";
 
-"  ";
+"Information for the Kingdoms";
 "Information for the Kingdoms";
 
-"    %d  %d %d %d";
+"Choose the Map Information of the Holy Land %d Entrance %d %d %d";
 "Choose the Map Information of the Holy Land %d Entrance %d %d %d";
 
-" Ͽϴ.";
+"An error has occurred.";
 "An error has occurred.";
 
-"%s killcount %d mobkillcount %d bosskillcount %d  Լ %d";
+"%s killcount %d mobkillcount %d bosskillcount %d Number Holy Land %d";
 "%s killcount %d mobkillcount %d bosskillcount %d Number Holy Land %d";
 
-" Ÿ ";
+"Information about the status of the kingdom battle";
 "Information about the status of the kingdom battle";
 
-"Ʈ εϴ Դϴ. ø ٷ ֽʽÿ.";
+"Your request is loading. Please wait.";
 "Your request is loading. Please wait.";
 
-"ٸŷâ ¿ â  ϴ.";
+"You cannot open a Storeroom while another window is open.";
 "You cannot open a Storeroom while another window is open.";
 
-"<â> â йȣ Ǿϴ.";
+"[Storeroom] Storeroom password has been changed.";
 "[Storeroom] Storeroom password has been changed.";
 
-"<â>  йȣ ƲȽϴ.";
+"[Storeroom] You have entered the wrong password.";
 "[Storeroom] You have entered the wrong password.";
 
-"Ⱓ %d   ˴ϴ.";
+"Your playing time is going to run out in %d minutes.";
 "Your playing time is going to run out in %d minutes.";
 
-" ǥϿϴ.";
+"Regularly voted.";
 "Regularly voted.";
 
-"̹ǥ ";
+"Already voted.";
 "Already voted.";
 
-"%s   ⸶ Ͽϴ.";
+"%s player already in the vote.";
 "%s player already in the vote.";
 
-"OX̺Ʈ   ʰų  Դϴ.(Flag: %d)";
+"OX Event is over. No errors occurred. (Flag: %d)";
 "OX Event is over. No errors occurred. (Flag: %d)";
 
-"⸶ Ҽ ϴ";
+"Cannot run for office.";
 "Cannot run for office.";
 
-" %s  %lu   ֽϴ";
+"%s still has %u Yang available.";
 "%s still has %u Yang available.";
 
-" %s  %d   ֽϴ";
+"%s still has %d Yang available.";
 "%s still has %d Yang available.";
 
-"  ϰų  ü  ȲԴϴ";
+"You do not have enough Yang.";
 "You do not have enough Yang.";
 
-" %s  ĺ Ͽϴ";
+"%s is deleted as an Emperor Candidate.";
 "%s is deleted as an Emperor Candidate.";
 
-" %s   ĺ ƴմϴ.";
+"%s is not a candidate for the emperor elections.";
 "%s is not a candidate for the emperor elections.";
 
-" %s ַ Ը ߽ϴ.";
+"%s has been nominated as emperor.";
 "%s has been nominated as emperor.";
 
-" %s  ַ ԸҼ ϴ .";
+"%s cannot be nominated as emperor.";
 "%s cannot be nominated as emperor.";
 
-" %s ָ  Ͽϴ..";
+"The %s Emperor gets driven out.";
 "The %s Emperor gets driven out.";
 
-" %s ָ  Ҽ ϴ.";
+"The %s Emperor cannot be driven out.";
 "The %s Emperor cannot be driven out.";
 
-" ̻ OX̺Ʈ ڸ  ʽϴ.";
+"OX Event is not accepting any more participants.";
 "OX Event is not accepting any more participants.";
 
-"ż";
+"Shinsoo Kingdom";
 "Shinsoo Kingdom";
 
-"õ";
+"Chunjo Kingdom";
 "Chunjo Kingdom";
 
-"뱹";
+"Jinno Kingdom";
 "Jinno Kingdom";
 
-"ô õ Ͽϴ! (%d/%d)";
+"Your fishing points have increased! (%d/%d)";
 "Your fishing points have increased! (%d/%d)";
 
-"ô밡 ִ õ Ͽϴ.";
+"You have reached the maximum number of fishing points.";
 "You have reached the maximum number of fishing points.";
 
-"θ    ô ׷̵   ֽϴ.";
+"Go to the Fisherman and get your Fishing Pole upgraded!";
 "Go to the Fisherman and get your Fishing Pole upgraded!";
 
-"Ⱑ ̳ ԰ ΰ Ĩϴ.";
+"You lost your bait to the fish.";
 "You lost your bait to the fish.";
 
-"Ⱑ ϴ! (%s)";
+"You have caught a fish! (%s)";
 "You have caught a fish! (%s)";
 
-"̹   ̴ %.2fcm";
+"The length of the captured fish is %.2fcm.";
 "The length of the captured fish is %.2fcm.";
 
-"̺Ʈôؾ";
+"Fishing Event 'Great Zander'";
 "Fishing Event 'Great Zander'";
 
-"OX̺Ʈ  ο Ͽϴ.";
+"OX The other event participants are being noted down.";
 "OX The other event participants are being noted down.";
 
-"̺Ʈ׾";
+"Fishing Event 'Carp'";
 "Fishing Event 'Carp'";
 
-"%s : %d ";
+"%s: %d";
 "%s: %d";
 
-"%d  %d  ";
+"You have caught %d of %d .";
 "You have caught %d of %d .";
 
-"Ⱑ   ϴ.";
+"The fish vanished in the depths of the water.";
 "The fish vanished in the depths of the water.";
 
-" ӿ  Խϴ.";
+"There is a Clam inside the Fish.";
 "There is a Clam inside the Fish.";
 
-" ӿ ̰ Խϴ.";
+"There is a Worm inside the Fish.";
 "There is a Worm inside the Fish.";
 
-"%s ϴ.";
+"You are roasting %s over the fire.";
 "You are roasting %s over the fire.";
 
-"20  ʰϿ   ϴ";
+"You cannot trade because you are carrying more than 2 billion Yang.";
 "You cannot trade because you are carrying more than 2 billion Yang.";
 
-"Ӿ  Ե  ̸    ϴ.";
+"You can't give your shop an invalid name.";
 "You can't give your shop an invalid name.";
 
-"ȭ  λ Ǹ  ϴ.";
+"You can't sell Item-Shop items in a private shop.";
 "You can't sell Item-Shop items in a private shop.";
 
-"OX̺Ʈ  ο  ߽ϴ.";
+"OX The other event participants have not been noted down.";
 "OX The other event participants have not been noted down.";
 
-"ä ߴϿϴ.";
+"Mining is finished.";
 "Mining is finished.";
 
-"̸ ϼ.";
+"You need a Pickaxe in order to extract ore!";
 "You need a Pickaxe in order to extract ore!";
 
-"ô븦  ϼ.";
+"Please choose a Fishing Pole.";
 "Please choose a Fishing Pole.";
 
-"̳   ּ.";
+"Place the Bait on the Hook first.";
 "Place the Bait on the Hook first.";
 
-"ô밡 ƴ  ø   ϴ!";
+"You can't go fishing without a fishing pole!";
 "You can't go fishing without a fishing pole!";
 
-"Ƽ  ° ƴ϶ û   ϴ.";
+"[Group] You cannot make a request because the group leader is not online.";
 "[Group] You cannot make a request because the group leader is not online.";
 
-"<Ƽ> ٸ  Ƽ ̷  ϴ.";
+"[Group] You cannot form a group with players from another kingdom.";
 "[Group] You cannot form a group with players from another kingdom.";
 
-"<Ƽ>  ȿ Ƽ ʴ븦   ϴ.";
+"[Group] You cannot invite players while you are in a dungeon.";
 "[Group] You cannot invite players while you are in a dungeon.";
 
-"<Ƽ>  忡 Ƽ ʴ븦   ϴ.";
+"[Group] You cannot invite a player while you are in observer mode.";
 "[Group] You cannot invite a player while you are in observer mode.";
 
-"<Ƽ> -30 ~ +30  ̳ 游 ʴ  ֽϴ.";
+"[Group] Only players with a level difference of -30 to +30 can be invited.";
 "[Group] Only players with a level difference of -30 to +30 can be invited.";
 
-"  ڼ : %d";
+"Number of other participants : %d";
 "Number of other participants : %d";
 
-"<Ƽ> Ƽ ְ   30  ʴ  ϴ.";
+"[Group] You cannot invite this player, as their level is too low.";
 "[Group] You cannot invite this player, as their level is too low.";
 
-"<Ƽ> Ƽ    30  ʴ  ϴ.";
+"[Group] You cannot invite this player, as their level is too high.";
 "[Group] You cannot invite this player, as their level is too high.";
 
-"<Ƽ>  ̻ Ƽ ʴ  ϴ.";
+"[Group] You cannot invite any more players into your group.";
 "[Group] You cannot invite any more players into your group.";
 
-"%s Կ Ƽ û ߽ϴ.";
+"You want to join %s's group.";
 "You want to join %s's group.";
 
-" Ƽ  ʽϴ.";
+"This player is not in this group.";
 "This player is not in this group.";
 
-"<Ƽ> Ƽ ο ʰϿ Ƽ   ϴ.";
+"[Group] You cannot join this group because it is already full.";
 "[Group] You cannot join this group because it is already full.";
 
-"<Ƽ> Ƽ ʴ  ִ  ϴ.";
+"[Group] You do not have the right to invite someone.";
 "[Group] You do not have the right to invite someone.";
 
-"<Ƽ> %s  Ƽ ź Դϴ.";
+"[Group] %s has declined your group invitation.";
 "[Group] %s has declined your group invitation.";
 
-"<Ƽ> ̹ %s Ƽ  ֽϴ.";
+"[Group] %s is already in the group.";
 "[Group] %s is already in the group.";
 
-"<Ƽ>  ȿ Ƽ ʴ뿡   ϴ.";
+"[Group] You cannot accept an invitation into a dungeon.";
 "[Group] You cannot accept an invitation into a dungeon.";
 
-"OX ̺Ʈ ġٽϴ.";
+"OX Event is finishing.";
 "OX Event is finishing.";
 
-"OX̺Ʈ   ŵϴ.";
+"OX Event is finishing.";
 "OX Event is finishing.";
 
-"<Ƽ> Ƽ ʴ뿡   ϴ.";
+"[Group] You cannot accept the invitation.";
 "[Group] You cannot accept the invitation.";
 
-"<Ƽ> %s Ƽ ʴ븦 ϼ̽ϴ.";
+"[Group] %s has declined your invitation.";
 "[Group] %s has declined your invitation.";
 
-"<Ƽ> %s Ƽ ϼ̽ϴ.";
+"[Group] %s has joined your group.";
 "[Group] %s has joined your group.";
 
-"<Ƽ> %s Ƽ ϼ̽ϴ.";
+"[Group] %s has joined your Group.";
 "[Group] %s has joined your Group.";
 
-"ٸ ŷ(â,ȯ,) λ   ϴ.";
+"You can't use a private shop now.";
 "You can't use a private shop now.";
 
-" ٸ ŷ ϰ ִ Դϴ.";
+"This player is already trading with another player.";
 "This player is already trading with another player.";
 
-"ƾ2ȣ: %s";
+"Metin2 Confirmation Number: %s";
 "Metin2 Confirmation Number: %s";
 
-"ȣ ƲȽϴ. ٽ õϼ.";
+"Your Confirmation Number is not correct. Please try again.";
 "Your Confirmation Number is not correct. Please try again.";
 
-"ڵ ȣ  Ǿϴ.";
+"The mobile phone number is registered.";
 "The mobile phone number is registered.";
 
-" ִ    ϴ.";
+"You cannot teleport to the player.";
 "You cannot teleport to the player.";
 
-"OX ǰ Ͽϴ. ID: %d : %d";
+"OX The prize has been awarded. ID: %d Quantity: %d";
 "OX The prize has been awarded. ID: %d Quantity: %d";
 
-" ¶ ° ƴմϴ.";
+"This player is not online.";
 "This player is not online.";
 
-" %d äο ֽϴ. ( ä %d)";
+"The player is playing on channel %d. (You are on channel %d.)";
 "The player is playing on channel %d. (You are on channel %d.)";
 
-"â  %d ̳ ٸ ̵Ҽ ϴ.";
+"After opening the Storeroom, you cannot go anywhere else for %d seconds.";
 "After opening the Storeroom, you cannot go anywhere else for %d seconds.";
 
-"ŷâ,â   ¿ ٸ ̵, Ҽ ϴ";
+"You cannot go elsewhere for a period of time after the trade.";
 "You cannot go elsewhere for a period of time after the trade.";
 
-"ŷ  %d ̳ ٸ ̵   ϴ.";
+"After trading you cannot go elsewhere for %d seconds.";
 "After trading you cannot go elsewhere for %d seconds.";
 
-" 밡   մϴ.";
+"The duel has finished, because your combatant vanished.";
 "The duel has finished, because your combatant vanished.";
 
-"  ϴ.";
+"There is no limit for Potions.";
 "There is no limit for Potions.";
 
-" %d    մϴ.";
+"You can use up to %d potions.";
 "You can use up to %d potions.";
 
-"10ʵ  ۵˴ϴ.";
+"The fight will start in 10 seconds.";
 "The fight will start in 10 seconds.";
 
-" ۵Ǿϴ.";
+"The duel has begun.";
 "The duel has begun.";
 
-"";
+"TRUE";
 "TRUE";
 
-"  Ͽ  մϴ.";
+"The duel is being finished because there is a problem in the duel arena.";
 "The duel is being finished because there is a problem in the duel arena.";
 
-" ð ʰ  ߴմϴ.";
+"The duel has finished because of a timeout.";
 "The duel has finished because of a timeout.";
 
-"10ʵ  ̵մϴ.";
+"In 10 seconds you will be teleported into the city.";
 "In 10 seconds you will be teleported into the city.";
 
-"  Ͽ  ߴմϴ.";
+"The duel has been stopped because there is a problem in the arena.";
 "The duel has been stopped because there is a problem in the arena.";
 
-" ij  Ͽ  մϴ.";
+"Your combatant has got some problems. The duel is being cancelled.";
 "Your combatant has got some problems. The duel is being cancelled.";
 
-"  Ͽ  մϴ.";
+"The duel is being cancelled as there is a problem with the combatant.";
 "The duel is being cancelled as there is a problem with the combatant.";
 
-"%s  ÿ ¸Ͽϴ.";
+"%s has won the duel.";
 "%s has won the duel.";
 
-"%s  ¸Ͽϴ.";
+"%s has won.";
 "%s has won.";
 
-"10ʵ  ǵưϴ.";
+"You will be teleported into the city in 10 seconds.";
 "You will be teleported into the city in 10 seconds.";
 
-"10ʵ   մϴ.";
+"The next round will begin in 10 seconds.";
 "The next round will begin in 10 seconds.";
 
-"";
+"FALSE";
 "FALSE";
 
-" ijͰ  Ͽ  մϴ.";
+"The combatants have been separated. The duel has been stopped.";
 "The combatants have been separated. The duel has been stopped.";
 
-" ӷ  %d%% ߰ ̺Ʈ Դϴ.";
+"The quota of the Item Drop is at the moment plus %d%%";
 "The quota of the Item Drop is at the moment plus %d%%";
 
-" ӷ %d%% ߰ ̺Ʈ Դϴ.";
+"The quota of the Yang Drop is at the moment plus %d%%";
 "The quota of the Yang Drop is at the moment plus %d%%";
 
-"ڰ ӷ %d%% ߰ ̺Ʈ Դϴ.";
+"The drop rate for Yang rain is currently %d%% higher.";
 "The drop rate for Yang rain is currently %d%% higher.";
 
-"ġ %d%% ߰ ȹ ̺Ʈ Դϴ.";
+"The experience bonus is currently an additional %d%%.";
 "The experience bonus is currently an additional %d%%.";
 
-"Ŭ̾Ʈ  Ʋ α׾ƿ ˴ϴ.  ġ  ϼ.";
+"You do not have the correct client version. Please install the normal patch.";
 "You do not have the correct client version. Please install the normal patch.";
 
-"ٸ ŷâ ¿ ŷ Ҽ  ϴ.";
+"You cannot trade in the shop while another window is open.";
 "You cannot trade in the shop while another window is open.";
 
-" Ÿ ʹ ־    ϴ.";
+"You are too far away from the shop to buy something.";
 "You are too far away from the shop to buy something.";
 
-" Ÿ ʹ ־    ϴ.";
+"You are too far away from the shop to sell something.";
 "You are too far away from the shop to sell something.";
 
-"20 ʰϿ ǰ ȼ ϴ.";
+"You cannot trade because you are carrying more than 2 billion Yang.";
 "You cannot trade because you are carrying more than 2 billion Yang.";
 
-"  : %d";
+"Total number of the Quiz: %d";
 "Total number of the Quiz: %d";
 
-"Ǹűݾ %d %%   Ե˴ϴ";
+"This sale will be taxed %d%%.";
 "This sale will be taxed %d%%.";
 
-" ¿  Ż  ϴ.";
+"You cannot ride a Horse while you are transformed.";
 "You cannot ride a Horse while you are transformed.";
 
-"  ¿  Ż  ϴ.";
+"You cannot ride while you are wearing a Wedding Dress or a Tuxedo.";
 "You cannot ride while you are wearing a Wedding Dress or a Tuxedo.";
 
-" ϰ  ʽϴ.";
+"You do not have a Horse.";
 "You do not have a Horse.";
 
-" ׾ִ  Դϴ.";
+"Your Horse is dead.";
 "Your Horse is dead.";
 
-" ׹̳ʰ Ͽ  Ż  ϴ.";
+"Your Horse's endurance is too low.";
 "Your Horse's endurance is too low.";
 
-" ȯ Ͽϴ.";
+"Calling the Horse has failed.";
 "Calling the Horse has failed.";
 
-" ";
+"'s Horse";
 "'s Horse";
 
-"ȥ ˴ϴ.";
+"The wedding is finishing soon.";
 "The wedding is finishing soon.";
 
-"ڵ Ե˴ϴ.";
+"Will be left automatically.";
 "Will be left automatically.";
 
-"̹  ϴ.";
+"The war is already over.";
 "The war is already over.";
 
-"10ʵ ϰڽϴ.";
+"The result will follow in 10 seconds.";
 "The result will follow in 10 seconds.";
 
-" ¿ ȯ   ϴ.";
+"You cannot trade while observing.";
 "You cannot trade while observing.";
 
-"ٸ ŷâ  ŷ Ҽ ϴ.";
+"If the window is open, you cannot trade with others.";
 "If the window is open, you cannot trade with others.";
 
-" ٸ ŷ̶ ŷ Ҽ ϴ.";
+"The other person is currently busy so you cannot trade right now.";
 "The other person is currently busy so you cannot trade right now.";
 
-" ȯ ź Դϴ.";
+"The other person has cancelled the trade.";
 "The other person has cancelled the trade.";
 
-" ϰų  ڸ ϴ.";
+"Not enough Yang or not enough space in the inventory.";
 "Not enough Yang or not enough space in the inventory.";
 
-"  ϰų  ڸ ϴ.";
+"The other person does not have enough Yang or does not have any space left in their inventory.";
 "The other person does not have enough Yang or does not have any space left in their inventory.";
 
-" ǰ   ϴ.";
+"The other person has no space left in their inventory.";
 "The other person has no space left in their inventory.";
 
-"%s ԰ ȯ  Ǿϴ.";
+"The trade with %s has been successful.";
 "The trade with %s has been successful.";
 
-" ȣ ġ  ʾҽϴ.";
+"You did not lose any Experience because of the Blessing of the Dragon God.";
 "You did not lose any Experience because of the Blessing of the Dragon God.";
 
-" ھ ż:%d õ:%d 뱹:%d";
+"Current score: Shinsoo %d, Chunjo %d, Jinno %d";
 "Current score: Shinsoo %d, Chunjo %d, Jinno %d";
 
-"";
+"The correct answer is:";
 "The correct answer is:";
 
-"  %s deadcount %d Empire %d killcount %d(Purpose %d) killmobcount %d, RegenFlag %d";
+"%s deadcount %d Empire %d killcount %d(Purpose %d) killmobcount %d, RegenFlag %d";
 "%s deadcount %d Empire %d killcount %d(Purpose %d) killmobcount %d, RegenFlag %d";
 
-" :  ";
+"The devil of the hallowed place: [ENTER][ENTER]";
 "The devil of the hallowed place: [ENTER][ENTER]";
 
-"༮ ̰   ڰ Ҿ.   Ŷ~~[ENTER][ENTER] 10 Ŀ   ̵ϰ ˴ϴ. ";
+", you don't have any right to be here! The members of your kingdom will leave this hallowed ground in 10 seconds.";
 ", you don't have any right to be here! The members of your kingdom will leave this hallowed ground in 10 seconds.";
 
-"Ÿ  %s   Ż Ͽϴ";
+"%s has been defeated and drops out of the Kingdom Battle.";
 "%s has been defeated and drops out of the Kingdom Battle.";
 
-"Ÿ  ";
+"Number of Monsters in the Kingdom Battle:";
 "Number of Monsters in the Kingdom Battle:";
 
-".   ȣڸ  ȴٸ    ȴ.[ENTER][ENTER] ";
+"If you defeat the Guard of the Holy Place, you will become the owner of it.";
 "If you defeat the Guard of the Holy Place, you will become the owner of it.";
 
-" ȣ   ʾҽϴ.";
+"You did not drop any Item(s) as you are protected by the Dragon God.";
 "You did not drop any Item(s) as you are protected by the Dragon God.";
 
-" ߰  %d";
+"Additional Stabbing Weapon Damage %d";
 "Additional Stabbing Weapon Damage %d";
 
-"%s ! (%ld%%)";
+"%s block! (%d%%)";
 "%s block! (%d%%)";
 
-"%s ȸ! (%ld%%)";
+"%s avoid! (%d%%)";
 "%s avoid! (%d%%)";
 
-"O Դϴ";
+"Yes (O)";
 "Yes (O)";
 
-"%s[%ld]  ġ: %d %d";
+"%s[%d]'s Attack Position: %d %d";
 "%s[%d]'s Attack Position: %d %d";
 
-"ɾ  Էϼ.";
+"Please enter the Order in full length.";
 "Please enter the Order in full length.";
 
-"ź ¿   ϴ.";
+"You cannot do this whilst sitting on a Horse.";
 "You cannot do this whilst sitting on a Horse.";
 
-" ¿   ϴ.";
+"You cannot do that while you are lying on the ground.";
 "You cannot do that while you are lying on the ground.";
 
-"޼ӿ Կ?";
+"In my Dreams? What?";
 "In my Dreams? What?";
 
-" Ͼ .";
+"Get up first.";
 "Get up first.";
 
-"׷ ɾ ϴ";
+"This command does not exist.";
 "This command does not exist.";
 
-"<Ƽ> Ƽ ػ Ǿϴ.";
+"[Group] This group has been disbanded.";
 "[Group] This group has been disbanded.";
 
-"<Ƽ>  ȯ  ϴ.";
+"[Group] You cannot call the target.";
 "[Group] You cannot call the target.";
 
-"<Ƽ> Ƽ  ġ ȯ  ϴ.";
+"[Group] You cannot call group members over to your current position.";
 "[Group] You cannot call group members over to your current position.";
 
-"X Դϴ";
+"No (X)";
 "No (X)";
 
-"Ƽ   ݺ ߰ ġ ʽ ޽ϴ.";
+"Your group works well together, and group members near the group leader will receive an experience bonus.";
 "Your group works well together, and group members near the group leader will receive an experience bonus.";
 
-"";
+"Leader";
 "Leader";
 
-"";
+"Member";
 "Member";
 
-"<> ϰ ϴ ġ  ġ ϴ.";
+"[Guild] Provided Experience is larger then left Experience.";
 "[Guild] Provided Experience is larger then left Experience.";
 
-"<>    Դϴ.";
+"[Guild] This message cannot be deleted.";
 "[Guild] This message cannot be deleted.";
 
-"<> ŷ մϴ. (%d, %d)";
+"[Guild] Not enough Dragon Ghost. (%d, %d)";
 "[Guild] Not enough Dragon Ghost. (%d, %d)";
 
-"<> Ÿ  ʾ  ų   ϴ.";
+"[Guild] You cannot use the guild skills yet.";
 "[Guild] You cannot use the guild skills yet.";
 
-"<> %d ų  (%d, %d) to %lu";
+"[Guild] %d skill has been applied (%d, %d) to %u.";
 "[Guild] %d skill has been applied (%d, %d) to %u.";
 
-"<> 밡 %d äο ֽϴ. ( ä %d)";
+"[Guild] This player is on channel %d. (Current channel: %d)";
 "[Guild] This player is on channel %d. (Current channel: %d)";
 
-"<> 밡 ¶ ° ƴմϴ.";
+"[Guild] This player is not online.";
 "[Guild] This player is not online.";
 
-"5  Ʋ е ٱ ̵ Űڽϴ.";
+"In 5 sec. everyone who gave an incorrect answer will be removed.";
 "In 5 sec. everyone who gave an incorrect answer will be removed.";
 
-"<>  ų  ߿   ֽϴ.";
+"[Guild] This guild skill can only be used during war.";
 "[Guild] This guild skill can only be used during war.";
 
-"<> %lu ŷ ȸϿϴ.";
+"[Guild] %u Dragon ghost points have been restored.";
 "[Guild] %u Dragon ghost points have been restored.";
 
-"<>  ݰ 常   ֽϴ.";
+"[Guild] Only the guild leader can withdraw Yang.";
 "[Guild] Only the guild leader can withdraw Yang.";
 
-"<>   ʴ ź Դϴ.";
+"[Guild] The player has declined the guild invitation.";
 "[Guild] The player has declined the guild invitation.";
 
-"<>  ʴ  ϴ.";
+"[Guild] You do not have the authority to invite someone to join the guild.";
 "[Guild] You do not have the authority to invite someone to join the guild.";
 
-"<> ٸ   忡 ʴ  ϴ.";
+"[Guild] You cannot invite players from another kingdom into the guild.";
 "[Guild] You cannot invite players from another kingdom into the guild.";
 
-"<> Ż  %d    忡 ʴ  ϴ.";
+"[Guild] This player can be invited again after %d day(s).";
 "[Guild] This player can be invited again after %d day(s).";
 
-"<> 带 ػ  %d    忡 ʴ  ϴ.";
+"[Guild] After the rearrangement you can invite members again after %d days.";
 "[Guild] After the rearrangement you can invite members again after %d days.";
 
-"<>  ̹ ٸ 忡 ֽϴ.";
+"[Guild] This person is already a member of another Guild.";
 "[Guild] This person is already a member of another Guild.";
 
-"<> ִ   ʰ߽ϴ.";
+"[Guild] The maximum guild capacity has been reached.";
 "[Guild] The maximum guild capacity has been reached.";
 
-"  غּ.";
+"Ready for the next question?";
 "Ready for the next question?";
 
-"   ųԴϴ.";
+"You cannot train this skill.";
 "You cannot train this skill.";
 
-" ̻   ϴ.";
+"You cannot train this skill.";
 "You cannot train this skill.";
 
-"׷      ųԴϴ.";
+"You cannot train this skill up to Grand Master level.";
 "You cannot train this skill up to Grand Master level.";
 
-"Ʈ ͵ ųԴϴ.  ̻    ϴ.";
+"You already are a Master of this skill. You cannot train this skill any further.";
 "You already are a Master of this skill. You cannot train this skill any further.";
 
-" ų  ׷     ̸ ʾҽϴ.";
+"Your Skill is not high enough to become a Grand Master.";
 "Your Skill is not high enough to become a Grand Master.";
 
-"ũ, Ⱑ ϰ ־! ̰  ȭԸΰ!? !";
+"That did not work. Damn!";
 "That did not work. Damn!";
 
-" з ϴ. ٽ ֽñ ٶϴ.";
+"Training has failed. Please try again later.";
 "Training has failed. Please try again later.";
 
-"     ̾!";
+"My body is full of energy!";
 "My body is full of energy!";
 
-"߰ſ   ġ ־! ̰, ̰!";
+"The training seems to be working already...";
 "The training seems to be working already...";
 
-"     ̽ϴ.";
+"You successfully finished your training with the book.";
 "You successfully finished your training with the book.";
 
-"ġ Ͽ å   ϴ.";
+"You cannot read this due to your lack of experience.";
 "You cannot read this due to your lack of experience.";
 
-"Pregunta.";
+"Question.";
 "Question.";
 
-" ų å ̻   ϴ.";
+"You cannot train this skill with a Book.";
 "You cannot train this skill with a Book.";
 
-" ų  å   ̸ ʾҽϴ.";
+"This skill's level is not high enough to be trained with a Book.";
 "This skill's level is not high enough to be trained with a Book.";
 
-"    ذ Ǿ  ѵ ѵ..";
+"I'm making progress, but I still haven't understood everything.";
 "I'm making progress, but I still haven't understood everything.";
 
-"  ̴ ǰ...    ϱⰡ ʹ ..";
+"These instructions are difficult to understand. I have to carry on studying.";
 "These instructions are difficult to understand. I have to carry on studying.";
 
-" ϴ   ͸   ִ  ̴..";
+"I understand this chapter. But I've got to carry on working hard.";
 "I understand this chapter. But I've got to carry on working hard.";
 
-"å      ̽ϴ.";
+"You have successfully finished your training with the Book.";
 "You have successfully finished your training with the Book.";
 
-"ȯ Ͽϴ.";
+"Teleportation has failed.";
 "Teleportation has failed.";
 
-" ϴ. °  ãư.";
+"No Horse here. Ask the Stable Boy.";
 "No Horse here. Ask the Stable Boy.";
 
-" ȯ  ϼ.";
+"Please use an item to call a Horse.";
 "Please use an item to call a Horse.";
 
-"%s SPҸ: %d";
+"%s FP-Consumption: %d";
 "%s FP-Consumption: %d";
 
-" O, Ʋ X ̵ּ";
+"If it's correct, then go to O. If it's wrong, go to X.";
 "If it's correct, then go to O. If it's wrong, go to X.";
 
-"  ̱߰.   . ̴ ⸦ Ű.";
+"I am burning inside, but it is calming down my body. My Chi has to stabilise.";
 "I am burning inside, but it is calming down my body. My Chi has to stabilise.";
 
-"׷, õõ.  õõ, ׷   !";
+"A little slow, but steady... Without stopping!";
 "A little slow, but steady... Without stopping!";
 
-"׷,  ̾. ü Ⱑ  游.";
+"Yes, that feels great. My body is full of Chi.";
 "Yes, that feels great. My body is full of Chi.";
 
-" о!  ޿ ִ  ſ ⸦ ⸸ ϸ,";
+"I have read it! Now the Chi will spread through my body.";
 "I have read it! Now the Chi will spread through my body.";
 
-"װ   ž!";
+"The training is completed.";
 "The training is completed.";
 
-" å  ̾!    ̰ ־!";
+"I am on the last page of the book. The training is nearly finished!";
 "I am on the last page of the book. The training is nearly finished!";
 
-"  Ҿ! ݸ !";
+"Nearly finished! Just a little bit more to go!";
 "Nearly finished! Just a little bit more to go!";
 
-"Ҿ! ݸ   ̴!";
+"Eureka! I have nearly finished reading it!";
 "Eureka! I have nearly finished reading it!";
 
-"å嵵    ʾұ.";
+"Only a few more pages and then I'll have read everything.";
 "Only a few more pages and then I'll have read everything.";
 
-"  ȿ    .";
+"I feel refreshed.";
 "I feel refreshed.";
 
-"Դϴ!";
+"Correct!";
 "Correct!";
 
-"      .";
+"Now I understand it!";
 "Now I understand it!";
 
-",  ⼼  !";
+"Okay I have to stay concentrated!";
 "Okay I have to stay concentrated!";
 
-"ƴ     о Ӹ  .";
+"I keep reading the same line over and over again.";
 "I keep reading the same line over and over again.";
 
-"ϱ Ⱦ.";
+"I do not want to learn any more.";
 "I do not want to learn any more.";
 
-"ŭ бⰡ  ʱ. ص ư 뵵 .";
+"It is a lot more complicated and more difficult to understand than I thought.";
 "It is a lot more complicated and more difficult to understand than I thought.";
 
-"̷ ΰ ȵȴٱ.";
+"It's hard for me to concentrate. I should take a break.";
 "It's hard for me to concentrate. I should take a break.";
 
-"  ä  Ǿϴ.";
+"Your chat has been blocked by a GM.";
 "Your chat has been blocked by a GM.";
 
-"ä  ǮȽϴ.";
+"Your chat block has been lifted.";
 "Your chat block has been lifted.";
 
-"̹ â ֽϴ.";
+"The Build window is already open.";
 "The Build window is already open.";
 
-"ٸ ŷ(â,ȯ,)   ϴ.";
+"You cannot build something while another trade/storeroom window is open.";
 "You cannot build something while another trade/storeroom window is open.";
 
-" ̻   ϴ.";
+"No further improvements possible.";
 "No further improvements possible.";
 
-"â  ʽϴ";
+"The build window is not open.";
 "The build window is not open.";
 
-" ᰡ մϴ";
+"You do not have the right material.";
 "You do not have the right material.";
 
-"<> Ŀ ֽ̿ʽÿ";
+"[Guild] Please try again later.";
 "[Guild] Please try again later.";
 
-"%d   о  Ϸ   ֽϴ.";
+"You have to read %d more skill books to improve this skill.";
 "You have to read %d more skill books to improve this skill.";
 
-"<> Ŀ ֽ̿ʽÿ.";
+"[Guild] Please try again later.";
 "[Guild] Please try again later.";
 
-"   ִ Դϴ.";
+"You are only able to use this function while you are at the castle.";
 "You are only able to use this function while you are at the castle.";
 
-"TEST : Ȳݵβ  ȯǾϴ.";
+"TEST: The Gold Bar has been paid back to your kingdom's safe.";
 "TEST: The Gold Bar has been paid back to your kingdom's safe.";
 
-"TEST :   : %d";
+"TEST: In your kingdom's safe there are: %d";
 "TEST: In your kingdom's safe there are: %d";
 
-"TEST : Ȳݵβ  ȯ  ϴ.";
+"TEST: You cannot pay the Gold Bar back into your kingdom's safe.";
 "TEST: You cannot pay the Gold Bar back into your kingdom's safe.";
 
-"<>   %d  Ǿϴ";
+"[Guild] The guild has reached %d points.";
 "[Guild] The guild has reached %d points.";
 
-"    ϴ.";
+"This item cannot be improved.";
 "This item cannot be improved.";
 
-"  ȸ 20  ⸸ մϴ";
+"The free weapon improvements can only be used on weapons up to level 20.";
 "The free weapon improvements can only be used on weapons up to level 20.";
 
-" ʾ     ϴ.";
+"You cannot use this item because you do not fulfil all the requirements.";
 "You cannot use this item because you do not fulfil all the requirements.";
 
-" ʾ     ϴ.";
+"You are not able to use that item because you do not have the right gender.";
 "You are not able to use that item because you do not have the right gender.";
 
-": transfer ";
+"Use: transfer ";
 "Use: transfer ";
 
-"ָ   Դϴ";
+"This function can only be used by the emperor.";
 "This function can only be used by the emperor.";
 
-"ٸ   ȯ  ϴ.";
+"You cannot recruit players from another kingdom.";
 "You cannot recruit players from another kingdom.";
 
-"%s  %d äο   Դϴ. ( ä: %d)";
+"The player %s is on channel %d at the moment. (Your channel: %d)";
 "The player %s is on channel %d at the moment. (Your channel: %d)";
 
-"%s  ȯϿϴ.";
+"You have recruited %s players.";
 "You have recruited %s players.";
 
-"ԷϽ ̸  ڰ ϴ.";
+"There is no user with this name.";
 "There is no user with this name.";
 
-"ڽ ȯ  ϴ.";
+"You cannot recruit yourself.";
 "You cannot recruit yourself.";
 
-"  Ѻ  ϴ.";
+"Your level is too low to use this item.";
 "Your level is too low to use this item.";
 
-"â,ŷâ  ¿  Ҽ ϴ";
+"You cannot upgrade anything while another window is open.";
 "You cannot upgrade anything while another window is open.";
 
-"%s ְ %s  üǾϴ.";
+"The emperor of %s has changed to %s.";
 "The emperor of %s has changed to %s.";
 
-"%s ȭ ѷΰ  Դϴ.";
+"There are %s wars to inflame the bonfires.";
 "There are %s wars to inflame the bonfires.";
 
-"%s  ߽ϴ.";
+"%s has successfully defended.";
 "%s has successfully defended.";
 
-"ݺ %s 30а ȭ ıϿ  ȹ   ֽϴ.";
+"30 minutes from now on the player %s can get a reward because he destroyed the bonfire.";
 "30 minutes from now on the player %s can get a reward because he destroyed the bonfire.";
 
-"30 ߽ϴ.. ȭ ϴ.";
+"30 minutes are over. The bonfires have disappeared.";
 "30 minutes are over. The bonfires have disappeared.";
 
-"%s   ˸ ȭ Ÿϴ.";
+"A bonfire was inflamed at %s to warn because of a battle.";
 "A bonfire was inflamed at %s to warn because of a battle.";
 
-"%s ȭ ı߽ϴ.";
+"%s has destroyed the bonfire.";
 "%s has destroyed the bonfire.";
 
-"%s  Ͽ £ йϿϴ..";
+"%s lost the war as they have not been able to defend the castle.";
 "%s lost the war as they have not been able to defend the castle.";
 
-"%s  ȭ ıϿϴ.";
+"%s has destroyed all the bonfires.";
 "%s has destroyed all the bonfires.";
 
-"      ֽϴ.";
+"You can only open the shop if you take off your armour.";
 "You can only open the shop if you take off your armour.";
 
-"%d ð %d  %d   äñ Դϴ";
+"%d hours %d minutes %d seconds left on your chat block";
 "%d hours %d minutes %d seconds left on your chat block";
 
-"%d ð %d   äñ Դϴ";
+"%d hours %d seconds left on your chat block";
 "%d hours %d seconds left on your chat block";
 
-"%d  %d   äñ Դϴ";
+"%d minutes %d seconds left on your chat block";
 "%d minutes %d seconds left on your chat block";
 
-"   Ȯ";
+"Yang rain drop rate";
 "Yang rain drop rate";
 
-" ϱ  ᰡ մϴ.";
+"Not the right material for an upgrade.";
 "Not the right material for an upgrade.";
 
-"";
+"All kingdoms";
 "All kingdoms";
 
-"  Ȯ";
+"Item drop rate in percent";
 "Item drop rate in percent";
 
-"  Ȯ";
+"Yang drop rate in percent";
 "Yang drop rate in percent";
 
-"ġ ";
+"Experience percentage";
 "Experience percentage";
 
-"%d   äñ Դϴ";
+"%d seconds left on your chat block";
 "%d seconds left on your chat block";
 
-" ź ¿ ǥ   ϴ.";
+"You cannot express emotions whilst riding a horse.";
 "You cannot express emotions whilst riding a horse.";
 
-" ź  ǥ   ϴ.";
+"You cannot use emotions with a player who is riding on a Horse.";
 "You cannot use emotions with a player who is riding on a Horse.";
 
-"<>     ƴմϴ.";
+"[Guild] The enemy's guild leader is offline.";
 "[Guild] The enemy's guild leader is offline.";
 
-"   ʾ    ϴ.";
+"[Guild] The enemy's guild leader is offline.";
 "[Guild] The enemy's guild leader is offline.";
 
-"<> ̹   Դϴ.";
+"[Guild] This guild is taking part in a battle at the moment.";
 "[Guild] This guild is taking part in a battle at the moment.";
 
-"̹ Ż ̿Դϴ.";
+"You're already riding. Get off first.";
 "You're already riding. Get off first.";
 
-"   ̻   ϴ.";
+"You cannot upgrade items with this Scroll.";
 "You cannot upgrade items with this Scroll.";
 
-" Ÿ Ϸ  ѹ 밡մϴ.";
+"You can only be rewarded once for the Demon Tower Quest.";
 "You can only be rewarded once for the Demon Tower Quest.";
 
-"ȥ ⿡ Ͽϴ.";
+"Dragon Stone has been removed.";
 "Dragon Stone has been removed.";
 
-"ȭâ  ¿  ű  ϴ.";
+"You cannot move the item within the refinement window.";
 "You cannot move the item within the refinement window.";
 
-" ⿡ Ͽϴ.";
+"Dragon Stone remaining duration has been extracted.";
 "Dragon Stone remaining duration has been extracted.";
 
-" ⿡ Ͽϴ.";
+"Remaining duration extraction failed.";
 "Remaining duration extraction failed.";
 
-"ȥ ⿡ Ͽ %s ϴ.";
+"Removal of Dragon Stone failed. But you have received the following: %s";
 "Removal of Dragon Stone failed. But you have received the following: %s";
 
-"ȥ ⿡ Ͽϴ.";
+"Removal of Dragon Stone failed.";
 "Removal of Dragon Stone failed.";
 
-"  ʿ ᰡ ƴմϴ.";
+"This item is not required for improving the clarity level.";
 "This item is not required for improving the clarity level.";
 
-"ȭ ʿ ᰡ ƴմϴ.";
+"This item is not required for improving the clarity level.";
 "This item is not required for improving the clarity level.";
 
-"    ȥԴϴ.";
+"This item cannot be advanced this way.";
 "This item cannot be advanced this way.";
 
-"   δ   ϴ.";
+"This item cannot be advanced this way.";
 "This item cannot be advanced this way.";
 
-"ܰ  ߽ϴ.";
+"Improvement of the clarity level successful.";
 "Improvement of the clarity level successful.";
 
-"  ߽ϴ.";
+"Refinement up one class failed.";
 "Refinement up one class failed.";
 
-"ܰ    ȥԴϴ.";
+"This item is not required for refinement.";
 "This item is not required for refinement.";
 
-"  ߽ϴ.";
+"Refinement up one class was successful.";
 "Refinement up one class was successful.";
 
-"ܰ  ߽ϴ.";
+"Improvement of the clarity level failed.";
 "Improvement of the clarity level failed.";
 
-"ܰ  ʿ ᰡ ƴմϴ.";
+"You do not own the materials required to strengthen the Dragon Stone.";
 "You do not own the materials required to strengthen the Dragon Stone.";
 
-"ȭ   ȥԴϴ.";
+"This Dragon Stone cannot be used for strengthening.";
 "This Dragon Stone cannot be used for strengthening.";
 
-"ȭ ߽ϴ.";
+"Strengthening was successful.";
 "Strengthening was successful.";
 
-"ȭ ߽ϴ.";
+"Strengthening failed.";
 "Strengthening failed.";
 
-"̹   ȥ ϰ ֽϴ.";
+"You are already carrying a Dragon Stone of this type.";
 "You are already carrying a Dragon Stone of this type.";
 
-"  ȥ   ϴ.";
+"The Dragon Stone cannot be removed.";
 "The Dragon Stone cannot be removed.";
 
-"̹  ϰ ֽϴ.";
+"You have already equipped this kind of Dragon Stone.";
 "You have already equipped this kind of Dragon Stone.";
 
-"κ Ȱȭ  .";
+"Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy.";
 "Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy.";
 
-" ȥ Ʈ Ϸϼž մϴ.";
+"Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy.";
 "Before you open the Cor Draconis, you have to complete the Dragon Stone quest and activate the Dragon Stone Alchemy.";
 
-"Ʈ κ丮  ϸ   ϴ.";
+"You can only discard the belt when there are no longer any items in its inventory.";
 "You can only discard the belt when there are no longer any items in its inventory.";
 
-"ູ  ö ĥ  ֽϴ.";
+"You can combine the Blessing Scroll with the Magic Iron Ore.";
 "You can combine the Blessing Scroll with the Magic Iron Ore.";
 
-"  Ʈ κ丮 ű  ϴ.";
+"You cannot equip this item in your belt inventory.";
 "You cannot equip this item in your belt inventory.";
 
-"  ĥ  ϴ.";
+"[1106-??]No puedes unir esto.";
 "[1106-??]No puedes unir esto.";
 
-"%d  ϼ̽ϴ.";
+"You have invested %d Yang.";
 "You have invested %d Yang.";
 
-"  ִ ƾ ϴ.";
+"There is no Stone available to take out.";
 "There is no Stone available to take out.";
 
-"    ġ Դϴ.";
+"You cannot store this location.";
 "You cannot store this location.";
 
-"ǰ   ϴ.";
+"There isn't enough space in your inventory.";
 "There isn't enough space in your inventory.";
 
-" ġ Ÿ  ־ ȯ  ϴ.";
+"You cannot teleport to a safe position in a foreign Kingdom.";
 "You cannot teleport to a safe position in a foreign Kingdom.";
 
-"   ڶ   ϴ.";
+"You don't have enough HP.";
 "You don't have enough HP.";
 
-" ŷ  ڶ   ϴ.";
+"You don't have enough Spell Points (SP) to use this.";
 "You don't have enough Spell Points (SP) to use this.";
 
-"%d   ̵˴ϴ.";
+"You'll reach your destination in %d seconds.";
 "You'll reach your destination in %d seconds.";
 
-"    Ѻ  ϴ.";
+"Your level is too low to use this item.";
 "Your level is too low to use this item.";
 
-",  5ʵ Ҽ ϴ. ";
+"You can only use a Moon Cake every 5 seconds.";
 "You can only use a Moon Cake every 5 seconds.";
 
-" ߿ ̿   ǰԴϴ.";
+"You cannot use this item in a duel.";
 "You cannot use this item in a duel.";
 
-"%d  ȹϼ̽ϴ.";
+"You have won %d Yang.";
 "You have won %d Yang.";
 
-"ں ǿ   Դϴ.";
+"You cannot build a campfire here.";
 "You cannot build a campfire here.";
 
-" ӿ ں ǿ  ϴ.";
+"You cannot build a campfire under water.";
 "You cannot build a campfire under water.";
 
-"  ־  ʴ° . 踦 غ.";
+"Closed. You should look for the key.";
 "Closed. You should look for the key.";
 
-"   ƴѰ .";
+"This item cannot be opened with a key.";
 "This item cannot be opened with a key.";
 
-"   ִ κ  ȵǾϴ.";
+"That's the right key.";
 "That's the right key.";
 
-" %d  ȹ߽ϴ.";
+"You have received %d Yang.";
 "You have received %d Yang.";
 
-"ڿ  ź  ɴϴ.";
+"A mysterious light comes out of the box.";
 "A mysterious light comes out of the box.";
 
-"%d ġ ȹ߽ϴ.";
+"You have received %d experience points.";
 "You have received %d experience points.";
 
-"ڿ Ͱ Ÿϴ!";
+"Look what came out of the box!";
 "Look what came out of the box!";
 
-"<>   ڶ    ϴ.";
+"[Guild] The guild level is too low.";
 "[Guild] The guild level is too low.";
 
-"ڿ   ⸦ ̸ ̴ ӵ ϴ!";
+"If you inhale the red smoke coming out of the box, your speed will increase!";
 "If you inhale the red smoke coming out of the box, your speed will increase!";
 
-" ̻   Ӽ ߰  ϴ";
+"You cannot add more bonus.";
 "You cannot add more bonus.";
 
-" Ӽ ߰ Ǿϴ";
+"New bonus added successfully.";
 "New bonus added successfully.";
 
-" ų Ӽ ϴ";
+"You cannot change the bonuses.";
 "You cannot change the bonuses.";
 
-"%s ʿմϴ.";
+"%s needed.";
 "%s needed.";
 
-" Դϴ.";
+"OX-Question: ";
 "OX-Question: ";

From 68c7c4bc4f5812aca2d09d55fca83788a8fbc5a5 Mon Sep 17 00:00:00 2001
From: Tr0n 
Date: Sat, 6 Apr 2024 18:04:29 +0200
Subject: [PATCH 21/21] fix config comment

---
 src/game/src/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/game/src/config.cpp b/src/game/src/config.cpp
index 4da621c..eacad23 100644
--- a/src/game/src/config.cpp
+++ b/src/game/src/config.cpp
@@ -38,7 +38,7 @@ WORD	teen_port	= 0;
 
 BYTE	g_bChannel = 0;
 int		passes_per_sec = 25;
-int		save_event_second_cycle = passes_per_sec * 120;	// 3��
+int		save_event_second_cycle = passes_per_sec * 120;	// 3분
 int		ping_event_second_cycle = passes_per_sec * 60;
 bool	g_bNoMoreClient = false;
 bool	g_bNoRegen = false;