Implemented Renewal ASPD formula(bugreport:5644)

- all suggestions/contributions/comments regarding RE ASPD ATM will be entertained in [tid:63256]
Fixed bugreport:6176 where WM_LULLABY_DEEPSLEEP doesn't target all party and guild members.
Temporarily disable the official walk path until the right algorithm is formulated.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16378 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
rud0lp20 2012-07-05 16:49:25 +00:00
parent 70eb508450
commit 425f381859
13 changed files with 504 additions and 314 deletions

View File

@ -61,8 +61,11 @@ natural_heal_skill_interval: 10000
// The maximum weight for a character to carry when the character stops healing naturally. (in %)
natural_heal_weight_rate: 50
// Maximum atk speed. (Default 193, Highest allowed 199)
max_aspd: 193
// Maximum atk speed. (Default 190, Highest allowed 199)
max_aspd: 190
// Same as max_aspd, but for 3rd classes. (Default 193, Highest allowed 199)
max_third_aspd: 193
// Maximum walk speed rate (200 would be capped to twice the normal speed)
max_walk_speed: 300

View File

@ -177,7 +177,7 @@
675,Silver_Coin,Silver Coin,3,5000,,40,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
676,Silver_Coin_Moneybag,Bag of Silver Coins,3,50000,,400,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
677,White_Gold_Coin,Platinum Coin,3,2000,,40,,,,,0xFFFFFFFF,7,2,,,,,,{},{},{}
678,Poison_Bottle,Poison Bottle,2,5000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(Class == Job_Assassin_Cross || Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T) { sc_start SC_DPoison,60000,0; sc_start SC_ASPDPOTION3,60000,0; } else percentheal -100,-100; },{},{}
678,Poison_Bottle,Poison Bottle,2,5000,,100,,,,,0xFFFFFFFF,7,2,,,,,,{ if(Class == Job_Assassin_Cross || Class == Job_Guillotine_Cross || Class == Job_Guillotine_Cross_T) { sc_start SC_DPoison,60000,0; sc_start SC_ASPDPOTION3,60000,9; } else percentheal -100,-100; },{},{}
679,Gold_Pill,Pilule,2,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ if(rand(1000)<100) sc_start SC_DPoison,10000,0; sc_start SC_Poison,50000,0; },{},{}
680,Magical_Carnation,Magic Carnation,0,0,,1000,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 0,20; },{},{}
681,Memory_Of_Wedding,Sweet Memory of Marriage,2,50000,,10,,,,,0xFFFFFFFF,7,2,,,,,,{ if (getpartnerid()) sc_start SC_WEDDING,600000,0; },{},{}

271
db/re/job_db1.txt Normal file
View File

