* Follow-up feca970 / r17515

-- Revert SC_PUSH_CART to 'cart' on RequiredState field (because SC_PUSH_CART for 2012++)
-- Defined MAX_SKILL_STATUS_REQUIRE for max 'RequiredStatuses' field
* Fixed bugreport:7946, standarize empty requirement with '0'
This commit is contained in:
Cahyadi Ramadhan Togihon 2013-09-08 00:48:45 +07:00
parent feca970d8a
commit 6150ac7870
4 changed files with 33 additions and 20 deletions

View File

@ -10,6 +10,7 @@
// hidden = Requires on hidden status by using Hiding, Cloaking, or maybe Chasewalk
// riding = Requires to ride either a peco or a dragon
// falcon = Requires a Falcon
// cart = Requires a Pushcart
// shield = Requires a 0,shield equipped
// recover_weight_rate = Requires to be less than 50% weight
// move_enable = Requires to be able to move
@ -23,6 +24,7 @@
//
// 'RequiredStatuses'
// Fill the value only with SC_STATUS (see db/const.txt for more details)
// Usage for multiple status requirements: SC_STATUS1:SC_STATUS2:SC_STATUS3 (max. is MAX_SKILL_STATUS_REQUIRE)
// Use any number or SC_ALL will disable status requirements
5,0,0,8:8:8:8:8:15:15:15:15:15,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,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 //SM_BASH#バッシュ#
@ -57,7 +59,7 @@
35,0,0,15,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 //AL_CURE#キュア?#
40,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 //MC_IDENTIFY#アイテム鑑定#
41,0,0,30,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_VENDING#露店開設#
41,0,0,30,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_VENDING#露店開設#
42,0,0,5,0,0,100:200:300:400:500:600:700:800:900:1000,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 //MC_MAMMONITE#メマ?ナイト#
45,0,0,25:30:35:40:45:50:55:60:65: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 //AC_CONCENTRATION#集中力向上#
@ -146,8 +148,8 @@
150,0,0,7,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 //TF_BACKSLIDING#バックステップ#
151,0,0,3,0,0,0,99,0,0,recover_weight_rate,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_PICKSTONE#石拾い#
152,0,0,2,0,0,0,99,0,0,none,0,0,7049,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_THROWSTONE#石投げ#
153,0,0,12,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#カ?トレボリュ?ション#
154,0,0,40,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#チェンジカ?ト#
153,0,0,12,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#カ?トレボリュ?ション#
154,0,0,40,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#チェンジカ?ト#
155,0,0,8,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 //MC_LOUD#ラウドボイス#
156,0,0,15,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 //AL_HOLYLIGHT#ホ?リ?ライト#
157,0,0,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 //MG_ENERGYCOAT#エナジ?コ?ト#
@ -296,7 +298,7 @@
384,0,0,50:50:60:60:70:70:80:80:90: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 //WS_MELTDOWN#メルトダウン#
385,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 //WS_CREATECOIN#クリエイトコイン#
386,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 //WS_CREATENUGGET#塊製造#
387,0,0,20,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_CARTBOOST#カ?トブ?スト#
387,0,0,20,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_CARTBOOST#カ?トブ?スト#
388,0,0,20,0,0,0,99,0,0,none,0,0,7137,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_SYSTEMCREATE#自動攻??置製作#
389,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 //ST_CHASEWALK#チェイスウォ?ク#
390,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 //ST_REJECTSWORD#リジェクトソ?ド#
@ -595,7 +597,7 @@
2261,0,0,30:45:60,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ARMSCANNON#Arm Cannon#
2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,2800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ACCELERATION#Acceleration#
2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,2801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_HOVERING#Hovering#
2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front - Side Slide#
2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front - Side Slide#
2265,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_B_SIDESLIDE#Back - Side Slide#
2267,0,0,200,0,0,0,99,0,0,mado,0,0,6146,5,2802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_SELFDESTRUCTION#Self Destruction#
@ -756,9 +758,9 @@
//****
// GN Genetic
2476,0,0,30,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CART_TORNADO#Cart Tornado#
2477,0,0,40:42:46:48:50,0,0,0,99,8,1,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTCANNON#Cart Cannon#
2478,0,0,20:24:28:32:36,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTBOOST#Cart Boost#
2476,0,0,30,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CART_TORNADO#Cart Tornado#
2477,0,0,40:42:46:48:50,0,0,0,99,8,1,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTCANNON#Cart Cannon#
2478,0,0,20:24:28:32:36,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTBOOST#Cart Boost#
2479,0,0,22:26:30:34:38,0,0,0,99,0,0,none,0,0,6210,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_THORNS_TRAP#Thorn Trap#
2480,0,0,30:35:40:45:50,0,0,0,99,0,0,none,0,0,6211,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_BLOOD_SUCKER#Blood Sucker#
2481,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,6212,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_SPORE_EXPLOSION#Spore Explosion#

