Çözüldü max level sınırı yükseltme source taraflı

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

SULEYMAN BOZOK

ANKA2 RINAMT2 PROJESINE HAKIM OLAN GELISTIRICI
Premium Üye
Yardımsever Üye
Usta Üye
Mesaj
1.188
Çözümler
73
Beğeni
1.552
Puan
1.359
Ticaret Puanı
0
merhaba arkadaşlar bazı konulara erişim sagladım bu konula ılgılı fakat yasadıgım sorunlar kodlamala alakalı oldugu ıcın buıld almaktan sorun yasıyordum temız source taraflı max level 65 250 ayarlıyacagım kodlama yokmu kımsede tab ayarlı yardımcı olursanız sevınırım tesekurler
 
Çözüm
constants.cpp:
Genişlet Daralt Kopyala
const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1]
const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]
const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ]
const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1]
const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1]


gereklı kodlamalar eksıklık nedenıyle tamamlanmıs olup max level 250 level ulaşılmıstır @Mavi Ruh guzel yorumlarınız ıcın tesekur ederım abi verdıgın kodlamaları ekleme yaparakta ıslem basarılı bır sekılde yapıldı bu tur sorunları yasıyan arkadaşlar olursa ustten ekledıgım kodları kontrol ederek ıslemlerı tamamlıyabılırler konu kapatılabılır tesekurler
constants.cpp dosyanı ilave et istersen bakalım
 
constants.cpp dosyanı ilave et istersen bakalım
Tmmdr abi ben atıyorum cunku kac konu baska forumlara baktım burda baktım dosyaları karsılastirdım 65-250 sourcelerle degisen olmadı kodlarıda detaylı baktım build hatası veriyor anlamadım cok sacma dahil ediyorum simdi
karsılastırdıgım dosya.cpp:
Genişlet Daralt Kopyala
#include "stdafx.h"
#include "char.h"
TJobInitialPoints JobInitialPoints[JOB_MAX_NUM] =
/*
   {
   int st, ht, dx, iq;
   int max_hp, max_sp;
   int hp_per_ht, sp_per_iq;
   int hp_per_lv_begin, hp_per_lv_end;
   int sp_per_lv_begin, sp_per_lv_end;
   int max_stamina;
   int stamina_per_con;
   int stamina_per_lv_begin, stamina_per_lv_end;
   }
 */
{
    // 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
    {   3,  4,  3,  6,  700,   200,     40,    20,    36, 44,     18, 22,     800,      5,      1, 3  }  // JOB_SHAMANa  16
};

const TMobRankStat MobRankStats[MOB_RANK_MAX_NUM] =
/*
   {
   int         iGoldPercent;
   }
 */
{
    {  20,  }, // MOB_RANK_PAWN,
    {  20,  }, // MOB_RANK_S_PAWN,
    {  25,  }, // MOB_RANK_KNIGHT,
    {  30,  }, // MOB_RANK_S_KNIGHT,
    {  50,  }, // MOB_RANK_BOSS,
    { 100,  }  // MOB_RANK_KING,
};

TBattleTypeStat BattleTypeStats[BATTLE_TYPE_MAX_NUM] =
/*
   {
   int         AttGradeBias;
   int         DefGradeBias;
   int         MagicAttGradeBias;
   int         MagicDefGradeBias;
   }
 */
{
    {      0,      0,      0,    -10    }, // BATTLE_TYPE_MELEE,
    {     10,    -20,    -10,    -15    }, // BATTLE_TYPE_RANGE,
    {     -5,     -5,     10,     10    }, // BATTLE_TYPE_MAGIC, 
    {      0,      0,      0,      0    }, // BATTLE_TYPE_SPECIAL,
    {     10,    -10,      0,    -15    }, // BATTLE_TYPE_POWER, 
    {    -10,     10,    -10,      0    }, // BATTLE_TYPE_TANKER,
    {     20,    -20,      0,    -10    }, // BATTLE_TYPE_SUPER_POWER,
    {    -20,     20,    -10,      0    }, // BATTLE_TYPE_SUPER_TANKER,
};

const DWORD * exp_table = NULL;

const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] =   
{
    0,            // 0

    100,
    150,
    260,
    380,
    600,

    1300,
    3300,
    5700,
    8700,
    12800,        // 10
    18000,
    25000,
    36000,
    52000,
    73000,
    100000,
    125000,
    160000,
    220000,
    280000,        // 20
    370000,
    540000,
    670000,
    880000,
    1000000,

    1237000,
    1418000,
    1624000,
    1857000,
    2122000,    // 30
    2421000,
    2761000,
    3145000,
    3580000,
    4073000,
    4632000,
    5194000,
    5717000,
    6264000,
    6837000,    // 40
    7600000,
    8274000,
    8990000,
    9753000,
    10560000,
    11410000,
    12320000,
    13270000,
    14280000,
    15340000,    // 50
    16870000,
    18960000,
    19980000,
    21420000,
    22930000,
    24530000,
    26200000,
    27960000,
    29800000,
    32780000,    // 60
    36060000,
    39670000,
    43640000,
    48000000,
    52800000,
    58080000,
    63890000,
    70280000,
    77310000,
    85040000,     // 70
    93540000,
    102900000,
    113200000,
    124500000,
    137000000,
    150700000,
    165700000,
    236990000,
    260650000,
    286780000,    // 80
    315380000,
    346970000,
    381680000,
    419770000,
    461760000,
    508040000,
    558740000,
    614640000,
    676130000,
    743730000,    // 90
    1041222000,
    1145344200,
    1259878620,
    1385866482,
    1524453130,
    1676898443,
    1844588288,
    2029047116,
    2100000000,    //    99        99레벨일 때 필요경험치 (100레벨이 되기 위한)
    2100000000,    //    100
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    105
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    110
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    115
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    120
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    125
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    130
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    135
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    140
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    145
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    150
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    155
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    160
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    165
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    170
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    175
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    180
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    185
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    190
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    195
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    200
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    205
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    210
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    215
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    220
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    225
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    230
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    235
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    240
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    245
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,       
    2100000000,    //    250
};

const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,    //    0
    300,       
    800,       
    1500,       
    2500,       
    4300,       
    7200,       
    11000,       
    17000,       
    24000,       
    33000,    //    10
    43000,       
    58000,       
    76000,       
    100000,       
    130000,       
    169000,       
    219000,       
    283000,       
    365000,       
    472000,    //    20
    610000,       
    705000,       
    813000,       
    937000,       
    1077000,       
    1237000,       
    1418000,       
    1624000,       
    1857000,       
    2122000,    //    30
    2421000,       
    2761000,       
    3145000,       
    3580000,       
    4073000,       
    4632000,       
    5194000,       
    5717000,       
    6264000,       
    6837000,    //    40
    7600000,       
    8274000,       
    8990000,       
    9753000,       
    10560000,       
    11410000,       
    12320000,       
    13270000,       
    14280000,       
    15340000,    //    50
    16870000,       
    18960000,       
    19980000,       
    21420000,       
    22930000,       
    24530000,       
    26200000,       
    27960000,       
    29800000,       
    32780000,    //    60
    36060000,       
    39670000,       
    43640000,       
    48000000,       
    52800000,       
    58080000,       
    63890000,       
    70280000,       
    77310000,       
    85040000,    //    70
    93540000,       
    102900000,       
    113200000,       
    124500000,       
    137000000,       
    150700000,       
    165700000,       
    236990000,       
    260650000,       
    286780000,    //    80
    315380000,       
    346970000,       
    381680000,       
    419770000,       
    461760000,       
    508040000,       
    558740000,       
    614640000,       
    676130000,       
    743730000,    //    90
    1041222000,       
    1145344200,       
    1259878620,       
    1385866482,       
    1524453130,       
    1676898443,       
    1844588288,       
    2029047116,       
    2050000000,    //    99레벨 일 때 필요경험치 (100레벨이 되기 위한)
    2150000000LL,    //    100
    2210000000LL,       
    2250000000LL,       
    2280000000LL,       
    2310000000LL,       
    2330000000LL,    //    105
    2350000000LL,       
    2370000000LL,       
    2390000000LL,       
    2400000000LL,       
    2410000000LL,    //    110
    2420000000LL,       
    2430000000LL,       
    2440000000LL,       
    2450000000LL,       
    2460000000LL,    //    115
    2470000000LL,       
    2480000000LL,       
    2490000000LL,       
    2490000000LL,       
    2500000000LL,    //    120
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    125
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    130
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    135
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    140
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    145
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    150
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    155
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    160
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    165
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    170
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    175
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    180
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    185
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    190
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    195
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    200
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    205
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    210
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    215
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    220
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    225
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    230
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    235
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    240
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    245
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    250
};

const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] =
{
    300,    // 0
    800,    // 1
    1500,
    2500,
    4300,
    7200,
    11400,
    17000,
    24000,
    33000,
    46000,    // 10
    62000,
    83000,
    111000,
    149000,
    200000,
    268000,
    360000,
    482000,
    647000,
    868000,    // 20
    996000,
    1143000,
    1312000,
    1506000,
    1729000,
    1984000,
    2277000,
    2614000,
    3000000,
    3443000,    // 30
    3952000,
    4536000,
    5206000,
    5975000,
    6858000,
    7730000,
    8504000,
    9307000,
    10140000,
    11330000,    // 40
    12320000,
    13370000,
    14490000,
    15670000,
    16920000,
    18240000,
    19630000,
    21090000,
    22630000,
    24670000,    // 50
    26890000,
    29310000,
    31950000,
    34820000,
    37960000,
    41370000,
    45100000,
    49160000,
    53580000,
    58400000,    // 60
    63660000,
    69390000,
    75630000,
    82440000,
    89860000,
    97950000,
    106760000,
    136370000,
    151800000,
    168300000,    // 70
    250000000,
    340000000,
    450000000,
    570000000,
    690000000,
    810000000,
    912600000,
    1004000000,
    1094000000,
    1182000000,    // 80
    1269000000,
    1354000000,
    1438000000,
    1521000000,
    1603000000,
    1684000000,
    1764000000,
    1844000000,
    1922000000,
    2000000000,    // 90
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,    //    99        99레벨일 때 필요경험치 (100레벨이 되기 위한).. 현재 CIBN이 어떻게 운영하고 있는 지 모르니 신규 테이블을 쓰지 않고 기존값 계속 연장 유지
    2000000000,    //    100
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    105
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    110
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    115
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    120
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    125
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    130
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    135
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    140
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    145
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    150
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    155
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    160
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    165
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    170
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    175
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    180
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    185
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    190
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    195
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    200
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    205
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    210
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    215
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    220
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    225
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    230
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    235
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    240
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    245
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,       
    2000000000,    //    250
};

const int * aiPercentByDeltaLev = NULL;
const int * aiPercentByDeltaLevForBoss = NULL;

// 적과 나와의 레벨차이에 의한 계산에 사용되는 테이블
// MIN(MAX_EXP_DELTA_OF_LEV - 1, (적렙 + 15) - 내렙))
const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] =
{
    1,      // -15  0
    3,          // -14  1
    5,          // -13  2
    7,          // -12  3
    15,         // -11  4
    30,         // -10  5
    60,         // -9   6
    90,         // -8   7
    91,         // -7   8
    92,         // -6   9
    93,         // -5   10
    94,         // -4   11
    95,         // -3   12
    97,         // -2   13
    99,         // -1   14
    100,        // 0    15
    105,        // 1    16
    110,        // 2    17
    115,        // 3    18
    120,        // 4    19
    125,        // 5    20
    130,        // 6    21
    135,        // 7    22
    140,        // 8    23
    145,        // 9    24
    150,        // 10   25
    155,        // 11   26
    160,        // 12   27
    165,        // 13   28
    170,        // 14   29
    180         // 15   30
};



const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV] =
{
    1,  //  -15 0
    5,  //  -14 1
    10, //  -13 2
    20, //  -12 3
    30, //  -11 4
    50, //  -10 5
    70, //  -9  6
    80, //  -8  7
    85, //  -7  8
    90, //  -6  9
    92, //  -5  10
    94, //  -4  11
    96, //  -3  12
    98, //  -2  13
    100,    //  -1  14
    100,    //  0   15
    105,    //  1   16
    110,    //  2   17
    115,    //  3   18
    120,    //  4   19
    125,    //  5   20
    130,    //  6   21
    135,    //  7   22
    140,    //  8   23
    145,    //  9   24
    150,    //  10  25
    155,    //  11  26
    160,    //  12  27
    165,    //  13  28
    170,    //  14  29
    180,    //  15  30
};

const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1] =
{
    0,
    10,        10,        10,        10,        15,        15,        20,        25,        30,        40,        // 1 - 10
    50,        60,        80,        100,    120,    140,    160,    184,    210,    240,    // 11 - 20
    270,    300,    330,    360,    390,    420,    450,    480,    510,    550,    // 21 - 30
    600,    640,    700,    760,    820,    880,    940,    1000,    1100,    1180,    // 31 - 40
    1260,    1320,    1380,    1440,    1500,    1560,    1620,    1680,    1740,    1800,    // 41 - 50
    1860,    1920,    2000,    2100,    2200,    2300,    2450,    2600,    2750,    2900,    // 51 - 60
    3050,    3200,    3350,    3500,    3650,    3800,    3950,    4100,    4250,    4400,    // 61 - 70
    4600,    4800,    5000,    5200,    5400,    5600,    5800,    6000,    6200,    6400,    // 71 - 80
    6600,    6900,    7100,    7300,    7600,    7800,    8000,    8300,    8500,    8800,    // 81 - 90
    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    // 91 - 100
    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    // 101 - 110
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 111 - 120
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 121 - 130
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 131 - 140
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 141 - 150
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 151 - 160
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 161 - 170
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 171 - 180
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 181 - 190
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 191 - 200
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 201 - 210
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 211 - 220
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 221 - 230
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 231 - 240
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 241 - 250
};