@ -0,0 +1,271 @@
// Job-specific Values Database
//
// Structure of Database:
// JobID,Weight,HPFactor,HPMultiplicator,SPFactor,Unarmed,Dagger,1HSword,2HSword,1HSpear,2HSpear,1HAxe,2HAxe,1HMace,2HMace(unused),Rod,Bow,Knuckle,Instrument,Whip,Book,Katar,Revolver,Rifle,Gatling Gun,Shotgun,Grenade Launcher,Fuuma Shuriken,2HStaff,Shield
//
// Novice
0, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540
// Swordman
1, 28000,70 ,500 ,200 ,440 ,510 ,510 ,580 ,610 ,690 ,590 ,640 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Magician
2, 22000,30 ,500 ,600 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,640
// Archer
3, 26000,50 ,500 ,200 ,440 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Acolyte
4, 24000,40 ,500 ,500 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 ,640 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,510
// Merchant
5, 28000,40 ,500 ,300 ,440 ,560 ,560 ,2000 ,2000 ,2000 ,520 ,590 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Thief
6, 24000,50 ,500 ,200 ,440 ,520 ,540 ,2000 ,2000 ,2000 ,640 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Knight
7, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Priest
8, 26000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,640 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490
// Wizard
9, 24000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620
// Blacksmith
10, 30000,90 ,500 ,400 ,440 ,540 ,540 ,2000 ,2000 ,2000 ,500 ,570 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Hunter
11, 27000,85 ,500 ,400 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Assassin
12, 24000,110 ,500 ,400 ,440 ,460 ,540 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Knight (Peco)
13, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Crusader
14, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Monk
15, 26000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620 ,490
// Sage
16, 24000,75 ,500 ,700 ,490 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,470 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,590
// Rogue
17, 24000,85 ,500 ,500 ,440 ,490 ,540 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Alchemist
18, 30000,90 ,500 ,400 ,440 ,540 ,490 ,2000 ,2000 ,2000 ,490 ,560 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
// Bard
19, 27000,75 ,300 ,600 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Dancer
20, 27000,75 ,300 ,600 ,400 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 ,2000 ,2000 ,450 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470
// Crusader (Peco)
21, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Wedding
22, 20000,0 ,500 ,100 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000
// Super Novice
23, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540
// Gunslinger
24, 28000,88 ,0 ,450 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,590 ,440 ,940 ,1040 ,2000 ,2000 ,600
// Ninja
25, 26000,80 ,0 ,515 ,440 ,470 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,500
// Novice High
4001, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540
// Swordman High
4002, 28000,70 ,500 ,200 ,440 ,510 ,510 ,580 ,610 ,690 ,590 ,640 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Magician High
4003, 22000,30 ,500 ,600 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,640
// Archer High
4004, 26000,50 ,500 ,200 ,440 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Acolyte High
4005, 24000,40 ,500 ,500 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 ,640 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,510
// Merchant High
4006, 28000,40 ,500 ,300 ,440 ,560 ,560 ,2000 ,2000 ,2000 ,520 ,590 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Thief High
4007, 24000,50 ,500 ,200 ,440 ,520 ,540 ,2000 ,2000 ,2000 ,640 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Lord Knight
4008, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// High Priest
4009, 26000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,2000 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490
// High Wizard
4010, 24000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620
// Whitesmith
4011, 30000,90 ,500 ,400 ,440 ,540 ,540 ,2000 ,2000 ,2000 ,500 ,570 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Sniper
4012, 27000,85 ,500 ,400 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Assassin Cross
4013, 24000,110 ,500 ,400 ,440 ,460 ,540 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Lord Knight (Peco)
4014, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Paladin
4015, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Champion
4016, 26000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620 ,490
// Professor
4017, 24000,75 ,500 ,700 ,490 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,470 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,590
// Stalker
4018, 24000,85 ,500 ,500 ,440 ,490 ,540 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Creator
4019, 30000,90 ,500 ,400 ,440 ,540 ,490 ,490 ,2000 ,2000 ,490 ,560 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
// Clown
4020, 27000,75 ,300 ,600 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Gypsy
4021, 27000,75 ,300 ,600 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Paladin (Peco)
4022, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Novice
4023, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540
// Baby Swordman
4024, 28000,70 ,500 ,200 ,440 ,510 ,510 ,580 ,610 ,690 ,590 ,640 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Magician
4025, 22000,30 ,500 ,600 ,540 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,640
// Baby Archer
4026, 26000,50 ,500 ,200 ,440 ,590 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Baby Acolyte
4027, 24000,40 ,500 ,500 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490 ,640 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,510
// Baby Merchant
4028, 28000,40 ,500 ,300 ,440 ,560 ,560 ,2000 ,2000 ,2000 ,520 ,590 ,540 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Thief
4029, 24000,50 ,500 ,200 ,440 ,520 ,540 ,2000 ,2000 ,2000 ,640 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Baby Knight
4030, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Priest
4031, 26000,75 ,500 ,800 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,640 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,640 ,490
// Baby Wizard
4032, 24000,55 ,500 ,900 ,540 ,580 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620
// Baby Blacksmith
4033, 30000,90 ,500 ,400 ,440 ,540 ,540 ,2000 ,2000 ,2000 ,500 ,570 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Hunter
4034, 27000,85 ,500 ,400 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Baby Assassin
4035, 24000,110 ,500 ,400 ,440 ,460 ,540 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Baby Knight (Peco)
4036, 28000,150 ,500 ,300 ,440 ,530 ,490 ,560 ,590 ,690 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Crusader
4037, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Monk
4038, 26000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,640 ,2000 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,620 ,490
// Baby Sage
4039, 24000,75 ,500 ,700 ,490 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,2000 ,2000 ,2000 ,2000 ,470 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,590
// Baby Rogue
4040, 24000,85 ,500 ,500 ,440 ,490 ,540 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Alchemist
4041, 30000,90 ,500 ,400 ,440 ,540 ,490 ,2000 ,2000 ,2000 ,490 ,560 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
// Baby Bard
4042, 27000,75 ,300 ,600 ,440 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Baby Dancer
4043, 27000,75 ,300 ,600 ,400 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 ,2000 ,2000 ,450 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470
// Baby Crusader (Peco)
4044, 28000,110 ,700 ,470 ,440 ,520 ,470 ,590 ,570 ,560 ,540 ,590 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Super Novice
4045, 20000,0 ,500 ,100 ,440 ,590 ,610 ,2000 ,2000 ,2000 ,540 ,2000 ,540 ,540 ,690 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,690 ,540
// Taekwon
4046, 28000,70 ,500 ,200 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Star Knight
4047, 28000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Star Knight (flying)
4048, 28000,90 ,650 ,470 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Soul Linker
4049, 24000,75 ,500 ,900 ,540 ,440 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,570 ,620
// Gangsi (Bongun/Munak)
4050, 24000,40 ,500 ,500 ,400 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,600 ,600 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,600 ,500
// Death Knight
4051, 28000,150 ,500 ,300 ,400 ,500 ,500 ,550 ,600 ,600 ,700 ,700 ,650 ,700 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Dark Collector
4052, 24000,75 ,500 ,700 ,450 ,525 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,625 ,2000 ,2000 ,2000 ,2000 ,550 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 625, 0
// Rune Knight (Regular)
4054, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Warlock (Regular)
4055, 24000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540
// Ranger (Regular)
4056, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
// Arch Bishop (Regular)
4057, 26000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540
// Mechanic (Regular)
4058, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Guillotine Cross (Regular)
4059, 24000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Rune Knight (Trans)
4060, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Warlock (Trans)
4061, 24000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540
// Ranger (Trans)
4062, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
// Arch Bishop (Trans)
4063, 26000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540
// Mechanic (Trans)
4064, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Guillotine Cross (Trans)
4065, 24000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Royal Guard (Regular)
4066, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Sorcerer (Regular)
4067, 24000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490
// Minstrel (Regular)
4068, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Wanderer (Regular)
4069, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Sura (Regular)
4070, 26000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470
// Genetic (Regular)
4071, 30000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
// Shadow Chaser (Regular)
4072, 24000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Royal Guard (Trans)
4073, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Sorcerer (Trans)
4074, 24000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490
// Minstrel (Trans)
4075, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Wanderer (Trans)
4076, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Sura (Trans)
4077, 26000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470
// Genetic (Trans)
4078, 30000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
// Shadow Chaser (Trans)
4079, 24000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Rune Knight (Dragon) (Regular)
4080, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Rune Knight (Dragon) (Trans)
4081, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Royal Guard (Gryphon) (Regular)
4082, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Royal Guard (Gryphon) (Trans)
4083, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Ranger (Waug) (Regular)
4084, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
// Ranger (Waug) (Trans)
4085, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
// Mechanic (Mado) (Regular)
4086, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Mechanic (Mado) (Trans)
4087, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Baby Rune Knight
4096, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Warlock
4097, 24000,55 ,500 ,900 ,490 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,540
// Baby Ranger
4098, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
// Baby Arch Bishop
4099, 26000,75 ,500 ,800 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,440 ,2000 ,640 ,2000 ,540 ,2000 ,2000 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,590 ,540
// Baby Mechanic
4100, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Baby Guillotine Cross
4101, 24000,110 ,500 ,400 ,440 ,460 ,690 ,2000 ,2000 ,2000 ,840 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,460 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530
// Baby Royal Guard
4102, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Sorcerer
4103, 24000,75 ,500 ,700 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490 ,490
// Baby Minstrel
4104, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Baby Wanderer
4105, 27000,75 ,300 ,600 ,440 ,560 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,2000 ,2000 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,510
// Baby Sura
4106, 26000,90 ,650 ,470 ,420 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,470 ,470 ,520 ,2000 ,430 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,540 ,470
// Baby Genetic
4107, 30000,90 ,500 ,400 ,440 ,540 ,480 ,2000 ,2000 ,2000 ,550 ,550 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480
// Baby Shadow Chaser
4108, 24000,85 ,500 ,500 ,440 ,470 ,510 ,2000 ,2000 ,2000 ,2030 ,2000 ,2000 ,2000 ,2000 ,510 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Rune Knight (Dragon)
4109, 28000,150 ,500 ,300 ,440 ,540 ,560 ,590 ,620 ,560 ,620 ,640 ,490 ,490 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Royal Guard (Gryphon)
4110, 28000,110 ,700 ,470 ,440 ,510 ,490 ,530 ,540 ,540 ,520 ,560 ,480 ,480 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,490
// Baby Ranger (Waug)
4111, 27000,85 ,500 ,400 ,440 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,530 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520
// Baby Mechanic (Mado)
4112, 30000,90 ,500 ,400 ,440 ,640 ,690 ,2000 ,2000 ,2000 ,490 ,520 ,520 ,520 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,500
// Super Novice (Expanded)
4190, 20000,0 ,500 ,100 ,500 ,650 ,700 ,2000 ,2000 ,2000 ,800 ,2000 ,700 ,700 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650 ,540
// Super Baby (Expanded)
4191, 20000,0 ,500 ,100 ,500 ,650 ,700 ,2000 ,2000 ,2000 ,800 ,2000 ,700 ,700 ,650 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 650 ,540
// Kagerou
4211, 26000,80 , 0 ,515 ,400 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000 ,500
// Oboro
4212, 26000,80 , 0 ,515 ,400 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000 ,500

