Restructure repository to include all source folders

Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-29 20:17:20 +09:00
parent 5d3cd64a25
commit dd97ddec92
11602 changed files with 1446576 additions and 0 deletions

View File

@@ -0,0 +1,329 @@
#pragma once
#ifndef _AWARD_TABLE_H_
#define _AWARD_TABLE_H_
#include <Item/ItemConstants.h>
#include <Creature/Character/CharacterClass.h>
#include <Creature/AggresiveCreature.h>
class CMonster;
class CCharacter;
namespace AwardTable
{
enum Const
{
MAX_DROP_ITEM = 5, // <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
MAX_MONSTER_LEVEL = 109, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ְ<EFBFBD> <20><><EFBFBD><EFBFBD>
// (<28><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20>ٸ<EFBFBD><D9B8><EFBFBD>. Creature::MONSTER_MAX_LEVEL <20><><EFBFBD><EFBFBD>)
SKILL_KIND = 88, // <20><>ų(<28><>)<29><> <20><><EFBFBD><EFBFBD> (<28><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20>ִ<EFBFBD>.)
FIFTHSKILL_KIND = 15, // <20><>ų(<28><>)<29><> <20><><EFBFBD><EFBFBD> (<28><>ų<EFBFBD><C5B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų<EFBFBD><C5B3> <20>ִ<EFBFBD>.)
GEM_DROP_TABLE_COLUMN = 11, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
GEM_DROP_TABLE_ROW = 3, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
METAL_DROP_TABLE_COLUMN = 11, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
METAL_DROP_TABLE_ROW = 7, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
POTION_DROP_TABLE_COLUMN = 11, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
POTION_DROP_TABLE_ROW = 8, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
CASH_DROP_TABLE_COLUMN = 13, // ij<><C4B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
CASH_DROP_TABLE_ROW = 7, // ij<><C4B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
SKILLBOOK_DROP_TABLE_COLUMN = 11, // <20><>ų<EFBFBD><C5B3> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
EQUIP_MAX_NUM_PER_LEVEL = 15, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BLACK_MARKET_TABLE_COLUMN = 228, // <20>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
BLACK_MARKET_TABLE_ROW = 13, // <20>Ͻ<EFBFBD><CFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
PRIMARY_EQUIP_TABLE_ROW = 9, // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><20><><EFBFBD><EFBFBD> <20><><EFBFBD>̺<EFBFBD> <20><><EFBFBD><EFBFBD> ũ<><C5A9>
HUMAN_EQUIP_TYPE_NUM = 19, // <20>޸<EFBFBD> <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD>
AKHAN_EQUIP_TYPE_NUM = 19 // <20><>ĭ <20><><EFBFBD><EFBFBD> Ÿ<><C5B8> <20><><EFBFBD><EFBFBD>
};
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Desc : <20><> <20><><EFBFBD><EFBFBD> n/1000 <20><> Ȯ<><C8AE><EFBFBD><EFBFBD> <20>ǹ<EFBFBD><C7B9>Ѵ<EFBFBD>.
const unsigned short aryItemDropRate[CAggresiveCreature::AGGRAVATION_NUM][MAX_DROP_ITEM] = {
{ 1, 1, 1, 1, 1 }, // -20
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 1, 1, 1, 1, 1 },
{ 91, 1, 1, 1, 1 },
{ 189, 1, 1, 1, 1 },
{ 280, 1, 1, 1, 1 },
{ 364, 1, 1, 1, 1 },
{ 441, 1, 1, 1, 1 }, // -5
{ 511, 1, 1, 1, 1 },
{ 574, 1, 1, 1, 1 },
{ 623, 1, 1, 1, 1 },
{ 665, 91, 1, 1, 1 }, // -1
{ 700, 189, 1, 1, 1 }, // 0
{ 710, 280, 1, 1, 1 }, // +1
{ 720, 364, 1, 1, 1 },
{ 730, 441, 1, 1, 1 },
{ 740, 511, 1, 1, 1 },
{ 750, 574, 1, 1, 1 }, // +5
{ 760, 623, 91, 1, 1 },
{ 800, 665, 189, 1, 1 },
{ 800, 700, 280, 1, 1 },
{ 800, 710, 364, 91, 1 }, // +9
{ 800, 720, 441, 189, 1 },
{ 800, 730, 511, 280, 1 },
{ 800, 740, 574, 364, 91 }, // +12
{ 900, 750, 623, 441, 189 },
{ 900, 760, 665, 511, 280 },
{ 900, 800, 700, 574, 364 }, // +15
{ 900, 800, 710, 623, 441 }, // +16
{ 900, 800, 720, 665, 511 },
{ 900, 800, 730, 700, 574 },
{ 900, 800, 740, 710, 623 },
{ 900, 900, 750, 720, 665 } // +20
};
/*
const unsigned short aryItemDropRate[CAggresiveCreature::AGGRAVATION_NUM][MAX_DROP_ITEM] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 161, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 195, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 228, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 262, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 296, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 392, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 363, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 396, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 430, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 464, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 497, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 531, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 564, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 598, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 632, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 665, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 699, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 732, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 766, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 800, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 51, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 252, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 504, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 807, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 900, 260, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 900, 663, 1, 1, 1, 1, 1, 1, 1 },
{ 900, 900, 900, 216, 1, 1, 1, 1, 1, 1 },
{ 900, 900, 900, 720, 1, 1, 1, 1, 1, 1 },
{ 900, 900, 900, 900, 375, 1, 1, 1, 1, 1 },
{ 900, 900, 900, 900, 900, 80, 1, 1, 1, 1 },
{ 900, 900, 900, 900, 900, 735, 1, 1, 1, 1 },
{ 900, 900, 900, 900, 900, 900, 540, 1, 1, 1 },
{ 900, 900, 900, 900, 900, 900, 900, 396, 1, 1 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 303, 1 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 900, 260 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900 },
{ 900, 900, 900, 900, 900, 900, 900, 900, 900, 900 }
};
*/
const short aryGemDropTable[GEM_DROP_TABLE_COLUMN][GEM_DROP_TABLE_ROW] = {
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09>Ϲݺ<CFB9><DDBA><EFBFBD>
{ 100, 0, 0 }, // 10
{ 90, 10, 0 }, // 20
{ 70, 20, 10 }, // 30
{ 50, 30, 20 }, // 40
{ 30, 40, 30 }, // 50
{ 10, 50, 40 }, // 60
{ 10, 30, 60 }, // 70
{ 0, 20, 80 }, // 80
{ 0, 10, 90 }, // 90
{ 0, 10, 90 }, // 100
{ 0, 0, 100 } // 110
};
const short aryMetalDropTable[METAL_DROP_TABLE_COLUMN][METAL_DROP_TABLE_ROW] = {
// <09>Ǻ<EFBFBD> <09>̽<EFBFBD><CCBD><EFBFBD> <09><><EFBFBD>ʹϿ<CDB4> <09>ҿ<EFBFBD><D2BF><EFBFBD>Ż <09><>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD> <09>ھ<EFBFBD>
{ 90, 0, 0, 0, 0, 0, 10 }, // 10
{ 81, 9, 0, 0, 0, 0, 10 }, // 20
{ 63, 18, 9, 0, 0, 0, 10 }, // 30
{ 45, 27, 18, 0, 0, 0, 10 }, // 40
{ 27, 36, 27, 0, 0, 0, 10 }, // 50
{ 9, 45, 36, 0, 0, 0, 10 }, // 60
{ 9, 27, 54, 0, 0, 0, 10 }, // 70
{ 0, 18, 72, 0, 0, 0, 10 }, // 80
{ 0, 9, 81, 0, 0, 0, 10 }, // 90
{ 0, 9, 81, 0, 0, 0, 10 }, // 100
{ 0, 0, 90, 0, 0, 0, 10 } // 110
};
const short aryPotionDropTable[POTION_DROP_TABLE_COLUMN][POTION_DROP_TABLE_ROW] = {
// <09><> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4
// <09><><EFBFBD><EFBFBD>1 <09><><EFBFBD><EFBFBD>2 <09><><EFBFBD><EFBFBD>3 <09><><EFBFBD><EFBFBD>4 <20><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>1 <09><><EFBFBD><EFBFBD>2 <09><><EFBFBD><EFBFBD>3 <09><><EFBFBD><EFBFBD>4
{ 70, 0, 0, 0, 16, 8, 4, 2 }, // 10
{ 35, 35, 0, 0, 16, 8, 4, 2 }, // 20
{ 23, 23, 24, 0, 16, 8, 4, 2 }, // 30
{ 17, 17, 18, 18, 16, 8, 4, 2 }, // 40
{ 0, 23, 23, 24, 16, 8, 4, 2 }, // 50
{ 0, 23, 35, 24, 16, 8, 4, 2 }, // 60
{ 0, 0, 35, 35, 16, 8, 4, 2 }, // 70
{ 0, 0, 1, 70, 16, 8, 4, 2 }, // 80
{ 0, 0, 0, 70, 16, 8, 4, 2 }, // 90
{ 0, 0, 0, 70, 16, 8, 4, 2 }, // 100
{ 0, 0, 0, 70, 16, 8, 4, 2 } // 110
};
const short aryCashDropTable[CASH_DROP_TABLE_COLUMN][CASH_DROP_TABLE_ROW] = {
// <09><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD> Holy Almighty <09><><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>Ȱ<EFBFBD>ǵ<EFBFBD> <09><><EFBFBD><EFBFBD>Ʈ
{ 20, 60, 10, 10, 0, 0, 0 }, // 10
{ 20, 60, 10, 10, 0, 0, 0 }, // 20
{ 20, 60, 10, 10, 0, 0, 0 }, // 30
{ 20, 60, 10, 10, 0, 0, 0 }, // 40
{ 20, 60, 10, 10, 0, 0, 0 }, // 50
{ 20, 60, 10, 10, 0, 0, 0 }, // 60
{ 20, 60, 10, 10, 0, 0, 0 }, // 70
{ 20, 60, 10, 10, 0, 0, 0 }, // 80
{ 20, 60, 10, 10, 0, 0, 0 }, // 90
{ 20, 60, 10, 10, 0, 0, 0 }, // 100
{ 20, 60, 10, 10, 0, 0, 0 }, // 110
{ 20, 60, 10, 10, 0, 0, 0 }, // ġ<><C4A1>
{ 0, 20, 50, 16, 8, 4, 2 }, // <20><><EFBFBD>ӵ<EFBFBD>
};
const short arySkillBookDropTable[SKILLBOOK_DROP_TABLE_COLUMN] = {
1, 1, 2, 2, 2,
3, 3, 3, 4, 4,
5
};
const unsigned short aryDropableSkillbookList[SKILL_KIND] = {
// <20>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų 17
0x8104, 0x8102, 0x8103, 0x8105, 0x8203, 0x8205, 0x8302, 0x8303, 0x8402, 0x8405,
0x8106, 0x8107, 0x8202, 0x8304, 0x8305, 0x8306, 0x8404,
// <20>ΰ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ų 29
0x8503, 0x8504, 0x8602, 0x8603, 0x8604, 0x8702, 0x8704, 0x8705, 0x8706, 0x8803,
0x8804, 0x8805, 0x8902, 0x8903, 0x8904, 0x8905, 0x8A02, 0x8A04, 0x8A05, 0x8A06,
0x8B02, 0x8B03, 0x8B04, 0x8B05, 0x8B06, 0x8C02, 0x8C03, 0x8C04, 0x8C08,
// <20><>ĭ <20><><EFBFBD><EFBFBD> <20><>ų 17
0x9102, 0x9105, 0x9104, 0x9202, 0x9106, 0x9206, 0x9207, 0x9213, 0x9209, 0x9108,
0x9109, 0x9110, 0x9204, 0x9208, 0x9210, 0x9212, 0x9214,
// <20><>ĭ <20><><EFBFBD><EFBFBD> <20><>ų 25
0x9302, 0x9305, 0x9307, 0x9402, 0x9404, 0x9405, 0x9407, 0x9502, 0x9504, 0x9506,
0x9602, 0x9603, 0x9604, 0x9605, 0x9606, 0x9703, 0x9704, 0x9706, 0x9802, 0x9803,
0x9804, 0x9805, 0x9303, 0x9708, 0x9709
};
const unsigned short aryDropableFifthSkillbookList[FIFTHSKILL_KIND] = {
// <20>ΰ<EFBFBD> 5<>ܰ<EFBFBD> <20><>ų
0x8603, 0x8503, 0x8704, 0x8804, 0x8902, 0x8a05, 0x8c02, 0x8b04,
// <20><>ĭ 5<>ܰ<EFBFBD> <20><>ų
0x9402, 0x9302, 0x9502, 0x9606, 0x9603, 0x9706, 0x9804
};
using namespace Item::ItemType;
const unsigned char aryPrimaryEquipList[CClass::MAX_CLASS][PRIMARY_EQUIP_TABLE_ROW] = {
{ MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE },
{ CON_HELM, CON_GLOVE, CON_BOOTS, CON_ARMOUR, ONEHANDED_SWORD, TWOHANDED_SWORD, ONEHANDED_AXE, TWOHANDED_AXE, SHIELD }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ DEX_HELM, DEX_GLOVE, DEX_BOOTS, DEX_ARMOUR, DAGGER, BOW, CROSSBOW, SHIELD, MAX_ITEM_TYPE }, // <20>α<EFBFBD>
{ DEX_HELM, DEX_GLOVE, DEX_BOOTS, DEX_ARMOUR, STAFF, DAGGER, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ CON_HELM, CON_GLOVE, CON_BOOTS, CON_ARMOUR, ONEHANDED_BLUNT, TWOHANDED_BLUNT, SHIELD, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>Ʈ
{ CON_HELM, CON_GLOVE, CON_BOOTS, CON_ARMOUR, ONEHANDED_BLUNT, TWOHANDED_BLUNT, ONEHANDED_AXE, TWOHANDED_AXE, SHIELD }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ CON_HELM, CON_GLOVE, CON_BOOTS, CON_ARMOUR, ONEHANDED_SWORD, TWOHANDED_SWORD, ONEHANDED_AXE, TWOHANDED_AXE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ DEX_HELM, DEX_GLOVE, DEX_BOOTS, DEX_ARMOUR, DAGGER, ONEHANDED_SWORD, ONEHANDED_AXE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD>ؽ<EFBFBD>
{ DEX_HELM, DEX_GLOVE, DEX_BOOTS, DEX_ARMOUR, DAGGER, BOW, CROSSBOW, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><>ó
{ DEX_HELM, DEX_GLOVE, DEX_BOOTS, DEX_ARMOUR, STAFF, DAGGER, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20>Ҽ<EFBFBD><D2BC><EFBFBD>
{ DEX_HELM, DEX_GLOVE, DEX_BOOTS, DEX_ARMOUR, STAFF, BOW, CROSSBOW, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ CON_HELM, CON_GLOVE, CON_BOOTS, CON_ARMOUR, ONEHANDED_BLUNT, TWOHANDED_BLUNT, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
{ CON_HELM, CON_GLOVE, CON_BOOTS, CON_ARMOUR, ONEHANDED_BLUNT, TWOHANDED_BLUNT, SHIELD, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // Ŭ<><C5AC><EFBFBD><EFBFBD>
{ MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE },
{ MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE },
{ MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE },
{ MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE },
{ CON_HEAD, CON_PROTECT_A, CON_PELVIS, CON_BODY, COM_SWORD, COM_BLUNT, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20>Ĺ<EFBFBD><C4B9><EFBFBD>Ʈ
{ DEX_HEAD, DEX_PROTECT_A, DEX_PELVIS, DEX_BODY, OPP_AXE, OPP_SLUSHER, OPP_TALON, OPP_SYTHE, MAX_ITEM_TYPE }, // <20><><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD>
{ CON_HEAD, CON_PROTECT_A, CON_PELVIS, CON_BODY, COM_SWORD, COM_BLUNT, SKILL_A_GUARD, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD>÷<EFBFBD>
{ CON_HEAD, CON_PROTECT_A, CON_PELVIS, CON_BODY, COM_SWORD, COM_BLUNT, SKILL_A_ATTACK, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD>Ŀ
{ CON_HEAD, CON_PROTECT_A, CON_PELVIS, CON_BODY, COM_SWORD, COM_BLUNT, SKILL_A_GUN, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20>ų<EFBFBD>
{ DEX_HEAD, DEX_PROTECT_A, DEX_PELVIS, DEX_BODY, OPP_SYTHE, OPP_SLUSHER, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ DEX_HEAD, DEX_PROTECT_A, DEX_PELVIS, DEX_BODY, OPP_HAMMER, OPP_AXE, MAX_ITEM_TYPE, MAX_ITEM_TYPE, MAX_ITEM_TYPE }, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{ DEX_HEAD, DEX_PROTECT_A, DEX_PELVIS, DEX_BODY, OPP_TALON, OPP_SLUSHER, SKILL_A_KNIFE, MAX_ITEM_TYPE, MAX_ITEM_TYPE } // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
const unsigned char aryHumanEquipTypeList[HUMAN_EQUIP_TYPE_NUM] = {
CON_ARMOUR, CON_HELM, CON_GLOVE, CON_BOOTS,
DEX_ARMOUR, DEX_HELM, DEX_GLOVE, DEX_BOOTS,
ONEHANDED_SWORD, TWOHANDED_SWORD, ONEHANDED_AXE, TWOHANDED_AXE,
ONEHANDED_BLUNT, TWOHANDED_BLUNT, BOW, CROSSBOW,
STAFF, DAGGER, SHIELD
};
const unsigned char aryAkhanEquipTypeList[AKHAN_EQUIP_TYPE_NUM] = {
CON_BODY, CON_HEAD, CON_PELVIS, CON_PROTECT_A,
DEX_BODY, DEX_HEAD, DEX_PELVIS, DEX_PROTECT_A,
COM_BLUNT, COM_SWORD, OPP_HAMMER, OPP_AXE,
OPP_SLUSHER, OPP_TALON, OPP_SYTHE,
SKILL_A_GUARD, SKILL_A_ATTACK, SKILL_A_GUN, SKILL_A_KNIFE
};
class CAward : public CSingleton<CAward>
{
public:
unsigned long GetAward(unsigned char cItemKind, CMonster* lpDeadMonster, CCharacter* lpAttackCharacter,
Item::CItem** lpItem_Out);
unsigned short GetAwardEquipment(Item::EquipType::OptionType eOptionType,
unsigned char cDeadMonsterLevel, CCharacter* lpAttackCharacter, bool bQuestAward);
unsigned short GetQuestEquipmentClass(Item::EquipType::OptionType eOptionType, unsigned char cClass,
unsigned char cDeadMonsterLevel, CCharacter* lpAttackCharacter);
private:
unsigned long GetAwardCoin(unsigned char cDeadMonsterLevel, float cAddPer);
unsigned long GetAwardGem(unsigned char cDeadMonsterLevel);
unsigned long GetAwardMetal(unsigned char cDeadMonsterLevel);
unsigned long GetAwardPotion(unsigned char cDeadMonsterLevel);
unsigned long GetAwardSkill(unsigned char cDeadMonsterLevel, char cAttackCharacterNation);
unsigned long GetAwardCashItem(char cAttackCharacterNation, unsigned char cDeadMonsterLevel, unsigned int cDeadMonsterPattern);
unsigned long GetAwardLottery(void);
//--// start..
unsigned long GetAwardRing(unsigned char cLevel, unsigned char cGrade);
unsigned long GetAwardNecklace(unsigned char cLevel, unsigned char cGrade);
unsigned long GetAwardRune(unsigned char cLevel, unsigned char cGrade);
unsigned long GetAwardDestructionRune();
//--// end..
unsigned short SelectItemByRace(Item::EquipType::OptionType eOptionType,
const unsigned char* aryItemType, unsigned char cMaxItemType, unsigned char cLevel);
static CAward ms_this;
};
}
#endif