Coord aArroundCoords[ARROUND_COORD_MAX_NUM] =
{
    {         0,          0        },
    {        0,      50     },
    {       35,     35      },
    {       50,     -0      },
    {       35,     -35     },
    {       0,      -50     },
    {       -35,    -35     },
    {       -50,    0       },
    {       -35,    35      },
    {       0,      100     },
    {       71,     71      },
    {       100,    -0      },
    {       71,     -71     },
    {       0,      -100    },
    {       -71,    -71     },
    {       -100,   0       },
    {       -71,    71      },
    {       0,      150     },
    {       106,    106     },
    {       150,    -0      },
    {       106,    -106    },
    {       0,      -150    },
    {       -106,   -106    },
    {       -150,   0       },
    {       -106,   106     },
    {       0,      200     },
    {       141,    141     },
    {       200,    -0      },
    {       141,    -141    },
    {       0,      -200    },
    {       -141,   -141    },
    {       -200,   0       },
    {       -141,   141     },
    {       0,      250     },
    {       177,    177     },
    {       250,    -0      },
    {       177,    -177    },
    {       0,      -250    },
    {       -177,   -177    },
    {       -250,   0       },
    {       -177,   177     },
    {       0,      300     },
    {       212,    212     },
    {       300,    -0      },
    {       212,    -212    },
    {       0,      -300    },
    {       -212,   -212    },
    {       -300,   0       },
    {       -212,   212     },
    {       0,      350     },
    {       247,    247     },
    {       350,    -0      },
    {       247,    -247    },
    {       0,      -350    },
    {       -247,   -247    },
    {       -350,   0       },
    {       -247,   247     },
    {       0,      400     },
    {       283,    283     },
    {       400,    -0      },
    {       283,    -283    },
    {       0,      -400    },
    {       -283,   -283    },
    {       -400,   0       },
    {       -283,   283     },
    {       0,      450     },
    {       318,    318     },
    {       450,    -0      },
    {       318,    -318    },
    {       0,      -450    },
    {       -318,   -318    },
    {       -450,   0       },
    {       -318,   318     },
    {       0,      500     },
    {       354,    354     },
    {       500,    -0      },
    {       354,    -354    },
    {       0,      -500    },
    {       -354,   -354    },
    {       -500,   0       },
    {       -354,   354     },
    {       0,      550     },
    {       389,    389     },
    {       550,    -0      },
    {       389,    -389    },
    {       0,      -550    },
    {       -389,   -389    },
    {       -550,   0       },
    {       -389,   389     },
    {       0,      600     },
    {       424,    424     },
    {       600,    -0      },
    {       424,    -424    },
    {       0,      -600    },
    {       -424,   -424    },
    {       -600,   0       },
    {       -424,   424     },
    {       0,      650     },
    {       460,    460     },
    {       650,    -0      },
    {       460,    -460    },
    {       0,      -650    },
    {       -460,   -460    },
    {       -650,   0       },
    {       -460,   460     },
    {       0,      700     },
    {       495,    495     },
    {       700,    -0      },
    {       495,    -495    },
    {       0,      -700    },
    {       -495,   -495    },
    {       -700,   0       },
    {       -495,   495     },
    {       0,      750     },
    {       530,    530     },
    {       750,    -0      },
    {       530,    -530    },
    {       0,      -750    },
    {       -530,   -530    },
    {       -750,   0       },
    {       -530,   530     },
    {       0,      800     },
    {       566,    566     },
    {       800,    -0      },
    {       566,    -566    },
    {       0,      -800    },
    {       -566,   -566    },
    {       -800,   0       },
    {       -566,   566     },
    {       0,      850     },
    {       601,    601     },
    {       850,    -0      },
    {       601,    -601    },
    {       0,      -850    },
    {       -601,   -601    },
    {       -850,   0       },
    {       -601,   601     },
    {       0,      900     },
    {       636,    636     },
    {       900,    -0      },
    {       636,    -636    },
    {       0,      -900    },
    {       -636,   -636    },
    {       -900,   0       },
    {       -636,   636     },
    {       0,      950     },
    {       672,    672     },
    {       950,    -0      },
    {       672,    -672    },
    {       0,      -950    },
    {       -672,   -672    },
    {       -950,   0       },
    {       -672,   672     },
    {       0,      1000    },
    {       707,    707     },
    {       1000,   -0      },
    {       707,    -707    },
    {       0,      -1000   },
    {       -707,   -707    },
    {       -1000,  0       },
    {       -707,   707     },
};

const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] =
{
    0,
    15000UL,
    45000UL,
    90000UL,
    160000UL,
    235000UL,
    325000UL,
    430000UL,
    550000UL,
    685000UL,
    835000UL,
    1000000UL,
    1500000UL,
    2100000UL,
    2800000UL,
    3600000UL,
    4500000UL,
    6500000UL,
    8000000UL,
    10000000UL,
    42000000UL
};

// INTERNATIONAL_VERSION 길드경험치
const DWORD guild_exp_table2[GUILD_MAX_LEVEL+1] =
{
    0,   
    6000UL,
    18000UL,
    36000UL,
    64000UL,
    94000UL,
    130000UL,
    172000UL,
    220000UL,
    274000UL,
    334000UL,
    400000UL,
    600000UL,
    840000UL,
    1120000UL,
    1440000UL,
    1800000UL,
    2600000UL,
    3200000UL,
    4000000UL,
    16800000UL
};
// END_OF_INTERNATIONAL_VERSION 길드경험치

const int aiMobEnchantApplyIdx[MOB_ENCHANTS_MAX_NUM] =
{
    APPLY_CURSE_PCT,
    APPLY_SLOW_PCT,
    APPLY_POISON_PCT,
    APPLY_STUN_PCT,
    APPLY_CRITICAL_PCT,
    APPLY_PENETRATE_PCT,
};

const int aiMobResistsApplyIdx[MOB_RESISTS_MAX_NUM] =
{
    APPLY_RESIST_SWORD,
    APPLY_RESIST_TWOHAND,
    APPLY_RESIST_DAGGER,
    APPLY_RESIST_BELL,
    APPLY_RESIST_FAN,
    APPLY_RESIST_BOW,
    APPLY_RESIST_FIRE,
    APPLY_RESIST_ELEC,
    APPLY_RESIST_MAGIC,
    APPLY_RESIST_WIND,
    APPLY_POISON_REDUCE,
};

const int aiSocketPercentByQty[5][4] =
{
    {  0,  0,  0,  0 },
    {  3,  0,  0,  0 },
    { 10,  1,  0,  0 },
    { 15, 10,  1,  0 },
    { 20, 15, 10,  1 }
};

const int aiWeaponSocketQty[WEAPON_NUM_TYPES] =
{
    6, // WEAPON_SWORD,
    6, // WEAPON_DAGGER,
    6, // WEAPON_BOW,
    6, // WEAPON_TWO_HANDED,
    6, // WEAPON_BELL,
    6, // WEAPON_FAN,
    0, // WEAPON_ARROW,
#ifdef __NEW_ARROW_SYSTEM__
    0, // WEAPON_UNLIMITED_ARROW
#endif
    0, // WEAPON_MOUNT_SPEAR
};

const int aiArmorSocketQty[ARMOR_NUM_TYPES] =
{
    6, // ARMOR_BODY,
    1, // ARMOR_HEAD,
    1, // ARMOR_SHIELD,
    0, // ARMOR_WRIST,
    0, // ARMOR_FOOTS,
    0  // ARMOR_ACCESSORY
};

TItemAttrMap g_map_itemAttr;
TItemAttrMap g_map_itemRare;

const TApplyInfo aApplyInfo[MAX_APPLY_NUM] =
/*
{
   DWORD dwPointType;
}
 */
{
    // Point Type
    { POINT_NONE,            },   // APPLY_NONE,        0
    { POINT_MAX_HP,                },   // APPLY_MAX_HP,        1
    { POINT_MAX_SP,                },   // APPLY_MAX_SP,        2
    { POINT_HT,                    },   // APPLY_CON,        3
    { POINT_IQ,                    },   // APPLY_INT,        4
    { POINT_ST,                    },   // APPLY_STR,        5
    { POINT_DX,                    },   // APPLY_DEX,        6
    { POINT_ATT_SPEED,                },   // APPLY_ATT_SPEED,    7
    { POINT_MOV_SPEED,                },   // APPLY_MOV_SPEED,    8
    { POINT_CASTING_SPEED,            },   // APPLY_CAST_SPEED,    9
    { POINT_HP_REGEN,            },   // APPLY_HP_REGEN,        10
    { POINT_SP_REGEN,            },   // APPLY_SP_REGEN,        11
    { POINT_POISON_PCT,                },   // APPLY_POISON_PCT,    12
    { POINT_STUN_PCT,                },   // APPLY_STUN_PCT,        13
    { POINT_SLOW_PCT,                },   // APPLY_SLOW_PCT,        14
    { POINT_CRITICAL_PCT,        },   // APPLY_CRITICAL_PCT,    15
    { POINT_PENETRATE_PCT,            },   // APPLY_PENETRATE_PCT,    16
    { POINT_ATTBONUS_HUMAN,            },   // APPLY_ATTBONUS_HUMAN,    17
    { POINT_ATTBONUS_ANIMAL,            },   // APPLY_ATTBONUS_ANIMAL,    18
    { POINT_ATTBONUS_ORC,        },   // APPLY_ATTBONUS_ORC,    19
    { POINT_ATTBONUS_MILGYO,            },   // APPLY_ATTBONUS_MILGYO,    20
    { POINT_ATTBONUS_UNDEAD,            },   // APPLY_ATTBONUS_UNDEAD,    21
    { POINT_ATTBONUS_DEVIL,            },   // APPLY_ATTBONUS_DEVIL,    22
    { POINT_STEAL_HP,                },   // APPLY_STEAL_HP,        23
    { POINT_STEAL_SP,                },   // APPLY_STEAL_SP,        24
    { POINT_MANA_BURN_PCT,            },   // APPLY_MANA_BURN_PCT,    25
    { POINT_DAMAGE_SP_RECOVER,            },   // APPLY_DAMAGE_SP_RECOVER,26
    { POINT_BLOCK,                },   // APPLY_BLOCK,        27
    { POINT_DODGE,                },   // APPLY_DODGE,        28
    { POINT_RESIST_SWORD,        },   // APPLY_RESIST_SWORD,    29
    { POINT_RESIST_TWOHAND,            },   // APPLY_RESIST_TWOHAND,    30
    { POINT_RESIST_DAGGER,            },   // APPLY_RESIST_DAGGER,    31
    { POINT_RESIST_BELL,        },   // APPLY_RESIST_BELL,    32
    { POINT_RESIST_FAN,                },   // APPLY_RESIST_FAN,    33
    { POINT_RESIST_BOW,                },   // APPLY_RESIST_BOW,    34
    { POINT_RESIST_FIRE,        },   // APPLY_RESIST_FIRE,    35
    { POINT_RESIST_ELEC,        },   // APPLY_RESIST_ELEC,    36
    { POINT_RESIST_MAGIC,        },   // APPLY_RESIST_MAGIC,    37
    { POINT_RESIST_WIND,        },   // APPLY_RESIST_WIND,    38
    { POINT_REFLECT_MELEE,            },   // APPLY_REFLECT_MELEE,    39
    { POINT_REFLECT_CURSE,            },   // APPLY_REFLECT_CURSE,    40
    { POINT_POISON_REDUCE,            },   // APPLY_POISON_REDUCE,    41
    { POINT_KILL_SP_RECOVER,            },   // APPLY_KILL_SP_RECOVER,    42
    { POINT_EXP_DOUBLE_BONUS,            },   // APPLY_EXP_DOUBLE_BONUS,    43
    { POINT_GOLD_DOUBLE_BONUS,            },   // APPLY_GOLD_DOUBLE_BONUS,44
    { POINT_ITEM_DROP_BONUS,            },   // APPLY_ITEM_DROP_BONUS,    45
    { POINT_POTION_BONUS,        },   // APPLY_POTION_BONUS,    46
    { POINT_KILL_HP_RECOVERY,            },   // APPLY_KILL_HP_RECOVER,    47
    { POINT_IMMUNE_STUN,        },   // APPLY_IMMUNE_STUN,    48
    { POINT_IMMUNE_SLOW,        },   // APPLY_IMMUNE_SLOW,    49
    { POINT_IMMUNE_FALL,        },   // APPLY_IMMUNE_FALL,    50
    { POINT_NONE,            },   // APPLY_SKILL,        51
    { POINT_BOW_DISTANCE,        },   // APPLY_BOW_DISTANCE,    52
    { POINT_ATT_GRADE_BONUS,            },   // APPLY_ATT_GRADE,    53
    { POINT_DEF_GRADE_BONUS,            },   // APPLY_DEF_GRADE,    54
    { POINT_MAGIC_ATT_GRADE_BONUS,      },   // APPLY_MAGIC_ATT_GRADE,    55
    { POINT_MAGIC_DEF_GRADE_BONUS,      },   // APPLY_MAGIC_DEF_GRADE,    56
    { POINT_CURSE_PCT,            },   // APPLY_CURSE_PCT,    57
    { POINT_MAX_STAMINA            },   // APPLY_MAX_STAMINA    58
    { POINT_ATTBONUS_WARRIOR        },   // APPLY_ATTBONUS_WARRIOR  59
    { POINT_ATTBONUS_ASSASSIN        },   // APPLY_ATTBONUS_ASSASSIN 60
    { POINT_ATTBONUS_SURA        },   // APPLY_ATTBONUS_SURA     61
    { POINT_ATTBONUS_SHAMAN        },   // APPLY_ATTBONUS_SHAMAN   62
    { POINT_ATTBONUS_MONSTER        },   //    APPLY_ATTBONUS_MONSTER  63
    { POINT_ATT_BONUS        },   // 64 // APPLY_MALL_ATTBONUS
    { POINT_MALL_DEFBONUS        },   // 65
    { POINT_MALL_EXPBONUS        },   // 66 APPLY_MALL_EXPBONUS
    { POINT_MALL_ITEMBONUS        },   // 67
    { POINT_MALL_GOLDBONUS        },   // 68
    { POINT_MAX_HP_PCT            },        // 69
    { POINT_MAX_SP_PCT            },        // 70
    { POINT_SKILL_DAMAGE_BONUS        },    // 71
    { POINT_NORMAL_HIT_DAMAGE_BONUS    },    // 72

    // DEFEND_BONUS_ATTRIBUTES
    { POINT_SKILL_DEFEND_BONUS        },    // 73
    { POINT_NORMAL_HIT_DEFEND_BONUS    },    // 74
    // END_OF_DEFEND_BONUS_ATTRIBUTES

    // PC_BANG_ITEM_ADD
    { POINT_PC_BANG_EXP_BONUS    },        // 75
    { POINT_PC_BANG_DROP_BONUS    },        // 76
    // END_PC_BANG_ITEM_ADD

    { 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_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
    { POINT_RESIST_DARK,        },   // APPLY_RESIST_DARK,    89
    { POINT_RESIST_CRITICAL,        },   // APPLY_ANTI_CRITICAL_PCT,    90
    { POINT_RESIST_PENETRATE,        },   // APPLY_ANTI_PENETRATE_PCT,    91
};

const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
    //25, 25, 40, 8, 2,
    30, 40, 20, 8, 2
};

const int aiItemMagicAttributePercentLow[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
    //45, 25, 20, 10, 0,
    50, 40, 10, 0, 0
};

// ADD_ITEM_ATTRIBUTE
const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM] =
{
    100, 80, 60, 50, 30, 0, 0,
};
// END_OF_ADD_ITEM_ATTRIBUTE

const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 4, // 1 - 10
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, // 11 - 20
    4, 4, 4, 4, 4, 4, 4, 3, 3, 3, // 21 - 30
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 31 - 40
    3, 3, 3, 3, 2, 2, 2, 2, 2, 2, // 41 - 50
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 51 - 60
    2, 2, 1, 1, 1, 1, 1, 1, 1, 1, // 61 - 70
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 71 - 80
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 81 - 90
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 91 - 100
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 101 - 110
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111 - 120
};

const int aiSkillBookCountForLevelUp[10] =
{
    3, 3, 3, 3, 3, 4, 4, 5, 5, 6
};

// ADD_GRANDMASTER_SKILL
const int aiGrandMasterSkillBookCountForLevelUp[10] =
{
    3, 3, 5, 5, 7, 7, 10, 10, 10, 20,
};

const int aiGrandMasterSkillBookMinCount[10] =
{
//    1, 1, 3, 5, 10, 15, 20, 30, 40, 50,
//    3, 3, 5, 5, 10, 10, 15, 15, 20, 30
    1, 1, 1, 2,  2,  3,  3,  4,  5,  6
};

const int aiGrandMasterSkillBookMaxCount[10] =
{
//    6, 15, 30, 45, 60, 80, 100, 120, 160, 200,
//    6, 10, 15, 20, 30, 40, 50, 60, 70, 80
    5,  7,  9, 11, 13, 15, 20, 25, 30, 35
};
// END_OF_ADD_GRANDMASTER_SKILL

const int CHN_aiPartyBonusExpPercentByMemberCount[9] =
{
    0, 0, 12, 18, 26, 40, 53, 70, 100
};


// UPGRADE_PARTY_BONUS
const int KOR_aiPartyBonusExpPercentByMemberCount[9] =
{
    0,
    0,
    30, // 66% * 2 - 100 
    60, // 53% * 3 - 100
    75, // 44% * 4 - 100
    90, // 38% * 5 - 100
    105, // 34% * 6 - 100
    110, // 30% * 7 - 100
    140, // 30% * 8 - 100
};

const int KOR_aiUniqueItemPartyBonusExpPercentByMemberCount[9] =
{
    0,
    0,
    15*2,
    14*3,
    13*4,
    12*5,
    11*6,
    10*7,
    10*8,
};
// END_OF_UPGRADE_PARTY_BONUS

