From d02496a043ded53fc715d673c257b29293c05b56 Mon Sep 17 00:00:00 2001 From: Jedzkie Date: Mon, 21 Dec 2015 08:49:53 +0800 Subject: ItemDB Update: - Added official effect for Jumping Candy (Spark_Candy) (Ref: http://herc.ws/board/topic/1125-please-implement-the-magic-scroll-mental-potion-etc/) Follow up Mercenary Skill update, disable AL_HEAL skill due to mercenary_skill_db doesn't recognize the skill. --- db/const.txt | 1 + db/mercenary_skill_db.txt | 2 +- db/pre-re/item_db.conf | 14 +++++++++----- db/re/item_db.conf | 23 +++++++++++++---------- db/sc_config.txt | 2 +- src/map/status.c | 23 +++++++++++++++++++++-- src/map/status.h | 3 ++- 7 files changed, 48 insertions(+), 20 deletions(-) diff --git a/db/const.txt b/db/const.txt index f0ec7cd55..2d61a01d6 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1338,6 +1338,7 @@ SC_GM_BATTLE2 627 SC_2011RWC 628 SC_STR_SCROLL 629 SC_INT_SCROLL 630 +SC_STEAMPACK 631 e_gasp 0 e_what 1 diff --git a/db/mercenary_skill_db.txt b/db/mercenary_skill_db.txt index b7da95bd8..6f939ad7d 100644 --- a/db/mercenary_skill_db.txt +++ b/db/mercenary_skill_db.txt @@ -201,7 +201,7 @@ 2325,8223,10 //MER_QUICKEN // M_GALAPAGO 2326,8239,5 //MER_BLESSING -2326,28,5 //AL_HEAL +//2326,28,5 //AL_HEAL // MER_DIABOLIC 2342,8225,5 //MER_CRASH 2342,8202,5 //MS_MAGNUM diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index 3ed2027cb..e17b1d952 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -78674,7 +78674,7 @@ item_db: ( Type: 18 Buy: 20 Weight: 10 - Script: <" getitem 14586,5; "> + Script: <" getitem Spark_Candy, 5; "> }, { Id: 13858 @@ -78683,7 +78683,7 @@ item_db: ( Type: 18 Buy: 20 Weight: 10 - Script: <" getitem 14586,10; "> + Script: <" getitem Spark_Candy, 10; "> }, { Id: 13859 @@ -82169,7 +82169,7 @@ item_db: ( nomail: true noauction: true } - Script: <" getitem 14586,5; "> + Script: <" getitem Spark_Candy, 5; "> }, { Id: 14050 @@ -82183,11 +82183,11 @@ item_db: ( notrade: true noselltonpc: true nocart: true - nogstorage: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14586,10; "> + Script: <" getitem Spark_Candy, 10; "> }, { Id: 14051 @@ -87824,6 +87824,10 @@ item_db: ( noselltonpc: true nogstorage: true } + Script: <" + specialeffect2 EF_HASTEUP; + sc_start2 SC_STEAMPACK, 60000, 20, 25; + "> }, { Id: 14587 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index f29364f0c..0bd005274 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -100871,11 +100871,11 @@ item_db: ( notrade: true noselltonpc: true nocart: true - nogstorage: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14586,5; "> + Script: <" getitem Spark_Candy, 5; "> }, { Id: 13858 @@ -100889,11 +100889,11 @@ item_db: ( notrade: true noselltonpc: true nocart: true - nogstorage: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14586,10; "> + Script: <" getitem Spark_Candy, 10; "> }, { Id: 13859 @@ -104491,11 +104491,11 @@ item_db: ( notrade: true noselltonpc: true nocart: true - nogstorage: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14586,5; "> + Script: <" getitem Spark_Candy, 5; "> }, { Id: 14050 @@ -104509,11 +104509,11 @@ item_db: ( notrade: true noselltonpc: true nocart: true - nogstorage: true nomail: true noauction: true + nogstorage: true } - Script: <" getitem 14586,10; "> + Script: <" getitem Spark_Candy, 10; "> }, { Id: 14051 @@ -111478,11 +111478,14 @@ item_db: ( notrade: true noselltonpc: true nocart: true - nogstorage: true nomail: true noauction: true + nogstorage: true } - Script: <" bonus2 bHPLossRate,100,10000; "> + Script: <" + specialeffect2 EF_HASTEUP; + sc_start2 SC_STEAMPACK, 60000, 20, 25; + "> }, { Id: 14587 diff --git a/db/sc_config.txt b/db/sc_config.txt index 610f57e98..32dd28078 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -213,7 +213,7 @@ SC_TARGET_BLOOD, 30 SC_ARMOR_PROPERTY, 29 //SC_REUSE_LIMIT_A, 29 SC_HELLPOWER, 29 -//SC_STEAMPACK, 92 +SC_STEAMPACK, 108 //SC_REUSE_LIMIT_B, 29 //SC_REUSE_LIMIT_C, 29 //SC_REUSE_LIMIT_D, 29 diff --git a/src/map/status.c b/src/map/status.c index 1a1c5e2c7..52df73455 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -853,6 +853,7 @@ void initChangeTables(void) { status->dbs->IconChangeTable[SC_2011RWC] = SI_2011RWC; status->dbs->IconChangeTable[SC_STR_SCROLL] = SI_STR_SCROLL; status->dbs->IconChangeTable[SC_INT_SCROLL] = SI_INT_SCROLL; + status->dbs->IconChangeTable[SC_STEAMPACK] = SI_STEAMPACK; // Eden Crystal Synthesis status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1; @@ -1041,6 +1042,7 @@ void initChangeTables(void) { status->dbs->ChangeFlagTable[SC_2011RWC] |= SCB_STR | SCB_AGI | SCB_VIT | SCB_INT | SCB_DEX | SCB_LUK | SCB_BATK | SCB_MATK; status->dbs->ChangeFlagTable[SC_STR_SCROLL] |= SCB_STR; status->dbs->ChangeFlagTable[SC_INT_SCROLL] |= SCB_INT; + status->dbs->ChangeFlagTable[SC_STEAMPACK] |= SCB_BATK | SCB_ASPD | SCB_ALL; // Cash Items status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR; @@ -4736,6 +4738,8 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc, batk += batk * sc->data[SC_GM_BATTLE2]->val1 / 100; if (sc->data[SC_2011RWC]) batk += batk * sc->data[SC_2011RWC]->val2 / 100; + if (sc->data[SC_STEAMPACK]) + batk += sc->data[SC_STEAMPACK]->val1; return (unsigned short)cap_value(batk,0,USHRT_MAX); } @@ -5718,6 +5722,8 @@ short status_calc_aspd(struct block_list *bl, struct status_change *sc, short fl bonus += sc->data[SC_ACARAJE]->val2; if (sc->data[SC_BATTLESCROLL]) bonus += sc->data[SC_BATTLESCROLL]->val1; + if (sc->data[SC_STEAMPACK]) + bonus += sc->data[SC_STEAMPACK]->val2; } return (bonus + pots); @@ -5883,6 +5889,8 @@ short status_calc_aspd_rate(struct block_list *bl, struct status_change *sc, int aspd_rate += sc->data[SC_ACARAJE]->val2 * 10; if (sc->data[SC_BATTLESCROLL]) aspd_rate += sc->data[SC_BATTLESCROLL]->val1 * 10; + if (sc->data[SC_STEAMPACK]) + aspd_rate += sc->data[SC_STEAMPACK]->val2 * 10; return (short)cap_value(aspd_rate,0,SHRT_MAX); } @@ -9205,6 +9213,12 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t val4 = tick / 10000; tick_time = 10000; // [GodLesZ] tick time break; + case SC_STEAMPACK: // [Frost] + val3 = 100; // HP Consume. + val4 = tick / 10000; + tick_time = 10000; + sc_start(src, bl, SC_ENDURE, 100, 10, -1); // Endure effect + break; case SC_KYOUGAKU: { int min = val1*2; int max = val1*3; @@ -11490,10 +11504,9 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) { if (bl->type == BL_ELEM) elemental->change_mode(BL_CAST(BL_ELEM,bl),MAX_ELESKILLTREE); break; - case SC_STOMACHACHE: if (--(sce->val4) > 0) { - status->charge(bl, 0, sce->val3); // Reduce 8 every 10 seconds. + status->charge(bl, 0, sce->val3); // Reduce 8 SP every 10 seconds. if (sd && !pc_issit(sd)) { // Force to sit every 10 seconds. pc_stop_walking(sd, STOPWALKING_FLAG_FIXPOS | STOPWALKING_FLAG_NEXTCELL); pc_stop_attack(sd); @@ -11504,6 +11517,12 @@ int status_change_timer(int tid, int64 tick, int id, intptr_t data) { return 0; } break; + case SC_STEAMPACK: + if (--(sce->val4) > 0) { + status->charge(bl, sce->val3, 0); // Reduce 100 HP every 10 seconds. + sc_timer_next(10000 + tick, status->change_timer, bl->id, data); + } + break; case SC_LEADERSHIP: case SC_GLORYWOUNDS: case SC_SOULCOLD: diff --git a/src/map/status.h b/src/map/status.h index a45b22adb..187188dfb 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -814,6 +814,7 @@ typedef enum sc_type { SC_2011RWC, SC_STR_SCROLL, SC_INT_SCROLL, // 630 + SC_STEAMPACK, SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; @@ -1133,7 +1134,7 @@ enum si_type { SI_ARMOR_PROPERTY = 302, //SI_REUSE_LIMIT_A = 303, SI_HELLPOWER = 304, - //SI_STEAMPACK = 305, + SI_STEAMPACK = 305, //SI_REUSE_LIMIT_B = 306, //SI_REUSE_LIMIT_C = 307, //SI_REUSE_LIMIT_D = 308, -- cgit v1.2.3-70-g09d2