View File

@ -10,6 +10,7 @@
// hidden = Requires on hidden status by using Hiding, Cloaking, or maybe Chasewalk
// riding = Requires to ride either a peco or a dragon
// falcon = Requires a Falcon
// cart = Requires a Pushcart (for renewal can replace this state by SC_PUSH_CART in 'RequiredStatuses' field)
// shield = Requires a 0,shield equipped
// recover_weight_rate = Requires to be less than 50% weight
// move_enable = Requires to be able to move
@ -23,6 +24,7 @@
//
// 'RequiredStatuses'
// Fill the value only with SC_STATUS (see db/const.txt for more details)
// Usage for multiple status requirements: SC_STATUS1:SC_STATUS2:SC_STATUS3 (max. is MAX_SKILL_STATUS_REQUIRE)
// Use any number or SC_ALL will disable status requirements
5,0,0,8:8:8:8:8:15:15:15:15:15,0,0,0,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,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 //SM_BASH#バッシュ#
@ -57,7 +59,7 @@
35,0,0,15,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 //AL_CURE#キュア?#
40,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 //MC_IDENTIFY#アイテム鑑定#
41,0,0,30,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_VENDING#露店開設#
41,0,0,30,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_VENDING#露店開設#
42,0,0,5,0,0,100:200:300:400:500:600:700:800:900:1000,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 //MC_MAMMONITE#メマ?ナイト#
45,0,0,25:30:35:40:45:50:55:60:65: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 //AC_CONCENTRATION#集中力向上#
@ -146,8 +148,8 @@
150,0,0,7,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 //TF_BACKSLIDING#バックステップ#
151,0,0,3,0,0,0,99,0,0,recover_weight_rate,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_PICKSTONE#石拾い#
152,0,0,2,0,0,0,99,0,0,none,0,0,7049,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //TF_THROWSTONE#石投げ#
153,0,0,12,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#カ?トレボリュ?ション#
154,0,0,40,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#チェンジカ?ト#
153,0,0,12,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CARTREVOLUTION#カ?トレボリュ?ション#
154,0,0,40,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //MC_CHANGECART#チェンジカ?ト#
155,0,0,8,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 //MC_LOUD#ラウドボイス#
156,0,0,15,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 //AL_HOLYLIGHT#ホ?リ?ライト#
157,0,0,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 //MG_ENERGYCOAT#エナジ?コ?ト#
@ -296,7 +298,7 @@
384,0,0,50:50:60:60:70:70:80:80:90: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 //WS_MELTDOWN#メルトダウン#
385,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 //WS_CREATECOIN#クリエイトコイン#
386,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 //WS_CREATENUGGET#塊製造#
387,0,0,20,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_CARTBOOST#カ?トブ?スト#
387,0,0,20,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_CARTBOOST#カ?トブ?スト#
388,0,0,20,0,0,0,99,0,0,none,0,0,7137,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_SYSTEMCREATE#自動攻??置製作#
389,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 //ST_CHASEWALK#チェイスウォ?ク#
390,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 //ST_REJECTSWORD#リジェクトソ?ド#
@ -596,7 +598,7 @@
2261,0,0,30:45:60,0,0,0,99,8,1,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ARMSCANNON#Arm Cannon#
2262,0,0,20:40:60,0,0,0,99,0,0,mado,0,0,6146,1,2800,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_ACCELERATION#Acceleration#
2263,0,0,25,0,0,0,99,0,0,mado,0,0,6146,1,2801,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_HOVERING#Hovering#
2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front - Side Slide#
2264,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_F_SIDESLIDE#Front - Side Slide#
2265,0,0,5,0,0,0,99,0,0,mado,0,0,6146,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_B_SIDESLIDE#Back - Side Slide#
2267,0,0,200,0,0,0,99,0,0,mado,0,0,6146,5,2802,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //NC_SELFDESTRUCTION#Self Destruction#
@ -758,9 +760,9 @@
//****
// GN Genetic
2476,0,0,30,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CART_TORNADO#Cart Tornado#
2477,0,0,40:42:46:48:50,0,0,0,99,8,1,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTCANNON#Cart Cannon#
2478,0,0,20:24:28:32:36,0,0,0,99,0,0,none,SC_PUSH_CART,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTBOOST#Cart Boost#
2476,0,0,30,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CART_TORNADO#Cart Tornado#
2477,0,0,40:42:46:48:50,0,0,0,99,8,1,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTCANNON#Cart Cannon#
2478,0,0,20:24:28:32:36,0,0,0,99,0,0,cart,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_CARTBOOST#Cart Boost#
2479,0,0,22:26:30:34:38,0,0,0,99,0,0,none,0,0,6210,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_THORNS_TRAP#Thorn Trap#
2480,0,0,30:35:40:45:50,0,0,0,99,0,0,none,0,0,6211,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_BLOOD_SUCKER#Blood Sucker#
2481,0,0,55:60:65:70:75,0,0,0,99,0,0,none,0,0,6212,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //GN_SPORE_EXPLOSION#Spore Explosion#