const int * aiChainLightningCountBySkillLevel = NULL;

const int aiChainLightningCountBySkillLevel_euckr[SKILL_MAX_LEVEL+1] =
{
    0,    // 0
    2,    // 1
    2,    // 2
    2,    // 3
    2,    // 4
    2,    // 5
    2,    // 6
    2,    // 7
    2,    // 8
    3,    // 9
    3,    // 10
    3,    // 11
    3,    // 12
    3,    // 13
    3,    // 14
    3,    // 15
    3,    // 16
    3,    // 17
    3,    // 18
    4,    // 19
    4,    // 20
    4,    // 21
    4,    // 22
    4,    // 23
    5,    // 24
    5,    // 25
    5,    // 26
    5,    // 27
    5,    // 28
    5,    // 29
    5,    // 30
    5,    // 31
    5,    // 32
    5,    // 33
    5,    // 34
    5,    // 35
    5,    // 36
    5,    // 37
    5,    // 38
    5,    // 39
    5,    // 40
};

const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    60,    {30,    30,    30,    9,    1}    },
    {8006,    60,    {28,    29,    31,    11,    1}    },
    {8007,    60,    {24,    29,    32,    13,    2}    },
    {8008,    60,    {22,    28,    33,    15,    2}    },
    {8009,    60,    {21,    27,    33,    17,    2}    },
    {8010,    60,    {18,    26,    34,    20,    2}    },
    {8011,    60,    {14,    26,    35,    22,    3}    },
    {8012,    60,    {10,    26,    37,    24,    3}    },
    {8013,    60,    {2,    26,    40,    29,    3}    },
    {8014,    60,    {0,    26,    41,    30,    3}    },
};

const char * c_apszEmpireNames[EMPIRE_MAX_NUM] =
{
    "전제국",
    "신수국",
    "천조국",
    "진노국"
};

const char * c_apszPrivNames[MAX_PRIV_NUM] =
{
    "",
    "아이템이 나올 확률",
    "돈이 나올 확률",
    "돈 대박이 나올 확률",
    "경험치 배율",
};

const int aiPolymorphPowerByLevel[SKILL_MAX_LEVEL + 1] =
{
    10,   // 1
    11,   // 2
    11,   // 3
    12,   // 4
    13,   // 5
    13,   // 6
    14,   // 7
    15,   // 8
    16,   // 9
    17,   // 10
    18,   // 11
    19,   // 12
    20,   // 13
    22,   // 14
    23,   // 15
    24,   // 16
    26,   // 17
    27,   // 18
    29,   // 19
    31,   // 20
    33,   // 21
    35,   // 22
    37,   // 23
    39,   // 24
    41,   // 25
    44,   // 26
    46,   // 27
    49,   // 28
    52,   // 29
    55,   // 30
    59,   // 31
    62,   // 32
    66,   // 33
    70,   // 34
    74,   // 35
    79,   // 36
    84,   // 37
    89,   // 38
    94,   // 39
    100,  // 40
};

TGuildWarInfo KOR_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
/*
   {
   long lMapIndex;
   int iWarPrice;
   int iWinnerPotionRewardPctToWinner;
   int iLoserPotionRewardPctToWinner;
   int iInitialScore;
   int iEndScore;
   };
 */
{
    { 0,        0,      0,      0,      0,      0       },
    { 110,      0,      100,    50,     0,      100     },
    { 111,      0,      100,    50,     0,      10      },
};

//
// 악세서리 소켓용 수치들
//

// 다이아몬드로 소켓을 추가할 때 확률
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
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
};
// END_OF_ACCESSORY_REFINE

#include "../../common/length.h"
// from import_item_proto.c
typedef struct SValueName
{
    const char *    c_pszName;
    long        lValue;
} TValueName;

TValueName c_aApplyTypeNames[] =
{
    { "STR",        APPLY_STR        },
    { "DEX",        APPLY_DEX        },
    { "CON",        APPLY_CON        },
    { "INT",        APPLY_INT        },
    { "MAX_HP",        APPLY_MAX_HP        },
    { "MAX_SP",        APPLY_MAX_SP        },
    { "MAX_STAMINA",    APPLY_MAX_STAMINA    },
    { "POISON_REDUCE",    APPLY_POISON_REDUCE    },
    { "EXP_DOUBLE_BONUS", APPLY_EXP_DOUBLE_BONUS },
    { "GOLD_DOUBLE_BONUS", APPLY_GOLD_DOUBLE_BONUS },
    { "ITEM_DROP_BONUS", APPLY_ITEM_DROP_BONUS    },
    { "HP_REGEN",    APPLY_HP_REGEN        },
    { "SP_REGEN",    APPLY_SP_REGEN        },
    { "ATTACK_SPEED",    APPLY_ATT_SPEED        },
    { "MOVE_SPEED",    APPLY_MOV_SPEED        },
    { "CAST_SPEED",    APPLY_CAST_SPEED    },
    { "ATT_BONUS",    APPLY_ATT_GRADE_BONUS    },
    { "DEF_BONUS",    APPLY_DEF_GRADE_BONUS    },
    { "MAGIC_ATT_GRADE",APPLY_MAGIC_ATT_GRADE    },
    { "MAGIC_DEF_GRADE",APPLY_MAGIC_DEF_GRADE    },
    { "SKILL",        APPLY_SKILL        },
    { "ATTBONUS_ANIMAL",APPLY_ATTBONUS_ANIMAL    },
    { "ATTBONUS_UNDEAD",APPLY_ATTBONUS_UNDEAD    },
    { "ATTBONUS_DEVIL", APPLY_ATTBONUS_DEVIL    },
    { "ATTBONUS_HUMAN", APPLY_ATTBONUS_HUMAN    },
    { "ADD_BOW_DISTANCE",APPLY_BOW_DISTANCE    },
    { "DODGE",        APPLY_DODGE        },
    { "BLOCK",        APPLY_BLOCK        },
    { "RESIST_SWORD",    APPLY_RESIST_SWORD    },
    { "RESIST_TWOHAND",    APPLY_RESIST_TWOHAND    },
    { "RESIST_DAGGER",    APPLY_RESIST_DAGGER    },
    { "RESIST_BELL",    APPLY_RESIST_BELL    },
    { "RESIST_FAN",    APPLY_RESIST_FAN    },
    { "RESIST_BOW",    APPLY_RESIST_BOW    },
    { "RESIST_FIRE",    APPLY_RESIST_FIRE    },
    { "RESIST_ELEC",    APPLY_RESIST_ELEC    },
    { "RESIST_MAGIC",    APPLY_RESIST_MAGIC    },
    { "RESIST_WIND",    APPLY_RESIST_WIND    },
    { "REFLECT_MELEE",    APPLY_REFLECT_MELEE },
    { "REFLECT_CURSE",    APPLY_REFLECT_CURSE },
    { "RESIST_ICE",        APPLY_RESIST_ICE    },
    { "RESIST_EARTH",    APPLY_RESIST_EARTH    },
    { "RESIST_DARK",    APPLY_RESIST_DARK    },
    { "RESIST_CRITICAL",    APPLY_ANTI_CRITICAL_PCT    },
    { "RESIST_PENETRATE",    APPLY_ANTI_PENETRATE_PCT    },
    { "POISON",        APPLY_POISON_PCT    },
    { "SLOW",        APPLY_SLOW_PCT        },
    { "STUN",        APPLY_STUN_PCT        },
    { "STEAL_HP",    APPLY_STEAL_HP        },
    { "STEAL_SP",    APPLY_STEAL_SP        },
    { "MANA_BURN_PCT",    APPLY_MANA_BURN_PCT    },
    { "CRITICAL",    APPLY_CRITICAL_PCT    },
    { "PENETRATE",    APPLY_PENETRATE_PCT    },
    { "KILL_SP_RECOVER",APPLY_KILL_SP_RECOVER    },
    { "KILL_HP_RECOVER",APPLY_KILL_HP_RECOVER    },
    { "PENETRATE_PCT",    APPLY_PENETRATE_PCT    },
    { "CRITICAL_PCT",    APPLY_CRITICAL_PCT    },
    { "POISON_PCT",    APPLY_POISON_PCT    },
    { "STUN_PCT",    APPLY_STUN_PCT        },
    { "ATT_BONUS_TO_WARRIOR",    APPLY_ATTBONUS_WARRIOR  },
    { "ATT_BONUS_TO_ASSASSIN",    APPLY_ATTBONUS_ASSASSIN },
    { "ATT_BONUS_TO_SURA",    APPLY_ATTBONUS_SURA        },
    { "ATT_BONUS_TO_SHAMAN",    APPLY_ATTBONUS_SHAMAN   },
    { "ATT_BONUS_TO_MONSTER",    APPLY_ATTBONUS_MONSTER  },
    { "ATT_BONUS_TO_MOB",    APPLY_ATTBONUS_MONSTER  },
    { "MALL_ATTBONUS",    APPLY_MALL_ATTBONUS    },
    { "MALL_EXPBONUS",    APPLY_MALL_EXPBONUS    },
    { "MALL_DEFBONUS",    APPLY_MALL_DEFBONUS    }, 
    { "MALL_ITEMBONUS",    APPLY_MALL_ITEMBONUS    },
    { "MALL_GOLDBONUS", APPLY_MALL_GOLDBONUS    },
    { "MAX_HP_PCT",    APPLY_MAX_HP_PCT    },
    { "MAX_SP_PCT",    APPLY_MAX_SP_PCT    },
    { "SKILL_DAMAGE_BONUS",    APPLY_SKILL_DAMAGE_BONUS    },
    { "NORMAL_HIT_DAMAGE_BONUS",APPLY_NORMAL_HIT_DAMAGE_BONUS    },
    { "SKILL_DEFEND_BONUS",    APPLY_SKILL_DEFEND_BONUS    },
    { "NORMAL_HIT_DEFEND_BONUS",APPLY_NORMAL_HIT_DEFEND_BONUS    },
    { "PCBANG_EXP_BONUS", APPLY_PC_BANG_EXP_BONUS    },
    { "PCBANG_DROP_BONUS", APPLY_PC_BANG_DROP_BONUS    },

    { "RESIST_WARRIOR",    APPLY_RESIST_WARRIOR},
    { "RESIST_ASSASSIN",    APPLY_RESIST_ASSASSIN},
    { "RESIST_SURA",        APPLY_RESIST_SURA},
    { "RESIST_SHAMAN",    APPLY_RESIST_SHAMAN},
    // by mhh game/affect.h 정의되어있음. INFINITE_AFFECT_DURATION = 0x1FFFFFFF
    { "INFINITE_AFFECT_DURATION", 0x1FFFFFFF    },
    { "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    },
    
    { NULL,        0            }
};
// from import_item_proto.c

long FN_get_apply_type(const char *apply_type_string)
{
    TValueName    *value_name;
    for (value_name = c_aApplyTypeNames; value_name->c_pszName; ++value_name)
    {
        if (0==strcasecmp(value_name->c_pszName, apply_type_string))
            return value_name->lValue;
    }
    return 0;
}
 
Son düzenleme:
constants.cpp:
Genişlet Daralt Kopyala
#include "stdafx.h"
#include "char.h"
TJobInitialPoints JobInitialPoints[JOB_MAX_NUM] =
    /*
       {
       int st, ht, dx, iq;
       int max_hp, max_sp;
       int hp_per_ht, sp_per_iq;
       int hp_per_lv_begin, hp_per_lv_end;
       int sp_per_lv_begin, sp_per_lv_end;
       int max_stamina;
       int stamina_per_con;
       int stamina_per_lv_begin, stamina_per_lv_end;
       }
     */
{
    // 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
    {   3,  4,  3,  6,  700,   200,     40,    20,    36, 44,     18, 22,     800,      5,      1, 3  }  // JOB_SHAMANa  16
};

const TMobRankStat MobRankStats[MOB_RANK_MAX_NUM] =
    /*
       {
       int         iGoldPercent;
       }
     */
{
    {  20,  }, // MOB_RANK_PAWN,
    {  20,  }, // MOB_RANK_S_PAWN,
    {  25,  }, // MOB_RANK_KNIGHT,
    {  30,  }, // MOB_RANK_S_KNIGHT,
    {  50,  }, // MOB_RANK_BOSS,
    { 100,  }  // MOB_RANK_KING,
};

TBattleTypeStat BattleTypeStats[BATTLE_TYPE_MAX_NUM] =
    /*
       {
       int         AttGradeBias;
       int         DefGradeBias;
       int         MagicAttGradeBias;
       int         MagicDefGradeBias;
       }
     */
{
    {      0,      0,      0,    -10    }, // BATTLE_TYPE_MELEE,
    {     10,    -20,    -10,    -15    }, // BATTLE_TYPE_RANGE,
    {     -5,     -5,     10,     10    }, // BATTLE_TYPE_MAGIC,
    {      0,      0,      0,      0    }, // BATTLE_TYPE_SPECIAL,
    {     10,    -10,      0,    -15    }, // BATTLE_TYPE_POWER,
    {    -10,     10,    -10,      0    }, // BATTLE_TYPE_TANKER,
    {     20,    -20,      0,    -10    }, // BATTLE_TYPE_SUPER_POWER,
    {    -20,     20,    -10,      0    }, // BATTLE_TYPE_SUPER_TANKER,
};

const DWORD* exp_table = NULL;

const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] =  
{
    0,            // 0

    100,
    150,
    260,
    380,
    600,
    1300,
    3300,
    5700,
    8700,
    12800,        // 10
    18000,
    25000,
    36000,
    52000,
    73000,
    100000,
    125000,
    160000,
    220000,
    280000,        // 20
    370000,
    540000,
    670000,
    880000,
    1000000,
    1237000,
    1418000,
    1624000,
    1857000,
    2122000,    // 30
    2421000,
    2761000,
    3145000,
    3580000,
    4073000,
    4632000,
    5194000,
    5717000,
    6264000,
    6837000,    // 40
    7600000,
    8274000,
    8990000,
    9753000,
    10560000,
    11410000,
    12320000,
    13270000,
    14280000,
    15340000,    // 50
    16870000,
    18960000,
    19980000,
    21420000,
    22930000,
    24530000,
    26200000,
    27960000,
    29800000,
    32780000,    // 60
    36060000,
    39670000,
    43640000,
    48000000,
    52800000,
    58080000,
    63890000,
    70280000,
    77310000,
    85040000,     // 70
    93540000,
    102900000,
    113200000,
    124500000,
    137000000,
    150700000,
    165700000,
    236990000,
    260650000,
    286780000,    // 80
    315380000,
    346970000,
    381680000,
    419770000,
    461760000,
    508040000,
    558740000,
    614640000,
    676130000,
    743730000,    // 90
    1041222000,
    1145344200,
    1259878620,
    1385866482,
    1524453130,
    1676898443,
    1844588288,
    2029047116,
    2100000000,    //    99        99레벨일 때 필요경험치 (100레벨이 되기 위한)
    2100000000,    //    100
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    105
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    110
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    115
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    120
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    125
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    130
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    135
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    140
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    145
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    150
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    155
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    160
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    165
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    170
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    175
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    180
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    185
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    190
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    195
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    200
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    205
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    210
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    215
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    220
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    225
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    230
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    235
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    240
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    245
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,      
    2100000000,    //    250
};