View File

@ -1,230 +0,0 @@
// Job-specific values database,
// Used for Renewal-exclusive values, such as the shield ASPD penalty
// Job ID, Shield ASPD Penalty (value / 10)
//Novice
0,100
//Swordman
1,50
//Mage
2,50
//Archer
3,50
//Acolyte
4,50
//Merchant
5,50
//Thief
6,60
//Knight
7,50
//Priest
8,50
//Wizard
9,50
//Blacksmith
10,50
//Hunter
11,90
//Assassin
12,60
//Knight2
13,50
//Crusader
14,50
//Monk
15,50
//Sage
16,50
//Rogue
17,50
//Alchem
18,50
//Alchemist
18,50
//Bard
19,70
//Dancer
20,70
//Crusader2
21,50
//Wedding
22,50
//SuperNovice
23,50
//Gunslinger
24,60
//Ninja
25,60
//Xmas
26,50
//Summer
27,50
//NoviceHigh
4001,100
//SwordmanHigh
4002,50
//MageHigh
4003,50
//ArcherHigh
4004,50
//AcolyteHigh
4005,50
//MerchantHigh
4006,50
//ThiefHigh
4007,60
//LordKnight
4008,50
//HighPriest
4009,50
//HighWizard
4010,50
//Whitesmith
4011,50
//Sniper
4012,90
//AssassinCross
4013,60
//LordKnight2
4014,50
//Paladin
4015,50
//Champion
4016,50
//Professor
4017,50
//Stalker
4018,50
//Creator
4019,50
//Clown
4020,70
//Gypsy
4021,70
//Paladin2
4022,50
//Baby
4023,100
//BabySwordman
4024,50
//BabyMage
4025,50
//BabyArcher
4026,50
//BabyAcolyte
4027,50
//BabyMerchant
4028,50
//BabyThief
4029,60
//BabyKnight
4030,50
//BabyPriest
4031,50
//BabyWizard
4032,50
//BabyBlacksmith
4033,50
//BabyHunter
4034,90
//BabyAssassin
4035,60
//BabyKnight2
4036,50
//BabyCrusader
4037,50
//BabyMonk
4038,50
//BabySage
4039,50
//BabyRogue
4040,50
//BabyAlchem
4041,50
//BabyAlchemist
4041,50
//BabyBard
4042,70
//BabyDancer
4043,70
//BabyCrusader2
4044,50
//SuperBaby
4045,50
//Taekwon
4046,50
//StarGladiator
4047,50
//StarGladiator2
4048,50
//SoulLinker
4049,80
//RuneKnight
4054,50
//Warlock
4055,50
//Ranger
4056,80
//ArchBishop
4057,100
//Mechanic
4058,60
//GuillotineCross
4059,90
//RuneKnightT
4060,50
//WarlockT
4061,50
//RangerT
4062,80
//ArchBishopT
4063,100
//MechanicT
4064,60
//GuillotineCrossT
4065,90
//RoyalGuard
4066,50
//Sorcerer
4067,50
//Minstrel
4068,70
//Wanderer
4069,70
//Sura
4070,50
//Genetic
4071,50
//ShadowChaser
4072,40
//RoyalGuardT
4073,50
//SorcererT
4074,50
//MinstrelT
4075,50
//WandererT
4076,50
//SuraT
4077,50
//GeneticT
4078,50
//ShadowChaserT
4079,40
//RuneKnight2
4080,50
//RuneKnightT2
4081,50
//RoyalGuard2
4082,50
//RoyalGuardT2
4083,50
//Ranger2
4084,50
//RangerT2
4085,50
//Mechanic2
4086,50
//MechanicT2
4087,50