View File

@ -13429,6 +13429,12 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
return 0;
}
break;
case ST_CART:
if(!pc_iscarton(sd)) {
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
return 0;
}
break;
case ST_SHIELD:
if(sd->status.shield <= 0) {
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
@ -17984,6 +17990,7 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
if( strcmpi(split[10],"hidden") == 0 ) skill_db[idx].require.state = ST_HIDDEN;
else if( strcmpi(split[10],"riding") == 0 ) skill_db[idx].require.state = ST_RIDING;
else if( strcmpi(split[10],"falcon") == 0 ) skill_db[idx].require.state = ST_FALCON;
else if( strcmpi(split[10],"cart") == 0 ) skill_db[idx].require.state = ST_CART;
else if( strcmpi(split[10],"shield") == 0 ) skill_db[idx].require.state = ST_SHIELD;
else if( strcmpi(split[10],"recover_weight_rate") == 0 ) skill_db[idx].require.state = ST_RECOV_WEIGHT_RATE;
else if( strcmpi(split[10],"move_enable") == 0 ) skill_db[idx].require.state = ST_MOVE_ENABLE;
@ -17999,9 +18006,9 @@ static bool skill_parse_row_requiredb(char* split[], int columns, int current)
//Status requirements
skill_db[idx].require.status_count = 0;
p = strtok(split[11],":");
for( j = 0; j < MAX_ITEMS_PER_COMBO && p != NULL; j++ ) {
for( j = 0; j < MAX_SKILL_STATUS_REQUIRE && p != NULL; j++ ) {
int status = SC_NONE;
script_get_constant(p, &status);
script_get_constant(trim(p), &status);
if (status > SC_NONE) {
skill_db[idx].require.status[skill_db[idx].require.status_count] = (enum sc_type)status;
skill_db[idx].require.status_count++;

View File

@ -103,6 +103,7 @@ enum e_skill_display {
};
#define MAX_SKILL_ITEM_REQUIRE 10
#define MAX_SKILL_STATUS_REQUIRE 3
struct skill_condition {
int hp,
mhp,
@ -116,7 +117,7 @@ struct skill_condition {
itemid[MAX_SKILL_ITEM_REQUIRE],
amount[MAX_SKILL_ITEM_REQUIRE];
uint8 status_count;
enum sc_type status[MAX_SKILL_ITEM_REQUIRE];
enum sc_type status[MAX_SKILL_STATUS_REQUIRE];
};
struct s_skill_require {
@ -134,7 +135,7 @@ struct s_skill_require {
itemid[MAX_SKILL_ITEM_REQUIRE],
amount[MAX_SKILL_ITEM_REQUIRE];
uint8 status_count;
enum sc_type status[MAX_SKILL_ITEM_REQUIRE];
enum sc_type status[MAX_SKILL_STATUS_REQUIRE];
};
/// Database skills
@ -440,6 +441,7 @@ enum e_require_state {
ST_HIDDEN,
ST_RIDING,
ST_FALCON,
ST_CART,
ST_SHIELD,
ST_RECOV_WEIGHT_RATE,
ST_MOVE_ENABLE,