const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,    //    0
    300,      
    800,      
    1500,      
    2500,      
    4300,      
    7200,      
    11000,      
    17000,      
    24000,      
    33000,    //    10
    43000,      
    58000,      
    76000,      
    100000,      
    130000,      
    169000,      
    219000,      
    283000,      
    365000,      
    472000,    //    20
    610000,      
    705000,      
    813000,      
    937000,      
    1077000,      
    1237000,      
    1418000,      
    1624000,      
    1857000,      
    2122000,    //    30
    2421000,      
    2761000,      
    3145000,      
    3580000,      
    4073000,      
    4632000,      
    5194000,      
    5717000,      
    6264000,      
    6837000,    //    40
    7600000,      
    8274000,      
    8990000,      
    9753000,      
    10560000,      
    11410000,      
    12320000,      
    13270000,      
    14280000,      
    15340000,    //    50
    16870000,      
    18960000,      
    19980000,      
    21420000,      
    22930000,      
    24530000,      
    26200000,      
    27960000,      
    29800000,      
    32780000,    //    60
    36060000,      
    39670000,      
    43640000,      
    48000000,      
    52800000,      
    58080000,      
    63890000,      
    70280000,      
    77310000,      
    85040000,    //    70
    93540000,      
    102900000,      
    113200000,      
    124500000,      
    137000000,      
    150700000,      
    165700000,      
    236990000,      
    260650000,      
    286780000,    //    80
    315380000,      
    346970000,      
    381680000,      
    419770000,      
    461760000,      
    508040000,      
    558740000,      
    614640000,      
    676130000,      
    743730000,    //    90
    1041222000,      
    1145344200,      
    1259878620,      
    1385866482,      
    1524453130,      
    1676898443,      
    1844588288,      
    2029047116,      
    2050000000,    //    99레벨 일 때 필요경험치 (100레벨이 되기 위한)
    2150000000LL,    //    100
    2210000000LL,      
    2250000000LL,      
    2280000000LL,      
    2310000000LL,      
    2330000000LL,    //    105
    2350000000LL,      
    2370000000LL,      
    2390000000LL,      
    2400000000LL,      
    2410000000LL,    //    110
    2420000000LL,      
    2430000000LL,      
    2440000000LL,      
    2450000000LL,      
    2460000000LL,    //    115
    2470000000LL,      
    2480000000LL,      
    2490000000LL,      
    2490000000LL,      
    2500000000LL,    //    120
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    125
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    130
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    135
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    140
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    145
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    150
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    155
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    160
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    165
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    170
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    175
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    180
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    185
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    190
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    195
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    200
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    205
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    210
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    215
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    220
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    225
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    230
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    235
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    240
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    245
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    250
};

const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] =
{
    300,    // 0
    800,    // 1
    1500,
    2500,
    4300,
    7200,
    11400,
    17000,
    24000,
    33000,
    46000,    // 10
    62000,
    83000,
    111000,
    149000,
    200000,
    268000,
    360000,
    482000,
    647000,
    868000,    // 20
    996000,
    1143000,
    1312000,
    1506000,
    1729000,
    1984000,
    2277000,
    2614000,
    3000000,
    3443000,    // 30
    3952000,
    4536000,
    5206000,
    5975000,
    6858000,
    7730000,
    8504000,
    9307000,
    10140000,
    11330000,    // 40
    12320000,
    13370000,
    14490000,
    15670000,
    16920000,
    18240000,
    19630000,
    21090000,
    22630000,
    24670000,    // 50
    26890000,
    29310000,
    31950000,
    34820000,
    37960000,
    41370000,
    45100000,
    49160000,
    53580000,
    58400000,    // 60
    63660000,
    69390000,
    75630000,
    82440000,
    89860000,
    97950000,
    106760000,
    136370000,
    151800000,
    168300000,    // 70
    250000000,
    340000000,
    450000000,
    570000000,
    690000000,
    810000000,
    912600000,
    1004000000,
    1094000000,
    1182000000,    // 80
    1269000000,
    1354000000,
    1438000000,
    1521000000,
    1603000000,
    1684000000,
    1764000000,
    1844000000,
    1922000000,
    2000000000,    // 90
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,    //    99        99레벨일 때 필요경험치 (100레벨이 되기 위한).. 현재 CIBN이 어떻게 운영하고 있는 지 모르니 신규 테이블을 쓰지 않고 기존값 계속 연장 유지
    2000000000,    //    100
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    105
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    110
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    115
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    120
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    125
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    130
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    135
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    140
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    145
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    150
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    155
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    160
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    165
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    170
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    175
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    180
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    185
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    190
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    195
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    200
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    205
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    210
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    215
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    220
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    225
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    230
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    235
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    240
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    245
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,      
    2000000000,    //    250
};

const int* aiPercentByDeltaLev = NULL;
const int* aiPercentByDeltaLevForBoss = NULL;

// 적과 나와의 레벨차이에 의한 계산에 사용되는 테이블
// MIN(MAX_EXP_DELTA_OF_LEV - 1, (적렙 + 15) - 내렙))
const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] =
{
    1,      // -15  0
    3,          // -14  1
    5,          // -13  2
    7,          // -12  3
    15,         // -11  4
    30,         // -10  5
    60,         // -9   6
    90,         // -8   7
    91,         // -7   8
    92,         // -6   9
    93,         // -5   10
    94,         // -4   11
    95,         // -3   12
    97,         // -2   13
    99,         // -1   14
    100,        // 0    15
    105,        // 1    16
    110,        // 2    17
    115,        // 3    18
    120,        // 4    19
    125,        // 5    20
    130,        // 6    21
    135,        // 7    22
    140,        // 8    23
    145,        // 9    24
    150,        // 10   25
    155,        // 11   26
    160,        // 12   27
    165,        // 13   28
    170,        // 14   29
    180         // 15   30
};



const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV] =
{
    1,  //  -15 0
    5,  //  -14 1
    10, //  -13 2
    20, //  -12 3
    30, //  -11 4
    50, //  -10 5
    70, //  -9  6
    80, //  -8  7
    85, //  -7  8
    90, //  -6  9
    92, //  -5  10
    94, //  -4  11
    96, //  -3  12
    98, //  -2  13
    100,    //  -1  14
    100,    //  0   15
    105,    //  1   16
    110,    //  2   17
    115,    //  3   18
    120,    //  4   19
    125,    //  5   20
    130,    //  6   21
    135,    //  7   22
    140,    //  8   23
    145,    //  9   24
    150,    //  10  25
    155,    //  11  26
    160,    //  12  27
    165,    //  13  28
    170,    //  14  29
    180,    //  15  30
};

const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1] =
{
    0,
    10,        10,        10,        10,        15,        15,        20,        25,        30,        40,        // 1 - 10
    50,        60,        80,        100,    120,    140,    160,    184,    210,    240,    // 11 - 20
    270,    300,    330,    360,    390,    420,    450,    480,    510,    550,    // 21 - 30
    600,    640,    700,    760,    820,    880,    940,    1000,    1100,    1180,    // 31 - 40
    1260,    1320,    1380,    1440,    1500,    1560,    1620,    1680,    1740,    1800,    // 41 - 50
    1860,    1920,    2000,    2100,    2200,    2300,    2450,    2600,    2750,    2900,    // 51 - 60
    3050,    3200,    3350,    3500,    3650,    3800,    3950,    4100,    4250,    4400,    // 61 - 70
    4600,    4800,    5000,    5200,    5400,    5600,    5800,    6000,    6200,    6400,    // 71 - 80
    6600,    6900,    7100,    7300,    7600,    7800,    8000,    8300,    8500,    8800,    // 81 - 90
    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    // 91 - 100
    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    // 101 - 110
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 111 - 120
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 121 - 130
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 131 - 140
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 141 - 150
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 151 - 160
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 161 - 170
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 171 - 180
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 181 - 190
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 191 - 200
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 201 - 210
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 211 - 220
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 221 - 230
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 231 - 240
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 241 - 250
};

Coord aArroundCoords[ARROUND_COORD_MAX_NUM] =
{
    {         0,          0        },
    {        0,      50     },
    {       35,     35      },
    {       50,     -0      },
    {       35,     -35     },
    {       0,      -50     },
    {       -35,    -35     },
    {       -50,    0       },
    {       -35,    35      },
    {       0,      100     },
    {       71,     71      },
    {       100,    -0      },
    {       71,     -71     },
    {       0,      -100    },
    {       -71,    -71     },
    {       -100,   0       },
    {       -71,    71      },
    {       0,      150     },
    {       106,    106     },
    {       150,    -0      },
    {       106,    -106    },
    {       0,      -150    },
    {       -106,   -106    },
    {       -150,   0       },
    {       -106,   106     },
    {       0,      200     },
    {       141,    141     },
    {       200,    -0      },
    {       141,    -141    },
    {       0,      -200    },
    {       -141,   -141    },
    {       -200,   0       },
    {       -141,   141     },
    {       0,      250     },
    {       177,    177     },
    {       250,    -0      },
    {       177,    -177    },
    {       0,      -250    },
    {       -177,   -177    },
    {       -250,   0       },
    {       -177,   177     },
    {       0,      300     },
    {       212,    212     },
    {       300,    -0      },
    {       212,    -212    },
    {       0,      -300    },
    {       -212,   -212    },
    {       -300,   0       },
    {       -212,   212     },
    {       0,      350     },
    {       247,    247     },
    {       350,    -0      },
    {       247,    -247    },
    {       0,      -350    },
    {       -247,   -247    },
    {       -350,   0       },
    {       -247,   247     },
    {       0,      400     },
    {       283,    283     },
    {       400,    -0      },
    {       283,    -283    },
    {       0,      -400    },
    {       -283,   -283    },
    {       -400,   0       },
    {       -283,   283     },
    {       0,      450     },
    {       318,    318     },
    {       450,    -0      },
    {       318,    -318    },
    {       0,      -450    },
    {       -318,   -318    },
    {       -450,   0       },
    {       -318,   318     },
    {       0,      500     },
    {       354,    354     },
    {       500,    -0      },
    {       354,    -354    },
    {       0,      -500    },
    {       -354,   -354    },
    {       -500,   0       },
    {       -354,   354     },
    {       0,      550     },
    {       389,    389     },
    {       550,    -0      },
    {       389,    -389    },
    {       0,      -550    },
    {       -389,   -389    },
    {       -550,   0       },
    {       -389,   389     },
    {       0,      600     },
    {       424,    424     },
    {       600,    -0      },
    {       424,    -424    },
    {       0,      -600    },
    {       -424,   -424    },
    {       -600,   0       },
    {       -424,   424     },
    {       0,      650     },
    {       460,    460     },
    {       650,    -0      },
    {       460,    -460    },
    {       0,      -650    },
    {       -460,   -460    },
    {       -650,   0       },
    {       -460,   460     },
    {       0,      700     },
    {       495,    495     },
    {       700,    -0      },
    {       495,    -495    },
    {       0,      -700    },
    {       -495,   -495    },
    {       -700,   0       },
    {       -495,   495     },
    {       0,      750     },
    {       530,    530     },
    {       750,    -0      },
    {       530,    -530    },
    {       0,      -750    },
    {       -530,   -530    },
    {       -750,   0       },
    {       -530,   530     },
    {       0,      800     },
    {       566,    566     },
    {       800,    -0      },
    {       566,    -566    },
    {       0,      -800    },
    {       -566,   -566    },
    {       -800,   0       },
    {       -566,   566     },
    {       0,      850     },
    {       601,    601     },
    {       850,    -0      },
    {       601,    -601    },
    {       0,      -850    },
    {       -601,   -601    },
    {       -850,   0       },
    {       -601,   601     },
    {       0,      900     },
    {       636,    636     },
    {       900,    -0      },
    {       636,    -636    },
    {       0,      -900    },
    {       -636,   -636    },
    {       -900,   0       },
    {       -636,   636     },
    {       0,      950     },
    {       672,    672     },
    {       950,    -0      },
    {       672,    -672    },
    {       0,      -950    },
    {       -672,   -672    },
    {       -950,   0       },
    {       -672,   672     },
    {       0,      1000    },
    {       707,    707     },
    {       1000,   -0      },
    {       707,    -707    },
    {       0,      -1000   },
    {       -707,   -707    },
    {       -1000,  0       },
    {       -707,   707     },
};

// INTERNATIONAL_VERSION 길드경험치
const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] =
{
    0,
    6000UL,
    18000UL,
    36000UL,
    64000UL,
    94000UL,
    130000UL,
    172000UL,
    220000UL,
    274000UL,
    334000UL,
    400000UL,
    600000UL,
    840000UL,
    1120000UL,
    1440000UL,
    1800000UL,
    2600000UL,
    3200000UL,
    4000000UL,
    16800000UL
};
// END_OF_INTERNATIONAL_VERSION 길드경험치

const int aiMobEnchantApplyIdx[MOB_ENCHANTS_MAX_NUM] =
{
    APPLY_CURSE_PCT,
    APPLY_SLOW_PCT,
    APPLY_POISON_PCT,
    APPLY_STUN_PCT,
    APPLY_CRITICAL_PCT,
    APPLY_PENETRATE_PCT,
};

const int aiMobResistsApplyIdx[MOB_RESISTS_MAX_NUM] =
{
    APPLY_RESIST_SWORD,
    APPLY_RESIST_TWOHAND,
    APPLY_RESIST_DAGGER,
    APPLY_RESIST_BELL,
    APPLY_RESIST_FAN,
    APPLY_RESIST_BOW,
    APPLY_RESIST_FIRE,
    APPLY_RESIST_ELEC,
    APPLY_RESIST_MAGIC,
    APPLY_RESIST_WIND,
    APPLY_POISON_REDUCE,
};

const int aiSocketPercentByQty[5][4] =
{
    {  0,  0,  0,  0 },
    {  3,  0,  0,  0 },
    { 10,  1,  0,  0 },
    { 15, 10,  1,  0 },
    { 20, 15, 10,  1 }
};

const int aiWeaponSocketQty[WEAPON_NUM_TYPES] =
{
    3, // WEAPON_SWORD,
    3, // WEAPON_DAGGER,
    3, // WEAPON_BOW,
    3, // WEAPON_TWO_HANDED,
    3, // WEAPON_BELL,
    3, // WEAPON_FAN,
    0, // WEAPON_ARROW,
    0, // WEAPON_MOUNT_SPEAR
};

const int aiArmorSocketQty[ARMOR_NUM_TYPES] =
{
    3, // ARMOR_BODY,
    1, // ARMOR_HEAD,
    1, // ARMOR_SHIELD,
    0, // ARMOR_WRIST,
    0, // ARMOR_FOOTS,
    0  // ARMOR_ACCESSORY
};

TItemAttrMap g_map_itemAttr;
TItemAttrMap g_map_itemRare;

