diff --git a/db/pre-re/job_db1.txt b/db/pre-re/job_db1.txt index 720e5a0d43..e27d87268d 100644 --- a/db/pre-re/job_db1.txt +++ b/db/pre-re/job_db1.txt @@ -280,7 +280,7 @@ // Oboro 4212, 26000,80 , 0 ,540 ,400 ,500 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 750 ,2000 // Rebellion -4215, 28000,89 , 0 ,469 ,500 ,2000, 2000, 2000, 2000, 2000, 2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 , 700 , 750 , 700 ,1500 ,1500 ,2000 ,2000 +4215, 28000,90 ,650 ,469 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 ,610 ,540 ,940 ,1040 ,2000 ,2000 // Summoner - Placeholder 4218, 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 // Baby Summoner - Placeholder diff --git a/db/pre-re/skill_cast_db.txt b/db/pre-re/skill_cast_db.txt index b8ca6384f7..85249535a4 100644 --- a/db/pre-re/skill_cast_db.txt +++ b/db/pre-re/skill_cast_db.txt @@ -1638,43 +1638,43 @@ //-- RL_RICHS_COIN 2552,0,1000,0,600000,0,3000 //-- RL_MASS_SPIRAL -2553,1000,1000,0,0,30000,10000 +2553,2000,1000,0,0,30000,2000 //-- RL_BANISHING_BUSTER -2554,3000:2500:2000:1500:1000,0,0,0,0,10000 +2554,3000:2500:2000:1500:1000,2000,0,0,0,10000 //-- RL_B_TRAP -2555,0,0,0,10000:11000:12000:13000:14000,6000:7000:8000:9000:10000,0 +2555,0,2500:2000:1500:1000:500,0,10000,9000:14000:19000:24000:29000,10000 //-- RL_FLICKER 2556,0,0,0,0,0,10000 //-- RL_S_STORM -2557,3000:2500:2000:1500:1000,0,0,0,0,2000 +2557,3000:2500:2000:1500:1000,2000,0,0,0,2000 //-- RL_E_CHAIN -2558,0,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,5000 +2558,1000,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,0 //-- RL_QD_SHOT -2559,0,1000,0,1500,0,5000 +2559,0,0,0,1500,0,0 //-- RL_C_MARKER 2560,0,0,0,30000,0,1000 //-- RL_FIREDANCE -2561,0,2000,0,0,0,5000 +2561,0,500,0,0,0,5000 //-- RL_H_MINE -2562,1500,0,0,30000,15000,5000:4500:4000:3500:3000 +2562,1000,1000,0,50000,15000,5000:4500:4000:3500:3000 //-- RL_P_ALTER -2563,0,1000,0,30000:45000:60000:75000:90000,0,5000 +2563,0,0,0,30000:45000:60000:75000:90000,0,0 //-- RL_FALLEN_ANGEL -2564,500,1500,0,0,0,10000:8000:6000:4000:2000 +2564,0,0,0,2000,0,0 //-- RL_R_TRIP -2565,0,1000,0,0,0,1000 +2565,0,1000,0,0,0,3000:2500:2000:1500:1000 //-- RL_D_TAIL -2566,500,2000,0,0,0,5000 +2566,1200:1400:1600:1800:2000,2000,0,0,0,5000 //-- RL_FIRE_RAIN -2567,1800:1600:1400:1200:1000,2000,0,100,0,5000 +2567,0,1000,0,100,0,5000 //-- RL_HEAT_BARREL -2568,0,1000,0,60000,10000,10000 +2568,2000,1000,0,60000,0,100000:95000:90000:85000:80000 //-- RL_AM_BLAST 2569,2000,1000,0,0,6000:7000:8000:9000:10000,5000 //-- RL_SLUGSHOT -2570,5000:6000:7000:8000:9000,1000,0,0,2000,10000 +2570,5000:6000:7000:8000:9000,1000,0,0,2000,5000 //-- RL_HAMMER_OF_GOD -2571,8000,2000,0,0,3000:3000:4000:4000:5000,30000 +2571,0,2000,0,0,3000:3000:4000:4000:5000,30000 //-- RL_R_TRIP_PLUSATK //2572,0,0,0,0,0,0 //-- RL_B_FLICKER_ATK diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index c133f892c6..d24be6450f 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -1269,25 +1269,25 @@ // Rebellion //2551,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0, RL_GLITTERING_GREED,Flip The Coin Greed 2552,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, RL_RICHS_COIN,Rich's Coin -2553,15,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_MASS_SPIRAL,Mass Spiral -2554,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x10020, RL_BANISHING_BUSTER,Banishing Buster -2555,3,6,2,0,0x1,1,5,1,no,0,0,3,misc,0,0x0, RL_B_TRAP,Bind Trap +2553,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_MASS_SPIRAL,Mass Spiral +2554,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x10020, RL_BANISHING_BUSTER,Banishing Buster +2555,3:4:4:5:5,6,2,0,0x1,1,5,1,no,0,0,1,misc,0,0x0, RL_B_TRAP,Bind Trap 2556,0,6,4,0,0x3,-1,1,1,no,0,0,0,none,0,0x0, RL_FLICKER,Flicker -2557,9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_S_STORM,Shatter Storm +2557,-9,6,1,-1,0x2,2:2:2:2:3,5,1,no,0,0,0,weapon,0,0x0, RL_S_STORM,Shatter Storm 2558,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0, RL_E_CHAIN,Eternal Chain -2559,-9,6,4,-1,0x3,21,1,1,no,0,0x0,0,weapon,0,0x0, RL_QD_SHOT,Quick Draw Shot -2560,11,6,1,0,0x1,0,1,1,no,0,0,3,none,0,0x0, RL_C_MARKER,Crimson Marker -2561,0,6,4,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_FIREDANCE,Fire Dance -2562,7:8:9:10:11,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_H_MINE,Howling Mine +2559,-9,6,4,-1,0x0,10,1,1,no,0,0x0,0,weapon,0,0x0, RL_QD_SHOT,Quick Draw Shot +2560,-9,6,1,0,0x1,0,1,1,no,0,0,3,none,0,0x0, RL_C_MARKER,Crimson Marker +2561,5,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, RL_FIREDANCE,Fire Dance +2562,-9,6,1,-1,0x0,2,5,1,no,0,0,0,weapon,0,0x0, RL_H_MINE,Howling Mine 2563,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_P_ALTER,Platinum Alter -2564,9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_FALLEN_ANGEL,Fallen Angel -2565,0,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0, RL_R_TRIP,Round Trip -2566,0,6,4,-1,0x3,-1,5,1,no,0,0,0,weapon,0,0x0, RL_D_TAIL,Dragon Tail -2567,9,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0, RL_FIRE_RAIN,Fire Rain +2564,-9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_FALLEN_ANGEL,Fallen Angel +2565,5,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0, RL_R_TRIP,Round Trip +2566,5,6,4,-1,0x3,-1,5,1,no,0,0,0,weapon,0,0x0, RL_D_TAIL,Dragon Tail +2567,2,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0, RL_FIRE_RAIN,Fire Rain 2568,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_HEAT_BARREL,Heat Barrel -2569,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_AM_BLAST,Anti-Material Blast -2570,9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_SLUGSHOT,Slug Shot -2571,7:8:9:10:11,6,2,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_HAMMER_OF_GOD,Hammer of God +2569,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_AM_BLAST,Anti-Material Blast +2570,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,6,0x0, RL_SLUGSHOT,Slug Shot +2571,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_HAMMER_OF_GOD,Hammer of God 2572,0,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0, RL_R_TRIP_PLUSATK,Round Trip Plus Attack //2573,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0, RL_B_FLICKER_ATK,Bind Flicker Attack //2574,0,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0, RL_GLITTERING_GREED_ATK,Flip The Coin Greed Attack diff --git a/db/pre-re/skill_require_db.txt b/db/pre-re/skill_require_db.txt index 1ff4be7f25..fb2bc12b37 100644 --- a/db/pre-re/skill_require_db.txt +++ b/db/pre-re/skill_require_db.txt @@ -888,26 +888,26 @@ //**** // Rebellion //2551,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_GLITTERING_GREED -2552,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_RICHS_COIN -2553,0,0,80:84:88:92:96,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL -2554,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER -2555,0,0,30:32:34:36:38,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP -2556,0,0,2,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FLICKER -2557,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_S_STORM -2558,0,0,45,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_E_CHAIN -2559,0,0,5,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_QD_SHOT -2560,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_C_MARKER -2561,0,0,10:15:20:25:30,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIREDANCE -2562,0,0,45:50:55:60:65,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_H_MINE -2563,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_P_ALTER -2564,0,0,90,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL -2565,0,0,40:45:50:55:60,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP -2566,0,0,60:70:80:90:100,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_D_TAIL -2567,0,0,70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN -2568,0,0,30:40:50:60:70,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL -2569,0,0,80:84:88:92:96,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_AM_BLAST -2570,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_SLUGSHOT -2571,0,0,70:80:90:100:110,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD +2552,0,0,10,0,0,100,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_RICHS_COIN +2553,0,0,40:44:48:52:56,0,0,0,18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL +2554,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER +2555,0,0,30:32:34:36:38,0,0,0,17:18:19:20:21,0,0,none,0,1,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP +2556,0,0,2,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FLICKER +2557,0,0,50:55:60:65:70,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_S_STORM +2558,0,0,45,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_E_CHAIN +2559,0,0,5,0,0,0,17:18:19:20:21,3:4:5,1,none,SC_QD_SHOT_READY,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_QD_SHOT +2560,0,0,10,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_C_MARKER +2561,0,0,12:14:16:18:20,0,0,0,17,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIREDANCE +2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_H_MINE +2563,0,0,20:24:28:32:36,0,0,0,99,3,1,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13201 //RL_P_ALTER +2564,0,0,10,0,0,0,17,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL +2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP +2566,0,0,60:70:80:90:100,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_D_TAIL +2567,0,0,70,0,0,0,19,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN +2568,0,0,30,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL +2569,0,0,80:84:88:92:96,0,0,0,18,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_AM_BLAST +2570,0,0,80:84:88:92:96,0,0,0,20,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_SLUGSHOT +2571,0,0,35:40:45:50:55,0,0,0,18,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD 2572,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP_PLUSATK //2573,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_FLICKER_ATK //2574,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_GLITTERING_GREED_ATK diff --git a/db/pre-re/skill_tree.txt b/db/pre-re/skill_tree.txt index 053cd069e9..9397a9f334 100644 --- a/db/pre-re/skill_tree.txt +++ b/db/pre-re/skill_tree.txt @@ -5627,11 +5627,11 @@ 4215,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# 4215,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin# 4215,501,1,500,1,0,0,0,0,0,0,0,0 //GS_FLING#Fling# -4215,502,1,500,1,511,10,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action# -4215,503,1,500,5,512,10,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye# -4215,504,1,500,4,517,10,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler# -4215,505,1,500,4,513,5,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment# -4215,506,1,500,2,510,10,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy# +4215,502,1,500,1,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action# +4215,503,1,500,5,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye# +4215,504,1,500,4,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler# +4215,505,1,500,4,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#Adjustment# +4215,506,1,500,2,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy# 4215,507,1,500,1,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet# 4215,508,1,500,1,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker# 4215,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action# @@ -5645,26 +5645,26 @@ 4215,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever# 4215,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust# 4215,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster# -4215,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack# +4215,520,10,509,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack# 4215,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift# 4215,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# 4215,2552,1,500,5,0,0,0,0,0,0,0,0 //RL_RICHS_COIN#Rich's Coin# 4215,2553,5,514,1,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL#Mass Spiral# 4215,2554,5,2557,1,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER#Banishing Buster# -4215,2555,5,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap# -4215,2556,1,501,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker# +4215,2555,5,2556,1,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap# +4215,2556,1,500,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker# 4215,2557,5,513,1,518,1,0,0,0,0,0,0 //RL_S_STORM#Shatter Storm# -4215,2558,10,511,10,0,0,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain# -4215,2559,1,2558,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot# -4215,2560,1,506,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker# -4215,2561,5,2564,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance# -4215,2562,5,520,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine# -4215,2563,5,0,0,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter# -4215,2564,5,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel# +4215,2558,10,500,1,511,10,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain# +4215,2559,1,511,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot# +4215,2560,1,500,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker# +4215,2561,5,516,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance# +4215,2562,5,521,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine# +4215,2563,5,2552,1,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter# +4215,2564,1,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel# 4215,2565,5,2567,1,0,0,0,0,0,0,0,0 //RL_R_TRIP#Round Trip# 4215,2566,5,2560,1,2562,3,0,0,0,0,0,0 //RL_D_TAIL#Dragon Tail# 4215,2567,5,517,1,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN#Fire Rain# -4215,2568,5,2561,2,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel# +4215,2568,5,2552,1,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel# 4215,2569,5,2553,1,0,0,0,0,0,0,0,0 //RL_AM_BLAST#Anti-Material Blast# 4215,2570,5,2554,3,0,0,0,0,0,0,0,0 //RL_SLUGSHOT#Slug Shot# -4215,2571,5,2569,3,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God# +4215,2571,5,2552,1,2569,3,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God# diff --git a/db/re/item_db.txt b/db/re/item_db.txt index 45d25541ae..c3d76b96a4 100644 --- a/db/re/item_db.txt +++ b/db/re/item_db.txt @@ -4707,8 +4707,8 @@ 6743,HPStone_Middle,HP Stone(Middle),6,10,,100,,,,,,,,,,,,,{ bonus bMaxHPrate,1; },{},{} 6744,SPStone_Middle,SP Stone(Middle),6,10,,100,,,,,,,,,,,,,{ bonus bMaxSPrate,1; },{},{} 6745,HealStone_Bottom,Recovery Stone(Low),6,20,,10,,,,,,,,,,,,,{ bonus bSPGainValue,1; bonus bMagicHPGainValue,1; },{},{} -6746,Iron_Artifacts,Iron Artifacts,3,10,,0,,,,,,,,,,,,,{},{},{} -6747,Steel_Workpiece,Steel Workpiece,3,10,,0,,,,,,,,,,,,,{},{},{} +6746,Iron_Artifacts,Steel Artifact,3,10,,0,,,,,,,,,,,,,{},{},{} +6747,Iron_Artifacts_,Steel Artifact,3,10,,0,,,,,,,,,,,,,{},{},{} 6748,Daily_Report_He_And_His_Team,Daily Report He And His Team,3,10,,0,,,,,,,,,,,,,{},{},{} 6749,Operation_Control_Device,Operation Control Device,3,10,,0,,,,,,,,,,,,,{},{},{} 6750,Failed_Engine,Failed Engine,3,10,,10,,,,,,,,,,,,,{},{},{} @@ -5535,7 +5535,7 @@ 7649,Big_Luk_Bookmark,Big Luk Bookmark,3,20,,10,,,,,,,,,,,,,{},{},{} 7651,Mystery_Egg,Mystery Egg,3,10,,10,,,,,,,,,,,,,{},{},{} 7663,Full_Metal_Jacket,Full Metal Jacket,10,200,,2,10,,,,0x41000000,63,2,32768,,1,,3,{},{},{} -7664,Projection_Landmines,Projection Landmines,10,450,,3,10,,,,0x41000000,63,2,32768,,1,,5,{},{},{} +7664,Mine_Projectile,Grenade Launcher,10,450,,3,10,,,,0x41000000,63,2,32768,,1,,5,{},{},{} 7665,Dragon_Tail_Missile,Dragon Tail Missile,10,1500,,100,10,,,,0x41000000,63,2,32768,,1,,5,{},{},{} 7666,TimeTravel_Scroll,Time Travel Scroll,3,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} 7667,Abandoned_Machine,Abandoned Machine,3,20,,0,,,,,0xFFFFFFFF,63,2,,,,,,{},{},{} @@ -7247,11 +7247,11 @@ 13115,Upg_Revolver,Upg Revolver,5,20,,500,35,,7,1,0x41000000,63,2,34,3,1,1,17,{ .@r = getrefine(); bonus bBaseAtk,(.@r*5); bonus bLongAtkRate,(.@r*2); if(BaseLevel>70) bonus bBaseAtk,(((BaseLevel-70)/10)*5); },{},{} 13116,Novice_Revolver,Novice Revolver,5,0,,500,20,,7,0,0x41000000,63,2,34,1,1,0,17,{ bonus bHit,-5; },{},{} 13117,TE_Woe_Pistol,TE Woe Pistol,5,0,,0,60,,7,0,0x41000000,63,2,34,3,40,1,17,{ bonus2 bAddRace,RC_Player,40; bonus2 bAddEff,Eff_Curse,3000; },{},{} -13118,Tiny_Flame,Spark Light,5,1,,100,0,,9,0,0x41000000,63,2,34,1,1,1,17,{},{},{} -13119,Freedom_Flame,Spark Of Freedom,5,1,,100,100,,9,2,0x41000000,63,2,34,3,99,1,17,{},{},{} -13120,H_FEATHER_H_FIRE,Heaven's Feather & Hell's Fire,5,1250000,,800,150,,9,1,0x41000000,63,2,34,3,99,1,17,{ bonus2 bSkillAtk,"GS_DESPERADO",20; bonus2 bSkillAtk,"RL_FALLEN_ANGEL",20; },{},{} -13122,ALTAIR_ARES,Altea & Ares,5,1450000,,1000,200,,9,0,0x40000000,63,2,34,3,140,1,17,{ bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30; },{},{} -13124,ALTAIR_ARES_,Altea & Ares,5,1450000,,1000,200,,9,1,0x40000000,63,2,34,3,140,1,17,{ bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30; },{},{} +13118,Tiny_Flame,Fading Flame,5,1,,100,0,,7,0,0x01000000,63,2,34,1,1,1,17,{},{},{} +13119,Freedom_Flame,Freedom Flame,5,1,,100,100,,7,2,0x01000000,63,2,34,3,99,1,17,{},{},{} +13120,Heaven's_Feather_and_Hell's_Fire,Heaven's Feather & Hell's Fire,5,1250000,,800,150,,9,1,0x41000000,63,2,34,3,99,1,17,{ bonus2 bSkillAtk,"GS_DESPERADO",20; bonus2 bSkillAtk,"RL_FALLEN_ANGEL",20; },{},{} +13122,Altea_and_Ares,Altea & Ares,5,1450000,,1000,200,,9,0,0x40000000,63,2,34,3,140,1,17,{ bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30; },{},{} +13124,Altea_and_Ares_,Altea & Ares,5,1450000,,1000,200,,9,1,0x40000000,63,2,34,3,140,1,17,{ bonus bHit,5; bonus bDelayrate,10; bonus bLongAtkRate,30; },{},{} 13125,Metal_Revolver,Metal Revolver,5,0,,0,30,,7,1,0x41000000,63,2,34,3,1,0,17,{ bonus bBaseAtk,getrefine(); bonus bLongAtkRate,1; if (BaseLevel >= 20 && BaseLevel <= 120) { bonus bBaseAtk,3*(BaseLevel/10); } },{},{} 13126,Infinity_Pistol,Infinity Pistol,5,10,,500,175,,7,1,0x40000000,63,2,34,4,100,0,17,{},{},{} 13127,Crimson_Revolver,Crimson Revolver,5,20,,1000,100,,7,2,0x41000000,63,2,34,3,70,1,17,{ .@r = getrefine(); bonus bBaseAtk,((BaseLevel/10)*5)+(.@r<=15?pow(.@r,2):225); },{},{} @@ -7320,8 +7320,8 @@ 13210,Slug_Bullet_1,Slug Ammunition L,10,250,,250,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} 13211,Slug_Bullet_2,Slug Ammunition M,10,500,,500,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} 13212,Slug_Bullet_3,Slug Ammunition H,10,750,,750,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} -13213,Slug_Bullet_4,Slug Ammunition SH,10,1,,1000,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} -13214,Slug_Bullet_5,Slug Ammunition XH,10,1,,1200,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} +13213,Slug_Bullet_4,Slug Ammunition SH,10,1000,,1000,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} +13214,Slug_Bullet_5,Slug Ammunition XH,10,1200,,1200,30,,,,0x41000000,63,2,32768,,1,,3,{},{},{} 13215,AP_Ammo,Armor Burnt,10,10,,2,50,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Neutral; },{},{} 13216,Blaze_Bullet,Incandescence Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Fire; },{},{} 13217,Freezing_Bullet,Glaciation Shot,10,10,,2,40,,,0,0xFFFFFFFF,63,2,32768,,100,,3,{ bonus bAtkEle,Ele_Water; },{},{} @@ -7335,6 +7335,11 @@ 13225,Poison_Sphere_,Poison Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Poison; },{},{} 13226,Blind_Sphere_,Blind Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Dark; },{},{} 13227,Freezing_Sphere_,Freezing Sphere,10,10,,5,50,,,0,0xFFFFFFFF,63,2,32768,,1,,5,{ bonus bAtkEle,Ele_Water; },{},{} +13228,Flare_Bullet,Flare Bullet,10,1,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Fire; },{},{} +13229,Lightning_Bullet,Lightning Bullet,10,1,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Wind; },{},{} +13230,Ice_Bullet,Ice Bullet,10,1,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Water; },{},{} +13231,Poison_Bullet,Poison Bullet,10,1,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Poison; },{},{} +13232,Blind_Bullet,Blind Bullet,10,1,,2,20,,,,0x41000000,63,2,32768,,1,,3,{ bonus bAtkEle,Ele_Dark; },{},{} //=================================================================== // Shurikens & Kunais //=================================================================== diff --git a/db/re/job_basehpsp_db.txt b/db/re/job_basehpsp_db.txt index f0880a44bb..c2f4a5711f 100644 --- a/db/re/job_basehpsp_db.txt +++ b/db/re/job_basehpsp_db.txt @@ -118,7 +118,7 @@ 1,500,24,0,40,47,55,64,74,84,95,107,120,134,149,165,182,200,219,238,258,306,329,354,379,406,433,462,491,521,551,583,615,649,683,719,755,793,831,870,909,950,991,1034,1077,1122,1167,1214,1261,1309,1357,1407,1457,1509,1561,1615,1669,1725,1781,1838,1895,1954,2013,2074,2135,2198,2261,2326,2391,2457,2523,2591,2659,2670,2680,2690,2700,2710,2720,2730,2740,2750,2760,3000,3020,3040,3060,3080,3100,3120,3140,3160,3180,3455,3524,3593,3663,3734,3806,3878,3951,4025,4500,4562,4624,4686,4748,4810,4872,4934,4996,5058,5120,5182,5244,5306,5368,5430,5492,5554,5616,5678,5740,5802,5864,5926,5988,6050,6112,6174,6236,6298,6360,6422,6484,6546,6608,6670,6732,6794,6856,6918,6980,7042,7104,7166,7228,7290,7352,7414,7476,7538,7600,7662,7724,7786,7848,7910,7972,8034,8096,8158,8220,8282,8344,8406,8468,8530,8592,8654,8716,8778,8840,8902,8964,9026,9088,9150,9212,9274,9336,9398,9460,9522,9584,9646,9708,9770,9832,9894,9956,10018,10080,10142,10204,10266,10328,10390,10452,10514,10576,10638,10700,10762,10824,10886,10948,11010,11072,11134,11196,11258,11320,11382,11444,11506,11568,11630,11692,11754,11816,11878,11940,12002,12064,12126,12188,12250,12312,12374,12436,12498,12560,12622,12684,12746,12808,12870,12932,12994,13056,13118,13180,13242,13304,13366,13428,13490,13552,13614,13676,13738,13800,13862,13924,13986,14048,14110,14172,14234,14296,14358,14420,14482,14544,14606,14668,14730,14792,14854,14916,14978,15040,15102,15164,15226,15288,15350,15412,15474,15536,15598,15660,15722,15784,15846,15908,15970,16032,16094,16156,16218,16280,16342,16404,16466,16528,16590,16652,16714,16776,16838,16900,16962,17024,17086,17148,17210,17272,17334,17396,17458,17520,17582,17644,17706,17768,17830,17892,17954,18016,18078,18140,18202,18264,18326,18388,18450,18512,18574,18636,18698,18760,18822,18884,18946,19008,19070,19132,19194,19256,19318,19380,19442,19504,19566,19628,19690,19752,19814,19876,19938,20000,20062,20124,20186,20248,20310,20372,20434,20496,20558,20620,20682,20744,20806,20868,20930,20992,21054,21116,21178,21240,21302,21364,21426,21488,21550,21612,21674,21736,21798,21860,21922,21984,22046,22108,22170,22232,22294,22356,22418,22480,22542,22604,22666,22728,22790,22852,22914,22976,23038,23100,23162,23224,23286,23348,23410,23472,23534,23596,23658,23720,23782,23844,23906,23968,24030,24092,24154,24216,24278,24340,24402,24464,24526,24588,24650,24712,24774,24836,24898,24960,25022,25084,25146,25208,25270,25332,25394,25456,25518,25580,25642,25704,25766,25828,25890,25952,26014,26076,26138,26200,26262,26324,26386,26448,26510,26572,26634,26696,26758,26820,26882,26944,27006,27068,27130,27192,27254,27316,27378,27440,27502,27564,27626,27688,27750,27812,27874,27936,27998,28060,28122,28184,28246,28308,28370,28432,28494,28556,28618,28680,28742,28804,28866,28928,28990,29052,29114,29176,29238,29300,29362 //Rebellion -1,500,4215,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,4500,4562,4624,4686,4748,4810,4872,4934,4996,5058,5120,5182,5244,5306,5368,5430,5492,5554,5616,5678,5740,5802,5864,5926,5988,6050,6112,6174,6236,6298,6360,6422,6484,6546,6608,6670,6732,6794,6856,6918,6980,7042,7104,7166,7228,7290,7352,7414,7476,7538,7600,7662,7724,7886,7948,8210,8372,8634,8896,9158,9220,9382,9544,9706,9868,10030,10192,10354,10516,10678,10840,11002,11164,11326,11488,11650,11812,11974,12136,12298,12460,12622,12784,12946,13108,13270,13432,13594,13756,13918,14080,14242,14404,14566,14728,14890,15052,15214,15376,15538,15700,15862,16024,16186,16348,16510,16672,16834,16996,17158,17320,17482,17644,17806,17968,18130,18292,18454,18616,18778,18940,19102,19264,19426,19588,19750,19912,20074,20236,20398,20560,20722,20884,21046,21208,21370,21532,21694,21856,22018,22180,22342,22504,22666,22828,22990,23152,23314,23476,23638,23800,23962,24124,24286,24448,24610,24772,24934,25096,25258,25420,25582,25744,25906,26068,26230,26392,26554,26716,26878,27040,27202,27364,27526,27688,27850,28012,28174,28336,28498,28660,28822,28984,29146,29308,29470,29632,29794,29956,30118,30280,30442,30604,30766,30928,31090,31252,31414,31576,31738,31900,32062,32224,32386,32548,32710,32872,33034,33196,33358,33520,33682,33844,34006,34168,34330,34492,34654,34816,34978,35140,35302,35464,35626,35788,35950,36112,36274,36436,36598,36760,36922,37084,37246,37408,37570,37732,37894,38056,38218,38380,38542,38704,38866,39028,39190,39352,39514,39676,39838,40000,40162,40324,40486,40648,40810,40972,41134,41296,41458,41620,41782,41944,42106,42268,42430,42592,42754,42916,43078,43240,43402,43564,43726,43888,44050,44212,44374,44536,44698,44860,45022,45184,45346,45508,45670,45832,45994,46156,46318,46480,46642,46804,46966,47128,47290,47452,47614,47776,47938,48100,48262,48424,48586,48748,48910,49072,49234,49396,49558,49720,49882,50044,50206,50368,50530,50692,50854,51016,51178,51340,51502,51664,51826,51988,52150,52312,52474,52636,52798,52960,53122,53284,53446,53608,53770,53932,54094,54256,54418,54580,54742,54904,55066,55228,55390,55552,55714,55876,56038,56200,56362,56524,56686,56848,57010,57172,57334,57496,57658,57820,57982,58144,58306,58468,58630,58792,58954,59116,59278,59440,59602,59764,59926,60088,60250,60412,60574,60736,60898,61060,61222,61384,61546,61708,61870,62032,62194,62356,62518,62680,62842,63004,63166,63328,63490,63652,63814,63976,64138,64300,64462 +1,500,4215,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,4938,5317,5458,5599,5740,5881,6022,6163,6304,6445,6586,6727,6868,7009,7150,7291,7432,7573,7714,7855,7996,8137,8278,8419,8560,8701,8842,8983,9124,9265,9406,9547,9688,9829,9970,10111,10252,10393,10534,10675,10816,10957,11098,11239,11380,11521,11662,11803,11944,12085,12226,12367,12508,12649,12790,12931,13072,13213,13354,13495,13636,13777,13918,14059,14200,14341,14482,14623,14764,14905,15046,15187,15328,15469,15610,15751,15892,16033,16174,16315,16456,16597,16738,16879,17020,17161,17302,17443,17584,17725,17866,18007,18148,18289,18430,18571,18712,18853,18994,19135,19276,19417,19558,19699,19840,19981,20122,20263,20404,20545,20686,20827,20968,21109,21250,21391,21532,21673,21814,21955,22096,22237,22378,22519,22660,22801,22942,23083,23224,23365,23506,23647,23788,23929,24070,24211,24352,24493,24634,24775,24916,25057,25198,25339,25480,25621,25762,25903,26044,26185,26326,26467,26608,26749,26890,27031,27172,27313,27454,27595,27736,27877,28018,28159,28300,28441,28582,28723,28864,29005,29146,29287,29428,29569,29710,29851,29992,30133,30274,30415,30556,30697,30838,30979,31120,31261,31402,31543,31684,31825,31966,32107,32248,32389,32530,32671,32812,32953,33094,33235,33376,33517,33658,33799,33940,34081,34222,34363,34504,34645,34786,34927,35068,35209,35350,35491,35632,35773,35914,36055,36196,36337,36478,36619,36760,36901,37042,37183,37324,37465,37606,37747,37888,38029,38170,38311,38452,38593,38734,38875,39016,39157,39298,39439,39580,39721,39862,40003,40144,40285,40426,40567,40708,40849,40990,41131,41272,41413,41554,41695,41836,41977,42118,42259,42400,42541,42682,42823,42964,43105,43246,43387,43528,43669,43810,43951,44092,44233,44374,44515,44656,44797,44938,45079,45220,45361,45502,45643,45784,45925,46066,46207,46348,46489,46630,46771,46912,47053,47194,47335,47476,47617,47758,47899,48040,48181,48322,48463,48604,48745,48886,49027,49168,49309,49450,49591,49732,49873,50014,50155,50296,50437,50578,50719,50860,51001,51142,51283,51424,51565,51706,51847,51988,52129,52270,52411,52552,52693,52834,52975,53116,53257,53398,53539,53680,53821,53962,54103,54244,54385,54526,54667,54808,54949,55090,55231,55372,55513,55654,55795,55936,56077,56218,56359,56500,56641,56782,56923,57064,57205,57346,57487,57628,57769,57910,58051,58192,58333,58474,58615,58756,58897,59038,59179,59320,59461,59602,59743,59884,60025,60166,60307,60448,60589,60730,60871,61012,61153,61294,61435,61576,61717 //Ninja 1,500,25,0,40,47,54,62,71,81,91,102,114,127,140,154,169,185,201,218,236,255,274,294,315,337,359,382,406,431,456,482,509,537,565,594,624,655,686,718,751,785,819,854,890,927,964,1002,1041,1081,1121,1162,1204,1247,1290,1334,1379,1425,1471,1518,1566,1615,1664,1714,1765,1817,1869,1922,1976,2031,2086,2142,2199,2257,2275,2294,2314,2335,2356,2378,2401,2425,2449,2874,2890,2907,2924,2942,2971,2991,3011,3032,3054,3567,3590,3614,3649,3675,3701,3728,3756,3800,4250,4305,4360,4415,4470,4525,4580,4635,4690,4745,4800,4855,4910,4965,5020,5075,5130,5185,5240,5295,5350,5405,5460,5515,5570,5625,5680,5735,5790,5845,5900,5955,6010,6065,6120,6175,6230,6285,6340,6395,6450,6505,6560,6615,6670,6725,6780,6835,6890,6945,7000,7055,7110,7165,7220,7275,7330,7385,7440,7495,7550,7605,7660,7715,7770,7825,7880,7935,7990,8045,8100,8155,8210,8265,8320,8375,8430,8485,8540,8595,8650,8705,8760,8815,8870,8925,8980,9035,9090,9145,9200,9255,9310,9365,9420,9475,9530,9585,9640,9695,9750,9805,9860,9915,9970,10025,10080,10135,10190,10245,10300,10355,10410,10465,10520,10575,10630,10685,10740,10795,10850,10905,10960,11015,11070,11125,11180,11235,11290,11345,11400,11455,11510,11565,11620,11675,11730,11785,11840,11895,11950,12005,12060,12115,12170,12225,12280,12335,12390,12445,12500,12555,12610,12665,12720,12775,12830,12885,12940,12995,13050,13105,13160,13215,13270,13325,13380,13435,13490,13545,13600,13655,13710,13765,13820,13875,13930,13985,14040,14095,14150,14205,14260,14315,14370,14425,14480,14535,14590,14645,14700,14755,14810,14865,14920,14975,15030,15085,15140,15195,15250,15305,15360,15415,15470,15525,15580,15635,15690,15745,15800,15855,15910,15965,16020,16075,16130,16185,16240,16295,16350,16405,16460,16515,16570,16625,16680,16735,16790,16845,16900,16955,17010,17065,17120,17175,17230,17285,17340,17395,17450,17505,17560,17615,17670,17725,17780,17835,17890,17945,18000,18055,18110,18165,18220,18275,18330,18385,18440,18495,18550,18605,18660,18715,18770,18825,18880,18935,18990,19045,19100,19155,19210,19265,19320,19375,19430,19485,19540,19595,19650,19705,19760,19815,19870,19925,19980,20035,20090,20145,20200,20255,20310,20365,20420,20475,20530,20585,20640,20695,20750,20805,20860,20915,20970,21025,21080,21135,21190,21245,21300,21355,21410,21465,21520,21575,21630,21685,21740,21795,21850,21905,21960,22015,22070,22125,22180,22235,22290,22345,22400,22455,22510,22565,22620,22675,22730,22785,22840,22895,22950,23005,23060,23115,23170,23225,23280,23335,23390,23445,23500,23555,23610,23665,23720,23775,23830,23885,23940,23995,24050,24105,24160,24215,24270,24325,24380,24435,24490,24545,24600,24655,24710,24765,24820,24875,24930,24985,25040,25095,25150,25205,25260,25315,25370,25425,25480,25535,25590,25645,25700,25755,25810,25865,25920,25975,26030,26085,26140,26195,26250,26305 diff --git a/db/re/job_db1.txt b/db/re/job_db1.txt index f3a296e0f0..01a69aec24 100644 --- a/db/re/job_db1.txt +++ b/db/re/job_db1.txt @@ -270,7 +270,7 @@ // Oboro 4212, 26000,75 ,500 ,540 ,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 // Rebellion -4215, 28000,90 ,650 ,469 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,520 ,620 ,570 ,970 ,1070 ,2000 ,2000 ,600 +4215, 28000,90 ,650 ,469 ,540 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,2000 ,480 ,610 ,540 ,940 ,1040 ,2000 ,2000 ,600 // Summoner 4218, 20000,70 ,500 ,500 ,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 Summoner diff --git a/db/re/job_exp.txt b/db/re/job_exp.txt index 14d6ce76f3..190cb430ad 100644 --- a/db/re/job_exp.txt +++ b/db/re/job_exp.txt @@ -13,12 +13,12 @@ //Base - Adv Jobs 99,4001:4002:4003:4004:4005:4006:4007:4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,99999999 -//Base - 3rd Jobs, Baby 3rds, Summoner +//Base - 3rd Jobs, Baby 3rds, Oboro/Kagerou, Rebellion, & Summoner //Note: (First 98 values [Level 1 - 98] are only used by Summoner Class, because 3rd classes start at level 99.) -175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4218:4220,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 +175,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4218:4220:4223:4224:4229,0,55,90,150,220,320,380,420,455,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1800,2100,2400,2700,3000,3300,3600,3900,4200,4500,5400,6300,7200,8100,9000,9900,10800,11700,12600,13500,16200,18900,21600,24300,27000,29700,32400,35100,37800,40500,43200,45900,48600,51300,54000,56700,59400,62100,64800,67500,75600,83700,91800,99900,108000,116100,124200,132300,140400,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 -//Base - Expanded Super Novice, Expanded Super Baby, Oboro/Kagerou, & Rebellion -160,4190:4191:4211:4212:4215:4223:4224:4229,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 +//Base - Expanded Super Novice & Expanded Super Baby +160,4190:4191,0,660,1080,1800,2640,3840,4560,5040,5460,6000,6600,7200,7320,7620,8040,8820,9600,10080,10560,11040,12610,13390,14300,15340,16900,18460,19500,20800,22100,23400,24700,26000,27300,28600,30160,31200,33800,35750,37700,39000,44100,46200,47600,50400,52500,53200,56000,58800,62300,65800,68600,71400,74200,77000,79800,82600,86100,88200,91000,93800,103500,105000,109500,115500,120000,126000,132000,136500,142500,165000,192000,210000,232500,244500,255000,270000,282000,292500,300000,345000,416000,480000,560000,640000,768000,880000,960000,1088000,1200000,1440000,1700000,2040000,2550000,3060000,3570000,4080000,4760000,5610000,6800000,7070000,7400000,7770000,8150000,8550000,9100000,9610000,10150000,10570000,11180000,12000000,12200000,12930000,13150000,14030000,14420000,15420000,15670000,16870000,17140000,18720000,19020000,20590000,20930000,22690000,23310000,25290000,26020000,27860000,28535000,30990000,31680000,33560000,34942000,36372000,38350000,39890000,41545000,43330000,45400000,48100000,50410000,53370000,56250000,59230000,62590000,66120000,70200000,75330000,81100000,95000000,98000000,103000000,107000000,112000000,116000000,121000000,125000000,130000000,134000000,139000000,145000000,152200000,160840000,171200000,191930000,202290000,214720000,229640000,247550000,283370000,301280000,322770000,348560000,379500000,441390000,99999999 //Job - Novice & Baby Novice 10,0:4023,1,10,18,28,40,91,151,205,268,340,999999999 @@ -38,11 +38,11 @@ //Job - Adv Second Classes 70,4008:4009:4010:4011:4012:4013:4014:4015:4016:4017:4018:4019:4020:4021:4022,1,3800,6200,10400,15200,22900,27100,30000,32500,35700,41300,45000,45800,47600,50300,58700,63900,67100,70300,73500,90600,96200,102700,110200,121400,144700,152900,163100,173300,183500,213500,224700,236000,247200,260700,299800,324800,343600,362300,374800,474400,497000,512100,542200,564800,644300,678200,712100,754500,796900,873100,911900,950600,989400,1028100,1143300,1199900,1233800,1279100,1324300,1486900,1515900,1603000,1719200,1806300,2040300,2244300,2415900,2746000,3326000,999999999 -//Job - 3rd Jobs & Baby 3rds -60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999 +//Job - 3rd Jobs & Baby 3rds, Oboro/Kagerou, & Rebellion +60,4054:4055:4056:4057:4058:4059:4060:4061:4062:4063:4064:4065:4066:4067:4068:4069:4070:4071:4072:4073:4074:4075:4076:4077:4078:4079:4080:4081:4082:4083:4084:4085:4086:4087:4096:4097:4098:4099:4100:4101:4102:4103:4104:4105:4106:4107:4108:4109:4110:4111:4112:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,131668000,145518000,160753000,177511000,195944000,216220000,238523000,263056000,290042000,319726000,999999999 -//Job - Expanded Super Novice, Expanded Super Baby, Oboro/Kagerou, & Rebellion -50,4190:4191:4211:4212:4215:4223:4224:4229,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999 +//Job - Expanded Super Novice & Expanded Super Baby +50,4190:4191,1,112000,355000,615000,917000,1253000,1595000,2007000,2430000,2868000,3420000,3863000,4504000,4998000,5769000,6321000,7254000,7870000,9015000,9530000,11072000,11848000,13467000,14337000,16243000,17216000,19446000,20781000,23070000,24453000,27568000,29118000,31820000,34125000,37048000,40204000,42972000,45937000,49110000,52696000,57158000,61305000,67167000,72285000,77647000,83624000,91113000,98548000,107630000,119077000,999999999 //Job - Ninja/Gunslinger 70,24:25:4222:4228,1,200,300,400,600,700,1000,1200,1400,1700,1900,2400,2700,3200,3600,4200,4900,5500,6100,6900,7700,8400,9300,10100,11100,12100,13000,14600,16100,17500,18600,21500,23300,24700,27000,29000,30000,32400,35000,38100,41100,44000,46700,49600,52500,55600,58900,62700,65500,69200,72300,81200,84100,89300,95500,100900,107800,114900,120700,128600,150500,176900,196100,219600,234200,247900,266400,281300,296600,308000,999999999 diff --git a/db/re/mob_db.txt b/db/re/mob_db.txt index 38b9f304d8..efbb008e31 100644 --- a/db/re/mob_db.txt +++ b/db/re/mob_db.txt @@ -2279,7 +2279,7 @@ //3122,CHARLESTON1 //3123,CHARLESTON2 //3124,CHARLESTON3 -3125,STEP,Step,Step,130,55403,0,3088,2392,1,871,1566,101,58,117,127,55,61,116,60,10,12,0,6,22,234894485,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3125,STEP,Step,Step,130,55403,0,3088,2392,1,871,1566,101,58,117,127,55,61,116,60,10,12,0,6,22,0x2000000,250,0,780,0,0,0,0,0,0,0,0,6751,1000,998,150,13213,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //3126,ROCK_STEP //3127,KICK_STEP //3128,KICK_AND_KICK @@ -2323,8 +2323,8 @@ //3166,M_E_DEVILING //3167,E_POPORING_CRO //3168,POURING_SEA_FES -3169,J_REB_SHECIL1,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x1,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -3170,J_REB_SHECIL2,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x1,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3169,J_REB_SHECIL1,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x0000001,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +3170,J_REB_SHECIL2,Shooting Target,Shooting Target,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0x0000001,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //3171,EVENT_MONEMUS01 //3172,EVENT_MONEMUS02 //3173,EVENT_FIREFOX diff --git a/db/re/quest_db.txt b/db/re/quest_db.txt index c87d7b9e32..05ef0589b2 100644 --- a/db/re/quest_db.txt +++ b/db/re/quest_db.txt @@ -2694,6 +2694,13 @@ 12344,0,3170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" 12345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" +12340,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" +12341,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" +12342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" +12343,0,3169,10,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" +12344,0,3170,3,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" +12345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Rebellion Job Change Quest" + 12363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"?????? ?? ??" 13000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"RWC2011Card Gathering" diff --git a/db/re/skill_cast_db.txt b/db/re/skill_cast_db.txt index ef15477ed4..13ea252bbf 100644 --- a/db/re/skill_cast_db.txt +++ b/db/re/skill_cast_db.txt @@ -853,11 +853,11 @@ //-- GS_INCREASING 506,0,1000,0,60000,0,0,0 //-- GS_MAGICALBULLET -507,0,500,0,0,0,0,0 +507,0,500,0,30000,0,0,0 //-- GS_CRACKER 508,0,1000,0,0,5000,0,0 //-- GS_TRACKING -512,600:700:800:900:1000:1100:1200:1300:1400:1500,1500,0,0,0,0,600:700:800:900:1000:1100:1200:1300:1400:1500 +512,0,1500,0,0,0,0,600:700:800:900:1000:1100:1200:1300:1400:1500 //-- GS_DISARM 513,1600,1000,0,30000,0,0,400 //-- GS_PIERCINGSHOT @@ -869,11 +869,11 @@ //-- GS_GATLINGFEVER 517,800,1000,0,30000:45000:60000:75000:90000:105000:120000:135000:150000:165000,0,0,200 //-- GS_DUST -518,1200,1000,0,0,0,0,300 +518,0,1000,0,0,0,0,-1 //-- GS_FULLBUSTER 519,800,1200:1400:1600:1800:2000:2200:2400:2600:2800:3000,0,0,10000,0,200 //-- GS_SPREADATTACK -520,800,1000,0,0,0,0,200 +520,0,1000,0,0,0,0,-1 //-- GS_GROUNDDRIFT (Upkeep2 times are duration of: Stun(lv1), Blind(lv2), Poison(lv3) and Freeze(lv4)) 521,800,1000,0,3000:6000:9000:12000:15000:18000:21000:24000:27000:30000,5000:20000:20000:30000,0,200 //========================================== @@ -1654,43 +1654,43 @@ //-- RL_RICHS_COIN 2552,0,1000,0,600000,0,3000,-1 //-- RL_MASS_SPIRAL -2553,1000,1000,0,0,30000,10000,2000 +2553,2000,1000,0,0,30000,2000,1000 //-- RL_BANISHING_BUSTER -2554,3000:2500:2000:1500:1000,0,0,0,0,10000,-1 +2554,3000:2500:2000:1500:1000,2000,0,0,0,10000,-1 //-- RL_B_TRAP -2555,0,0,0,10000:11000:12000:13000:14000,6000:7000:8000:9000:10000,0,-1 +2555,0,2500:2000:1500:1000:500,0,10000,9000:14000:19000:24000:29000,10000,-1 //-- RL_FLICKER 2556,0,0,0,0,0,10000,-1 //-- RL_S_STORM -2557,3000:2500:2000:1500:1000,0,0,0,0,2000,-1 +2557,3000:2500:2000:1500:1000,2000,0,0,0,2000,1000 //-- RL_E_CHAIN -2558,0,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,5000,-1 +2558,1000,1000,0,45000:60000:75000:90000:105000:120000:135000:150000:165000:180000,0,0,-1 //-- RL_QD_SHOT -2559,0,1000,0,1500,0,5000,-1 +2559,0,0,0,1500,0,0,-1 //-- RL_C_MARKER 2560,0,0,0,30000,0,1000,-1 //-- RL_FIREDANCE -2561,0,2000,0,0,0,5000,-1 +2561,0,500,0,0,0,5000,-1 //-- RL_H_MINE -2562,1500,0,0,30000,15000,5000:4500:4000:3500:3000,500 +2562,1000,1000,0,50000,15000,5000:4500:4000:3500:3000,-1 //-- RL_P_ALTER -2563,0,1000,0,30000:45000:60000:75000:90000,0,5000,-1 +2563,0,0,0,30000:45000:60000:75000:90000,0,0,-1 //-- RL_FALLEN_ANGEL -2564,500,1500,0,0,0,10000:8000:6000:4000:2000,500 +2564,0,0,0,2000,0,0,-1 //-- RL_R_TRIP -2565,0,1000,0,0,0,1000,-1 +2565,0,1000,0,0,0,3000:2500:2000:1500:1000,-1 //-- RL_D_TAIL -2566,500,2000,0,0,0,5000,500 +2566,1200:1400:1600:1800:2000,2000,0,0,0,5000,-1 //-- RL_FIRE_RAIN -2567,1800:1600:1400:1200:1000,2000,0,100,0,5000,200 +2567,0,1000,0,100,0,5000,-1 //-- RL_HEAT_BARREL -2568,0,1000,0,60000,10000,10000,-1 +2568,2000,1000,0,60000,0,100000:95000:90000:85000:80000,-1 //-- RL_AM_BLAST 2569,2000,1000,0,0,6000:7000:8000:9000:10000,5000,1000 //-- RL_SLUGSHOT -2570,5000:6000:7000:8000:9000,1000,0,0,2000,10000,1000 +2570,5000:6000:7000:8000:9000,1000,0,0,2000,5000,1000 //-- RL_HAMMER_OF_GOD -2571,8000,2000,0,0,3000:3000:4000:4000:5000,30000,2000 +2571,0,2000,0,0,3000:3000:4000:4000:5000,30000,-1 //-- RL_R_TRIP_PLUSATK //2572,0,0,0,0,0,0,-1 //-- RL_B_FLICKER_ATK diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index cbdc408e95..ba4e7a4527 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -735,7 +735,7 @@ 504,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_MADNESSCANCEL,Madness Canceller 505,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_ADJUSTMENT,AdJustment 506,0,6,4,0,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_INCREASING,Increasing Accuracy -507,-9,6,1,8,0x20,0,1,1,no,0,0,0,misc,0,0x0, GS_MAGICALBULLET,Magical Bullet +507,0,6,4,0,0x1,0,1,1,no,0,0,0,magic,0,0x0, GS_MAGICALBULLET,Magical Bullet 508,-9,6,1,-1,0x1,0,1,1,no,0,0,0,weapon,0,0x0, GS_CRACKER,Cracker 509,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, GS_SINGLEACTION,Single Action 510,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0x0, GS_SNAKEEYE,Snake Eye @@ -744,7 +744,7 @@ 513,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, GS_DISARM,Disarm 514,-9,6,1,-1,0x20,0,5,1,no,0,0,0,weapon,0,0x100, GS_PIERCINGSHOT,Piercing Shot 515,-9,8,1,-1,0,0,10,-5,no,0,0,0,weapon,0,0x100, GS_RAPIDSHOWER,Rapid Shower -516,0,8,4,-1,0x2,3,10,1,no,0,0,0,weapon,0,0x0, GS_DESPERADO,Desperado +516,5,8,4,-1,0x2,3,10,1,no,0,0,0,weapon,0,0x0, GS_DESPERADO,Desperado 517,0,6,4,-1,0x1,0,10,1,no,0,0,0,weapon,0,0x0, GS_GATLINGFEVER,Gatling Fever 518,2,6,1,-1,0,0,10,1,no,0,0,0,weapon,5,0x0, GS_DUST,Dust 519,-9,6,1,-1,0,0,10,1,yes,0,0,0,weapon,0,0x100, GS_FULLBUSTER,Full Buster @@ -1273,24 +1273,24 @@ //2551,0,0,0,0,0,0,10,0,no,0,0,0,none,0,0, RL_GLITTERING_GREED,Flip The Coin Greed 2552,0,6,4,0,0x1,0,1,1,no,0,0,0,none,0,0x0, RL_RICHS_COIN,Rich's Coin 2553,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_MASS_SPIRAL,Mass Spiral -2554,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x10020, RL_BANISHING_BUSTER,Banishing Buster +2554,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x10020, RL_BANISHING_BUSTER,Banishing Buster 2555,3:4:4:5:5,6,2,0,0x1,1,5,1,no,0,0,1,misc,0,0x0, RL_B_TRAP,Bind Trap 2556,0,6,4,0,0x3,-1,1,1,no,0,0,0,none,0,0x0, RL_FLICKER,Flicker -2557,-9,6,1,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_S_STORM,Shatter Storm +2557,-9,6,1,-1,0x2,2:2:2:2:3,5,1,no,0,0,0,weapon,0,0x0, RL_S_STORM,Shatter Storm 2558,0,6,4,0,0x1,0,10,1,no,0,0,0,none,0,0x0, RL_E_CHAIN,Eternal Chain 2559,-9,6,4,-1,0x0,10,1,1,no,0,0x0,0,weapon,0,0x0, RL_QD_SHOT,Quick Draw Shot 2560,-9,6,1,0,0x1,0,1,1,no,0,0,3,none,0,0x0, RL_C_MARKER,Crimson Marker -2561,0,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, RL_FIREDANCE,Fire Dance +2561,5,6,4,-1,0x2,3,5,1,no,0,0,0,weapon,0,0x0, RL_FIREDANCE,Fire Dance 2562,-9,6,1,-1,0x0,2,5,1,no,0,0,0,weapon,0,0x0, RL_H_MINE,Howling Mine 2563,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_P_ALTER,Platinum Alter 2564,-9,6,2,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_FALLEN_ANGEL,Fallen Angel -2565,0,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0, RL_R_TRIP,Round Trip -2566,0,6,4,-1,0x3,-1,5,1,no,0,0,0,weapon,0,0x0, RL_D_TAIL,Dragon Tail -2567,-9,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0, RL_FIRE_RAIN,Fire Rain +2565,5,6,4,-1,0x2,3:3:4:5:6,5,1,no,0,0,0,weapon,3,0x0, RL_R_TRIP,Round Trip +2566,5,6,4,0,0x30,-1,5,1,no,0,0,0,weapon,0,0x0, RL_D_TAIL,Dragon Tail +2567,2,6,2,-1,0x2,1,5,1,no,0,0,0,weapon,0,0, RL_FIRE_RAIN,Fire Rain 2568,0,6,4,0,0x1,0,5,1,no,0,0,0,none,0,0x0, RL_HEAT_BARREL,Heat Barrel 2569,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0x0, RL_AM_BLAST,Anti-Material Blast -2570,-9,6,1,-1,0,0,5,1,no,0,0,0,weapon,6,0x0, RL_SLUGSHOT,Slug Shot -2571,-9,6,2,-1,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_HAMMER_OF_GOD,Hammer of God +2570,-9,6,1,0,0,0,5,1,no,0,0,0,weapon,6,0x0, RL_SLUGSHOT,Slug Shot +2571,-9,6,1,0,0x2,2,5,1,no,0,0,0,weapon,0,0x0, RL_HAMMER_OF_GOD,Hammer of God 2572,0,6,1,-1,0x40,0,5,1,no,0,0,0,weapon,0,0, RL_R_TRIP_PLUSATK,Round Trip Plus Attack //2573,0,6,1,-1,0,0,5,1,no,0,0,0,weapon,0,0, RL_B_FLICKER_ATK,Bind Flicker Attack //2574,0,6,1,-1,0,0,10,1,no,0,0,0,weapon,0,0, RL_GLITTERING_GREED_ATK,Flip The Coin Greed Attack diff --git a/db/re/skill_require_db.txt b/db/re/skill_require_db.txt index d893c31855..965efc91ce 100644 --- a/db/re/skill_require_db.txt +++ b/db/re/skill_require_db.txt @@ -489,7 +489,7 @@ 501,0,0,10,0,0,0,99,0,0,none,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_FLING 502,0,0,20,0,0,0,99,99,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION 503,0,0,30,0,0,0,99,99,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_BULLSEYE -504,0,0,30,0,0,0,99,0,0,none,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL +504,0,0,30,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL 505,0,0,15,0,0,0,99,0,0,none,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT 506,0,0,30,0,0,0,99,0,0,none,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_INCREASING 507,0,0,7,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET @@ -497,13 +497,13 @@ 512,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,17:18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_TRACKING 513,0,0,15:20:25:30:35,0,0,0,17:18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DISARM 514,0,0,11:12:13:14:15,0,0,0,17:18,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_PIERCINGSHOT -515,0,0,22:24:26:28:30:32:34:36:38:40,0,0,0,17,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_RAPIDSHOWER +515,0,0,22:24:26:28:30:32:34:36:38:40,0,0,0,17,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_RAPIDSHOWER 516,0,0,32:34:36:38:40:42:44:46:48:50,0,0,0,17,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DESPERADO 517,0,0,30:32:34:36:38:40:42:44:46:48,0,0,0,19,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GATLINGFEVER 518,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_DUST -519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,20,3,2:2:4:4:6:6:8:8:10:10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER -520,0,0,15:20:25:30:35:40:45:50:55:60,0,0,0,20:21,3:5,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_SPREADATTACK -521,0,0,4:8:12:16:20:24:28:32:36:40,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT +519,0,0,20:25:30:35:40:45:50:55:60:65,0,0,0,20,3,2,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_FULLBUSTER +520,0,0,13:16:19:22:25:28:31:34:37:40,0,0,0,20:21,3:5,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0//GS_SPREADATTACK +521,0,0,3:6:9:12:15:18:21:24:27:30,0,0,0,21,5,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT //**** // NJ Ninja @@ -892,25 +892,25 @@ // Rebellion //2551,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_GLITTERING_GREED 2552,0,0,10,0,0,100,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_RICHS_COIN -2553,0,0,80:84:88:92:96,0,0,0,18,3,1,none,0,1,7663,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL -2554,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER +2553,0,0,40:44:48:52:56,0,0,0,18,3,1,none,0,0,7663,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL +2554,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER 2555,0,0,30:32:34:36:38,0,0,0,17:18:19:20:21,0,0,none,0,1,7940,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP -2556,0,0,2,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FLICKER -2557,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_S_STORM -2558,0,0,45,0,0,0,17:18:19:20:21,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_E_CHAIN +2556,0,0,2,0,0,0,99,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FLICKER +2557,0,0,50:55:60:65:70,0,0,0,20,3,1,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_S_STORM +2558,0,0,45,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_E_CHAIN 2559,0,0,5,0,0,0,17:18:19:20:21,3:4:5,1,none,SC_QD_SHOT_READY,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_QD_SHOT -2560,0,0,10,0,0,0,17:18:19:20:21,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_C_MARKER -2561,0,0,10:15:20:25:30,0,0,0,17,3,5,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIREDANCE -2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,1,7664,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_H_MINE -2563,0,0,20:24:28:32:36,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_P_ALTER +2560,0,0,10,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_C_MARKER +2561,0,0,12:14:16:18:20,0,0,0,17,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIREDANCE +2562,0,0,45:50:55:60:65,0,0,0,21,0,0,none,0,0,7664,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_H_MINE +2563,0,0,20:24:28:32:36,0,0,0,99,3,1,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13201:13220:13221 //RL_P_ALTER 2564,0,0,10,0,0,0,17,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL -2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP +2565,0,0,40:45:50:55:60,0,0,0,19,3,5,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP 2566,0,0,60:70:80:90:100,0,0,0,21,5,1,none,0,0,7665,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_D_TAIL 2567,0,0,70,0,0,0,19,3,10,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN 2568,0,0,30,0,0,0,99,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL -2569,0,0,80:84:88:92:96,0,0,0,17:18:19:20:21,0,0,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_AM_BLAST -2570,0,0,55:60:65:70:75,0,0,0,20,3,1,none,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_SLUGSHOT -2571,0,0,70:80:90:100:110,0,0,0,18,3,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD +2569,0,0,80:84:88:92:96,0,0,0,18,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_AM_BLAST +2570,0,0,80:84:88:92:96,0,0,0,20,0,0,none,0,0,13214,1,13213,1,13212,1,13211,1,13210,1,0,0,0,0,0,0,0,0,0,0,0 //RL_SLUGSHOT +2571,0,0,35:40:45:50:55,0,0,0,18,0,0,none,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD 2572,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_R_TRIP_PLUSATK //2573,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_B_FLICKER_ATK //2574,0,0,1,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //RL_GLITTERING_GREED_ATK diff --git a/db/re/skill_tree.txt b/db/re/skill_tree.txt index f1306ea13a..48420769c1 100644 --- a/db/re/skill_tree.txt +++ b/db/re/skill_tree.txt @@ -657,11 +657,11 @@ 24,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# 24,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin# 24,501,1,500,1,0,0,0,0,0,0,0,0 //GS_FLING#Fling# -24,502,1,500,1,511,10,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action# -24,503,1,500,5,512,10,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye# -24,504,1,500,4,517,10,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler# -24,505,1,500,4,513,5,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment# -24,506,1,500,2,510,10,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy# +24,502,1,500,1,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action# +24,503,1,500,5,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye# +24,504,1,500,4,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler# +24,505,1,500,4,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#Adjustment# +24,506,1,500,2,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy# 24,507,1,500,1,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet# 24,508,1,500,1,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker# 24,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action# @@ -675,7 +675,7 @@ 24,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever# 24,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust# 24,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster# -24,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack# +24,520,10,509,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack# 24,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift# 24,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# //Ninja @@ -5627,11 +5627,11 @@ 4215,142,1,0,0,0,0,0,0,0,0,0,0 //NV_FIRSTAID#First Aid# 4215,500,5,0,0,0,0,0,0,0,0,0,0 //GS_GLITTERING#Flip the Coin# 4215,501,1,500,1,0,0,0,0,0,0,0,0 //GS_FLING#Fling# -4215,502,1,500,1,511,10,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action# -4215,503,1,500,5,512,10,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye# -4215,504,1,500,4,517,10,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler# -4215,505,1,500,4,513,5,0,0,0,0,0,0 //GS_ADJUSTMENT#AdJustment# -4215,506,1,500,2,510,10,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy# +4215,502,1,500,1,0,0,0,0,0,0,0,0 //GS_TRIPLEACTION#Triple Action# +4215,503,1,500,5,0,0,0,0,0,0,0,0 //GS_BULLSEYE#Bulls Eye# +4215,504,1,500,4,0,0,0,0,0,0,0,0 //GS_MADNESSCANCEL#Madness Canceler# +4215,505,1,500,4,0,0,0,0,0,0,0,0 //GS_ADJUSTMENT#Adjustment# +4215,506,1,500,2,0,0,0,0,0,0,0,0 //GS_INCREASING#Increasing Accuracy# 4215,507,1,500,1,0,0,0,0,0,0,0,0 //GS_MAGICALBULLET#Magical Bullet# 4215,508,1,500,1,0,0,0,0,0,0,0,0 //GS_CRACKER#Cracker# 4215,509,10,0,0,0,0,0,0,0,0,0,0 //GS_SINGLEACTION#Single Action# @@ -5645,29 +5645,29 @@ 4215,517,10,515,7,516,5,0,0,0,0,0,0 //GS_GATLINGFEVER#Gatling Fever# 4215,518,10,509,5,0,0,0,0,0,0,0,0 //GS_DUST#Dust# 4215,519,10,518,3,0,0,0,0,0,0,0,0 //GS_FULLBUSTER#Full Buster# -4215,520,10,519,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack# +4215,520,10,509,5,0,0,0,0,0,0,0,0 //GS_SPREADATTACK#Spread Attack# 4215,521,10,520,7,0,0,0,0,0,0,0,0 //GS_GROUNDDRIFT#Ground Drift# 4215,410,1,0,0,0,0,0,0,0,0,0,0 //WE_CALLBABY#Call Baby# 4215,2552,1,500,5,0,0,0,0,0,0,0,0 //RL_RICHS_COIN#Rich's Coin# 4215,2553,5,514,1,0,0,0,0,0,0,0,0 //RL_MASS_SPIRAL#Mass Spiral# 4215,2554,5,2557,1,0,0,0,0,0,0,0,0 //RL_BANISHING_BUSTER#Banishing Buster# -4215,2555,5,0,0,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap# -4215,2556,1,501,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker# +4215,2555,5,2556,1,0,0,0,0,0,0,0,0 //RL_B_TRAP#Bind Trap# +4215,2556,1,500,1,0,0,0,0,0,0,0,0 //RL_FLICKER#Flicker# 4215,2557,5,513,1,518,1,0,0,0,0,0,0 //RL_S_STORM#Shatter Storm# -4215,2558,10,511,10,0,0,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain# -4215,2559,1,2558,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot# -4215,2560,1,506,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker# -4215,2561,5,2564,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance# -4215,2562,5,520,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine# -4215,2563,5,0,0,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter# -4215,2564,5,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel# +4215,2558,10,500,1,511,10,0,0,0,0,0,0 //RL_E_CHAIN#Eternal Chain# +4215,2559,1,511,1,0,0,0,0,0,0,0,0 //RL_QD_SHOT#Quick Draw Shot# +4215,2560,1,500,1,0,0,0,0,0,0,0,0 //RL_C_MARKER#Crimson Marker# +4215,2561,5,516,1,0,0,0,0,0,0,0,0 //RL_FIREDANCE#Fire Dance# +4215,2562,5,521,1,0,0,0,0,0,0,0,0 //RL_H_MINE#Howling Mine# +4215,2563,5,2552,1,0,0,0,0,0,0,0,0 //RL_P_ALTER#Platinum Alter# +4215,2564,1,516,10,0,0,0,0,0,0,0,0 //RL_FALLEN_ANGEL#Fallen Angel# 4215,2565,5,2567,1,0,0,0,0,0,0,0,0 //RL_R_TRIP#Round Trip# 4215,2566,5,2560,1,2562,3,0,0,0,0,0,0 //RL_D_TAIL#Dragon Tail# 4215,2567,5,517,1,0,0,0,0,0,0,0,0 //RL_FIRE_RAIN#Fire Rain# -4215,2568,5,2561,2,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel# +4215,2568,5,2552,1,0,0,0,0,0,0,0,0 //RL_HEAT_BARREL#Heat Barrel# 4215,2569,5,2553,1,0,0,0,0,0,0,0,0 //RL_AM_BLAST#Anti-Material Blast# 4215,2570,5,2554,3,0,0,0,0,0,0,0,0 //RL_SLUGSHOT#Slug Shot# -4215,2571,5,2569,3,0,0,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God# +4215,2571,5,2552,1,2569,3,0,0,0,0,0,0 //RL_HAMMER_OF_GOD#Hammer of God# //Summoner 4218,5018,1,0,0,0,0,0,0,0,0,0,0 //SU_BASIC_SKILL## 4218,5019,1,5018,1,0,0,0,0,0,0,0,0 //SU_BITE## diff --git a/doc/status_change.txt b/doc/status_change.txt index 8c14087c2a..b9758b77ca 100644 --- a/doc/status_change.txt +++ b/doc/status_change.txt @@ -939,22 +939,29 @@ SC_MIRACLE () desc: val1: -SC_MADNESSCANCEL () - desc: +SC_MADNESSCANCEL (SI_MADNESSCANCEL) + desc: Increases some statuses (Base ATK, ASPD) val1: -SC_ADJUSTMENT () - desc: +SC_ADJUSTMENT (SI_ADJUSTMENT) + desc: Increases some statuses (Hit, Flee) val1: SC_INCREASING (SI_ACCURACY) - desc: Increase some statuses (hit, dex, agi), GS_INCREASING effect - val1: (hardocded) - -SC_GATLINGFEVER () - desc: + desc: Increase some statuses (Hit, Dex, Agi), GS_INCREASING effect val1: +SC_MAGICALBULLET (SI_GS_MAGICAL_BULLET) + desc: Increases damage based on source's MATK and is reduced by target's MDEF + val1: + +SC_GATLINGFEVER (SI_GATLINGFEVER) + desc: Increases some statuses (Base ATK, Flee, Movement Speed, ASPD) + val1: SkillLv + val2: ASPD increase (20 * val1) + val3: Base ATK (20 + 10 * val1) [pre-renewal] + val4: Flee decrease (5 * val1) + SC_TATAMIGAESHI () desc: val1: @@ -2398,47 +2405,43 @@ SC_SUPER_STAR (SI_SUPER_STAR) desc: Visual effect val1: -SC_HEAT_BARREL () - desc: (Rebellion) Reduce fixed cast time, add ASPD rate, & reduce flee - val1: - val2: -Fixed Casttime - val3: +% ASPD - val4: -Flee - -SC_HEAT_BARREL_AFTER (SI_HEAT_BARREL_AFTER) - desc: (Rebellion) Heat Barrel after-effect, can't do anything in this effect (like Extremity Fist after-effect) - val1: +SC_HEAT_BARREL (SI_HEAT_BARREL) + desc: (Rebellion) Reduce fixed cast time, add ASPD rate, and reduce FLEE + val1: SkillLv + val2: -Fixed Casttime (5 * val1) + val3: +% ASPD (6 + val1 * 2) + val4: -FLEE (25 + val1 * 5) SC_P_ALTER (SI_P_ALTER) - desc: Increase attack ratio & def againts Undead monster - val1: - val2: +ATK ratio - val3: +Def + desc: Increase attack ratio and creates a barrier like Kyrie + val1: SkillLv + val2: +ATK ratio (10 * Coin Count) + val3: Barrier HP (Max HP * (val1 * 5) / 100) SC_E_CHAIN (SI_E_CHAIN) desc: (Rebellion) Has chance to trigger Chain Action for any weapon - val1: - val2: Coins used for succes rate. (5*val) + val1: SkillLv + val2: Coins used for success rate. (5 * val) SC_C_MARKER (SI_C_MARKER) desc: (Rebellion) Crimson Marker effect, also sends the target location to the caster - val1: + val1: SkillLv val2: - val3: -Flee + val3: -FLEE (10) SC_ANTI_M_BLAST (SI_ANTI_M_BLAST) desc: (Rebellion) Anti-Material effect, reduce resistance of Neutral attack - val1: Level for duration look up - val2: Reduction ratio + val1: SkillLv + val2: Reduction ratio (10 * val1) SC_B_TRAP (SI_B_TRAP) - desc: (Rebellion) Bind Trap effect, waiting for Flicker being used - val1: + desc: (Rebellion) Bind Trap effect, waiting for Flicker to be used + val1: SkillLv val2: - val3: -Walk Speed (Unstackable penalty) + val3: -Walk Speed (Unstackable penalty) (25 * val1) SC_H_MINE (SI_H_MINE) - desc: (Rebellion) Howling Mine effect, waiting for Flicker being used + desc: (Rebellion) Howling Mine effect, waiting for Flicker to be used val1: SC_QD_SHOT_READY (SI_E_QD_SHOT_READY) diff --git a/npc/other/gm_npcs.txt b/npc/other/gm_npcs.txt index 5097055d7b..2b456c987e 100644 --- a/npc/other/gm_npcs.txt +++ b/npc/other/gm_npcs.txt @@ -104,6 +104,7 @@ List of GM Management NPCs (incomplete) - Button Girl#sura - Battle Test Control#ko - Guide#ko_helper +- Admin1 -------------------------- - Soul Linker Var - 1st Job Quest Reset diff --git a/npc/re/jobs/2e/rebellion.txt b/npc/re/jobs/2e/rebellion.txt new file mode 100644 index 0000000000..176a8a8f5f --- /dev/null +++ b/npc/re/jobs/2e/rebellion.txt @@ -0,0 +1,855 @@ +//===== rAthena Script ======================================= +//= Rebellion Job Quest +//===== Description: ========================================= +//= [Official Conversion] +//= Job change Quest from Gunslinger -> Rebellion. +//===== Changelogs: ========================================== +//= 1.0 First version. [exneval] +//= 1.1 Syntax change. [Capuche] +//============================================================ + +moc_fild12,261,318,3 script Suspicious Man 4_M_MOCASS2,2,2,{ + end; +OnTouch: + if (Class == Job_Gunslinger && BaseLevel >= 99 && JobLevel >= 70) { + if (isbegin_quest(12340) == 0) { + mes "[Suspicious Man]"; + mes "Finally I've found you, Vagabond Spike! Your neck is mine!"; + next; + select("Say what?"); + mes "[Suspicious Man]"; + mes "*Snort* Don't pretend like you don't know. Look at this poster! You're in it!"; + next; + select("I see the resemblance, but that's not me."); + mes "["+strcharinfo(0)+"]"; + mes "Forget the resemblance. Where did you get that poster? I've never committed a crime."; + next; + mes "[Suspicious Man]"; + mes "I knew you'd try to lie your way out."; + next; + mes "[Suspicious Man]"; + mes "The ^0000ffEinbroch Private Pub^000000 has released that wanted poster. You have many bounty hunters like me on your heels."; + next; + mes "[Suspicious Man]"; + mes "I don't care if you're the right one so long as you look it and I can take you dead or alive."; + } + else { + mes "[Suspicious Man]"; + mes "It's you again! You've got guts to come back here!"; + } + next; + if (select("Make a run for it.:Fight him.") == 1) + mes "^0000ffI should run for now and think about this later.^000000"; + else + mes "^0000ffHe's not the only bounty hunter after me, if he's telling the truth. I need time to strategize.^000000"; + close2; + if (isbegin_quest(12340) == 0) + setquest 12340;// Rebellion Job Change Quest + warp "moc_fild12",186,83; + } + end; +} + +einbroch,54,97,3 script Bouncer 4_M_REBELLION,{ + if (BaseClass != Job_Gunslinger) { + mes "[Bouncer]"; + mes "No loitering around the venue."; + close; + } + switch( isbegin_quest(12340) ) { + case 0: + mes "[Bouncer]"; + mes "Under construction, can't get in."; + close; + case 1: + mes "[Bouncer]"; + mes "*Gasp* You! I thought you were already captured. Ooh, doesn't matter now. You're my Get Out of Jail Free card!"; + next; + select("I'm not the criminal you think I am!"); + mes "[Bouncer]"; + mes "You aren't?"; + next; + mes "^0000ffThe bouncer examines your face.^000000"; + next; + mes "[Bouncer]"; + mes "Hm, you bear a striking resemblance, though you don't look not as menacing as that criminal Spike"; + next; + select("I want to talk to the poster publisher."); + mes "[Bouncer]"; + mes "Your problem is a bit out of my league. Get in. If I find out you're the real deal all along, I'll see that you'll never see the outside again."; + close2; + warp "job_gun",81,29; + end; + case 2: + mes "[Bouncer]"; + mes "You're back. Why?"; + next; + if (select("I want in.:I was passing by.") == 2) { + mes "[Bouncer]"; + mes "You're silly."; + close; + } + mes "[Bouncer]"; + mes "Go ahead. Stay out of trouble."; + close2; + warp "job_gun",70,28; + end; + } +} + +job_gun,68,33,3 script Ruthless Rebellion 4_F_REBELLION,{ + mes "[Ruthless Rebellion]"; + mes "Do you know how to use a gun?"; + close; +} + +job_gun,78,33,3 script Suspicious Gunslinger 4_M_JOB_BLACKSMITH,{ + mes "[Suspicious Gunslinger]"; + mes "..."; + next; + mes "[Quiet Gunslinger]"; + mes "Don't say I look like a blacksmith you know."; + close; +} + +job_gun,74,24,6 script Drunken Man 4_M_LIEMAN,{ + mes "[Drunken Man]"; + mes "*Hiccups* Oh, I'm the owner here."; + mes "Oh wait, am I in the pub or someplace else? Zzz..."; + close; +} + +job_gun,64,33,6 script Anxious Man 4_M_ALCHE_A,{ + mes "[Anxious Man]"; + mes "Maybe I'm in the wrong place. This place doesn't look like a pub."; + close; +} + +job_gun,86,29,3 script Kulbertinov 4_M_REBELLION,{ + if (Class == Job_Rebellion) { + mes "[Kulbertinov]"; + mes "Do you want to see the boss?"; + next; + if (select("Yes.:No.") == 1) { + close2; + warp "job_gun",220,130; + end; + } + end; + } + if (Class != Job_Gunslinger) { + mes "[Kulbertinov]"; + mes "Are you looking for me?"; + close; + } + switch( isbegin_quest(12340) ) { + case 0: + mes "[Kulbertinov]"; + mes "Can I help you?"; + close; + case 1: + mes "[Kulbertinov]"; + mes "What do you want?"; + next; + select("I'm mistaken for a criminal!."); + mes "[Kulbertinov]"; + mes "Wait a minute... Mwah hah hah!"; + next; + mes "^0000ffHe scans your face, then guffaws.^000000"; + next; + mes "[Kulbertinov]"; + mes "I'm sorry. For a moment, I thought Spike came back to life. He was found dead three days ago."; + next; + select("He was captured already?"); + mes "[Kulbertinov]"; + mes "Yes, and the bounty hunter was already paid. The news hasn't spread, and you're the spitting image of him. Go figure."; + next; + select("You have to do something!"); + mes "[Kulbertinov]"; + mes "I'm sorry, but I can't talk to every single bounty hunter for you. Of course, I'm willing to compensate for your inconvenience."; + next; + mes "[Kulbertinov]"; + mes "Hey, how about you join our ranks? At the very last, you won't get shot."; + next; + select("You want me become a bounty hunter?"); + mes "[Kulbertinov]"; + mes "No, bounty hunting is just a pastime. We're the experts of all the firearms in the world."; + next; + mes "[Kulbertinov]"; + mes "Carefree spirits!"; + mes "Magical spitfires!"; + mes "We call ourselves the ^0000ffRebellion^000000."; + next; + mes "[Kulbertinov]"; + mes "You look like you know how to use a gun. How'd you like to join our ranks? You won't have to worry about other bounty hunters anymore too."; + next; + if (select("Let me think it over.:I don't think I have a choice.") == 1) { + mes "[Kulbertinov]"; + mes "You can think it over and over, but the answer won't change. Just take the offer."; + } + else { + mes "[Kulbertinov]"; + mes "Good thinking. Might as well do it now and get it over with."; + } + next; + mes "[Kulbertinov]"; + mes "Talk to Enwin Conick. She guides drifting spirits like you to the way of the Rebellion. I'll send word to her. Ah, and don't point your gun at her."; + completequest 12340; + setquest 12341;// Rebellion Job Change Quest + close2; + warp "job_gun",19,15; + end; + case 2: + mes "[Kulbertinov]"; + mes "Do you have business with Elwin Conick?"; + next; + if (select("No.:Send me to Elwin Conick.") == 1) { + mes "[Kulbertinov]"; + mes "All right. Care for a shot of vodka?"; + close; + } + mes "[Kulbertinov]"; + mes "Okay, I'll let her know."; + close2; + warp "job_gun",19,15; + end; + } +} + +job_gun,19,24,3 script Elwin Conick#1 4_F_REBELLION,{ + if (Class != Job_Gunslinger) { + mes "[Elwin Conick]"; + mes "If you don't want to join Rebellions, just get out."; + close2; + warp "job_gun",81,29; + end; + } + if (isbegin_quest(12341) == 1) { + mes "[Elwin Conick]"; + mes "Do you to join us Rebellions?"; + next; + mes "^0000ffThe short woman with keen eyes stares into your eyes.^000000"; + next; + mes "[Elwin Conick]"; + mes "Sign here."; + next; + mes "^0000ffThe undersigned party '_____' will not speak of the test even if he or she suffers injury, mutilation, or death in an unforeseen accident that may occur during the test.^000000"; + next; + select("WHAT?!"); + mes "[Elwin Conick]"; + mes "Do you want join us or not?"; + next; + if (select("I give up.:...I'll sign.") == 1) { + mes "[Elwin Conick]"; + mes "Your choice."; + close2; + warp "job_gun",81,29; + end; + } + mes "[Elwin Conick]"; + mes "Good. Now, follow me."; + close2; + warp "job_gun",117,41; + end; + } + if (isbegin_quest(12342) == 1) { + mes "[Elwin Conick]"; + mes "Do you want to try again?"; + next; + if (select("I give up.:Do it.") == 1) { + mes "[Elwin Conick]"; + mes "Your choice."; + close2; + warp "job_gun",81,29; + end; + } + mes "[Elwin Conick]"; + mes "Follow me."; + close2; + warp "job_gun",117,41; + end; + } + if (isbegin_quest(12343) > 0) { + mes "[Elwin Conick]"; + if (isbegin_quest(12343) == 1) + mes "You still have Ivan's shooting test, do you want to try again?"; + else + mes "Ivan's shooting test have not finished yet, do you want to try again?"; + next; + if (select("I give up.:Do it.") == 1) { + mes "[Elwin Conick]"; + mes "It's not worth to give up, now go out and relax."; + close2; + warp "job_gun",81,29; + end; + } + mes "[Elwin Conick]"; + mes "Remember to give your best."; + close2; + warp "job_gun",120,130; + end; + } + if (isbegin_quest(12345) == 1) { + mes "[Elwin Conick]"; + mes "Ivan is waiting for you, go find him."; + close2; + warp "job_gun",81,29; + end; + } + mes "[Elwin Conick]"; + mes "You have no more test to take. Why don't you go out and have a drink?"; + close2; + warp "job_gun",81,29; + end; +} + +job_gun,117,46,3 script Elwin Conick#2 4_F_REBELLION,{ + if (Class != Job_Gunslinger) { + mes "[Elwin Conick]"; + mes "If you don't want to join Rebellions, just get out."; + close2; + warp "job_gun",81,29; + end; + } + .@emt_chk = getstatus(SC_MONSTER_TRANSFORM,1); + .@quest_12341 = isbegin_quest(12341); + .@quest_12342 = isbegin_quest(12342); + if (.@emt_chk == 3169) { + mes "^0000ffYou are already in the test form. If you have finished all your tests, report to Elwin Conick in the Assembly Room^000000."; + close; + } + if (.@emt_chk) { + mes "[Elwin Conick]"; + mes "Look at yourself, do you really want to test?"; + next; + mes "^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000"; + next; + if (select("Wait.:Go away.") == 2) { + mes "[Elwin Conick]"; + mes "Come back when you aren't in any form."; + close2; + warp "job_gun",81,29; + end; + } + mes "[Elwin Conick]"; + mes "It's not worth to give up, now go out and relax."; + close; + } + if (.@quest_12341 == 1 || .@quest_12342 == 1) { + if (countitem(6746)) { + mes "[Elwin Conick]"; + mes "Any leftover Steel Artifacts must be returned after the test."; + delitem 6746,countitem(6746);// Steel_Article + close; + } + if (countitem(6747)) { + mes "[Elwin Conick]"; + mes "Any leftover Steel Artifacts must be returned after the test."; + delitem 6747,countitem(6747);// Steel_Article_ + close; + } + if ((countitem(13118) - isequipped(13118)) > 0) { + mes "[Elwin Conick]"; + mes "Time over. You failed the test. Let me take all your leftover test materials."; + delitem 13118,1;// Tiny_Flame + close; + } + if (.@quest_12342 == 1) + .@menu$ = "Got it."; + else { + .@menu$ = "Okay."; + setquest 12342;// Rebellion Job Change Quest + completequest 12341; + } + mes "[Elwin Conick]"; + mes "Listen up. I'm not going to great lengths trying to explain the test to you."; + next; + select( .@menu$ ); + mes "[Elwin Conick]"; + if (.@quest_12341 == 1) { + mes "This is where the firearm molds are cast. Everywhere you can see Steel Artifacts are being produced."; + next; + mes "[Elwin Conick]"; + mes "We Rebellions are weapon experts at heart. Here you will learn to create and assemble firearms."; + next; + mes "[Elwin Conick]"; + mes "You'll be asked to control the furnace controller near the entrance and select 5 standard Steel Artifacts."; + next; + mes "[Elwin Conick]"; + mes "You'll then take them to the next Assembly Room and assemble them info a firearm. You'll be given 3 minutes to do all that. You'd better be fast and focused, or you will fail the test."; + next; + mes "[Elwin Conick]"; + mes "I'll be in the next room, waiting for you to bring me a complete firearm. To check the elapsed time, you'll be transformed into a different job. ^0000ffIf you pass 3 minutes and turn back to normal, go back to me and start the test again.^000000."; + } + else { + mes "You'll be asked to control switches on the machine and select 5 standard Steel Artifacts."; + next; + mes "[Elwin Conick]"; + mes "You'll then take them to the next Assembly Room and assemble them into a complete firearm. You'll be given 3 minutes to finish all that. ^0000ffTo check the elapsed time, you'll be transformed into a different job^000000."; + next; + mes "[Elwin Conick]"; + mes "I'll be in the next room, waiting for you to bring me a complete firearm. Remember, ^0000ffyou fail the test when your transformation expires after 3 minutes^000000."; + } + transform 3169,180000; + close; + } + mes "[Elwin Conick]"; + mes "Ah? Are you lost? You need to register first and then get back here."; + close2; + warp "job_gun",81,29; + end; +} + +job_gun,198,39,3 script Elwin Conick#3 4_F_REBELLION,{ + if (Class != Job_Gunslinger) { + mes "[Elwin Conick]"; + mes "If you don't want to join Rebellions, just get out."; + close2; + warp "job_gun",81,29; + end; + } + if (isbegin_quest(12342) == 1) { + .@emt_chk = getstatus(SC_MONSTER_TRANSFORM,1); + if (.@emt_chk == 3169) { + if ((countitem(13118) - isequipped(13118)) < 1) {// don't count if equipped + mes "[Elwin Conick]"; + mes "Are you done? I don't see any completed firearm in your inventory."; + close; + } + mes "[Elwin Conick]"; + mes "It's shoddy but not bad, given the time. You passed."; + delitem 13118,1;// Tiny_Flame + next; + mes "[Elwin Conick]"; + mes "Let me take all your leftover test materials."; + delitem 6746,countitem(6746);// Iron_Artifact + delitem 6747,countitem(6747);// Steel_Artifact + next; + mes "[Elwin Conick]"; + mes "Now you can move on to the next course. Ivan Sidorenko will oversee your test."; + completequest 12342; + close2; + warp "job_gun",120,133; + end; + } + if (.@emt_chk) { + mes "[Elwin Conick]"; + mes "Look at yourself, do you really want to test?"; + next; + mes "^0000ffElwin see you turn into another form and she is very angry. Wait for your current form ends, and then find her again.^000000"; + next; + if (select("Wait.:Go away.") == 2) { + mes "[Elwin Conick]"; + mes "Come back when you aren't in any form."; + close2; + warp "job_gun",81,29; + end; + } + mes "[Elwin Conick]"; + mes "It's not worth to give up, now go out and relax."; + close; + } + mes "[Elwin Conick]"; + mes "Time over. You failed the test. Let me take all your leftover test materials."; + delitem 6746,countitem(6746);// Iron_Artifact + delitem 6747,countitem(6747);// Steel_Artifact + delitem 13118,(countitem(13118) - isequipped(13118));// Tiny_Flame + next; + mes "[Elwin Conick]"; + mes "Let's start again."; + close2; + warp "job_gun",117,41; + end; + } + mes "[Elwin Conick]"; + mes "Ah? Are you lost? You need to register first and then get back here."; + close2; + warp "job_gun",81,29; + end; +} + +job_gun,165,18,0 script Furnace Controller#1 CLEAR_NPC,{ + if (Class != Job_Gunslinger) { + mes "Only authorized user can do the operation."; + close; + } + if (getstatus(SC_MONSTER_TRANSFORM,1) == 3169) {// J_REB_SHECIL1 + if (isbegin_quest(12342) == 1) { + mes "Do you want to dredge the mold up from the furnace?"; + next; + if (select("Quit.:Begin.") == 1) { + mes "Switch to the Standby mode."; + close; + } + mes "Initializing Furnace Controller ZX-3100..."; + disablenpc "Furnace Controller#1"; + donpcevent "Furnace Controller#2::OnStart"; + close; + } + } + mes "Not an authorized user. Abort the operation."; + close; +} + +job_gun,214,36,0 script Auto Anvil#1 CLEAR_NPC,{ + if (Class != Job_Gunslinger) { + mes "Only authorized user can do the operation."; + close; + } + if ((countitem(13118) - isequipped(13118)) > 0) {// Tiny_Flame + mes "Unauthorized firearm creation has been detected. Report to Manager Elwin."; + close; + } + if (getstatus(SC_MONSTER_TRANSFORM,1) == 3169) { + if (countitem(6747) < 5) {// Steel_Article_ + mes "You do not have standard Steel Artifacts."; + close; + } + if (isbegin_quest(12342) == 1) { + mes "Do you want to use the auto anvil and shape the standard Steel Artifacts into a firearm?"; + next; + if (select("Quit.:Begin.") == 1) { + mes "For your safety, please step away from the auto anvil."; + close; + } + if (rand(1,10) > 6) { + mes "You have successfully created a firearm using the auto anvil. ^ff0000Please report before your transformation expires^000000."; + specialeffect EF_REPAIRWEAPON; + getitem 13118,1;// Tiny_Flame + } + else { + mes "Failed to create a firearm."; + specialeffect EF_SUI_EXPLOSION; + } + delitem 6747,5;// Steel_Article_ + close; + } + } + mes "Not an authorized user. Abort the operation."; + close; +} + +job_gun,165,18,0 script Furnace Controller#2 CLEAR_NPC,{ + mes "The system is busy dredging a completed mold from the furnace."; + close; + +OnStart: + enablenpc "Furnace Controller#2"; + sleep 3000; + mapannounce "job_gun","Furnace Controller: Dredging a mold up from the furnace... Workers, stand by at the production line.",bc_map,"0x00ff44"; + sleep 500; + for ( .@i = 0; .@i < 30; ++.@i ) { + .@eff_rnd = rand(1,100); + if (.@eff_rnd < 33) + donpcevent "Heating Furnace#3::OnStart"; + else if (.@eff_rnd > 66) + donpcevent "Heating Furnace#4::OnStart"; + else + donpcevent "Heating Furnace#5::OnStart"; + sleep 200; + .@d_itemx = rand(127,143); + .@d_itemy = rand(26,29); + makeitem 6746,1,"job_gun",.@d_itemx,.@d_itemy;// Steel_Article + if (rand(1,10) > 7) + makeitem 6747,1,"job_gun",.@d_itemx,.@d_itemy;// Steel_Article_ + sleep 500; + } + sleep 2000; + mapannounce "job_gun","Furnace Controller: Finishing the operation... Entering Standby mode in 15 seconds.",bc_map,"0x00ff44"; + sleep 15000; + disablenpc "Furnace Controller#2"; + enablenpc "Furnace Controller#1"; + end; +OnInit: + disablenpc "Furnace Controller#2"; + end; +} + +job_gun,130,31,0 script Heating Furnace#3 CLEAR_NPC,{ + end; +OnStart: + specialeffect EF_FIREPILLAR; + sleep 500; + specialeffect EF_FIREPILLARBOMB; + end; +} +job_gun,136,31,0 duplicate(Heating Furnace#3) Heating Furnace#4 CLEAR_NPC +job_gun,141,31,0 duplicate(Heating Furnace#3) Heating Furnace#5 CLEAR_NPC + +job_gun,120,138,3 script Ivan Sidorenko#1 4_M_REBELLION,{ + if (Class != Job_Gunslinger) { + mes "[Ivan Sidorenko]"; + mes "This is shooting test area, you can't come here as you like."; + close2; + warp "job_gun",81,29; + end; + } + if (isbegin_quest(12342) < 2) { + mes "[Ivan Sidorenko]"; + mes "There seems to be a mistake, you can't stay here."; + close2; + warp "job_gun",81,29; + end; + } + if (isbegin_quest(12343) == 0) { + mes "[Ivan Sidorenko]"; + mes "Hey, stay focused--we're using live ammo here, and you can get shot anytime."; + next; + mes "[Ivan Sidorenko]"; + mes "Let me make this quick. Basically you'll be running in this shooting range consisting of 5 sections."; + next; + mes "[Ivan Sidorenko]"; + mes "The objective is to find enemies in the midst of a crowd quickly and without fail."; + next; + mes "[Ivan Sidorenko]"; + mes "Among all the targets, you must shoot only the ^0000ffStandard-issue Targets^000000. If you make a mistake, you'll lose points."; + next; + mes "[Ivan Sidorenko]"; + mes "Let's try. There aren't many ^0000ffStandard-issue Targets^000000, so keep your eyes peeled."; + next; + mes "[Ivan Sidorenko]"; + mes "^0000ffYou have 3 minutes to finish this test. If you can't finish before your transformation expires^000000, you'll fail. If that happens, just follow the path back to me."; + next; + mes "[Ivan Sidorenko]"; + mes "^0000ffYou'll fail if you miss a Standard-issue Target, or shoot 3 incorrect targets^000000. Let's get started."; + setquest 12343;// Rebellion Job Change Quest + setquest 12344;// Rebellion Job Change Quest + transform 3169,180000; + close2; + warp "job_gun",102,146; + end; + } + if (isbegin_quest(12343) == 1) { + if (checkquest(12343,HUNTING) == 2) + .@j_r_s = 10; + if (checkquest(12344,HUNTING) == 2) + .@j_r_f = 2; + if (getstatus(SC_MONSTER_TRANSFORM,1) != 3169) + .@j_r_t = 5; + .@j_r_c = .@j_r_s - .@j_r_f - .@j_r_t; + if (.@j_r_c > 9) { + mes "[Ivan Sidorenko]"; + mes "Good job. I didn't think you could pass so quickly."; + completequest 12343; + completequest 12344; + setquest 12345;// Rebellion Job Change Quest + next; + mes "[Ivan Sidorenko]"; + mes "You may leave and wait outside. I'll bring other instructors' evaluation reports to see you."; + close2; + warp "job_gun",210,132; + end; + } + if (.@j_r_c == 8) { + mes "[Ivan Sidorenko]"; + mes "You're quick enough, but you shot too many incorrect targets. You failed."; + } + else if (.@j_r_c == 5) { + mes "[Ivan Sidorenko]"; + mes "You accurate enough, but you took too much time. Slow Rebellions don't survive long enough."; + } + else if (.@j_r_c < 5) { + mes "[Ivan Sidorenko]"; + mes "You failed at both speed and accuracy. How did you survive this long?"; + } + else { + mes "[Ivan Sidorenko]"; + mes "There's a problem, the statistic seems to be wrong. Well... This can happen sometimes."; + } + erasequest 12343; + erasequest 12344; + next; + mes "[Ivan Sidorenko]"; + mes "Let's try again. Be more careful this time."; + setquest 12343; + setquest 12344; + transform 3169,180000; + close2; + warp "job_gun",102,146; + end; + } + mes "[Ivan Sidorenko]"; + mes "How did you not leave?"; + next; + mes "[Ivan Sidorenko]"; + mes "You may leave and wait outside. I'll bring other instructors' evaluation reports to see you."; + close2; + warp "job_gun",210,132; + end; +} + +job_gun,1,4,0 script #target CLEAR_NPC,{ + end; +OnStart: + killmonster "job_gun","#target::OnMyMobDead"; +OnInit: +OnMyMobDead: + hideonnpc "#target"; + while( mobcount("job_gun","#target::OnMyMobDead") < 16 ) { + .@m_rg = rand(1,5); + if (.@m_rg == 1) + monster "job_gun",rand(88,99),rand(143,147),"Standard-issue Target",3169,1,"#target::OnMyMobDead"; + else if (.@m_rg == 2) + monster "job_gun",rand(92,96),rand(95,122),"Standard-issue Target",3169,1,"#target::OnMyMobDead"; + else if (.@m_rg == 3) + monster "job_gun",rand(143,159),rand(99,100),"Standard-issue Target",3169,1,"#target::OnMyMobDead"; + else if (.@m_rg == 4) + monster "job_gun",rand(157,158),rand(137,160),"Standard-issue Target",3169,1,"#target::OnMyMobDead"; + else + monster "job_gun",rand(119,134),rand(156,160),"Standard-issue Target",3169,1,"#target::OnMyMobDead"; + } + end; +} + +job_gun,1,5,0 script #nontarget CLEAR_NPC,{ + end; +OnStart: + killmonster "job_gun","#nontarget::OnMyMobDead"; +OnInit: +OnMyMobDead: + hideonnpc "#nontarget"; + while( mobcount("job_gun","#nontarget::OnMyMobDead") < 56 ) { + .@m_rg = rand(1,5); + if (.@m_rg == 1) + monster "job_gun",rand(88,99),rand(143,147),"Defective Target",3170,1,"#nontarget::OnMyMobDead"; + else if (.@m_rg == 2) + monster "job_gun",rand(92,96),rand(95,122),"Defective Target",3170,1,"#nontarget::OnMyMobDead"; + else if (.@m_rg == 3) + monster "job_gun",rand(143,159),rand(99,100),"Defective Target",3170,1,"#nontarget::OnMyMobDead"; + else if (.@m_rg == 4) + monster "job_gun",rand(157,158),rand(137,160),"Defective Target",3170,1,"#nontarget::OnMyMobDead"; + else + monster "job_gun",rand(119,134),rand(156,160),"Defective Target",3170,1,"#nontarget::OnMyMobDead"; + } + end; +} + +job_gun,220,132,3 script Ivan Sidorenko#2 10062,{ + if (!checkweight(1201,1)) { + mes "You have too many items, please reduce them to continue."; + close; + } + if ((MaxWeight - Weight) < 1000) { + mes "The items in your inventory are weighing you down. Lighten your weight first."; + close; + } + if (isbegin_quest(12345) == 0) { + mes "[Ivan Sidorenko]"; + mes "There must have been a mistake. You aren't supposed to remain here."; + close2; + warp "job_gun",81,29; + end; + } + if (Class == Job_Gunslinger) { + if (BaseLevel < 99 || JobLevel < 70) { + mes "[Ivan Sidorenko]"; + mes "Huh? You look so weak? I have nothing more to say."; + close; + } + if (SkillPoint) { + mes "[Ivan Sidorenko]"; + mes "Oh no~ You still have Skill Points."; + close; + } + mes "[Ivan Sidorenko]"; + mes "Kulbertinov, Elwin, and I've evaluated your Rebellion test results."; + next; + mes "[Ivan Sidorenko]"; + mes "And..."; + next; + mes "[Ivan Sidorenko]"; + mes "You've met all our requirements including the attitude and the test performance."; + next; + mes "[Ivan Sidorenko]"; + mes "That's right, you're now a member of the Rebellion. Get ready to be wowed."; + next; + mes "[Ivan Sidorenko]"; + mes "And Elwin wants you to have this. Take good care of it. He made it for you."; + jobchange Job_Rebellion; + completequest 12345; + getitem 13119,1;// Freedom_Flame + next; + mes "[Ivan Sidorenko]"; + mes "See you later."; + close2; + warp "job_gun",81,29; + end; + } + if (Class == Job_Rebellion) { + mes "[Ivan Sidorenko]"; + mes "This life should be fun, not boring."; + next; + mes "[Ivan Sidorenko]"; + mes "And by becoming a Rebellion your life should be upgraded. So, go and create a great journey, make us proud!"; + close2; + warp "job_gun",81,29; + end; + } + mes "[Ivan Sidorenko]"; + mes "Do you have something to say to me, don't you?"; + close; +} + +job_gun,220,138,4 shop Prop Vending Machine 2_VENDING_MACHINE1,13210:-1,13211:-1,13212:-1,13213:-1,13214:-1,7663:-1,7664:-1,7665:-1 + +job_gun,216,138,4 script Butler Karlex 1_M_01,{ + mes "[Butler Karlex]"; + mes "Use this temporary storage to keep your items safe while on the Advancement test."; + next; + .@s = select("Quit.:Open the storage."); + mes "[Butler Karlex]"; + mes "Thank you for using the service."; + close2; + if (.@s == 2) + openstorage; + end; +} + +job_gun,56,26,0 warp rebelroom#1 2,2,einbroch,49,97 +job_gun,18,10,0 warp rebelroom#2 2,2,job_gun,81,29 +job_gun,165,22,0 warp rebelroom#3 2,2,job_gun,196,35 +job_gun,197,49,0 warp rebelroom#4 2,2,job_gun,157,21 +job_gun,88,144,0 warp shootingrange#1 3,3,job_gun,93,123 +job_gun,105,97,0 warp shootingrange#2 3,3,job_gun,125,98 +job_gun,156,115,0 warp shootingrange#3 3,3,job_gun,157,137 +job_gun,152,154,0 warp shootingrange#4 3,3,job_gun,135,154 +job_gun,130,146,0 warp shootingrange#5 3,3,job_gun,120,130 + + +job_gun,1,1,0 script Admin1 CLEAR_NPC,{ + callfunc "F_GM_NPC"; + if (callfunc("F_GM_NPC",1854,0) != 1) + end; + mes "[Time Manager]"; + mes "What time would you like to return?"; + next; + switch( select("Cancel:Test monster spawn:Start from beginning:Furnace Zone:Shooting Zone:Complete the test") ) { + case 1: + end; + case 2: + donpcevent "#target::OnStart"; + donpcevent "#nontarget::OnStart"; + end; + case 3: + callsub S_Quest,0,0; + case 4: + callsub S_Quest,12341,12341; + case 5: + callsub S_Quest,12342,12342; + case 6: + callsub S_Quest,12345,12344; + } + end; + +S_Quest: + setarray .@arguments[0], getarg(0), getarg(1); + for ( .@quest = 12340; .@quest <= 12345; ++.@quest ) { + if (isbegin_quest(.@quest) > 0) + erasequest .@quest; + if (.@quest <= .@arguments[0]) + setquest .@quest; + if (.@quest <= .@arguments[1]) + completequest .@quest; + } + end; +} diff --git a/npc/re/mapflag/nobranch.txt b/npc/re/mapflag/nobranch.txt index 9d7af9fc21..d02d8c0786 100644 --- a/npc/re/mapflag/nobranch.txt +++ b/npc/re/mapflag/nobranch.txt @@ -23,6 +23,7 @@ job3_guil01 mapflag nobranch job3_guil02 mapflag nobranch job3_guil03 mapflag nobranch job_ko mapflag nobranch +job_gun mapflag nobranch job3_rang01 mapflag nobranch job3_rang02 mapflag nobranch job3_rune01 mapflag nobranch diff --git a/npc/re/mapflag/nomemo.txt b/npc/re/mapflag/nomemo.txt index 87be9e4541..70754ce647 100644 --- a/npc/re/mapflag/nomemo.txt +++ b/npc/re/mapflag/nomemo.txt @@ -68,6 +68,7 @@ gld2_gef mapflag nomemo gld2_pay mapflag nomemo gld2_prt mapflag nomemo job_ko mapflag nomemo +job_gun mapflag nomemo ma_scene01 mapflag nomemo ma_in01 mapflag nomemo ma_dun01 mapflag nomemo diff --git a/npc/re/mapflag/nopenalty.txt b/npc/re/mapflag/nopenalty.txt index 2a6a741d35..e9426458df 100644 --- a/npc/re/mapflag/nopenalty.txt +++ b/npc/re/mapflag/nopenalty.txt @@ -70,3 +70,4 @@ job3_gen01 mapflag nopenalty // Ext -------------------- job3_sha01 mapflag nopenalty job_ko mapflag nopenalty +job_gun mapflag nopenalty diff --git a/npc/re/mapflag/nosave.txt b/npc/re/mapflag/nosave.txt index 40675745fa..c798b58e8e 100644 --- a/npc/re/mapflag/nosave.txt +++ b/npc/re/mapflag/nosave.txt @@ -28,6 +28,7 @@ job3_gen01 mapflag nosave SavePoint // Ext job3_sha01 mapflag nosave SavePoint job_ko mapflag nosave SavePoint +job_gun mapflag nosave SavePoint //Guild Dungeons ============================== gld_dun01_2 mapflag nosave SavePoint diff --git a/npc/re/mapflag/noteleport.txt b/npc/re/mapflag/noteleport.txt index f6ef879b98..90fbeaf93c 100644 --- a/npc/re/mapflag/noteleport.txt +++ b/npc/re/mapflag/noteleport.txt @@ -58,6 +58,7 @@ ma_zif07 mapflag noteleport ma_zif08 mapflag noteleport ma_zif09 mapflag noteleport job_ko mapflag noteleport +job_gun mapflag noteleport ecl_in01 mapflag noteleport ecl_in02 mapflag noteleport ecl_in03 mapflag noteleport diff --git a/npc/re/mapflag/nowarp.txt b/npc/re/mapflag/nowarp.txt index f10fe07903..735978cdf6 100644 --- a/npc/re/mapflag/nowarp.txt +++ b/npc/re/mapflag/nowarp.txt @@ -22,3 +22,5 @@ te_aldecas2 mapflag nowarp te_aldecas3 mapflag nowarp te_aldecas4 mapflag nowarp te_aldecas5 mapflag nowarp + +job_gun mapflag nowarp diff --git a/npc/re/mapflag/nowarpto.txt b/npc/re/mapflag/nowarpto.txt index e409f3181d..0de5918cda 100644 --- a/npc/re/mapflag/nowarpto.txt +++ b/npc/re/mapflag/nowarpto.txt @@ -65,3 +65,5 @@ te_aldecas2 mapflag nowarpto te_aldecas3 mapflag nowarpto te_aldecas4 mapflag nowarpto te_aldecas5 mapflag nowarpto + +job_gun mapflag nowarpto diff --git a/npc/re/merchants/shops.txt b/npc/re/merchants/shops.txt index 4101fde834..3f81256497 100644 --- a/npc/re/merchants/shops.txt +++ b/npc/re/merchants/shops.txt @@ -125,6 +125,7 @@ prt_in,109,68,4 shop Trap Specialist#prt 66,7940:-1,12341:-1 prt_in,175,137,4 shop Black Marketeer#prt 49,2139:-1,2800:-1,2801:-1,2802:-1,2803:-1,2804:-1,2805:-1,2806:-1,2807:-1,18000:-1,18001:-1,18002:-1,18003:-1,18004:-1,12392:-1,12393:-1,12394:-1,6145:-1,6146:-1,6147:-1,6186:-1,2808:-1 s_atelier,17,110,1 shop Part-Timer#sc_prt 67,6123:-1,6120:-1 prontera,96,209,4 shop Rebellion Accessories 564,13210:-1,13211:-1,13212:-1,7663:-1,7664:-1,7665:-1,7940:300,13200:-1,13201:-1,13202:-1,13203:-1,13204:-1,13205:-1,13206:-1,13207:-1 +//prontera,96,209,4 shop Rebellion Prop Vending 564,13210:-1,13211:-1,13212:-1,7663:-1,7664:-1,7665:-1,7940:300,13200:-1,13221:-1,13222:-1,13215:-1,13216:-1,13217:-1,13218:-1,13219:-1,13220:-1,13223:-1,13224:-1,13225:-1,13226:-1,13227:-1 prontera,92,209,4 shop Rebellion Weapons 564,13120:-1,13122:-1,13189:-1,13190:-1,13192:-1,13193:-1,13194:-1,13197:-1,13198:-1,28200:-1,28201:-1 //======================================================= diff --git a/npc/re/scripts_jobs.conf b/npc/re/scripts_jobs.conf index 68670615c9..1141dbbdb0 100644 --- a/npc/re/scripts_jobs.conf +++ b/npc/re/scripts_jobs.conf @@ -12,6 +12,7 @@ npc: npc/re/jobs/1-1/swordman.txt npc: npc/re/jobs/1-1/thief.txt // - 2e npc: npc/re/jobs/2e/kagerou_oboro.txt +npc: npc/re/jobs/2e/rebellion.txt // - 3-1 npc: npc/re/jobs/3-1/archbishop.txt npc: npc/re/jobs/3-1/mechanic.txt diff --git a/src/map/battle.c b/src/map/battle.c index 1caef37a80..88580ea5e3 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -1407,6 +1407,17 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam status_change_end(bl, SC_KYRIE, INVALID_TIMER); } + if ((sce = sc->data[SC_P_ALTER]) && damage > 0) { + clif_specialeffect(bl, 336, AREA); + sce->val3 -= (int)cap_value(damage, INT_MIN, INT_MAX); + if (sce->val3 >= 0) + damage = 0; + else + damage = -sce->val3; + if (sce->val3 <= 0) + status_change_end(bl, SC_P_ALTER, INVALID_TIMER); + } + if ((sce = sc->data[SC_TUNAPARTY]) && damage > 0) { sce->val2 -= (int)cap_value(damage, INT_MIN, INT_MAX); if (sce->val2 >= 0) @@ -2953,6 +2964,12 @@ static struct Damage battle_calc_attack_masteries(struct Damage wd, struct block ATK_ADD(wd.damage, wd.damage2, 10 * sc->data[SC_GN_CARTBOOST]->val1); #ifdef RENEWAL ATK_ADD(wd.masteryAtk, wd.masteryAtk2, 10 * sc->data[SC_GN_CARTBOOST]->val1); +#endif + } + if (sc->data[SC_P_ALTER]) { + ATK_ADD(wd.damage, wd.damage2, sc->data[SC_P_ALTER]->val2); +#ifdef RENEWAL + ATK_ADD(wd.masteryAtk, wd.masteryAtk2, sc->data[SC_P_ALTER]->val2); #endif } } @@ -3293,7 +3310,7 @@ static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_lis } } else if( ((sd->weapontype1 == W_REVOLVER && (skill_lv = pc_checkskill(sd,GS_CHAINACTION)) > 0) //Normal Chain Action effect - || (sc && sc->count && sc->data[SC_E_CHAIN] && (skill_lv = sc->data[SC_E_CHAIN]->val2) > 0)) //Chain Action of ETERNAL_CHAIN + || (sc && sc->count && sc->data[SC_E_CHAIN] && (skill_lv = sc->data[SC_E_CHAIN]->val1) > 0)) //Chain Action of ETERNAL_CHAIN && rnd()%100 < 5*skill_lv ) //Success rate { wd.div_ = skill_get_num(GS_CHAINACTION,skill_lv); @@ -3323,6 +3340,9 @@ static struct Damage battle_calc_multi_attack(struct Damage wd, struct block_lis if( tsc && (tsc->data[SC_BITE] || tsc->data[SC_ANKLE] || tsc->data[SC_ELECTRICSHOCKER]) ) wd.div_ = tstatus->size + 2 + ( (rnd()%100 < 50-tstatus->size*10) ? 1 : 0 ); break; + case RL_QD_SHOT: + wd.div_ = 1 + (sd ? sd->status.job_level : 1) / 20 + (tsc && tsc->data[SC_C_MARKER] ? 2 : 0); + break; case SC_JYUMONJIKIRI: if( tsc && tsc->data[SC_JYUMONJIKIRI] ) wd.div_ = wd.div_ * -1;// needs more info @@ -3378,11 +3398,6 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s status_change_end(src,SC_CRUSHSTRIKE,INVALID_TIMER); skill_break_equip(src,src,EQP_WEAPON,2000,BCT_SELF); } - //!TODO: Verify this placement & skills that affected by these effects [Cydh] - if (sc->data[SC_HEAT_BARREL]) - skillratio += 200; - if (sc->data[SC_P_ALTER]) - skillratio += sc->data[SC_P_ALTER]->val2; } switch(skill_id) { @@ -3658,16 +3673,20 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s case GS_PIERCINGSHOT: #ifdef RENEWAL if (sd && sd->weapontype1 == W_RIFLE) - skillratio += 50 + 30 * skill_lv; + skillratio += 150 + 30 * skill_lv; else + skillratio += 100 + 20 * skill_lv; +#else + skillratio += 20 * skill_lv; #endif - skillratio += 20 * skill_lv; break; case GS_RAPIDSHOWER: skillratio += 400 + 50 * skill_lv; break; case GS_DESPERADO: skillratio += 50 * (skill_lv - 1); + if (sc && sc->data[SC_FALLEN_ANGEL]) + skillratio *= 2; break; case GS_DUST: skillratio += 50 * skill_lv; @@ -3677,7 +3696,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s break; case GS_SPREADATTACK: #ifdef RENEWAL - skillratio += 20 * skill_lv; + skillratio += 30 * skill_lv; #else skillratio += 20 * (skill_lv - 1); #endif @@ -4219,53 +4238,67 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s skillratio += -100 + 200 * skill_lv; break; case RL_FIREDANCE: - skillratio += -100 + 100 * skill_lv; - skillratio += (skillratio * status_get_lv(src)) / 300; //(custom) + skillratio += -100 + 200 * skill_lv; + skillratio += (sd ? pc_checkskill(sd, GS_DESPERADO) * 50 : 0); break; case RL_BANISHING_BUSTER: - skillratio += -100 + (400 * skill_lv); //(custom) + skillratio += -100 + 2000 + 300 * skill_lv; break; case RL_S_STORM: - skillratio += -100 + (200 * skill_lv); //(custom) + skillratio += -100 + 1700 + 200 * skill_lv; break; case RL_SLUGSHOT: { - uint16 w = 50; - int16 idx = -1; + uint16 w = 0; - if (sd && (idx = sd->equip_index[EQI_AMMO]) >= 0 && sd->inventory_data[idx]) - w = sd->inventory_data[idx]->weight / 10; - skillratio += -100 + (max(w,1) * skill_lv * 30); //(custom) + if (sd) { + unsigned short slug[] = { ITEMID_SLUG_AMMUNITION_XH, ITEMID_SLUG_AMMUNITION_SH, ITEMID_SLUG_AMMUNITION_H, ITEMID_SLUG_AMMUNITION_M, ITEMID_SLUG_AMMUNITION_L }; // In order of priority + int16 index = -1; + + for (i = 0; i < ARRAYLENGTH(slug); i++) { + if ((index = pc_search_inventory(sd, slug[i])) >= 0) { + w = (sd->inventory_data[index]->weight / 10) * 32; + break; + } + } + } + if (target->type != BL_PC) // Monster + skillratio += -100 + 1200 * skill_lv; + else // Player + skillratio += -100 + 2000 * skill_lv; + switch(tstatus->size) { + case SZ_SMALL: skillratio += w * 2; break; + case SZ_MEDIUM: skillratio += w * 3; break; + case SZ_BIG: skillratio += w * 4; break; + } } break; case RL_D_TAIL: - skillratio += -100 + (2500 + 500 * skill_lv); + skillratio += -100 + 4000 + 1000 * skill_lv; break; case RL_R_TRIP: - skillratio += -100 + 150 * skill_lv; //(custom) + skillratio += -100 + 1000 + 300 * skill_lv; break; case RL_R_TRIP_PLUSATK: - skillratio += -100 + 100 * skill_lv + rnd()%10 + 100; //(custom) + skillratio += -100 + 300 + 300 * skill_lv; break; case RL_H_MINE: - skillratio += 100 + 200 * skill_lv; - //If damaged by Flicker, explosion damage (800%:1100%:1400%:1700%:2000%) - if (sd && sd->flicker) - skillratio += 800 + (skill_lv - 1) * 300; + if (sd && sd->flicker) // Flicker explosion damage: 500 + 300 * SkillLv + skillratio += -100 + 500 + 300 * skill_lv; + else // 200 + 200 * SkillLv + skillratio += -100 + 200 + 200 * skill_lv; break; case RL_HAMMER_OF_GOD: - //! TODO: Please check the right formula. [Cydh] - //kRO Update 2013-07-24. Ratio: 1600+lv*800 - //kRO Update 2014-02-12. Coins increase the damage - skillratio += -100 + (2400 + (skill_lv - 1) * 800) + 10 *((sd) ? sd->spiritball_old : 1); //(custom) - break; - case RL_QD_SHOT: - skillratio += -100 + (max(pc_checkskill(sd,GS_CHAINACTION),1) * status_get_dex(src) / 5); //(custom) + skillratio += -100 + 2800 + 1400 * skill_lv; + if (sd) { + if (tsc && tsc->data[SC_C_MARKER]) + skillratio += 100 * sd->spiritball_old; + else if (sd->spiritball_old) + skillratio += 10 * sd->spiritball_old; + } break; case RL_FIRE_RAIN: - skillratio += -100 + 2000 + (200 * (skill_lv - 1)) + status_get_dex(src); //(custom) //kRO Update 2013-07-24. 2,000% + caster's DEX (?) [Cydh] - break; case RL_AM_BLAST: - skillratio += -100 + 300 * skill_lv + status_get_dex(src) / 5; //(custom) + skillratio += -100 + 3500 + 300 * skill_lv; break; case SU_BITE: skillratio += 100; @@ -4376,6 +4409,7 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s struct map_session_data *sd = BL_CAST(BL_PC, src); struct status_change *sc = status_get_sc(src); struct status_data *sstatus = status_get_status_data(src); + struct status_data *tstatus = status_get_status_data(target); int inf3 = skill_get_inf3(skill_id); // Kagerou/Oboro Earth Charm effect +15% wATK @@ -4399,9 +4433,14 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s ATK_ADD(wd.equipAtk, wd.equipAtk2, sc->data[SC_DRUMBATTLE]->val2); if (sc->data[SC_MADNESSCANCEL]) ATK_ADD(wd.equipAtk, wd.equipAtk2, 100); + if (sc->data[SC_MAGICALBULLET]) { + if (sstatus->matk_max > sstatus->matk_min) { + ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max((sstatus->matk_min + rnd() % (sstatus->matk_max - sstatus->matk_min)) - (tstatus->mdef + tstatus->mdef2), 0)); + } else { + ATK_ADD(wd.weaponAtk, wd.weaponAtk2, i64max(sstatus->matk_min - (tstatus->mdef + tstatus->mdef2), 0)); + } + } if (sc->data[SC_GATLINGFEVER]) { - struct status_data *tstatus = status_get_status_data(target); - if (tstatus->size == SZ_SMALL) { ATK_ADD(wd.equipAtk, wd.equipAtk2, 10 * sc->data[SC_GATLINGFEVER]->val1); } else if (tstatus->size == SZ_MEDIUM) { @@ -4510,7 +4549,10 @@ struct Damage battle_attack_sc_bonus(struct Damage wd, struct block_list *src, s break; } } - + if (sc->data[SC_HEAT_BARREL]) { + ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_HEAT_BARREL]->val3); + RE_ALLATK_ADDRATE(wd, sc->data[SC_HEAT_BARREL]->val3); + } if((wd.flag&(BF_LONG|BF_MAGIC)) == BF_LONG) { if (sc->data[SC_MTF_RANGEATK]) { // Monster Transformation bonus ATK_ADDRATE(wd.damage, wd.damage2, sc->data[SC_MTF_RANGEATK]->val1); @@ -4663,10 +4705,6 @@ struct Damage battle_calc_defense_reduction(struct Damage wd, struct block_list if( src->type == BL_MOB && (skill = pc_checkskill(tsd, NC_RESEARCHFE)) > 0 && (sstatus->def_ele == ELE_FIRE || sstatus->def_ele == ELE_EARTH) ) vit_def += skill * 10; - if( src->type == BL_MOB && //Only affected from mob - tsc && tsc->count && tsc->data[SC_P_ALTER] && //If the Platinum Alter is activated - (battle_check_undead(sstatus->race,sstatus->def_ele) || sstatus->race==RC_UNDEAD) ) //Undead attacker - vit_def += tsc->data[SC_P_ALTER]->val3; } else { //Mob-Pet vit-eq #ifndef RENEWAL //VIT + rnd(0,[VIT/20]^2-1) @@ -5461,7 +5499,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl switch(skill_id) { #ifdef RENEWAL case NJ_ISSEN: - case GS_MAGICALBULLET: case ASC_BREAKER: case CR_ACIDDEMONSTRATION: case GN_FIRE_EXPANSION_ACID: @@ -5541,7 +5578,6 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl switch (skill_id) { #ifdef RENEWAL case NJ_ISSEN: - case GS_MAGICALBULLET: case ASC_BREAKER: case CR_ACIDDEMONSTRATION: case GN_FIRE_EXPANSION_ACID: @@ -6405,25 +6441,6 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } } break; -#ifdef RENEWAL - case GS_MAGICALBULLET: - { - //Official renewal formula [exneval] - //Damage = (Final ATK + Final MATK) * Skill modifiers - (eDEF + sDEF + eMDEF + sMDEF) - short totaldef, totalmdef; - struct Damage atk, matk; - - atk = battle_calc_weapon_attack(src,target,skill_id,skill_lv,md.miscflag); - matk = battle_calc_magic_attack(src,target,skill_id,skill_lv,md.miscflag); - md.damage = atk.damage + matk.damage; - totaldef = (short)status_get_def(target) + tstatus->def2; - totalmdef = tstatus->mdef + tstatus->mdef2; - md.damage -= totaldef + totalmdef; - md.flag |= BF_WEAPON; - nk |= NK_IGNORE_FLEE; // Flee already checked in battle_calc_weapon_attack, so don't do it again here [exneval] - } - break; -#endif case BA_DISSONANCE: md.damage = 30 + skill_lv * 10; if (sd) @@ -6587,7 +6604,9 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * break; case RL_B_TRAP: // kRO 2014-02-12: Damage: Caster's DEX, Target's current HP, Skill Level - md.damage = ((200 + status_get_dex(src)) * skill_lv * 10) + sstatus->hp; // (custom) + md.damage = status_get_dex(src) * 10 + (skill_lv * 3 * status_get_hp(target)) / 100; + if (status_bl_has_mode(target, MD_STATUS_IMMUNE)) + md.damage /= 10; break; case MH_EQC: md.damage = max(tstatus->hp - sstatus->hp, 0); @@ -6655,10 +6674,6 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } switch(skill_id) { -#ifdef RENEWAL - case GS_MAGICALBULLET: - break; // Card fix already done -#endif default: md.damage += battle_calc_cardfix(BF_MISC, src, target, nk, s_ele, 0, md.damage, 0, md.flag); break; @@ -6705,10 +6720,6 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list * } switch(skill_id) { -#ifdef RENEWAL - case GS_MAGICALBULLET: - break; // GVG fix already done -#endif default: md.damage = battle_calc_damage(src,target,&md,md.damage,skill_id,skill_lv); if(map_flag_gvg2(target->m)) diff --git a/src/map/clif.h b/src/map/clif.h index ab3b516d48..2ff93e0539 100644 --- a/src/map/clif.h +++ b/src/map/clif.h @@ -462,6 +462,7 @@ enum useskill_fail_cause USESKILL_FAIL_STYLE_CHANGE_GRAPPLER = 82, USESKILL_FAIL_THERE_ARE_NPC_AROUND = 83, USESKILL_FAIL_NEED_MORE_BULLET = 84, + USESKILL_FAIL_COINS = 85, USESKILL_FAIL_MAX }; @@ -500,6 +501,12 @@ enum clif_messages { MERGE_ITEM_NOT_AVAILABLE = 0x887, GUILD_MASTER_WOE = 0xb93, /// <"Currently in WoE hours, unable to delegate Guild leader" GUILD_MASTER_DELAY = 0xb94, /// <"You have to wait for one day before delegating a new Guild leader" + SKILL_NEED_GATLING = 0x9fa, + SKILL_NEED_SHOTGUN = 0x9fb, + SKILL_NEED_RIFLE = 0x9fc, + SKILL_NEED_REVOLVER = 0x9fd, + SKILL_NEED_HOLY_BULLET = 0x9fe, + SKILL_NEED_GRENADE = 0xa01, }; enum e_personalinfo { diff --git a/src/map/itemdb.h b/src/map/itemdb.h index 13711b8bee..71d19a62c8 100644 --- a/src/map/itemdb.h +++ b/src/map/itemdb.h @@ -108,6 +108,15 @@ enum item_itemid ITEMID_ANCILLA = 12333, ITEMID_DUN_TELE_SCROLL3 = 12352, ITEMID_REINS_OF_MOUNT = 12622, + ITEMID_NOBLE_NAMEPLATE = 12705, + ITEMID_SILVER_BULLET = 13201, + ITEMID_SLUG_AMMUNITION_L = 13210, + ITEMID_SLUG_AMMUNITION_M = 13211, + ITEMID_SLUG_AMMUNITION_H = 13212, + ITEMID_SLUG_AMMUNITION_SH = 13213, + ITEMID_SLUG_AMMUNITION_XH = 13214, + ITEMID_PURIFICATION_BULLET = 13220, + ITEMID_SILVER_BULLET_ = 13221, ITEMID_DUN_TELE_SCROLL1 = 14527, ITEMID_DUN_TELE_SCROLL2 = 14581, ITEMID_WOB_RUNE = 14582, diff --git a/src/map/map.cpp b/src/map/map.cpp index 57486ac58d..702140d56b 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -2032,7 +2032,6 @@ int map_quit(struct map_session_data *sd) { // Both these statuses are removed on logout. [L0ne_W0lf] status_change_end(&sd->bl, SC_SLOWCAST, INVALID_TIMER); status_change_end(&sd->bl, SC_CRITICALWOUND, INVALID_TIMER); - status_change_end(&sd->bl, SC_HEAT_BARREL_AFTER, INVALID_TIMER); status_change_end(&sd->bl, SC_H_MINE, INVALID_TIMER); status_change_end(&sd->bl, SC_ANTI_M_BLAST, INVALID_TIMER); status_change_end(&sd->bl, SC_B_TRAP, INVALID_TIMER); diff --git a/src/map/pc.c b/src/map/pc.c index d7e5433245..75d1ad6c5c 100755 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4948,7 +4948,6 @@ bool pc_isUseitem(struct map_session_data *sd,int n) sd->sc.data[SC_CRYSTALIZE] || sd->sc.data[SC_KAGEHUMI] || (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM) || - sd->sc.data[SC_HEAT_BARREL_AFTER] || sd->sc.data[SC_KINGS_GRACE] || sd->sc.data[SC_SUHIDE])) return false; @@ -9949,7 +9948,6 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) { skill_enchant_elemental_end(&sd->bl, SC_NONE); status_change_end(&sd->bl, SC_FEARBREEZE, INVALID_TIMER); status_change_end(&sd->bl, SC_EXEEDBREAK, INVALID_TIMER); - status_change_end(&sd->bl, SC_P_ALTER, INVALID_TIMER); } // On armor change @@ -9961,7 +9959,7 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) { } // On ammo change - if (sd->inventory_data[n]->type == IT_AMMO) + if (sd->inventory_data[n]->type == IT_AMMO && (sd->inventory_data[n]->nameid != ITEMID_SILVER_BULLET || sd->inventory_data[n]->nameid != ITEMID_PURIFICATION_BULLET || sd->inventory_data[n]->nameid != ITEMID_SILVER_BULLET_)) status_change_end(&sd->bl, SC_P_ALTER, INVALID_TIMER); if (sd->state.autobonus&sd->inventory.u.items_inventory[n].equip) diff --git a/src/map/script_constants.h b/src/map/script_constants.h index 7347570965..1340111278 100644 --- a/src/map/script_constants.h +++ b/src/map/script_constants.h @@ -1368,7 +1368,7 @@ export_constant(SC_MOONSTAR); export_constant(SC_SUPER_STAR); export_constant(SC_HEAT_BARREL); - export_constant(SC_HEAT_BARREL_AFTER); + export_constant(SC_MAGICALBULLET); export_constant(SC_P_ALTER); export_constant(SC_E_CHAIN); export_constant(SC_C_MARKER); @@ -1478,6 +1478,7 @@ export_constant(SC_DORAM_MATK); export_constant(SC_DORAM_FLEE2); export_constant(SC_DORAM_SVSP); + export_constant(SC_FALLEN_ANGEL); #ifdef RENEWAL export_constant(SC_EXTREMITYFIST2); #endif diff --git a/src/map/skill.c b/src/map/skill.c index 2432b53fd0..34eaaaa55e 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1792,11 +1792,10 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 break; case RL_MASS_SPIRAL: - sc_start2(src,bl,SC_BLEEDING,10 * skill_lv + rnd()%50,skill_lv,src->id,skill_get_time2(skill_id,skill_lv)); //(custom) + sc_start2(src,bl,SC_BLEEDING,30 + 10 * skill_lv,skill_lv,src->id,skill_get_time2(skill_id,skill_lv)); break; case RL_SLUGSHOT: - if (bl->type != BL_PC) - sc_start(src,bl,SC_STUN,10 * skill_lv + rnd()%50,skill_lv,skill_get_time2(skill_id,skill_lv)); //(custom) + sc_start(src,bl,SC_STUN,100,skill_lv,skill_get_time2(skill_id,skill_lv)); break; case RL_BANISHING_BUSTER: { uint16 i, n = skill_lv; @@ -1807,7 +1806,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 if (status_isimmune(bl)) break; - if (dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) { + if ((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || rnd()%100 >= 50 + 10 * skill_lv) { if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); break; @@ -1859,7 +1858,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 case SC_MOONSTAR: case SC_SUPER_STAR: case SC_ALL_RIDING: case SC_MTF_ASPD: case SC_MTF_RANGEATK: case SC_MTF_MATK: case SC_MTF_MLEATKED: case SC_MTF_CRIDAMAGE: case SC_HEAT_BARREL: - case SC_HEAT_BARREL_AFTER: case SC_P_ALTER: case SC_E_CHAIN: + case SC_P_ALTER: case SC_E_CHAIN: case SC_C_MARKER: case SC_B_TRAP: case SC_H_MINE: case SC_STRANGELIGHTS: case SC_DECORATION_OF_MUSIC: case SC_GN_CARTBOOST: case SC_RECOGNIZEDSPELL: case SC_CHASEWALK2: case SC_BITE: @@ -1905,16 +1904,11 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 } break; case RL_S_STORM: - //kRO update 2014-02-12. Break 1 Equipment by minimum chance 5%/10%/15%/20%/25% - { - uint16 pos[] = { EQP_HEAD_LOW, EQP_HEAD_MID, EQP_HEAD_TOP, EQP_HAND_R, EQP_HAND_L, EQP_ARMOR, EQP_SHOES, EQP_GARMENT, EQP_ACC_L, EQP_ACC_R }; - skill_break_equip(src,bl,pos[rnd()%ARRAYLENGTH(pos)], - max(skill_lv * 500,(sstatus->dex * skill_lv * 10) - (tstatus->agi * 20)), //(custom) - BCT_ENEMY); - } + //kRO update 2014-02-12. Break a headgear by minimum chance 5%/10%/15%/20%/25% + skill_break_equip(src, bl, EQP_HEAD_TOP, max(skill_lv * 500, (sstatus->dex * skill_lv * 10) - (tstatus->agi * 20)), BCT_ENEMY); //! TODO: Figure out break chance formula break; case RL_AM_BLAST: - sc_start(src,bl,SC_ANTI_M_BLAST,10 * skill_lv + rnd()%50,skill_lv,skill_get_time2(skill_id,skill_lv)); //(custom) + sc_start(src,bl,SC_ANTI_M_BLAST,20 + 10 * skill_lv,skill_lv,skill_get_time2(skill_id,skill_lv)); break; case RL_HAMMER_OF_GOD: sc_start(src,bl,SC_STUN,100,skill_lv,skill_get_time2(skill_id,skill_lv)); @@ -3053,10 +3047,6 @@ void skill_attack_blow(struct block_list *src, struct block_list *dsrc, struct b if (skill_blown(dsrc,target,blewcount,dir,BLOWN_NONE) < blewcount) skill_addtimerskill(src, tick + status_get_amotion(src), target->id, 0, 0, RL_R_TRIP_PLUSATK, skill_lv, BF_WEAPON, flag|SD_ANIMATION); break; - case RL_SLUGSHOT: - skill_blown(dsrc,target,blewcount,dir, BLOWN_NONE); - skill_addtimerskill(src, tick + status_get_amotion(src), target->id, 0, 0, skill_id, skill_lv, skill_get_type(skill_id), flag|SD_ANIMATION); - break; default: skill_blown(dsrc,target,blewcount,dir, BLOWN_NONE); if (!blewcount && target->type == BL_SKILL && damage > 0) { @@ -3437,9 +3427,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list * dmg.dmotion = clif_skill_damage(src, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, (flag&SD_LEVEL) ? -1 : skill_lv, DMG_SPLASH); break; case RL_R_TRIP_PLUSATK: - case RL_BANISHING_BUSTER: case RL_S_STORM: - case RL_SLUGSHOT: dmg.dmotion = clif_skill_damage(dsrc,bl,tick,status_get_amotion(src),dmg.dmotion,damage,dmg.div_,skill_id,-1,DMG_SPLASH); break; case AB_DUPLELIGHT_MELEE: @@ -3948,8 +3936,8 @@ int skill_area_sub_count (struct block_list *src, struct block_list *target, uin return 0; { struct status_change *tsc = status_get_sc(target); - // Only counts marked target with SC_C_MARKER by caster - if (!tsc || !tsc->data[SC_C_MARKER] || tsc->data[SC_C_MARKER]->val2 != src->id) + // Only counts marked target with SC_C_MARKER + if (!tsc || !tsc->data[SC_C_MARKER]) return 0; } break; @@ -4184,10 +4172,7 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) skill_castend_damage_id(src, target, skl->skill_id, pc_checkskill(((TBL_PC *)src), skl->skill_id), tick, 0); } break; - case RL_SLUGSHOT: - if (target->type == BL_PC) - sc_start(src, target, SC_SITDOWN_FORCE, 100, skl->skill_lv, skill_get_time(skl->skill_id, skl->skill_lv)); - break; + case SU_SV_ROOTTWIST_ATK: { struct status_change *tsc = status_get_sc(target); @@ -4228,25 +4213,11 @@ static int skill_timerskill(int tid, unsigned int tick, int id, intptr_t data) case RL_FIRE_RAIN: { int dummy = 1, i = skill_get_splash(skl->skill_id,skl->skill_lv); - map_foreachinallarea(skill_cell_overlap,src->m,skl->x-i,skl->y-i,skl->x+i,skl->y+i,BL_SKILL,skl->skill_id,&dummy,src); + if (rnd() % 100 < (15 + 5 * skl->skill_lv)) + map_foreachinallarea(skill_cell_overlap,src->m,skl->x-i,skl->y-i,skl->x+i,skl->y+i,BL_SKILL,skl->skill_id,&dummy,src); skill_unitsetting(src,skl->skill_id,skl->skill_lv,skl->x,skl->y,0); } break; - case RL_FALLEN_ANGEL: - { - struct map_session_data *sd = (src->type == BL_PC) ? map_id2sd(src->id): NULL; - if (sd) { - if (!skill_check_condition_castend(sd,GS_DESPERADO,skl->skill_lv)) - break; - sd->state.autocast = 1; - } - skill_castend_pos2(src,skl->x,skl->y,GS_DESPERADO,skl->skill_lv,tick,skl->flag); - if (sd) { - battle_consume_ammo(sd,GS_DESPERADO,skl->skill_lv); - sd->state.autocast = 0; - } - } - break; case NC_MAGMA_ERUPTION: skill_unitsetting(src,skl->skill_id,skl->skill_lv,skl->x,skl->y,0); break; @@ -4671,6 +4642,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case KO_SETSUDAN: case GC_DARKCROW: case RL_MASS_SPIRAL: + case RL_BANISHING_BUSTER: case RL_SLUGSHOT: case RL_AM_BLAST: skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); @@ -4936,7 +4908,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case KO_BAKURETSU: case GN_ILLUSIONDOPING: case RL_FIREDANCE: - case RL_BANISHING_BUSTER: case RL_S_STORM: case RL_R_TRIP: case MH_XENO_SLASHER: @@ -5183,6 +5154,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint skill_attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag); break; + case AL_HOLYLIGHT: + status_change_end(bl, SC_P_ALTER, INVALID_TIMER); case MG_SOULSTRIKE: case NPC_DARKSTRIKE: case MG_COLDBOLT: @@ -5190,7 +5163,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case MG_LIGHTNINGBOLT: case WZ_EARTHSPIKE: case AL_HEAL: - case AL_HOLYLIGHT: case NPC_DARKTHUNDER: case PR_ASPERSIO: case MG_FROSTDIVER: @@ -5206,7 +5178,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case WM_METALICSOUND: case KO_KAIHOU: case MH_ERASER_CUTTER: - case RL_B_TRAP: skill_attack(BF_MAGIC,src,src,bl,skill_id,skill_lv,tick,flag); break; @@ -5266,13 +5237,13 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case TF_THROWSTONE: #ifdef RENEWAL case ASC_BREAKER: - case GS_MAGICALBULLET: #endif case NPC_SMOKING: case GS_FLING: case NJ_ZENYNAGE: case GN_THORNS_TRAP: case GN_HELLS_PLANT_ATK: + case RL_B_TRAP: skill_attack(BF_MISC,src,src,bl,skill_id,skill_lv,tick,flag); break; #ifdef RENEWAL @@ -5966,32 +5937,24 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint break; } - // First attack. If target is marked by SC_C_MARKER, do another splash damage! - if (tsc && tsc->data[SC_C_MARKER] && tsc->data[SC_C_MARKER]->val2 == src->id) { - map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, - src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_damage_id); - status_change_end(bl, SC_C_MARKER, INVALID_TIMER); - } - } - else + map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR|BL_SKILL, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|1, skill_castend_damage_id); + } else skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag); - if ((flag&8)) - flag |= 1; break; case RL_QD_SHOT: + if (sd) + status_change_end(&sd->bl, SC_QD_SHOT_READY, INVALID_TIMER); case RL_D_TAIL: - if (!sd || (sd && tsc && tsc->data[SC_C_MARKER] && tsc->data[SC_C_MARKER]->val2 == src->id)) { + if (!sd || (sd && tsc && tsc->data[SC_C_MARKER])) { int sflag = flag; if (skill_id == RL_QD_SHOT && skill_area_temp[1] == bl->id ) break; if (flag&1) sflag = (skill_area_temp[0]&0xFFF)|(flag&SD_LEVEL ? SD_LEVEL : 0)|(flag&SD_ANIMATION ? SD_ANIMATION : 0); skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag); - if (sd) { - if (skill_id != RL_D_TAIL) - status_change_end(bl, SC_C_MARKER, INVALID_TIMER); - } + if (sd && skill_id == RL_D_TAIL) + status_change_end(bl, SC_C_MARKER, INVALID_TIMER); } break; @@ -6656,6 +6619,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case GS_MADNESSCANCEL: case GS_ADJUSTMENT: case GS_INCREASING: +#ifdef RENEWAL + case GS_MAGICALBULLET: +#endif case NJ_KASUMIKIRI: case NJ_UTSUSEMI: case NJ_NEN: @@ -7932,7 +7898,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_REBOUND: case SC_TELEKINESIS_INTENSE: case SC_MOONSTAR: case SC_SUPER_STAR: case SC_ALL_RIDING: case SC_MTF_ASPD: case SC_MTF_RANGEATK: case SC_MTF_MATK: case SC_MTF_MLEATKED: - case SC_MTF_CRIDAMAGE: case SC_HEAT_BARREL: case SC_HEAT_BARREL_AFTER: + case SC_MTF_CRIDAMAGE: case SC_HEAT_BARREL: case SC_P_ALTER: case SC_E_CHAIN: case SC_C_MARKER: case SC_B_TRAP: case SC_H_MINE: case SC_STRANGELIGHTS: case SC_DECORATION_OF_MUSIC: case SC_GN_CARTBOOST: case SC_CHASEWALK2: @@ -9338,7 +9304,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SC_MOONSTAR: case SC_SUPER_STAR: case SC_ALL_RIDING: case SC_MTF_ASPD: case SC_MTF_RANGEATK: case SC_MTF_MATK: case SC_MTF_MLEATKED: case SC_MTF_CRIDAMAGE: case SC_HEAT_BARREL: - case SC_HEAT_BARREL_AFTER: case SC_P_ALTER: case SC_E_CHAIN: + case SC_P_ALTER: case SC_E_CHAIN: case SC_C_MARKER: case SC_B_TRAP: case SC_H_MINE: case SC_STRANGELIGHTS: case SC_DECORATION_OF_MUSIC: case SC_GN_CARTBOOST: case SC_RECOGNIZEDSPELL: case SC_CHASEWALK2: case SC_ACTIVE_MONSTER_TRANSFORM: @@ -10712,11 +10678,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case RL_C_MARKER: if (sd) { - // If marked by someone else, failed - if (tsce && tsce->val2 != src->id) { - clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - break; - } + // If marked by someone else remove it + if (tsce && tsce->val2 != src->id) + status_change_end(bl, type, INVALID_TIMER); // Check if marked before ARR_FIND(0, MAX_SKILL_CRIMSON_MARKER, i, sd->c_marker[i] == bl->id); @@ -10740,15 +10704,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui } break; case RL_D_TAIL: - if (sd) { - skill_area_temp[0] = map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count); - if (!skill_area_temp[0]) { - clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); - break; - } - } map_foreachinrange(skill_area_sub, bl, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|SD_ANIMATION|1, skill_castend_damage_id); - skill_area_temp[0] = 0; break; case RL_QD_SHOT: if (sd) { @@ -10773,17 +10729,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case RL_FLICKER: if (sd) { - int16 splash = skill_get_splash(skill_id, skill_lv); sd->flicker = true; skill_area_temp[1] = 0; clif_skill_nodamage(src, bl, skill_id, skill_lv, 1); // Detonate RL_B_TRAP - if ((i = pc_checkskill(sd, RL_B_TRAP))) { + if (pc_checkskill(sd, RL_B_TRAP)) map_foreachinallrange(skill_bind_trap, src, AREA_SIZE, BL_SKILL, src); - } // Detonate RL_H_MINE if ((i = pc_checkskill(sd, RL_H_MINE))) - map_foreachinallrange(skill_area_sub, src, splash, BL_CHAR, src, RL_H_MINE, i, tick, flag|BCT_ENEMY|SD_SPLASH, skill_castend_damage_id); + map_foreachinallrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, RL_H_MINE, i, tick, flag|BCT_ENEMY|SD_SPLASH, skill_castend_damage_id); sd->flicker = false; } break; @@ -10990,6 +10944,20 @@ static int8 skill_castend_id_check(struct block_list *src, struct block_list *ta return USESKILL_FAIL_MAX; } break; + case RL_D_TAIL: + if (src) { + int count = 0; + + if (battle_config.skill_wall_check) + count = map_foreachinshootrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, 0, BCT_ENEMY, skill_area_sub_count); + else + count = map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_CHAR, src, skill_id, skill_lv, 0, BCT_ENEMY, skill_area_sub_count); + + if (!count) { + return USESKILL_FAIL_LEVEL; + } + } + break; } if (inf&INF_ATTACK_SKILL || @@ -11532,7 +11500,6 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case HW_GANBANTEIN: case LG_EARTHDRIVE: case SC_ESCAPE: - case RL_HAMMER_OF_GOD: case SU_CN_METEOR: break; //Effect is displayed on respective switch case. default: @@ -12236,53 +12203,37 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui case RL_FALLEN_ANGEL: if (unit_movepos(src,x,y,1,1)) { - uint8 skill_use_lv = sd ? pc_checkskill(sd,GS_DESPERADO) : 5; - if (!skill_use_lv) { - clif_skill_nodamage(src, src, skill_id, skill_lv, 0); - break; - } - clif_fixpos(src); - clif_skill_nodamage(src, src, skill_id, skill_lv, 1); - skill_addtimerskill(src, tick+500, 0, x, y, RL_FALLEN_ANGEL, skill_use_lv, BF_WEAPON, flag|SD_LEVEL|SD_ANIMATION|SD_SPLASH); - } - else { + clif_snap(src, src->x, src->y); + sc_start(src, src, type, 100, skill_id, skill_get_time(skill_id, skill_lv)); + } else { if (sd) clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); } break; - case RL_HAMMER_OF_GOD: - { - i = skill_get_splash(skill_id, skill_lv); - if (sd) { - skill_area_temp[0] = map_foreachinarea(skill_area_sub, src->m, x-i, y-i, x+i, y+i, BL_CHAR, src, skill_id, skill_lv, tick, BCT_ENEMY, skill_area_sub_count); - if (!skill_area_temp[0]) { - // This skill doesn't have area effect, apply self? :P - //clif_skill_poseffect(src, skill_id, skill_lv, x, y, tick+500); - clif_skill_nodamage(src, src, skill_id, 0, 1); - break; - } - } - map_foreachinarea(skill_area_sub, src->m, x-i, y-i, x+i, y+i, BL_CHAR, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|SD_ANIMATION|8, skill_castend_damage_id); - skill_area_temp[0] = 0; - break; - } - break; case RL_FIRE_RAIN: { int w, wave = skill_lv + 5, dir = map_calc_dir(src,x,y); int sx = x = src->x, sy = y = src->y; - for (w = 1; w <= wave; w++) { + for (w = 0; w <= wave; w++) { switch (dir) { - case 0: sy = y + w; break; - case 1: sy = y + w; sx = x - w; break; - case 2: sx = x - w; break; - case 3: sx = x - w; sy = y - w; break; - case 4: sy = y - w; break; - case 5: sx = x + w; sy = y - w; break; - case 6: sx = x + w; break; - case 7: sy = y + w; sx = x + w; break; + case DIR_NORTH: + case DIR_NORTHWEST: + case DIR_NORTHEAST: + sy = y + w; + break; + case DIR_WEST: + sx = x - w; + break; + case DIR_SOUTHWEST: + case DIR_SOUTH: + case DIR_SOUTHEAST: + sy = y - w; + break; + case DIR_EAST: + sx = x + w; + break; } - skill_addtimerskill(src,gettick() + (40 * w),0,sx,sy,skill_id,skill_lv,dir,flag); + skill_addtimerskill(src,gettick() + (80 * w),0,sx,sy,skill_id,skill_lv,dir,flag); } } break; @@ -12702,8 +12653,8 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_ ARR_FIND(0, MAX_SKILL_ITEM_REQUIRE, i, req.itemid[i] && (req.itemid[i] == ITEMID_TRAP || req.itemid[i] == ITEMID_TRAP_ALLOY)); if( i != MAX_SKILL_ITEM_REQUIRE && req.itemid[i] ) req_item = req.itemid[i]; - if( map_flag_gvg2(src->m) || map[src->m].flag.battleground ) - limit *= 4; // longer trap times in WOE [celest] + if (skill_id == RL_B_TRAP) // Target type should not change on GvG maps. + break; if( battle_config.vs_traps_bctall && map_flag_vs(src->m) && (src->type&battle_config.vs_traps_bctall) ) target = BCT_ALL; } @@ -15183,6 +15134,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i break; case GS_GLITTERING: + case RL_RICHS_COIN: if(sd->spiritball >= 10) { clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); return false; @@ -15607,7 +15559,14 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i break; //no required item; get out of here if (!pc_checkequip2(sd,reqeqit,EQI_ACC_L,EQI_MAX)) { if (i == require.eqItem_count) { - clif_skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); + switch(skill_id) { + case RL_P_ALTER: + clif_msg(sd, SKILL_NEED_HOLY_BULLET); + break; + default: + clif_skill_fail(sd, skill_id, USESKILL_FAIL_THIS_WEAPON, 0); + break; + } return false; } } else @@ -15623,8 +15582,24 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i } if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) { - clif_skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0); - return false; + switch(skill_id) { + case RA_AIMEDBOLT: + break; + default: + if (require.weapon&(1< 0 && status->sp < (unsigned int)require.sp) { @@ -15637,9 +15612,12 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i return false; } - if( (require.spiritball > 0 && sd->spiritball < require.spiritball) || - (require.spiritball == -1 && sd->spiritball < 1) ) { - clif_skill_fail(sd,skill_id,USESKILL_FAIL_SPIRITS,(require.spiritball == -1)? 1: require.spiritball); + if ((require.spiritball > 0 && sd->spiritball < require.spiritball) || + (require.spiritball == -1 && sd->spiritball < 1)) { + if ((sd->class_&MAPID_BASEMASK) == MAPID_GUNSLINGER || (sd->class_&MAPID_UPPERMASK) == MAPID_REBELLION) + clif_skill_fail(sd, skill_id, USESKILL_FAIL_COINS, (require.spiritball == -1) ? 1 : require.spiritball); + else + clif_skill_fail(sd, skill_id, USESKILL_FAIL_SPIRITS, (require.spiritball == -1) ? 1 : require.spiritball); return false; } @@ -15827,7 +15805,12 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, clif_skill_fail(sd,skill_id,USESKILL_FAIL_PAINTBRUSH,0); //Paint brush is required. else if( require.itemid[i] == ITEMID_ANCILLA ) clif_skill_fail(sd,skill_id,USESKILL_FAIL_ANCILLA,0); //Ancilla is required. - else { + else if(skill_id == RL_SLUGSHOT) { + if (i < MAX_SKILL_ITEM_REQUIRE - 1) // Check all Slug types + continue; + else + clif_skill_fail(sd, RL_SLUGSHOT, USESKILL_FAIL_NEED_MORE_BULLET, 0); // Bullet is required. + } else { char output[CHAT_SIZE_MAX]; //Official is using msgstringtable.txt for each requirement failure //clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); @@ -15835,7 +15818,8 @@ bool skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, clif_messagecolor(&sd->bl,color_table[COLOR_RED],output,false,SELF); } return false; - } + } else if (skill_id == RL_SLUGSHOT) // Slug found - simulate priority and cancel the loop + break; } /* check the status required */ @@ -15943,6 +15927,9 @@ void skill_consume_requirement(struct map_session_data *sd, uint16 skill_id, uin if( (n = pc_search_inventory(sd,require.itemid[i])) >= 0 ) pc_delitem(sd,n,require.amount[i],0,1,LOG_TYPE_CONSUME); + + if (skill_id == RL_SLUGSHOT && n > -1) // Slug found - simulate priority and cancel the loop + break; } } } @@ -17156,9 +17143,9 @@ int skill_detonator(struct block_list *bl, va_list ap) } /** -* Rebellion's Bind Trap explosion -* @author [Cydh] -**/ + * Rebellion's Bind Trap explosion + * @author [Cydh] + */ static int skill_bind_trap(struct block_list *bl, va_list ap) { struct skill_unit *su = NULL; struct block_list *src = NULL; @@ -17170,7 +17157,7 @@ static int skill_bind_trap(struct block_list *bl, va_list ap) { if (bl->type != BL_SKILL || !(su = (struct skill_unit *)bl) || !(su->group)) return 0; - if (su->group->unit_id != UNT_B_TRAP || su->group->src_id != src->id ) + if (su->group->unit_id != UNT_B_TRAP || su->group->src_id != src->id) return 0; map_foreachinallrange(skill_trap_splash, bl, su->range, BL_CHAR, bl,su->group->tick); diff --git a/src/map/status.c b/src/map/status.c index 840dd2d714..f35f3696ae 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -501,6 +501,9 @@ void initChangeTables(void) #endif set_sc( GS_ADJUSTMENT , SC_ADJUSTMENT , SI_ADJUSTMENT , SCB_HIT|SCB_FLEE ); set_sc( GS_INCREASING , SC_INCREASING , SI_ACCURACY , SCB_AGI|SCB_DEX|SCB_HIT ); +#ifdef RENEWAL + set_sc( GS_MAGICALBULLET , SC_MAGICALBULLET , SI_GS_MAGICAL_BULLET , SCB_NONE ); +#endif set_sc( GS_GATLINGFEVER , SC_GATLINGFEVER , SI_GATLINGFEVER , #ifndef RENEWAL SCB_BATK|SCB_FLEE|SCB_SPEED|SCB_ASPD ); @@ -835,8 +838,9 @@ void initChangeTables(void) set_sc( RL_B_TRAP , SC_B_TRAP , SI_B_TRAP , SCB_SPEED ); set_sc( RL_E_CHAIN , SC_E_CHAIN , SI_E_CHAIN , SCB_NONE ); set_sc( RL_P_ALTER , SC_P_ALTER , SI_P_ALTER , SCB_NONE ); + set_sc( RL_FALLEN_ANGEL , SC_FALLEN_ANGEL, SI_BLANK, SCB_NONE ); set_sc( RL_SLUGSHOT , SC_STUN , SI_SLUGSHOT , SCB_NONE ); - set_sc( RL_HEAT_BARREL , SC_HEAT_BARREL , SI_HEAT_BARREL , SCB_FLEE|SCB_ASPD ); + set_sc( RL_HEAT_BARREL , SC_HEAT_BARREL , SI_HEAT_BARREL , SCB_HIT|SCB_ASPD ); set_sc_with_vfx( RL_C_MARKER , SC_C_MARKER , SI_C_MARKER , SCB_FLEE ); set_sc_with_vfx( RL_AM_BLAST , SC_ANTI_M_BLAST , SI_ANTI_M_BLAST , SCB_NONE ); @@ -1055,7 +1059,6 @@ void initChangeTables(void) StatusIconChangeTable[SC_MTF_MLEATKED] = SI_MTF_MLEATKED; StatusIconChangeTable[SC_MTF_CRIDAMAGE] = SI_MTF_CRIDAMAGE; StatusIconChangeTable[SC_QD_SHOT_READY] = SI_E_QD_SHOT_READY; - StatusIconChangeTable[SC_HEAT_BARREL_AFTER] = SI_HEAT_BARREL_AFTER; StatusIconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1; StatusIconChangeTable[SC_QUEST_BUFF2] = SI_QUEST_BUFF2; StatusIconChangeTable[SC_QUEST_BUFF3] = SI_QUEST_BUFF3; @@ -1425,7 +1428,6 @@ void initChangeTables(void) StatusChangeStateTable[SC_SATURDAYNIGHTFEVER] |= SCS_NOCAST; StatusChangeStateTable[SC_CURSEDCIRCLE_TARGET] |= SCS_NOCAST; StatusChangeStateTable[SC_KINGS_GRACE] |= SCS_NOCAST; - StatusChangeStateTable[SC_HEAT_BARREL_AFTER] |= SCS_NOCAST; /* StatusChangeState (SCS_) NOCHAT (skills) */ StatusChangeStateTable[SC_BERSERK] |= SCS_NOCHAT; @@ -6138,6 +6140,8 @@ static signed short status_calc_hit(struct block_list *bl, struct status_change hit += hit * sc->data[SC_INCHITRATE]->val1/100; if(sc->data[SC_BLIND]) hit -= hit * 25/100; + if(sc->data[SC_HEAT_BARREL]) + hit -= sc->data[SC_HEAT_BARREL]->val4; if(sc->data[SC__GROOMY]) hit -= hit * sc->data[SC__GROOMY]->val3 / 100; if(sc->data[SC_FEAR]) @@ -6252,8 +6256,6 @@ static signed short status_calc_flee(struct block_list *bl, struct status_change flee -= flee * 50 / 100; //if( sc->data[SC_C_MARKER] ) // flee -= (flee * sc->data[SC_C_MARKER]->val3) / 100; - if(sc->data[SC_HEAT_BARREL]) - flee -= sc->data[SC_HEAT_BARREL]->val4; if (sc->data[SC_GROOMING]) flee += sc->data[SC_GROOMING]->val2; @@ -6792,6 +6794,8 @@ static short status_calc_aspd(struct block_list *bl, struct status_change *sc, b bonus += sc->data[sc_val]->val1; if (sc->data[SC_ATTHASTE_CASH]) bonus += sc->data[SC_ATTHASTE_CASH]->val1; + if (sc->data[SC_HEAT_BARREL]) + bonus += sc->data[SC_HEAT_BARREL]->val1; } else { if (sc->data[SC_DONTFORGETME]) bonus -= sc->data[SC_DONTFORGETME]->val2 / 10; @@ -6851,8 +6855,6 @@ static short status_calc_aspd(struct block_list *bl, struct status_change *sc, b bonus += sc->data[SC_GATLINGFEVER]->val1; if (sc->data[SC_STAR_COMFORT]) bonus += 3 * sc->data[SC_STAR_COMFORT]->val1; - if (sc->data[SC_HEAT_BARREL]) - bonus += sc->data[SC_HEAT_BARREL]->val3; } return bonus; @@ -7027,8 +7029,6 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change * aspd_rate += sc->data[SC_PAIN_KILLER]->val2 * 10; if( sc->data[SC_GOLDENE_FERSE]) aspd_rate -= sc->data[SC_GOLDENE_FERSE]->val3 * 10; - if( sc->data[SC_HEAT_BARREL] ) - aspd_rate -= sc->data[SC_HEAT_BARREL]->val3 * 10; return (short)cap_value(aspd_rate,0,SHRT_MAX); } @@ -8035,7 +8035,7 @@ int status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_typ tick_def2 = status_get_lv(bl) * 100 + (sd ? sd->status.job_level : 1) * 200; break; case SC_B_TRAP: - tick_def = (sd ? sd->status.str : status_get_base_status(bl)->str) * 50; // (custom) + tick_def = (sd ? sd->status.str : status_get_base_status(bl)->str) * 50; //! TODO: Figure out reduction formula break; case SC_NORECOVER_STATE: tick_def2 = status->luk * 100; @@ -8730,7 +8730,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty break; case SC_HEAT_BARREL: //kRO Update 2014-02-12 - //- Cannot be stacked with Platinum Alter and Madness Canceler (and otherwise?) [Cydh] + //- Cannot be stacked with Platinum Alter and Madness Canceler [Cydh] if (sc->data[SC_P_ALTER] || sc->data[SC_MADNESSCANCEL]) return 0; break; @@ -8739,6 +8739,10 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty return 0; break; case SC_MADNESSCANCEL: + if (sc->data[type]) { // Toggle the status but still consume requirements. + status_change_end(bl, type, INVALID_TIMER); + return 0; + } if (sc->data[SC_P_ALTER] || sc->data[SC_HEAT_BARREL]) return 0; break; @@ -10876,7 +10880,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty /* Rebellion */ case SC_B_TRAP: val2 = src->id; - val3 = val1 * 25; // -movespeed (custom) + val3 = val1 * 25; // -movespeed TODO: Figure out movespeed rate break; case SC_C_MARKER: // val1 = skill_lv @@ -10890,14 +10894,14 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty val2 = src->id; break; case SC_HEAT_BARREL: - //kRO Update 2014-02-26 + //kRO Update 2016-05-25 { uint8 n = 10; if (sd) n = (uint8)sd->spiritball_old; - val2 = val1 * 5; // -fixed casttime (custom) - val3 = val1 * n / 5; // +aspd (custom) - val4 = 75 - val1 * 5; // -flee + val2 = val1 * 5; // -fixed casttime + val3 = 6 + val1 * 2; // ATK + val4 = 25 + val1 * 5; // -hit } break; case SC_P_ALTER: @@ -10905,8 +10909,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty uint8 n = 10; if (sd) n = (uint8)sd->spiritball_old; - val2 = val1 * n * 2; // +atk (custom) - val3 = val1 * 15; // +def (custom) + val2 = 10 * n; // +atk + val3 = (status->max_hp * (val1 * 5) / 100); // Barrier HP } break; case SC_E_CHAIN: @@ -10916,8 +10920,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty break; case SC_ANTI_M_BLAST: val2 = val1 * 10; - if (bl->type != BL_PC) - val2 /= 5; //(custom) //kRO update 2012-02-12, reduce the rate for Non-Player target [Cydh] break; case SC_CATNIPPOWDER: val2 = 50; // WATK%, MATK% @@ -11223,7 +11225,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty case SC_CAMOUFLAGE: case SC_STEALTHFIELD: case SC_VOICEOFSIREN: - case SC_HEAT_BARREL_AFTER: case SC_WEDDING: case SC_XMAS: case SC_SUMMER: @@ -11673,7 +11674,6 @@ int status_change_clear(struct block_list* bl, int type) case SC_PUSH_CART: case SC_LIGHT_OF_REGENE: case SC_STYLE_CHANGE: - case SC_HEAT_BARREL_AFTER: case SC_QUEST_BUFF1: case SC_QUEST_BUFF2: case SC_QUEST_BUFF3: @@ -12297,10 +12297,6 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const if (sd && sce->val2 != SI_BLANK) clif_status_load(bl, (enum si_type)sce->val2, 0); break; - case SC_HEAT_BARREL: - if (sd) - sc_start(bl,bl,SC_HEAT_BARREL_AFTER,100,sce->val1,skill_get_time2(RL_HEAT_BARREL, sce->val1)); - break; case SC_C_MARKER: { // Remove mark data from caster @@ -13662,7 +13658,6 @@ void status_change_clear_buffs(struct block_list* bl, uint8 type) case SC_MTF_MATK: case SC_MTF_MLEATKED: case SC_MTF_CRIDAMAGE: - case SC_HEAT_BARREL_AFTER: case SC_QUEST_BUFF1: case SC_QUEST_BUFF2: case SC_QUEST_BUFF3: diff --git a/src/map/status.h b/src/map/status.h index 316ce51d11..890311a5bf 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -695,7 +695,7 @@ typedef enum sc_type { * Rebellion [Cydh] **/ SC_HEAT_BARREL, - SC_HEAT_BARREL_AFTER, + SC_MAGICALBULLET, SC_P_ALTER, SC_E_CHAIN, SC_C_MARKER, @@ -837,6 +837,8 @@ typedef enum sc_type { SC_DORAM_FLEE2, SC_DORAM_SVSP, + SC_FALLEN_ANGEL, + #ifdef RENEWAL SC_EXTREMITYFIST2, //! NOTE: This SC should be right before SC_MAX, so it doesn't disturb if RENEWAL is disabled #endif diff --git a/src/map/unit.c b/src/map/unit.c index 7f806e4102..5e0d66f7b4 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -2511,9 +2511,6 @@ static int unit_attack_timer_sub(struct block_list* src, int tid, unsigned int t || (sd && !pc_can_attack(sd, target->id)) ) return 0; // Can't attack under these conditions - if (sd && &sd->sc && sd->sc.count && sd->sc.data[SC_HEAT_BARREL_AFTER]) - return 0; - if( src->m != target->m ) { if( src->type == BL_MOB && mob_warpchase((TBL_MOB*)src, target) ) return 1; // Follow up.