View File

@ -5160,7 +5160,8 @@ static const struct _battle_data {
{ "natural_heal_skill_interval", &battle_config.natural_heal_skill_interval, 10000, NATURAL_HEAL_INTERVAL, INT_MAX, },
{ "natural_heal_weight_rate", &battle_config.natural_heal_weight_rate, 50, 50, 101 },
{ "arrow_decrement", &battle_config.arrow_decrement, 1, 0, 2, },
{ "max_aspd", &battle_config.max_aspd, 199, 100, 199, },
{ "max_aspd", &battle_config.max_aspd, 190, 100, 199, },
{ "max_third_aspd", &battle_config.max_third_aspd, 193, 100, 199, },
{ "max_walk_speed", &battle_config.max_walk_speed, 300, 100, 100*DEFAULT_WALK_SPEED, },
{ "max_lv", &battle_config.max_lv, 99, 0, MAX_LEVEL, },
{ "aura_lv", &battle_config.aura_lv, 99, 0, INT_MAX, },
@ -5453,6 +5454,7 @@ void battle_adjust_conf()
{
battle_config.monster_max_aspd = 2000 - battle_config.monster_max_aspd*10;
battle_config.max_aspd = 2000 - battle_config.max_aspd*10;
battle_config.max_third_aspd = 2000 - battle_config.max_third_aspd*10;
battle_config.max_walk_speed = 100*DEFAULT_WALK_SPEED/battle_config.max_walk_speed;
battle_config.max_cart_weight *= 10;

View File

@ -469,6 +469,7 @@ extern struct Battle_Config
int max_third_parameter;
int max_baby_third_parameter;
int atcommand_max_stat_bypass;
int max_third_aspd;
int mvp_tomb_enabled;

View File

@ -65,4 +65,14 @@
/// - weapon and status ATK are increased
#define RENEWAL_EDP
/// renewal ASPD [malufett]
/// (disable by commenting the line)
///
/// leave this line to enable renewal ASPD
/// - shield penalty is applied
/// - agi has a greater factor to your ASPD increase
/// - there is a change in how skill/items give ASPD
/// - some skills/items ASPD bonus won't stack
#define RENEWAL_ASPD
#endif // _CONFIG_RENEWAL_H_

View File

@ -2214,7 +2214,11 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
break;
case SP_ASPD_RATE: //Stackable increase - Made it linear as per rodatazone
if(sd->state.lr_flag != 2)
#ifndef RENEWAL_ASPD
status->aspd_rate -= 10*val;
#else
status->aspd_rate2 += val;
#endif
break;
case SP_HP_RECOV_RATE:
if(sd->state.lr_flag != 2)

View File

@ -4352,7 +4352,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
break;
case WM_LULLABY_DEEPSLEEP:
if( rnd()%100 < 88 + 2 * skilllv )
if( bl != src && rnd()%100 < 88 + 2 * skilllv )
sc_start(bl,status_skill2sc(skillid),100,skilllv,skill_get_time(skillid,skilllv));
break;
@ -9556,7 +9556,7 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
case WM_LULLABY_DEEPSLEEP:
i = skill_get_splash(skillid,skilllv);
map_foreachinarea(skill_area_sub,src->m,x-i,y-i,x+i,y+i,BL_CHAR,
src,skillid,skilllv,tick,flag|BCT_ENEMY|1,skill_castend_damage_id);
src,skillid,skilllv,tick,flag|(skillid==WM_LULLABY_DEEPSLEEP?BCT_ALL:BCT_ENEMY)|1,skill_castend_damage_id);
break;
/**
* Guilotine Cross

View File

@ -37,7 +37,7 @@
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <math.h>
//Regen related flags.
enum e_regen
@ -53,7 +53,11 @@ static int hp_coefficient[CLASS_COUNT];
static int hp_coefficient2[CLASS_COUNT];
static int hp_sigma_val[CLASS_COUNT][MAX_LEVEL+1];
static int sp_coefficient[CLASS_COUNT];
#ifdef RENEWAL_ASPD
static int aspd_base[CLASS_COUNT][MAX_WEAPON_TYPE+1];
#else
static int aspd_base[CLASS_COUNT][MAX_WEAPON_TYPE]; //[blackhole89]
#endif
// bonus values and upgrade chances for refining equipment
static struct {
@ -64,13 +68,7 @@ static struct {
static int atkmods[3][MAX_WEAPON_TYPE]; // •<>ŠíATKƒTƒCƒY<C692>C<EFBFBD>³(size_fix.txt)
static char job_bonus[CLASS_COUNT][MAX_LEVEL];
#ifdef RENEWAL
enum {
SHIELD_ASPD,
RE_JOB_DB_MAX,
} RE_JOB_DB;
static int re_job_db[CLASS_COUNT][RE_JOB_DB_MAX];//[RRInd]
#endif
static struct eri *sc_data_ers; //For sc_data entries
static struct status_data dummy_status;
@ -1753,7 +1751,29 @@ int status_check_visibility(struct block_list *src, struct block_list *target)
int status_base_amotion_pc(struct map_session_data* sd, struct status_data* status)
{
int amotion;
#ifdef RENEWAL_ASPD
short mod = -1;
switch( sd->weapontype2 ){ // adjustment for dual weilding
case W_DAGGER: mod = 0; break; // 0, 1, 1
case W_1HSWORD:
case W_1HAXE: mod = 1;
if( (sd->class_&MAPID_THIRDMASK) == MAPID_GUILLOTINE_CROSS ) // 0, 2, 3
mod = sd->weapontype2 / W_1HSWORD + W_1HSWORD / sd->weapontype2 ;
}
amotion = ( sd->status.weapon < MAX_WEAPON_TYPE && mod < 0 )
? (aspd_base[pc_class2idx(sd->status.class_)][sd->status.weapon]) // single weapon
: ((aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2] // dual-wield
+ aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2]) * 6 / 10 + 10 * mod
- aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype2]
+ aspd_base[pc_class2idx(sd->status.class_)][sd->weapontype1]);
if ( sd->status.shield )
amotion += ( 2000 - aspd_base[pc_class2idx(sd->status.class_)][W_FIST] ) +
( aspd_base[pc_class2idx(sd->status.class_)][MAX_WEAPON_TYPE] - 2000 );
#else
// base weapon delay
amotion = (sd->status.weapon < MAX_WEAPON_TYPE)
? (aspd_base[pc_class2idx(sd->status.class_)][sd->status.weapon]) // single weapon
@ -1761,31 +1781,10 @@ int status_base_amotion_pc(struct map_session_data* sd, struct status_data* stat
// percentual delay reduction from stats
amotion -= amotion * (4*status->agi + status->dex)/1000;
#endif
// raw delay adjustment from bAspd bonus
amotion += sd->bonus.aspd_add;
#ifdef RENEWAL
if( sd->status.shield ) {// bearing a shield decreases your ASPD by a fixed value depending on your class
amotion += re_job_db[pc_class2idx(sd->status.class_)][SHIELD_ASPD];
}
if( sd->sc.count ) {// renewal absolute ASPD modifiers
int i;
if ( sd->sc.data[i=SC_ASPDPOTION3] ||
sd->sc.data[i=SC_ASPDPOTION2] ||
sd->sc.data[i=SC_ASPDPOTION1] ||
sd->sc.data[i=SC_ASPDPOTION0] )
amotion -= sd->sc.data[i]->val1*10;
if( sd->sc.data[SC_BERSERK] )//berserk doesn't stack with the quickens.
amotion -= 150;
else if( sd->sc.data[SC_SPEARQUICKEN] || sd->sc.data[SC_TWOHANDQUICKEN] )
amotion -= 70;
if( sd->sc.data[SC_ADRENALINE] )/* +7 for self, +6 for others */
amotion -= sd->sc.data[SC_ADRENALINE]->val2 ? 70 : 60;
}
#endif
return amotion;
}
@ -2855,9 +2854,10 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
// Basic ASPD value
i = status_base_amotion_pc(sd,status);
status->amotion = cap_value(i,battle_config.max_aspd,2000);
status->amotion = cap_value(i,((sd->class_&JOBL_THIRD) ? battle_config.max_third_aspd : battle_config.max_aspd),2000);
// Relative modifiers from passive skills
#ifndef RENEWAL_ASPD
if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
status->aspd_rate -= 5*skill;
if((skill = pc_checkskill(sd,SG_DEVIL)) > 0 && !pc_nextjobexp(sd))
@ -2869,6 +2869,19 @@ int status_calc_pc_(struct map_session_data* sd, bool first)
status->aspd_rate += 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY);
else if(pc_isridingdragon(sd))
status->aspd_rate += 250-50*pc_checkskill(sd,RK_DRAGONTRAINING);
#else // needs more info
if((skill=pc_checkskill(sd,SA_ADVANCEDBOOK))>0 && sd->status.weapon == W_BOOK)
status->aspd_rate += 5*skill;
if((skill = pc_checkskill(sd,SG_DEVIL)) > 0 && !pc_nextjobexp(sd))
status->aspd_rate += 30*skill;
if((skill=pc_checkskill(sd,GS_SINGLEACTION))>0 &&
(sd->status.weapon >= W_REVOLVER && sd->status.weapon <= W_GRENADE))
status->aspd_rate += ((skill+1)/2) * 10;
if(pc_isriding(sd))
status->aspd_rate -= 500-100*pc_checkskill(sd,KN_CAVALIERMASTERY);
else if(pc_isridingdragon(sd))
status->aspd_rate -= 250-50*pc_checkskill(sd,RK_DRAGONTRAINING);
#endif
status->adelay = 2*status->amotion;
@ -3187,6 +3200,7 @@ static signed short status_calc_mdef2(struct block_list *,struct status_change *
static unsigned short status_calc_speed(struct block_list *,struct status_change *,int);
static short status_calc_aspd_rate(struct block_list *,struct status_change *,int);
static unsigned short status_calc_dmotion(struct block_list *bl, struct status_change *sc, int dmotion);
static short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag);
static unsigned int status_calc_maxhp(struct block_list *,struct status_change *,unsigned int);
static unsigned int status_calc_maxsp(struct block_list *,struct status_change *,unsigned int);
static unsigned char status_calc_element(struct block_list *bl, struct status_change *sc, int element);
@ -3721,12 +3735,23 @@ void status_calc_bl_main(struct block_list *bl, /*enum scb_flag*/int flag)
if( bl->type&BL_PC )
{
amotion = status_base_amotion_pc(sd,status);
#ifndef RENEWAL_ASPD
status->aspd_rate = status_calc_aspd_rate(bl, sc, b_status->aspd_rate);
if(status->aspd_rate != 1000)
amotion = amotion*status->aspd_rate/1000;
#else
// aspd = baseaspd + floor(sqrt((agi^2/2) + (dex^2/5))/4 + (potskillbonus*agi/200))
amotion -= (int)(sqrt( (pow(status->agi, 2) / 2) + (pow(status->dex, 2) / 5) ) / 4 + (status_calc_aspd(bl, sc, 1) * status->agi / 200)) * 10;
status->amotion = cap_value(amotion,battle_config.max_aspd,2000);
if( (status_calc_aspd(bl, sc, 2) + status->aspd_rate2) != 0 ) // RE ASPD percertage modifier
amotion -= ( amotion - ((sd->class_&JOBL_THIRD) ? battle_config.max_third_aspd : battle_config.max_aspd) )
* (status_calc_aspd(bl, sc, 2) + status->aspd_rate2) / 100;
if(status->aspd_rate != 1000) // absolute percentage modifier
amotion = ( 200 - (200-amotion/10) * status->aspd_rate / 1000 ) * 10;
#endif
status->amotion = cap_value(amotion,((sd->class_&JOBL_THIRD) ? battle_config.max_third_aspd : battle_config.max_aspd),2000);
status->adelay = 2*status->amotion;
}
@ -4968,13 +4993,137 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
return (short)cap_value(speed,10,USHRT_MAX);
}
// flag&1 - fixed value [malufett]
// flag&2 - percentage value
static short status_calc_aspd(struct block_list *bl, struct status_change *sc, short flag)
{
int i, pots = 0, skills1 = 0, skills2 = 0;
if(!sc || !sc->count)
return 0;
if(sc->data[i=SC_ASPDPOTION3] ||
sc->data[i=SC_ASPDPOTION2] ||
sc->data[i=SC_ASPDPOTION1] ||
sc->data[i=SC_ASPDPOTION0])
pots += sc->data[i]->val1;
if( !sc->data[SC_QUAGMIRE] ){
if(sc->data[SC_STAR_COMFORT])
skills1 = 5; // needs more info
if(sc->data[SC_TWOHANDQUICKEN] && skills1 < 7)
skills1 = 7;
if(sc->data[SC_ONEHAND] && skills1 < 7) skills1 = 7;
if(sc->data[SC_MERC_QUICKEN] && skills1 < 7) // needs more info
skills1 = 7;
if(sc->data[SC_ADRENALINE2] && skills1 < 6)
skills1 = 6;
if(sc->data[SC_ADRENALINE] && skills1 < 7)
skills1 = 7;
if(sc->data[SC_SPEARQUICKEN] && skills1 < 7)
skills1 = 7;
if(sc->data[SC_GATLINGFEVER] && skills1 < 9) // needs more info
skills1 = 9;
if(sc->data[SC_FLEET] && skills1 < 5)
skills1 = 5;
if(sc->data[SC_ASSNCROS] &&
skills1 < 5+1*sc->data[SC_ASSNCROS]->val1) // needs more info
{
if (bl->type!=BL_PC)
skills1 = 4+1*sc->data[SC_ASSNCROS]->val1;
else
switch(((TBL_PC*)bl)->status.weapon)
{
case W_BOW:
case W_REVOLVER:
case W_RIFLE:
case W_GATLING:
case W_SHOTGUN:
case W_GRENADE:
break;
default:
skills1 = 5+1*sc->data[SC_ASSNCROS]->val1;
}
}
}
if(sc->data[SC_BERSERK] && skills1 < 15)
skills1 = 15;
else if(sc->data[SC_MADNESSCANCEL] && skills1 < 15) // needs more info
skills1 = 15;
if(sc->data[SC_DONTFORGETME])
skills2 -= sc->data[SC_DONTFORGETME]->val2; // needs more info
if(sc->data[SC_LONGING])
skills2 -= sc->data[SC_LONGING]->val2; // needs more info
if(sc->data[SC_STEELBODY])
skills2 -= 25;
if(sc->data[SC_SKA])
skills2 -= 25;
if(sc->data[SC_DEFENDER])
skills2 -= sc->data[SC_DEFENDER]->val4; // needs more info
if(sc->data[SC_GOSPEL] && sc->data[SC_GOSPEL]->val4 == BCT_ENEMY) // needs more info
skills2 -= 25;
if(sc->data[SC_GRAVITATION])
skills2 -= sc->data[SC_GRAVITATION]->val2; // needs more info
if(sc->data[SC_JOINTBEAT]) { // needs more info
if( sc->data[SC_JOINTBEAT]->val2&BREAK_WRIST )
skills2 -= 25;
if( sc->data[SC_JOINTBEAT]->val2&BREAK_KNEE )
skills2 -= 10;
}
if( sc->data[SC_FREEZING] )
skills2 -= 30;
if( sc->data[SC_HALLUCINATIONWALK_POSTDELAY] )
skills2 -= 50;
if( sc->data[SC_FIGHTINGSPIRIT] && sc->data[SC_FIGHTINGSPIRIT]->val2 )
skills2 += sc->data[SC_FIGHTINGSPIRIT]->val2;
if( sc->data[SC_PARALYSE] )
skills2 -= 10;
if( sc->data[SC__BODYPAINT] )
skills2 -= 2 + 5 * sc->data[SC__BODYPAINT]->val1;
if( sc->data[SC__INVISIBILITY] )
skills2 -= sc->data[SC__INVISIBILITY]->val2 ;
if( sc->data[SC__GROOMY] )
skills2 -= sc->data[SC__GROOMY]->val2;
if( sc->data[SC_SWINGDANCE] )
skills2 += sc->data[SC_SWINGDANCE]->val2;
if( sc->data[SC_DANCEWITHWUG] )
skills2 += sc->data[SC_DANCEWITHWUG]->val3;
if( sc->data[SC_GLOOMYDAY] )
skills2 -= sc->data[SC_GLOOMYDAY]->val3;
if( sc->data[SC_EARTHDRIVE] )
skills2 -= 25;
if( sc->data[SC_GT_CHANGE] )
skills2 += (sc->data[SC_GT_CHANGE]->val2/200);
if( sc->data[SC_GT_REVITALIZE] )
skills2 += sc->data[SC_GT_REVITALIZE]->val2;
if( sc->data[SC_MELON_BOMB] )
skills2 -= sc->data[SC_MELON_BOMB]->val1;
if( sc->data[SC_BOOST500] )
skills2 += sc->data[SC_BOOST500]->val1;
if( sc->data[SC_EXTRACT_SALAMINE_JUICE] )
skills2 += sc->data[SC_EXTRACT_SALAMINE_JUICE]->val1;
if( sc->data[SC_INCASPDRATE] )
skills2 += sc->data[SC_INCASPDRATE]->val1;
return ( flag&1? (skills1 + pots) : skills2 );
}
/// Calculates an object's ASPD modifier (alters the base amotion value).
/// Note that the scale of aspd_rate is 1000 = 100%.
static short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate)
{
#ifndef RENEWAL
int i;
#endif
if(!sc || !sc->count)
return cap_value(aspd_rate,0,SHRT_MAX);
@ -4983,11 +5132,11 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
int max = 0;
if(sc->data[SC_STAR_COMFORT])
max = sc->data[SC_STAR_COMFORT]->val2;
#ifndef RENEWAL
if(sc->data[SC_TWOHANDQUICKEN] &&
max < sc->data[SC_TWOHANDQUICKEN]->val2)
max = sc->data[SC_TWOHANDQUICKEN]->val2;
#endif
if(sc->data[SC_ONEHAND] &&
max < sc->data[SC_ONEHAND]->val2)
max = sc->data[SC_ONEHAND]->val2;
@ -4999,7 +5148,7 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
if(sc->data[SC_ADRENALINE2] &&
max < sc->data[SC_ADRENALINE2]->val3)
max = sc->data[SC_ADRENALINE2]->val3;
#ifndef RENEWAL
if(sc->data[SC_ADRENALINE] &&
max < sc->data[SC_ADRENALINE]->val3)
max = sc->data[SC_ADRENALINE]->val3;
@ -5007,7 +5156,6 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
if(sc->data[SC_SPEARQUICKEN] &&
max < sc->data[SC_SPEARQUICKEN]->val2)
max = sc->data[SC_SPEARQUICKEN]->val2;
#endif
if(sc->data[SC_GATLINGFEVER] &&
max < sc->data[SC_GATLINGFEVER]->val2)
@ -5038,23 +5186,19 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
}
aspd_rate -= max;
//These stack with the rest of bonuses.
#ifndef RENEWAL
if(sc->data[SC_BERSERK])
aspd_rate -= 300;
else
#endif
if(sc->data[SC_MADNESSCANCEL])
aspd_rate -= 200;
}
#ifndef RENEWAL // non-renewal variable ASPD improvement
if( sc->data[i=SC_ASPDPOTION3] ||
sc->data[i=SC_ASPDPOTION2] ||
sc->data[i=SC_ASPDPOTION1] ||
sc->data[i=SC_ASPDPOTION0] )
aspd_rate -= sc->data[i]->val2;
#endif
if(sc->data[SC_DONTFORGETME])
aspd_rate += 10 * sc->data[SC_DONTFORGETME]->val2;
@ -6864,11 +7008,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
case SC_EXPLOSIONSPIRITS:
val2 = 75 + 25*val1; //Cri bonus
break;
#ifndef RENEWAL
case SC_ASPDPOTION0:
case SC_ASPDPOTION1:
case SC_ASPDPOTION2:
#endif
case SC_ASPDPOTION3:
val2 = 50*(2+type-SC_ASPDPOTION0);
break;
@ -10415,26 +10558,6 @@ int status_get_refine_chance(enum refine_type wlv, int refine)
* size_fix.txt - size adjustment table for weapons
* refine_db.txt - refining data table
*------------------------------------------*/
#ifdef RENEWAL
static bool status_readdb_job_re(char* fields[], int columns, int current) {
int idx, class_;
unsigned int i;
class_ = atoi(fields[0]);
if(!pcdb_checkid(class_)) {
ShowWarning("status_readdb_job_re: Invalid job class %d specified.\n", class_);
return false;
}
idx = pc_class2idx(class_);
for(i = 0; i < RE_JOB_DB_MAX; i++) {
re_job_db[idx][i] = atoi(fields[i+1]);
}
return true;
}
#endif
static bool status_readdb_job1(char* fields[], int columns, int current)
{// Job-specific values (weight, HP, SP, ASPD)
int idx, class_;
@ -10453,8 +10576,11 @@ static bool status_readdb_job1(char* fields[], int columns, int current)
hp_coefficient[idx] = atoi(fields[2]);
hp_coefficient2[idx] = atoi(fields[3]);
sp_coefficient[idx] = atoi(fields[4]);
#ifdef RENEWAL_ASPD
for(i = 0; i <= MAX_WEAPON_TYPE; i++)
#else
for(i = 0; i < MAX_WEAPON_TYPE; i++)
#endif
{
aspd_base[idx][i] = atoi(fields[i+5]);
}
@ -10539,9 +10665,6 @@ int status_readdb(void)
memset(hp_coefficient2, 0, sizeof(hp_coefficient2));
memset(sp_coefficient, 0, sizeof(sp_coefficient));
memset(aspd_base, 0, sizeof(aspd_base));
#ifdef RENEWAL
memset(re_job_db, 0, sizeof(re_job_db));
#endif
// job_db2.txt
memset(job_bonus,0,sizeof(job_bonus)); // Job-specific stats bonus
@ -10564,12 +10687,14 @@ int status_readdb(void)
// read databases
//
sv_readdb(db_path, "job_db1.txt", ',', 5+MAX_WEAPON_TYPE, 5+MAX_WEAPON_TYPE, -1, &status_readdb_job1);
#ifdef RENEWAL_ASPD
sv_readdb(db_path, "re/job_db1.txt", ',', 6+MAX_WEAPON_TYPE, 6+MAX_WEAPON_TYPE, -1, &status_readdb_job1);
#else
sv_readdb(db_path, "pre-re/job_db1.txt", ',', 5+MAX_WEAPON_TYPE, 5+MAX_WEAPON_TYPE, -1, &status_readdb_job1);
#endif
sv_readdb(db_path, "job_db2.txt", ',', 1, 1+MAX_LEVEL, -1, &status_readdb_job2);
sv_readdb(db_path, "size_fix.txt", ',', MAX_WEAPON_TYPE, MAX_WEAPON_TYPE, ARRAYLENGTH(atkmods), &status_readdb_sizefix);
#ifdef RENEWAL
sv_readdb(db_path, DBPATH"job_db_extra.txt", ',', 1+RE_JOB_DB_MAX, 1+RE_JOB_DB_MAX, -1, &status_readdb_job_re);
#endif
sv_readdb(db_path, DBPATH"refine_db.txt", ',', 4+MAX_REFINE, 4+MAX_REFINE, ARRAYLENGTH(refine_info), &status_readdb_refine);
return 0;

View File

@ -1513,6 +1513,9 @@ struct status_data {
short
hit, flee, cri, flee2,
def2, mdef2,
#ifdef RENEWAL_ASPD
aspd_rate2,
#endif
aspd_rate;
/**
* defType is REMODE dependent and defined in src/map/config/data/const.h

View File

@ -322,9 +322,10 @@ int unit_walktoxy( struct block_list *bl, short x, short y, int flag)
ud = unit_bl2ud(bl);
if( ud == NULL) return 0;
#ifdef OFFICIAL_WALKPATH
if( !path_search_long(NULL, bl->m, bl->x, bl->y, x, y, CELL_CHKWALL) ) return 0;
#endif
// disabled until we find the correct algorithm. [malufett]
//#ifdef OFFICIAL_WALKPATH
// if( !path_search_long(NULL, bl->m, bl->x, bl->y, x, y, CELL_CHKWALL) ) return 0;
//#endif
if (flag&4 && DIFF_TICK(ud->canmove_tick, gettick()) > 0 &&
DIFF_TICK(ud->canmove_tick, gettick()) < 2000)
{ // Delay walking command. [Skotlex]