const TApplyInfo aApplyInfo[MAX_APPLY_NUM] =
    /*
    {
       DWORD dwPointType;
    }
     */
{
    // Point Type
    { POINT_NONE,                        }, // APPLY_NONE                        0
    { POINT_MAX_HP,                        }, // APPLY_MAX_HP                        1
    { POINT_MAX_SP,                        }, // APPLY_MAX_SP                        2
    { POINT_HT,                            }, // APPLY_CON                            3
    { POINT_IQ,                            }, // APPLY_INT                            4
    { POINT_ST,                            }, // APPLY_STR                            5
    { POINT_DX,                            }, // APPLY_DEX                            6
    { POINT_ATT_SPEED,                    }, // APPLY_ATT_SPEED                    7
    { POINT_MOV_SPEED,                    }, // APPLY_MOV_SPEED                    8
    { POINT_CASTING_SPEED,                }, // APPLY_CAST_SPEED                    9
    { POINT_HP_REGEN,                    }, // APPLY_HP_REGEN,                    10
    { POINT_SP_REGEN,                    }, // APPLY_SP_REGEN,                    11
    { POINT_POISON_PCT,                    }, // APPLY_POISON_PCT,                    12
    { POINT_STUN_PCT,                    }, // APPLY_STUN_PCT,                    13
    { POINT_SLOW_PCT,                    }, // APPLY_SLOW_PCT,                    14
    { POINT_CRITICAL_PCT,                }, // APPLY_CRITICAL_PCT,                15
    { POINT_PENETRATE_PCT,                }, // APPLY_PENETRATE_PCT,                16
    { POINT_ATTBONUS_HUMAN,                }, // APPLY_ATTBONUS_HUMAN,                17
    { POINT_ATTBONUS_ANIMAL,            }, // APPLY_ATTBONUS_ANIMAL,            18
    { POINT_ATTBONUS_ORC,                }, // APPLY_ATTBONUS_ORC,                19
    { POINT_ATTBONUS_MILGYO,            }, // APPLY_ATTBONUS_MILGYO,            20
    { POINT_ATTBONUS_UNDEAD,            }, // APPLY_ATTBONUS_UNDEAD,            21
    { POINT_ATTBONUS_DEVIL,                }, // APPLY_ATTBONUS_DEVIL,                22
    { POINT_STEAL_HP,                    }, // APPLY_STEAL_HP,                    23
    { POINT_STEAL_SP,                    }, // APPLY_STEAL_SP,                    24
    { POINT_MANA_BURN_PCT,                }, // APPLY_MANA_BURN_PCT,                25
    { POINT_DAMAGE_SP_RECOVER,            }, // APPLY_DAMAGE_SP_RECOVER,            26
    { POINT_BLOCK,                        }, // APPLY_BLOCK,                        27
    { POINT_DODGE,                        }, // APPLY_DODGE,                        28
    { POINT_RESIST_SWORD,                }, // APPLY_RESIST_SWORD,                29
    { POINT_RESIST_TWOHAND,                }, // APPLY_RESIST_TWOHAND,                30
    { POINT_RESIST_DAGGER,                }, // APPLY_RESIST_DAGGER,                31
    { POINT_RESIST_BELL,                }, // APPLY_RESIST_BELL,                32
    { POINT_RESIST_FAN,                    }, // APPLY_RESIST_FAN,                    33
    { POINT_RESIST_BOW,                    }, // APPLY_RESIST_BOW,                    34
    { POINT_RESIST_FIRE,                }, // APPLY_RESIST_FIRE,                35
    { POINT_RESIST_ELEC,                }, // APPLY_RESIST_ELEC,                36
    { POINT_RESIST_MAGIC,                }, // APPLY_RESIST_MAGIC,                37
    { POINT_RESIST_WIND,                }, // APPLY_RESIST_WIND,                38
    { POINT_REFLECT_MELEE,                }, // APPLY_REFLECT_MELEE,                39
    { POINT_REFLECT_CURSE,                }, // APPLY_REFLECT_CURSE,                40
    { POINT_POISON_REDUCE,                }, // APPLY_POISON_REDUCE,                41
    { POINT_KILL_SP_RECOVER,            }, // APPLY_KILL_SP_RECOVER,            42
    { POINT_EXP_DOUBLE_BONUS,            }, // APPLY_EXP_DOUBLE_BONUS,            43
    { POINT_GOLD_DOUBLE_BONUS,            }, // APPLY_GOLD_DOUBLE_BONUS,            44
    { POINT_ITEM_DROP_BONUS,            }, // APPLY_ITEM_DROP_BONUS,            45
    { POINT_POTION_BONUS,                }, // APPLY_POTION_BONUS,                46
    { POINT_KILL_HP_RECOVERY,            }, // APPLY_KILL_HP_RECOVER,            47
    { POINT_IMMUNE_STUN,                }, // APPLY_IMMUNE_STUN,                48
    { POINT_IMMUNE_SLOW,                }, // APPLY_IMMUNE_SLOW,                49
    { POINT_IMMUNE_FALL,                }, // APPLY_IMMUNE_FALL,                50
    { POINT_NONE,                        }, // APPLY_SKILL,                        51
    { POINT_BOW_DISTANCE,                }, // APPLY_BOW_DISTANCE,                52
    { POINT_ATT_GRADE_BONUS,            }, // APPLY_ATT_GRADE,                    53
    { POINT_DEF_GRADE_BONUS,            }, // APPLY_DEF_GRADE,                    54
    { POINT_MAGIC_ATT_GRADE_BONUS,        }, // APPLY_MAGIC_ATT_GRADE,            55
    { POINT_MAGIC_DEF_GRADE_BONUS,        }, // APPLY_MAGIC_DEF_GRADE,            56
    { POINT_CURSE_PCT,                    }, // APPLY_CURSE_PCT,                    57
    { POINT_MAX_STAMINA                    }, // APPLY_MAX_STAMINA                    58
    { POINT_ATTBONUS_WARRIOR            }, // APPLY_ATTBONUS_WARRIOR            59
    { POINT_ATTBONUS_ASSASSIN            }, // APPLY_ATTBONUS_ASSASSIN            60
    { POINT_ATTBONUS_SURA                }, // APPLY_ATTBONUS_SURA                61
    { POINT_ATTBONUS_SHAMAN                }, // APPLY_ATTBONUS_SHAMAN                62
    { POINT_ATTBONUS_MONSTER            }, // APPLY_ATTBONUS_MONSTER            63
    { POINT_ATT_BONUS                    }, // APPLY_MALL_ATTBONUS                64
    { POINT_MALL_DEFBONUS                }, //                                     65
    { POINT_MALL_EXPBONUS                }, // APPLY_MALL_EXPBONUS                66
    { POINT_MALL_ITEMBONUS                }, //                                     67
    { POINT_MALL_GOLDBONUS                }, //                                     68
    { POINT_MAX_HP_PCT                    }, //                                     69
    { POINT_MAX_SP_PCT                    }, //                                     70
    { POINT_SKILL_DAMAGE_BONUS            }, //                                     71
    { POINT_NORMAL_HIT_DAMAGE_BONUS        }, //                                     72

    // DEFEND_BONUS_ATTRIBUTES
    { POINT_SKILL_DEFEND_BONUS            }, //                                     73
    { POINT_NORMAL_HIT_DEFEND_BONUS        }, //                                     74
    // END_OF_DEFEND_BONUS_ATTRIBUTES

    { POINT_NONE,                        }, // APPLY_EXTRACT_HP_PCT                75    Hp consumption upon use

    { POINT_RESIST_WARRIOR,                }, // APPLY_RESIST_WARRIOR                76    Resistance against Warriors
    { POINT_RESIST_ASSASSIN,            }, // APPLY_RESIST_ASSASSIN                77    Resistance against Ninjas
    { POINT_RESIST_SURA,                }, // APPLY_RESIST_SURA                    78    Resistance against Suras
    { POINT_RESIST_SHAMAN,                }, // APPLY_RESIST_SHAMAN                79    Resistance against Shamans
    { POINT_ENERGY                        }, //                                     80    Energy
    { POINT_DEF_GRADE                    }, //                                     81    Defense. There is an intended bug (...) where DEF_GRADE_BONUS is shown as double in the client.
    { POINT_COSTUME_ATTR_BONUS            }, //                                     82    Energy bonus given only for attributes attached to costumes.
    { POINT_MAGIC_ATT_BONUS_PER            }, //                                     83    Magic attack power +x%
    { POINT_MELEE_MAGIC_ATT_BONUS_PER    }, // APPLY_MELEE_MAGIC_ATTBONUS_PER    84
    { POINT_RESIST_ICE,                    }, // APPLY_RESIST_ICE                    85
    { POINT_RESIST_EARTH,                }, // APPLY_RESIST_EARTH                86
    { POINT_RESIST_DARK,                }, // APPLY_RESIST_DARK                    87
    { POINT_RESIST_CRITICAL,            }, // APPLY_ANTI_CRITICAL_PCT            88
    { POINT_RESIST_PENETRATE,            }, // APPLY_ANTI_PENETRATE_PCT            89
};

const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
    //25, 25, 40, 8, 2,
    30, 40, 20, 8, 2
};

const int aiItemMagicAttributePercentLow[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
    //45, 25, 20, 10, 0,
    50, 40, 10, 0, 0
};

// ADD_ITEM_ATTRIBUTE
const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM] =
{
    100, 80, 60, 50, 30, 0, 0,
};
// END_OF_ADD_ITEM_ATTRIBUTE

const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 4, // 1 - 10
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, // 11 - 20
    4, 4, 4, 4, 4, 4, 4, 3, 3, 3, // 21 - 30
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 31 - 40
    3, 3, 3, 3, 2, 2, 2, 2, 2, 2, // 41 - 50
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 51 - 60
    2, 2, 1, 1, 1, 1, 1, 1, 1, 1, // 61 - 70
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 71 - 80
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 81 - 90
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 91 - 100
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 101 - 110
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111 - 120
};

const int aiSkillBookCountForLevelUp[10] =
{
    3, 3, 3, 3, 3, 4, 4, 5, 5, 6
};

// ADD_GRANDMASTER_SKILL
const int aiGrandMasterSkillBookCountForLevelUp[10] =
{
    3, 3, 5, 5, 7, 7, 10, 10, 10, 20,
};

const int aiGrandMasterSkillBookMinCount[10] =
{
//    1, 1, 3, 5, 10, 15, 20, 30, 40, 50,
//    3, 3, 5, 5, 10, 10, 15, 15, 20, 30
    1, 1, 1, 2,  2,  3,  3,  4,  5,  6
};

const int aiGrandMasterSkillBookMaxCount[10] =
{
//    6, 15, 30, 45, 60, 80, 100, 120, 160, 200,
//    6, 10, 15, 20, 30, 40, 50, 60, 70, 80
    5,  7,  9, 11, 13, 15, 20, 25, 30, 35
};
// END_OF_ADD_GRANDMASTER_SKILL

const int aiPartyBonusExpPercentByMemberCount[9] =
{
    0, 0, 12, 18, 26, 40, 53, 70, 100
};


const int* aiChainLightningCountBySkillLevel = NULL;

const int aiChainLightningCountBySkillLevel_euckr[SKILL_MAX_LEVEL+1] =
{
    0,    // 0
    2,    // 1
    2,    // 2
    2,    // 3
    2,    // 4
    2,    // 5
    2,    // 6
    2,    // 7
    2,    // 8
    3,    // 9
    3,    // 10
    3,    // 11
    3,    // 12
    3,    // 13
    3,    // 14
    3,    // 15
    3,    // 16
    3,    // 17
    3,    // 18
    4,    // 19
    4,    // 20
    4,    // 21
    4,    // 22
    4,    // 23
    5,    // 24
    5,    // 25
    5,    // 26
    5,    // 27
    5,    // 28
    5,    // 29
    5,    // 30
    5,    // 31
    5,    // 32
    5,    // 33
    5,    // 34
    5,    // 35
    5,    // 36
    5,    // 37
    5,    // 38
    5,    // 39
    5,    // 40
};

const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    60,    {30,    30,    30,    9,    1}    },
    {8006,    60,    {28,    29,    31,    11,    1}    },
    {8007,    60,    {24,    29,    32,    13,    2}    },
    {8008,    60,    {22,    28,    33,    15,    2}    },
    {8009,    60,    {21,    27,    33,    17,    2}    },
    {8010,    60,    {18,    26,    34,    20,    2}    },
    {8011,    60,    {14,    26,    35,    22,    3}    },
    {8012,    60,    {10,    26,    37,    24,    3}    },
    {8013,    60,    {2,    26,    40,    29,    3}    },
    {8014,    60,    {0,    26,    41,    30,    3}    },
};

const char* c_apszEmpireNames[EMPIRE_MAX_NUM] =
{
    "[LS;1037]",
    "[LS;793]",
    "[LS;794]",
    "[LS;795]"
};

const char* c_apszPrivNames[MAX_PRIV_NUM] =
{
    "",
    "[LS;1038]",
    "[LS;1039]",
    "[LS;1031]",
    "[LS;1040]",
};

const int aiPolymorphPowerByLevel[SKILL_MAX_LEVEL + 1] =
{
    10,        // 1
    11,        // 2
    11,        // 3
    12,        // 4
    13,        // 5
    13,        // 6
    14,        // 7
    15,        // 8
    16,        // 9
    17,        // 10
    18,        // 11
    19,        // 12
    20,        // 13
    22,        // 14
    23,        // 15
    24,        // 16
    26,        // 17
    27,        // 18
    29,        // 19
    31,        // 20
    33,        // 21
    35,        // 22
    37,        // 23
    39,        // 24
    41,        // 25
    44,        // 26
    46,        // 27
    49,        // 28
    52,        // 29
    55,        // 30
    59,        // 31
    62,        // 32
    66,        // 33
    70,        // 34
    74,        // 35
    79,        // 36
    84,        // 37
    89,        // 38
    94,        // 39
    100,    // 40
};

TGuildWarInfo KOR_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
    /*
        {
        long lMapIndex;
        int iWarPrice;
        int iWinnerPotionRewardPctToWinner;
        int iLoserPotionRewardPctToWinner;
        int iInitialScore;
        int iEndScore;
        };
     */
{
    { 0,        0,      0,      0,      0,      0       },
    { 110,      0,      100,    50,     0,      100     },
    { 111,      0,      100,    50,     0,      10      },
};

//
// 악세서리 소켓용 수치들
//

// 다이아몬드로 소켓을 추가할 때 확률
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
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
};
// END_OF_ACCESSORY_REFINE

#include "../../common/length.h"
// from import_item_proto.c
typedef struct SValueName
{
    const char*     c_pszName;
    long        lValue;
} TValueName;

