server/game/src/constants.cpp

1298 lines
30 KiB
C++
Raw Normal View History

2022-03-05 12:44:06 +02:00
#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 <20>ʱ<EFBFBD>HP <20>ʱ<EFBFBD>SP CON/HP INT/SP HP<48><50><EFBFBD><EFBFBD>/lv MP<4D><50><EFBFBD><EFBFBD>/lv <20>ʱ<EFBFBD>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<39><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD>ġ (100<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>DZ<EFBFBD> <20><><EFBFBD><EFBFBD>)
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
};
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<39><39><EFBFBD><EFBFBD> <20><> <20><> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD>ġ (100<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>DZ<EFBFBD> <20><><EFBFBD><EFBFBD>)
2150000000, // 100
2210000000,
2250000000,
2280000000,
2310000000,
2330000000, // 105
2350000000,
2370000000,
2390000000,
2400000000,
2410000000, // 110
2420000000,
2430000000,
2440000000,
2450000000,
2460000000, // 115
2470000000,
2480000000,
2490000000,
2490000000,
2500000000, // 120
};
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<39><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD>ġ (100<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>DZ<EFBFBD> <20><><EFBFBD><EFBFBD>).. <20><><EFBFBD><EFBFBD> CIBN<42><4E> <20><EFBFBD><EEB6BB> <20><EFBFBD>ϰ<EFBFBD> <20>ִ<EFBFBD> <20><> <20>𸣴<EFBFBD> <20>ű<EFBFBD> <20><><EFBFBD>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
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
};
const int * aiPercentByDeltaLev = NULL;
const int * aiPercentByDeltaLevForBoss = NULL;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̿<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> <20><><EFBFBD>̺<EFBFBD>
// MIN(MAX_EXP_DELTA_OF_LEV - 1, (<28><><EFBFBD><EFBFBD> + 15) - <20><><EFBFBD><EFBFBD>))
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
};
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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ
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 }, // 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 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HP <20>Ҹ<EFBFBD> APPLY_EXTRACT_HP_PCT
{ POINT_RESIST_WARRIOR, }, // 78 <20><><EFBFBD><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD> APPLY_RESIST_WARRIOR
{ POINT_RESIST_ASSASSIN, }, // 79 <20>ڰ<EFBFBD><DAB0><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_RESIST_ASSASSIN
{ POINT_RESIST_SURA, }, // 80 <20><><EFBFBD>󿡰<EFBFBD> <20><><EFBFBD><EFBFBD> APPLY_RESIST_SURA
{ POINT_RESIST_SHAMAN, }, // 81 <20><><EFBFBD><EFBFBD><E7BFA1> <20><><EFBFBD><EFBFBD> APPLY_RESIST_SHAMAN
{ POINT_ENERGY }, // 82 <20><><EFBFBD><EFBFBD>
{ POINT_DEF_GRADE }, // 83 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. DEF_GRADE_BONUS<55><53> Ŭ<>󿡼<EFBFBD> <20>ι<EFBFBD><CEB9><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ǵ<EFBFBD><C7B5><EFBFBD> <20><><EFBFBD><EFBFBD>(...)<29><> <20>ִ<EFBFBD>.
{ POINT_COSTUME_ATTR_BONUS }, // 84 <20>ڽ<EFBFBD>Ƭ<EFBFBD><C6AC> <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD><D3BC><EFBFBD> <20><><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD> <20><><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD>
{ POINT_MAGIC_ATT_BONUS_PER }, // 85 <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ݷ<EFBFBD> +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] =
{
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"<EFBFBD>ż<EFBFBD><EFBFBD><EFBFBD>",
"õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"<EFBFBD><EFBFBD><EFBFBD>"
};
const char * c_apszPrivNames[MAX_PRIV_NUM] =
{
"",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>",
"<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>",
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ <20><><EFBFBD><EFBFBD>",
};
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] =
/*
{
int lMapIndex;
2022-03-05 12:44:06 +02:00
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 },
};
//
// <20>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>Ͽ<EFBFBD> <20><>ġ<EFBFBD><C4A1>
//
// <20><><EFBFBD>̾Ƹ<CCBE><C6B8><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><> Ȯ<><C8AE>
const int aiAccessorySocketAddPct[ITEM_ACCESSORY_SOCKET_MAX_NUM] =
{
50, 50, 50
};
// <20>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD> <20><>ġ <20><><EFBFBD><EFBFBD> <20><>%<25><>ŭ<EFBFBD><C5AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0>ϴ<EFBFBD><CFB4><EFBFBD>
const int aiAccessorySocketEffectivePct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
0, 10, 20, 40
};
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ӽð<D3BD> 24, 12, 6
const int aiAccessorySocketDegradeTime[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
0, 3600 * 24, 3600 * 12, 3600 * 6
};
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
const int aiAccessorySocketPutPct[ITEM_ACCESSORY_SOCKET_MAX_NUM + 1] =
{
90, 80, 70, 0
};
// END_OF_ACCESSORY_REFINE
2022-03-05 19:59:39 +02:00
#include <common/length.h>
2022-03-05 12:44:06 +02:00
// from import_item_proto.c
typedef struct SValueName
{
const char * c_pszName;
int lValue;
2022-03-05 12:44:06 +02:00
} 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 <20><><EFBFBD>ǵǾ<C7B5><C7BE><EFBFBD><EFBFBD><EFBFBD>. INFINITE_AFFECT_DURATION = 0x1FFFFFFF
{ "INFINITE_AFFECT_DURATION", 0x1FFFFFFF },
{ "ENERGY", APPLY_ENERGY }, // <09><><EFBFBD><EFBFBD>
{ "COSTUME_ATTR_BONUS", APPLY_COSTUME_ATTR_BONUS }, // <09><><EFBFBD><EFBFBD>
{ "MAGIC_ATTBONUS_PER", APPLY_MAGIC_ATTBONUS_PER },
{ "MELEE_MAGIC_ATTBONUS_PER", APPLY_MELEE_MAGIC_ATTBONUS_PER },
{ NULL, 0 }
};
// from import_item_proto.c
int FN_get_apply_type(const char *apply_type_string)
2022-03-05 12:44:06 +02:00
{
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;
}