TValueName c_aApplyTypeNames[] =
{
    { "STR",                        APPLY_STR                        },
    { "DEX",                        APPLY_DEX                        },
    { "CON",                        APPLY_CON                        },
    { "INT",                        APPLY_INT                        },
    { "MAX_HP",                        APPLY_MAX_HP                    },
    { "MAX_SP",                        APPLY_MAX_SP                    },
    { "MAX_STAMINA",                APPLY_MAX_STAMINA                },
    { "POISON_REDUCE",                APPLY_POISON_REDUCE                },
    { "EXP_DOUBLE_BONUS",            APPLY_EXP_DOUBLE_BONUS            },
    { "GOLD_DOUBLE_BONUS",            APPLY_GOLD_DOUBLE_BONUS            },
    { "ITEM_DROP_BONUS",            APPLY_ITEM_DROP_BONUS            },
    { "HP_REGEN",                    APPLY_HP_REGEN                    },
    { "SP_REGEN",                    APPLY_SP_REGEN                    },
    { "ATTACK_SPEED",                APPLY_ATT_SPEED                    },
    { "MOVE_SPEED",                    APPLY_MOV_SPEED                    },
    { "CAST_SPEED",                    APPLY_CAST_SPEED                },
    { "ATT_BONUS",                    APPLY_ATT_GRADE_BONUS            },
    { "DEF_BONUS",                    APPLY_DEF_GRADE_BONUS            },
    { "MAGIC_ATT_GRADE",            APPLY_MAGIC_ATT_GRADE            },
    { "MAGIC_DEF_GRADE",            APPLY_MAGIC_DEF_GRADE            },
    { "SKILL",                        APPLY_SKILL                        },
    { "ATTBONUS_ANIMAL",            APPLY_ATTBONUS_ANIMAL            },
    { "ATTBONUS_UNDEAD",            APPLY_ATTBONUS_UNDEAD            },
    { "ATTBONUS_DEVIL",                APPLY_ATTBONUS_DEVIL            },
    { "ATTBONUS_HUMAN",                APPLY_ATTBONUS_HUMAN            },
    { "ADD_BOW_DISTANCE",            APPLY_BOW_DISTANCE                },
    { "DODGE",                        APPLY_DODGE                        },
    { "BLOCK",                        APPLY_BLOCK                        },
    { "RESIST_SWORD",                APPLY_RESIST_SWORD                },
    { "RESIST_TWOHAND",                APPLY_RESIST_TWOHAND            },
    { "RESIST_DAGGER",                APPLY_RESIST_DAGGER                },
    { "RESIST_BELL",                APPLY_RESIST_BELL                },
    { "RESIST_FAN",                    APPLY_RESIST_FAN                },
    { "RESIST_BOW",                    APPLY_RESIST_BOW                },
    { "RESIST_FIRE",                APPLY_RESIST_FIRE                },
    { "RESIST_ELEC",                APPLY_RESIST_ELEC                },
    { "RESIST_MAGIC",                APPLY_RESIST_MAGIC                },
    { "RESIST_WIND",                APPLY_RESIST_WIND                },
    { "REFLECT_MELEE",                APPLY_REFLECT_MELEE                },
    { "REFLECT_CURSE",                APPLY_REFLECT_CURSE                },
    { "RESIST_ICE",                    APPLY_RESIST_ICE                },
    { "RESIST_EARTH",                APPLY_RESIST_EARTH                },
    { "RESIST_DARK",                APPLY_RESIST_DARK                },
    { "RESIST_CRITICAL",            APPLY_ANTI_CRITICAL_PCT            },
    { "RESIST_PENETRATE",            APPLY_ANTI_PENETRATE_PCT        },
    { "POISON",                        APPLY_POISON_PCT                },
    { "SLOW",                        APPLY_SLOW_PCT                    },
    { "STUN",                        APPLY_STUN_PCT                    },
    { "STEAL_HP",                    APPLY_STEAL_HP                    },
    { "STEAL_SP",                    APPLY_STEAL_SP                    },
    { "MANA_BURN_PCT",                APPLY_MANA_BURN_PCT                },
    { "CRITICAL",                    APPLY_CRITICAL_PCT                },
    { "PENETRATE",                    APPLY_PENETRATE_PCT                },
    { "KILL_SP_RECOVER",            APPLY_KILL_SP_RECOVER            },
    { "KILL_HP_RECOVER",            APPLY_KILL_HP_RECOVER            },
    { "PENETRATE_PCT",                APPLY_PENETRATE_PCT                },
    { "CRITICAL_PCT",                APPLY_CRITICAL_PCT                },
    { "POISON_PCT",                    APPLY_POISON_PCT                },
    { "STUN_PCT",                    APPLY_STUN_PCT                    },
    { "ATT_BONUS_TO_WARRIOR",        APPLY_ATTBONUS_WARRIOR            },
    { "ATT_BONUS_TO_ASSASSIN",        APPLY_ATTBONUS_ASSASSIN            },
    { "ATT_BONUS_TO_SURA",            APPLY_ATTBONUS_SURA                },
    { "ATT_BONUS_TO_SHAMAN",        APPLY_ATTBONUS_SHAMAN            },
    { "ATT_BONUS_TO_MONSTER",        APPLY_ATTBONUS_MONSTER            },
    { "ATT_BONUS_TO_MOB",            APPLY_ATTBONUS_MONSTER            },
    { "MALL_ATTBONUS",                APPLY_MALL_ATTBONUS                },
    { "MALL_EXPBONUS",                APPLY_MALL_EXPBONUS                },
    { "MALL_DEFBONUS",                APPLY_MALL_DEFBONUS                },
    { "MALL_ITEMBONUS",                APPLY_MALL_ITEMBONUS            },
    { "MALL_GOLDBONUS",                APPLY_MALL_GOLDBONUS            },
    { "MAX_HP_PCT",                    APPLY_MAX_HP_PCT                },
    { "MAX_SP_PCT",                    APPLY_MAX_SP_PCT                },
    { "SKILL_DAMAGE_BONUS",            APPLY_SKILL_DAMAGE_BONUS        },
    { "NORMAL_HIT_DAMAGE_BONUS",    APPLY_NORMAL_HIT_DAMAGE_BONUS    },
    { "SKILL_DEFEND_BONUS",            APPLY_SKILL_DEFEND_BONUS        },
    { "NORMAL_HIT_DEFEND_BONUS",    APPLY_NORMAL_HIT_DEFEND_BONUS    },

    { "RESIST_WARRIOR",                APPLY_RESIST_WARRIOR            },
    { "RESIST_ASSASSIN",            APPLY_RESIST_ASSASSIN            },
    { "RESIST_SURA",                APPLY_RESIST_SURA                },
    { "RESIST_SHAMAN",                APPLY_RESIST_SHAMAN                },
    // by mhh game/affect.h 정의되어있음. INFINITE_AFFECT_DURATION = 0x1FFFFFFF
    { "INFINITE_AFFECT_DURATION",    0x1FFFFFFF                        },
    { "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    },

    { NULL,                            0                                }
};
// from import_item_proto.c

long FN_get_apply_type (const char* apply_type_string)
{
    TValueName*    value_name;
    for (value_name = c_aApplyTypeNames; value_name->c_pszName; ++value_name)
    {
        if (0==strcasecmp (value_name->c_pszName, apply_type_string))
        {
            return value_name->lValue;
        }
    }
    return 0;
}

@Mavi Ruh buda orjınal dosyam abim
 
constants.cpp:
Genişlet Daralt Kopyala
#include "stdafx.h"
#include "char.h"
TJobInitialPoints JobInitialPoints[JOB_MAX_NUM] =
    /*
       {
       int st, ht, dx, iq;
       int max_hp, max_sp;
       int hp_per_ht, sp_per_iq;
       int hp_per_lv_begin, hp_per_lv_end;
       int sp_per_lv_begin, sp_per_lv_end;
       int max_stamina;
       int stamina_per_con;
       int stamina_per_lv_begin, stamina_per_lv_end;
       }
     */
{
    // 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
    {   3,  4,  3,  6,  700,   200,     40,    20,    36, 44,     18, 22,     800,      5,      1, 3  }  // JOB_SHAMANa  16
};

const TMobRankStat MobRankStats[MOB_RANK_MAX_NUM] =
    /*
       {
       int         iGoldPercent;
       }
     */
{
    {  20,  }, // MOB_RANK_PAWN,
    {  20,  }, // MOB_RANK_S_PAWN,
    {  25,  }, // MOB_RANK_KNIGHT,
    {  30,  }, // MOB_RANK_S_KNIGHT,
    {  50,  }, // MOB_RANK_BOSS,
    { 100,  }  // MOB_RANK_KING,
};

TBattleTypeStat BattleTypeStats[BATTLE_TYPE_MAX_NUM] =
    /*
       {
       int         AttGradeBias;
       int         DefGradeBias;
       int         MagicAttGradeBias;
       int         MagicDefGradeBias;
       }
     */
{
    {      0,      0,      0,    -10    }, // BATTLE_TYPE_MELEE,
    {     10,    -20,    -10,    -15    }, // BATTLE_TYPE_RANGE,
    {     -5,     -5,     10,     10    }, // BATTLE_TYPE_MAGIC,
    {      0,      0,      0,      0    }, // BATTLE_TYPE_SPECIAL,
    {     10,    -10,      0,    -15    }, // BATTLE_TYPE_POWER,
    {    -10,     10,    -10,      0    }, // BATTLE_TYPE_TANKER,
    {     20,    -20,      0,    -10    }, // BATTLE_TYPE_SUPER_POWER,
    {    -20,     20,    -10,      0    }, // BATTLE_TYPE_SUPER_TANKER,
};

const DWORD* exp_table = NULL;

const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1] = 
{
    0,            // 0

    100,
    150,
    260,
    380,
    600,
    1300,
    3300,
    5700,
    8700,
    12800,        // 10
    18000,
    25000,
    36000,
    52000,
    73000,
    100000,
    125000,
    160000,
    220000,
    280000,        // 20
    370000,
    540000,
    670000,
    880000,
    1000000,
    1237000,
    1418000,
    1624000,
    1857000,
    2122000,    // 30
    2421000,
    2761000,
    3145000,
    3580000,
    4073000,
    4632000,
    5194000,
    5717000,
    6264000,
    6837000,    // 40
    7600000,
    8274000,
    8990000,
    9753000,
    10560000,
    11410000,
    12320000,
    13270000,
    14280000,
    15340000,    // 50
    16870000,
    18960000,
    19980000,
    21420000,
    22930000,
    24530000,
    26200000,
    27960000,
    29800000,
    32780000,    // 60
    36060000,
    39670000,
    43640000,
    48000000,
    52800000,
    58080000,
    63890000,
    70280000,
    77310000,
    85040000,     // 70
    93540000,
    102900000,
    113200000,
    124500000,
    137000000,
    150700000,
    165700000,
    236990000,
    260650000,
    286780000,    // 80
    315380000,
    346970000,
    381680000,
    419770000,
    461760000,
    508040000,
    558740000,
    614640000,
    676130000,
    743730000,    // 90
    1041222000,
    1145344200,
    1259878620,
    1385866482,
    1524453130,
    1676898443,
    1844588288,
    2029047116,
    2100000000,    //    99        99레벨일 때 필요경험치 (100레벨이 되기 위한)
    2100000000,    //    100
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    105
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    110
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    115
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    120
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    125
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    130
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    135
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    140
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    145
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    150
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    155
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    160
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    165
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    170
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    175
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    180
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    185
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    190
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    195
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    200
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    205
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    210
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    215
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    220
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    225
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    230
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    235
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    240
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    245
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,     
    2100000000,    //    250
};

const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,    //    0
    300,     
    800,     
    1500,     
    2500,     
    4300,     
    7200,     
    11000,     
    17000,     
    24000,     
    33000,    //    10
    43000,     
    58000,     
    76000,     
    100000,     
    130000,     
    169000,     
    219000,     
    283000,     
    365000,     
    472000,    //    20
    610000,     
    705000,     
    813000,     
    937000,     
    1077000,     
    1237000,     
    1418000,     
    1624000,     
    1857000,     
    2122000,    //    30
    2421000,     
    2761000,     
    3145000,     
    3580000,     
    4073000,     
    4632000,     
    5194000,     
    5717000,     
    6264000,     
    6837000,    //    40
    7600000,     
    8274000,     
    8990000,     
    9753000,     
    10560000,     
    11410000,     
    12320000,     
    13270000,     
    14280000,     
    15340000,    //    50
    16870000,     
    18960000,     
    19980000,     
    21420000,     
    22930000,     
    24530000,     
    26200000,     
    27960000,     
    29800000,     
    32780000,    //    60
    36060000,     
    39670000,     
    43640000,     
    48000000,     
    52800000,     
    58080000,     
    63890000,     
    70280000,     
    77310000,     
    85040000,    //    70
    93540000,     
    102900000,     
    113200000,     
    124500000,     
    137000000,     
    150700000,     
    165700000,     
    236990000,     
    260650000,     
    286780000,    //    80
    315380000,     
    346970000,     
    381680000,     
    419770000,     
    461760000,     
    508040000,     
    558740000,     
    614640000,     
    676130000,     
    743730000,    //    90
    1041222000,     
    1145344200,     
    1259878620,     
    1385866482,     
    1524453130,     
    1676898443,     
    1844588288,     
    2029047116,     
    2050000000,    //    99레벨 일 때 필요경험치 (100레벨이 되기 위한)
    2150000000LL,    //    100
    2210000000LL,     
    2250000000LL,     
    2280000000LL,     
    2310000000LL,     
    2330000000LL,    //    105
    2350000000LL,     
    2370000000LL,     
    2390000000LL,     
    2400000000LL,     
    2410000000LL,    //    110
    2420000000LL,     
    2430000000LL,     
    2440000000LL,     
    2450000000LL,     
    2460000000LL,    //    115
    2470000000LL,     
    2480000000LL,     
    2490000000LL,     
    2490000000LL,     
    2500000000LL,    //    120
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    125
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    130
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    135
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    140
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    145
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    150
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    155
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    160
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    165
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    170
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    175
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    180
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    185
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    190
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    195
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    200
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    205
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    210
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    215
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    220
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    225
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    230
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    235
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    240
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    245
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,
    2500000000LL,    //    250
};

const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ] =
{
    300,    // 0
    800,    // 1
    1500,
    2500,
    4300,
    7200,
    11400,
    17000,
    24000,
    33000,
    46000,    // 10
    62000,
    83000,
    111000,
    149000,
    200000,
    268000,
    360000,
    482000,
    647000,
    868000,    // 20
    996000,
    1143000,
    1312000,
    1506000,
    1729000,
    1984000,
    2277000,
    2614000,
    3000000,
    3443000,    // 30
    3952000,
    4536000,
    5206000,
    5975000,
    6858000,
    7730000,
    8504000,
    9307000,
    10140000,
    11330000,    // 40
    12320000,
    13370000,
    14490000,
    15670000,
    16920000,
    18240000,
    19630000,
    21090000,
    22630000,
    24670000,    // 50
    26890000,
    29310000,
    31950000,
    34820000,
    37960000,
    41370000,
    45100000,
    49160000,
    53580000,
    58400000,    // 60
    63660000,
    69390000,
    75630000,
    82440000,
    89860000,
    97950000,
    106760000,
    136370000,
    151800000,
    168300000,    // 70
    250000000,
    340000000,
    450000000,
    570000000,
    690000000,
    810000000,
    912600000,
    1004000000,
    1094000000,
    1182000000,    // 80
    1269000000,
    1354000000,
    1438000000,
    1521000000,
    1603000000,
    1684000000,
    1764000000,
    1844000000,
    1922000000,
    2000000000,    // 90
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,
    2000000000,    //    99        99레벨일 때 필요경험치 (100레벨이 되기 위한).. 현재 CIBN이 어떻게 운영하고 있는 지 모르니 신규 테이블을 쓰지 않고 기존값 계속 연장 유지
    2000000000,    //    100
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    105
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    110
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    115
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    120
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    125
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    130
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    135
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    140
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    145
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    150
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    155
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    160
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    165
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    170
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    175
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    180
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    185
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    190
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    195
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    200
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    205
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    210
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    215
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    220
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    225
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    230
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    235
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    240
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    245
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,     
    2000000000,    //    250
};

const int* aiPercentByDeltaLev = NULL;
const int* aiPercentByDeltaLevForBoss = NULL;

// 적과 나와의 레벨차이에 의한 계산에 사용되는 테이블
// MIN(MAX_EXP_DELTA_OF_LEV - 1, (적렙 + 15) - 내렙))
const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] =
{
    1,      // -15  0
    3,          // -14  1
    5,          // -13  2
    7,          // -12  3
    15,         // -11  4
    30,         // -10  5
    60,         // -9   6
    90,         // -8   7
    91,         // -7   8
    92,         // -6   9
    93,         // -5   10
    94,         // -4   11
    95,         // -3   12
    97,         // -2   13
    99,         // -1   14
    100,        // 0    15
    105,        // 1    16
    110,        // 2    17
    115,        // 3    18
    120,        // 4    19
    125,        // 5    20
    130,        // 6    21
    135,        // 7    22
    140,        // 8    23
    145,        // 9    24
    150,        // 10   25
    155,        // 11   26
    160,        // 12   27
    165,        // 13   28
    170,        // 14   29
    180         // 15   30
};



const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV] =
{
    1,  //  -15 0
    5,  //  -14 1
    10, //  -13 2
    20, //  -12 3
    30, //  -11 4
    50, //  -10 5
    70, //  -9  6
    80, //  -8  7
    85, //  -7  8
    90, //  -6  9
    92, //  -5  10
    94, //  -4  11
    96, //  -3  12
    98, //  -2  13
    100,    //  -1  14
    100,    //  0   15
    105,    //  1   16
    110,    //  2   17
    115,    //  3   18
    120,    //  4   19
    125,    //  5   20
    130,    //  6   21
    135,    //  7   22
    140,    //  8   23
    145,    //  9   24
    150,    //  10  25
    155,    //  11  26
    160,    //  12  27
    165,    //  13  28
    170,    //  14  29
    180,    //  15  30
};

const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1] =
{
    0,
    10,        10,        10,        10,        15,        15,        20,        25,        30,        40,        // 1 - 10
    50,        60,        80,        100,    120,    140,    160,    184,    210,    240,    // 11 - 20
    270,    300,    330,    360,    390,    420,    450,    480,    510,    550,    // 21 - 30
    600,    640,    700,    760,    820,    880,    940,    1000,    1100,    1180,    // 31 - 40
    1260,    1320,    1380,    1440,    1500,    1560,    1620,    1680,    1740,    1800,    // 41 - 50
    1860,    1920,    2000,    2100,    2200,    2300,    2450,    2600,    2750,    2900,    // 51 - 60
    3050,    3200,    3350,    3500,    3650,    3800,    3950,    4100,    4250,    4400,    // 61 - 70
    4600,    4800,    5000,    5200,    5400,    5600,    5800,    6000,    6200,    6400,    // 71 - 80
    6600,    6900,    7100,    7300,    7600,    7800,    8000,    8300,    8500,    8800,    // 81 - 90
    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    9000,    // 91 - 100
    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    10000,    // 101 - 110
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 111 - 120
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 121 - 130
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 131 - 140
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 141 - 150
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 151 - 160
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 161 - 170
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 171 - 180
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 181 - 190
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 191 - 200
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 201 - 210
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 211 - 220
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 221 - 230
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 231 - 240
    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    12000,    // 241 - 250
};

Coord aArroundCoords[ARROUND_COORD_MAX_NUM] =
{
    {         0,          0        },
    {        0,      50     },
    {       35,     35      },
    {       50,     -0      },
    {       35,     -35     },
    {       0,      -50     },
    {       -35,    -35     },
    {       -50,    0       },
    {       -35,    35      },
    {       0,      100     },
    {       71,     71      },
    {       100,    -0      },
    {       71,     -71     },
    {       0,      -100    },
    {       -71,    -71     },
    {       -100,   0       },
    {       -71,    71      },
    {       0,      150     },
    {       106,    106     },
    {       150,    -0      },
    {       106,    -106    },
    {       0,      -150    },
    {       -106,   -106    },
    {       -150,   0       },
    {       -106,   106     },
    {       0,      200     },
    {       141,    141     },
    {       200,    -0      },
    {       141,    -141    },
    {       0,      -200    },
    {       -141,   -141    },
    {       -200,   0       },
    {       -141,   141     },
    {       0,      250     },
    {       177,    177     },
    {       250,    -0      },
    {       177,    -177    },
    {       0,      -250    },
    {       -177,   -177    },
    {       -250,   0       },
    {       -177,   177     },
    {       0,      300     },
    {       212,    212     },
    {       300,    -0      },
    {       212,    -212    },
    {       0,      -300    },
    {       -212,   -212    },
    {       -300,   0       },
    {       -212,   212     },
    {       0,      350     },
    {       247,    247     },
    {       350,    -0      },
    {       247,    -247    },
    {       0,      -350    },
    {       -247,   -247    },
    {       -350,   0       },
    {       -247,   247     },
    {       0,      400     },
    {       283,    283     },
    {       400,    -0      },
    {       283,    -283    },
    {       0,      -400    },
    {       -283,   -283    },
    {       -400,   0       },
    {       -283,   283     },
    {       0,      450     },
    {       318,    318     },
    {       450,    -0      },
    {       318,    -318    },
    {       0,      -450    },
    {       -318,   -318    },
    {       -450,   0       },
    {       -318,   318     },
    {       0,      500     },
    {       354,    354     },
    {       500,    -0      },
    {       354,    -354    },
    {       0,      -500    },
    {       -354,   -354    },
    {       -500,   0       },
    {       -354,   354     },
    {       0,      550     },
    {       389,    389     },
    {       550,    -0      },
    {       389,    -389    },
    {       0,      -550    },
    {       -389,   -389    },
    {       -550,   0       },
    {       -389,   389     },
    {       0,      600     },
    {       424,    424     },
    {       600,    -0      },
    {       424,    -424    },
    {       0,      -600    },
    {       -424,   -424    },
    {       -600,   0       },
    {       -424,   424     },
    {       0,      650     },
    {       460,    460     },
    {       650,    -0      },
    {       460,    -460    },
    {       0,      -650    },
    {       -460,   -460    },
    {       -650,   0       },
    {       -460,   460     },
    {       0,      700     },
    {       495,    495     },
    {       700,    -0      },
    {       495,    -495    },
    {       0,      -700    },
    {       -495,   -495    },
    {       -700,   0       },
    {       -495,   495     },
    {       0,      750     },
    {       530,    530     },
    {       750,    -0      },
    {       530,    -530    },
    {       0,      -750    },
    {       -530,   -530    },
    {       -750,   0       },
    {       -530,   530     },
    {       0,      800     },
    {       566,    566     },
    {       800,    -0      },
    {       566,    -566    },
    {       0,      -800    },
    {       -566,   -566    },
    {       -800,   0       },
    {       -566,   566     },
    {       0,      850     },
    {       601,    601     },
    {       850,    -0      },
    {       601,    -601    },
    {       0,      -850    },
    {       -601,   -601    },
    {       -850,   0       },
    {       -601,   601     },
    {       0,      900     },
    {       636,    636     },
    {       900,    -0      },
    {       636,    -636    },
    {       0,      -900    },
    {       -636,   -636    },
    {       -900,   0       },
    {       -636,   636     },
    {       0,      950     },
    {       672,    672     },
    {       950,    -0      },
    {       672,    -672    },
    {       0,      -950    },
    {       -672,   -672    },
    {       -950,   0       },
    {       -672,   672     },
    {       0,      1000    },
    {       707,    707     },
    {       1000,   -0      },
    {       707,    -707    },
    {       0,      -1000   },
    {       -707,   -707    },
    {       -1000,  0       },
    {       -707,   707     },
};

// INTERNATIONAL_VERSION 길드경험치
const DWORD guild_exp_table[GUILD_MAX_LEVEL+1] =
{
    0,
    6000UL,
    18000UL,
    36000UL,
    64000UL,
    94000UL,
    130000UL,
    172000UL,
    220000UL,
    274000UL,
    334000UL,
    400000UL,
    600000UL,
    840000UL,
    1120000UL,
    1440000UL,
    1800000UL,
    2600000UL,
    3200000UL,
    4000000UL,
    16800000UL
};
// END_OF_INTERNATIONAL_VERSION 길드경험치

const int aiMobEnchantApplyIdx[MOB_ENCHANTS_MAX_NUM] =
{
    APPLY_CURSE_PCT,
    APPLY_SLOW_PCT,
    APPLY_POISON_PCT,
    APPLY_STUN_PCT,
    APPLY_CRITICAL_PCT,
    APPLY_PENETRATE_PCT,
};

const int aiMobResistsApplyIdx[MOB_RESISTS_MAX_NUM] =
{
    APPLY_RESIST_SWORD,
    APPLY_RESIST_TWOHAND,
    APPLY_RESIST_DAGGER,
    APPLY_RESIST_BELL,
    APPLY_RESIST_FAN,
    APPLY_RESIST_BOW,
    APPLY_RESIST_FIRE,
    APPLY_RESIST_ELEC,
    APPLY_RESIST_MAGIC,
    APPLY_RESIST_WIND,
    APPLY_POISON_REDUCE,
};

const int aiSocketPercentByQty[5][4] =
{
    {  0,  0,  0,  0 },
    {  3,  0,  0,  0 },
    { 10,  1,  0,  0 },
    { 15, 10,  1,  0 },
    { 20, 15, 10,  1 }
};

const int aiWeaponSocketQty[WEAPON_NUM_TYPES] =
{
    3, // WEAPON_SWORD,
    3, // WEAPON_DAGGER,
    3, // WEAPON_BOW,
    3, // WEAPON_TWO_HANDED,
    3, // WEAPON_BELL,
    3, // WEAPON_FAN,
    0, // WEAPON_ARROW,
    0, // WEAPON_MOUNT_SPEAR
};

const int aiArmorSocketQty[ARMOR_NUM_TYPES] =
{
    3, // ARMOR_BODY,
    1, // ARMOR_HEAD,
    1, // ARMOR_SHIELD,
    0, // ARMOR_WRIST,
    0, // ARMOR_FOOTS,
    0  // ARMOR_ACCESSORY
};

TItemAttrMap g_map_itemAttr;
TItemAttrMap g_map_itemRare;

const TApplyInfo aApplyInfo[MAX_APPLY_NUM] =
    /*
    {
       DWORD dwPointType;
    }
     */
{
    // Point Type
    { POINT_NONE,                        }, // APPLY_NONE                        0
    { POINT_MAX_HP,                        }, // APPLY_MAX_HP                        1
    { POINT_MAX_SP,                        }, // APPLY_MAX_SP                        2
    { POINT_HT,                            }, // APPLY_CON                            3
    { POINT_IQ,                            }, // APPLY_INT                            4
    { POINT_ST,                            }, // APPLY_STR                            5
    { POINT_DX,                            }, // APPLY_DEX                            6
    { POINT_ATT_SPEED,                    }, // APPLY_ATT_SPEED                    7
    { POINT_MOV_SPEED,                    }, // APPLY_MOV_SPEED                    8
    { POINT_CASTING_SPEED,                }, // APPLY_CAST_SPEED                    9
    { POINT_HP_REGEN,                    }, // APPLY_HP_REGEN,                    10
    { POINT_SP_REGEN,                    }, // APPLY_SP_REGEN,                    11
    { POINT_POISON_PCT,                    }, // APPLY_POISON_PCT,                    12
    { POINT_STUN_PCT,                    }, // APPLY_STUN_PCT,                    13
    { POINT_SLOW_PCT,                    }, // APPLY_SLOW_PCT,                    14
    { POINT_CRITICAL_PCT,                }, // APPLY_CRITICAL_PCT,                15
    { POINT_PENETRATE_PCT,                }, // APPLY_PENETRATE_PCT,                16
    { POINT_ATTBONUS_HUMAN,                }, // APPLY_ATTBONUS_HUMAN,                17
    { POINT_ATTBONUS_ANIMAL,            }, // APPLY_ATTBONUS_ANIMAL,            18
    { POINT_ATTBONUS_ORC,                }, // APPLY_ATTBONUS_ORC,                19
    { POINT_ATTBONUS_MILGYO,            }, // APPLY_ATTBONUS_MILGYO,            20
    { POINT_ATTBONUS_UNDEAD,            }, // APPLY_ATTBONUS_UNDEAD,            21
    { POINT_ATTBONUS_DEVIL,                }, // APPLY_ATTBONUS_DEVIL,                22
    { POINT_STEAL_HP,                    }, // APPLY_STEAL_HP,                    23
    { POINT_STEAL_SP,                    }, // APPLY_STEAL_SP,                    24
    { POINT_MANA_BURN_PCT,                }, // APPLY_MANA_BURN_PCT,                25
    { POINT_DAMAGE_SP_RECOVER,            }, // APPLY_DAMAGE_SP_RECOVER,            26
    { POINT_BLOCK,                        }, // APPLY_BLOCK,                        27
    { POINT_DODGE,                        }, // APPLY_DODGE,                        28
    { POINT_RESIST_SWORD,                }, // APPLY_RESIST_SWORD,                29
    { POINT_RESIST_TWOHAND,                }, // APPLY_RESIST_TWOHAND,                30
    { POINT_RESIST_DAGGER,                }, // APPLY_RESIST_DAGGER,                31
    { POINT_RESIST_BELL,                }, // APPLY_RESIST_BELL,                32
    { POINT_RESIST_FAN,                    }, // APPLY_RESIST_FAN,                    33
    { POINT_RESIST_BOW,                    }, // APPLY_RESIST_BOW,                    34
    { POINT_RESIST_FIRE,                }, // APPLY_RESIST_FIRE,                35
    { POINT_RESIST_ELEC,                }, // APPLY_RESIST_ELEC,                36
    { POINT_RESIST_MAGIC,                }, // APPLY_RESIST_MAGIC,                37
    { POINT_RESIST_WIND,                }, // APPLY_RESIST_WIND,                38
    { POINT_REFLECT_MELEE,                }, // APPLY_REFLECT_MELEE,                39
    { POINT_REFLECT_CURSE,                }, // APPLY_REFLECT_CURSE,                40
    { POINT_POISON_REDUCE,                }, // APPLY_POISON_REDUCE,                41
    { POINT_KILL_SP_RECOVER,            }, // APPLY_KILL_SP_RECOVER,            42
    { POINT_EXP_DOUBLE_BONUS,            }, // APPLY_EXP_DOUBLE_BONUS,            43
    { POINT_GOLD_DOUBLE_BONUS,            }, // APPLY_GOLD_DOUBLE_BONUS,            44
    { POINT_ITEM_DROP_BONUS,            }, // APPLY_ITEM_DROP_BONUS,            45
    { POINT_POTION_BONUS,                }, // APPLY_POTION_BONUS,                46
    { POINT_KILL_HP_RECOVERY,            }, // APPLY_KILL_HP_RECOVER,            47
    { POINT_IMMUNE_STUN,                }, // APPLY_IMMUNE_STUN,                48
    { POINT_IMMUNE_SLOW,                }, // APPLY_IMMUNE_SLOW,                49
    { POINT_IMMUNE_FALL,                }, // APPLY_IMMUNE_FALL,                50
    { POINT_NONE,                        }, // APPLY_SKILL,                        51
    { POINT_BOW_DISTANCE,                }, // APPLY_BOW_DISTANCE,                52
    { POINT_ATT_GRADE_BONUS,            }, // APPLY_ATT_GRADE,                    53
    { POINT_DEF_GRADE_BONUS,            }, // APPLY_DEF_GRADE,                    54
    { POINT_MAGIC_ATT_GRADE_BONUS,        }, // APPLY_MAGIC_ATT_GRADE,            55
    { POINT_MAGIC_DEF_GRADE_BONUS,        }, // APPLY_MAGIC_DEF_GRADE,            56
    { POINT_CURSE_PCT,                    }, // APPLY_CURSE_PCT,                    57
    { POINT_MAX_STAMINA                    }, // APPLY_MAX_STAMINA                    58
    { POINT_ATTBONUS_WARRIOR            }, // APPLY_ATTBONUS_WARRIOR            59
    { POINT_ATTBONUS_ASSASSIN            }, // APPLY_ATTBONUS_ASSASSIN            60
    { POINT_ATTBONUS_SURA                }, // APPLY_ATTBONUS_SURA                61
    { POINT_ATTBONUS_SHAMAN                }, // APPLY_ATTBONUS_SHAMAN                62
    { POINT_ATTBONUS_MONSTER            }, // APPLY_ATTBONUS_MONSTER            63
    { POINT_ATT_BONUS                    }, // APPLY_MALL_ATTBONUS                64
    { POINT_MALL_DEFBONUS                }, //                                     65
    { POINT_MALL_EXPBONUS                }, // APPLY_MALL_EXPBONUS                66
    { POINT_MALL_ITEMBONUS                }, //                                     67
    { POINT_MALL_GOLDBONUS                }, //                                     68
    { POINT_MAX_HP_PCT                    }, //                                     69
    { POINT_MAX_SP_PCT                    }, //                                     70
    { POINT_SKILL_DAMAGE_BONUS            }, //                                     71
    { POINT_NORMAL_HIT_DAMAGE_BONUS        }, //                                     72

    // DEFEND_BONUS_ATTRIBUTES
    { POINT_SKILL_DEFEND_BONUS            }, //                                     73
    { POINT_NORMAL_HIT_DEFEND_BONUS        }, //                                     74
    // END_OF_DEFEND_BONUS_ATTRIBUTES

    { POINT_NONE,                        }, // APPLY_EXTRACT_HP_PCT                75    Hp consumption upon use

    { POINT_RESIST_WARRIOR,                }, // APPLY_RESIST_WARRIOR                76    Resistance against Warriors
    { POINT_RESIST_ASSASSIN,            }, // APPLY_RESIST_ASSASSIN                77    Resistance against Ninjas
    { POINT_RESIST_SURA,                }, // APPLY_RESIST_SURA                    78    Resistance against Suras
    { POINT_RESIST_SHAMAN,                }, // APPLY_RESIST_SHAMAN                79    Resistance against Shamans
    { POINT_ENERGY                        }, //                                     80    Energy
    { POINT_DEF_GRADE                    }, //                                     81    Defense. There is an intended bug (...) where DEF_GRADE_BONUS is shown as double in the client.
    { POINT_COSTUME_ATTR_BONUS            }, //                                     82    Energy bonus given only for attributes attached to costumes.
    { POINT_MAGIC_ATT_BONUS_PER            }, //                                     83    Magic attack power +x%
    { POINT_MELEE_MAGIC_ATT_BONUS_PER    }, // APPLY_MELEE_MAGIC_ATTBONUS_PER    84
    { POINT_RESIST_ICE,                    }, // APPLY_RESIST_ICE                    85
    { POINT_RESIST_EARTH,                }, // APPLY_RESIST_EARTH                86
    { POINT_RESIST_DARK,                }, // APPLY_RESIST_DARK                    87
    { POINT_RESIST_CRITICAL,            }, // APPLY_ANTI_CRITICAL_PCT            88
    { POINT_RESIST_PENETRATE,            }, // APPLY_ANTI_PENETRATE_PCT            89
};

const int aiItemMagicAttributePercentHigh[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
    //25, 25, 40, 8, 2,
    30, 40, 20, 8, 2
};

const int aiItemMagicAttributePercentLow[ITEM_ATTRIBUTE_MAX_LEVEL] =
{
    //45, 25, 20, 10, 0,
    50, 40, 10, 0, 0
};

// ADD_ITEM_ATTRIBUTE
const int aiItemAttributeAddPercent[ITEM_ATTRIBUTE_MAX_NUM] =
{
    100, 80, 60, 50, 30, 0, 0,
};
// END_OF_ADD_ITEM_ATTRIBUTE

const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 4, // 1 - 10
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, // 11 - 20
    4, 4, 4, 4, 4, 4, 4, 3, 3, 3, // 21 - 30
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 31 - 40
    3, 3, 3, 3, 2, 2, 2, 2, 2, 2, // 41 - 50
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 51 - 60
    2, 2, 1, 1, 1, 1, 1, 1, 1, 1, // 61 - 70
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 71 - 80
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 81 - 90
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 91 - 100
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 101 - 110
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111 - 120
};

const int aiSkillBookCountForLevelUp[10] =
{
    3, 3, 3, 3, 3, 4, 4, 5, 5, 6
};

// ADD_GRANDMASTER_SKILL
const int aiGrandMasterSkillBookCountForLevelUp[10] =
{
    3, 3, 5, 5, 7, 7, 10, 10, 10, 20,
};

const int aiGrandMasterSkillBookMinCount[10] =
{
//    1, 1, 3, 5, 10, 15, 20, 30, 40, 50,
//    3, 3, 5, 5, 10, 10, 15, 15, 20, 30
    1, 1, 1, 2,  2,  3,  3,  4,  5,  6
};

const int aiGrandMasterSkillBookMaxCount[10] =
{
//    6, 15, 30, 45, 60, 80, 100, 120, 160, 200,
//    6, 10, 15, 20, 30, 40, 50, 60, 70, 80
    5,  7,  9, 11, 13, 15, 20, 25, 30, 35
};
// END_OF_ADD_GRANDMASTER_SKILL

const int aiPartyBonusExpPercentByMemberCount[9] =
{
    0, 0, 12, 18, 26, 40, 53, 70, 100
};


const int* aiChainLightningCountBySkillLevel = NULL;

const int aiChainLightningCountBySkillLevel_euckr[SKILL_MAX_LEVEL+1] =
{
    0,    // 0
    2,    // 1
    2,    // 2
    2,    // 3
    2,    // 4
    2,    // 5
    2,    // 6
    2,    // 7
    2,    // 8
    3,    // 9
    3,    // 10
    3,    // 11
    3,    // 12
    3,    // 13
    3,    // 14
    3,    // 15
    3,    // 16
    3,    // 17
    3,    // 18
    4,    // 19
    4,    // 20
    4,    // 21
    4,    // 22
    4,    // 23
    5,    // 24
    5,    // 25
    5,    // 26
    5,    // 27
    5,    // 28
    5,    // 29
    5,    // 30
    5,    // 31
    5,    // 32
    5,    // 33
    5,    // 34
    5,    // 35
    5,    // 36
    5,    // 37
    5,    // 38
    5,    // 39
    5,    // 40
};

const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    60,    {30,    30,    30,    9,    1}    },
    {8006,    60,    {28,    29,    31,    11,    1}    },
    {8007,    60,    {24,    29,    32,    13,    2}    },
    {8008,    60,    {22,    28,    33,    15,    2}    },
    {8009,    60,    {21,    27,    33,    17,    2}    },
    {8010,    60,    {18,    26,    34,    20,    2}    },
    {8011,    60,    {14,    26,    35,    22,    3}    },
    {8012,    60,    {10,    26,    37,    24,    3}    },
    {8013,    60,    {2,    26,    40,    29,    3}    },
    {8014,    60,    {0,    26,    41,    30,    3}    },
};

const char* c_apszEmpireNames[EMPIRE_MAX_NUM] =
{
    "[LS;1037]",
    "[LS;793]",
    "[LS;794]",
    "[LS;795]"
};

const char* c_apszPrivNames[MAX_PRIV_NUM] =
{
    "",
    "[LS;1038]",
    "[LS;1039]",
    "[LS;1031]",
    "[LS;1040]",
};

const int aiPolymorphPowerByLevel[SKILL_MAX_LEVEL + 1] =
{
    10,        // 1
    11,        // 2
    11,        // 3
    12,        // 4
    13,        // 5
    13,        // 6
    14,        // 7
    15,        // 8
    16,        // 9
    17,        // 10
    18,        // 11
    19,        // 12
    20,        // 13
    22,        // 14
    23,        // 15
    24,        // 16
    26,        // 17
    27,        // 18
    29,        // 19
    31,        // 20
    33,        // 21
    35,        // 22
    37,        // 23
    39,        // 24
    41,        // 25
    44,        // 26
    46,        // 27
    49,        // 28
    52,        // 29
    55,        // 30
    59,        // 31
    62,        // 32
    66,        // 33
    70,        // 34
    74,        // 35
    79,        // 36
    84,        // 37
    89,        // 38
    94,        // 39
    100,    // 40
};

TGuildWarInfo KOR_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
    /*
        {
        long lMapIndex;
        int iWarPrice;
        int iWinnerPotionRewardPctToWinner;
        int iLoserPotionRewardPctToWinner;
        int iInitialScore;
        int iEndScore;
        };
     */
{
    { 0,        0,      0,      0,      0,      0       },
    { 110,      0,      100,    50,     0,      100     },
    { 111,      0,      100,    50,     0,      10      },
};

//
// 악세서리 소켓용 수치들
//

// 다이아몬드로 소켓을 추가할 때 확률
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
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
};
// END_OF_ACCESSORY_REFINE

#include "../../common/length.h"
// from import_item_proto.c
typedef struct SValueName
{
    const char*     c_pszName;
    long        lValue;
} TValueName;

TValueName c_aApplyTypeNames[] =
{
    { "STR",                        APPLY_STR                        },
    { "DEX",                        APPLY_DEX                        },
    { "CON",                        APPLY_CON                        },
    { "INT",                        APPLY_INT                        },
    { "MAX_HP",                        APPLY_MAX_HP                    },
    { "MAX_SP",                        APPLY_MAX_SP                    },
    { "MAX_STAMINA",                APPLY_MAX_STAMINA                },
    { "POISON_REDUCE",                APPLY_POISON_REDUCE                },
    { "EXP_DOUBLE_BONUS",            APPLY_EXP_DOUBLE_BONUS            },
    { "GOLD_DOUBLE_BONUS",            APPLY_GOLD_DOUBLE_BONUS            },
    { "ITEM_DROP_BONUS",            APPLY_ITEM_DROP_BONUS            },
    { "HP_REGEN",                    APPLY_HP_REGEN                    },
    { "SP_REGEN",                    APPLY_SP_REGEN                    },
    { "ATTACK_SPEED",                APPLY_ATT_SPEED                    },
    { "MOVE_SPEED",                    APPLY_MOV_SPEED                    },
    { "CAST_SPEED",                    APPLY_CAST_SPEED                },
    { "ATT_BONUS",                    APPLY_ATT_GRADE_BONUS            },
    { "DEF_BONUS",                    APPLY_DEF_GRADE_BONUS            },
    { "MAGIC_ATT_GRADE",            APPLY_MAGIC_ATT_GRADE            },
    { "MAGIC_DEF_GRADE",            APPLY_MAGIC_DEF_GRADE            },
    { "SKILL",                        APPLY_SKILL                        },
    { "ATTBONUS_ANIMAL",            APPLY_ATTBONUS_ANIMAL            },
    { "ATTBONUS_UNDEAD",            APPLY_ATTBONUS_UNDEAD            },
    { "ATTBONUS_DEVIL",                APPLY_ATTBONUS_DEVIL            },
    { "ATTBONUS_HUMAN",                APPLY_ATTBONUS_HUMAN            },
    { "ADD_BOW_DISTANCE",            APPLY_BOW_DISTANCE                },
    { "DODGE",                        APPLY_DODGE                        },
    { "BLOCK",                        APPLY_BLOCK                        },
    { "RESIST_SWORD",                APPLY_RESIST_SWORD                },
    { "RESIST_TWOHAND",                APPLY_RESIST_TWOHAND            },
    { "RESIST_DAGGER",                APPLY_RESIST_DAGGER                },
    { "RESIST_BELL",                APPLY_RESIST_BELL                },
    { "RESIST_FAN",                    APPLY_RESIST_FAN                },
    { "RESIST_BOW",                    APPLY_RESIST_BOW                },
    { "RESIST_FIRE",                APPLY_RESIST_FIRE                },
    { "RESIST_ELEC",                APPLY_RESIST_ELEC                },
    { "RESIST_MAGIC",                APPLY_RESIST_MAGIC                },
    { "RESIST_WIND",                APPLY_RESIST_WIND                },
    { "REFLECT_MELEE",                APPLY_REFLECT_MELEE                },
    { "REFLECT_CURSE",                APPLY_REFLECT_CURSE                },
    { "RESIST_ICE",                    APPLY_RESIST_ICE                },
    { "RESIST_EARTH",                APPLY_RESIST_EARTH                },
    { "RESIST_DARK",                APPLY_RESIST_DARK                },
    { "RESIST_CRITICAL",            APPLY_ANTI_CRITICAL_PCT            },
    { "RESIST_PENETRATE",            APPLY_ANTI_PENETRATE_PCT        },
    { "POISON",                        APPLY_POISON_PCT                },
    { "SLOW",                        APPLY_SLOW_PCT                    },
    { "STUN",                        APPLY_STUN_PCT                    },
    { "STEAL_HP",                    APPLY_STEAL_HP                    },
    { "STEAL_SP",                    APPLY_STEAL_SP                    },
    { "MANA_BURN_PCT",                APPLY_MANA_BURN_PCT                },
    { "CRITICAL",                    APPLY_CRITICAL_PCT                },
    { "PENETRATE",                    APPLY_PENETRATE_PCT                },
    { "KILL_SP_RECOVER",            APPLY_KILL_SP_RECOVER            },
    { "KILL_HP_RECOVER",            APPLY_KILL_HP_RECOVER            },
    { "PENETRATE_PCT",                APPLY_PENETRATE_PCT                },
    { "CRITICAL_PCT",                APPLY_CRITICAL_PCT                },
    { "POISON_PCT",                    APPLY_POISON_PCT                },
    { "STUN_PCT",                    APPLY_STUN_PCT                    },
    { "ATT_BONUS_TO_WARRIOR",        APPLY_ATTBONUS_WARRIOR            },
    { "ATT_BONUS_TO_ASSASSIN",        APPLY_ATTBONUS_ASSASSIN            },
    { "ATT_BONUS_TO_SURA",            APPLY_ATTBONUS_SURA                },
    { "ATT_BONUS_TO_SHAMAN",        APPLY_ATTBONUS_SHAMAN            },
    { "ATT_BONUS_TO_MONSTER",        APPLY_ATTBONUS_MONSTER            },
    { "ATT_BONUS_TO_MOB",            APPLY_ATTBONUS_MONSTER            },
    { "MALL_ATTBONUS",                APPLY_MALL_ATTBONUS                },
    { "MALL_EXPBONUS",                APPLY_MALL_EXPBONUS                },
    { "MALL_DEFBONUS",                APPLY_MALL_DEFBONUS                },
    { "MALL_ITEMBONUS",                APPLY_MALL_ITEMBONUS            },
    { "MALL_GOLDBONUS",                APPLY_MALL_GOLDBONUS            },
    { "MAX_HP_PCT",                    APPLY_MAX_HP_PCT                },
    { "MAX_SP_PCT",                    APPLY_MAX_SP_PCT                },
    { "SKILL_DAMAGE_BONUS",            APPLY_SKILL_DAMAGE_BONUS        },
    { "NORMAL_HIT_DAMAGE_BONUS",    APPLY_NORMAL_HIT_DAMAGE_BONUS    },
    { "SKILL_DEFEND_BONUS",            APPLY_SKILL_DEFEND_BONUS        },
    { "NORMAL_HIT_DEFEND_BONUS",    APPLY_NORMAL_HIT_DEFEND_BONUS    },

    { "RESIST_WARRIOR",                APPLY_RESIST_WARRIOR            },
    { "RESIST_ASSASSIN",            APPLY_RESIST_ASSASSIN            },
    { "RESIST_SURA",                APPLY_RESIST_SURA                },
    { "RESIST_SHAMAN",                APPLY_RESIST_SHAMAN                },
    // by mhh game/affect.h 정의되어있음. INFINITE_AFFECT_DURATION = 0x1FFFFFFF
    { "INFINITE_AFFECT_DURATION",    0x1FFFFFFF                        },
    { "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    },

    { NULL,                            0                                }
};
// from import_item_proto.c

long FN_get_apply_type (const char* apply_type_string)
{
    TValueName*    value_name;
    for (value_name = c_aApplyTypeNames; value_name->c_pszName; ++value_name)
    {
        if (0==strcasecmp (value_name->c_pszName, apply_type_string))
        {
            return value_name->lValue;
        }
    }
    return 0;
}

@Mavi Ruh buda orjınal dosyam abim
Müsait olunca bakacağım kral en kötü gece bakarım
 
constants.cpp:
Genişlet Daralt Kopyala
// Arat
const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1] =

// Değiştir
const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1] =
{
    0,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 4, // 1 - 10
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, // 11 - 20
    4, 4, 4, 4, 4, 4, 4, 3, 3, 3, // 21 - 30
    3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 31 - 40
    3, 3, 3, 3, 2, 2, 2, 2, 2, 2, // 41 - 50
    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 51 - 60
    2, 2, 1, 1, 1, 1, 1, 1, 1, 1, // 61 - 70
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 71 - 80
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 81 - 90
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 91 - 100
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 101 - 110
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111 - 120
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 121 - 130
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 131 - 140
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 141 - 150
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 151 - 160
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 161 - 170
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 171 - 180
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 181 - 190
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 191 - 200
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 201 - 210
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 211 - 220
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 221 - 230
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 231 - 240
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 241 - 250
};
 
constants.cpp:
Genişlet Daralt Kopyala
const DWORD exp_table_euckr[PLAYER_EXP_TABLE_MAX + 1]
const DWORD exp_table_common[PLAYER_EXP_TABLE_MAX + 1]
const DWORD exp_table_newcibn[PLAYER_EXP_TABLE_MAX + 1 ]
const DWORD party_exp_distribute_table[PLAYER_MAX_LEVEL_CONST + 1]
const int aiExpLossPercents[PLAYER_EXP_TABLE_MAX + 1]


gereklı kodlamalar eksıklık nedenıyle tamamlanmıs olup max level 250 level ulaşılmıstır @Mavi Ruh guzel yorumlarınız ıcın tesekur ederım abi verdıgın kodlamaları ekleme yaparakta ıslem basarılı bır sekılde yapıldı bu tur sorunları yasıyan arkadaşlar olursa ustten ekledıgım kodları kontrol ederek ıslemlerı tamamlıyabılırler konu kapatılabılır tesekurler
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst