From 5f8edc6c450ddc44b9a16dbbb9d5910b51cc3a62 Mon Sep 17 00:00:00 2001 From: Jedzkie Date: Sun, 22 Nov 2015 17:57:54 +0800 Subject: ItemDB Update: - Added official item effect of 'Gold Pill 1' and 'Gold Pill 2'. - Update SC_ACARAJE flag in sc_config.txt. Ref: http://www.divine-pride.net/database/item/12274, http://www.divine-pride.net/database/item/12275 --- db/const.txt | 3 +++ db/pre-re/item_db.conf | 22 ++++++++-------------- db/re/item_db.conf | 22 ++++++++-------------- db/sc_config.txt | 10 ++++------ src/map/status.c | 20 ++++++++++++++++---- src/map/status.h | 7 +++++-- 6 files changed, 44 insertions(+), 40 deletions(-) diff --git a/db/const.txt b/db/const.txt index e7ae4e4ad..94bee8bdb 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1311,6 +1311,9 @@ SC_GEFFEN_MAGIC2 605 SC_GEFFEN_MAGIC3 606 SC_FENRIR_CARD 607 +SC_ATKER_ASPD 608 +SC_ATKER_MOVESPEED 609 + e_gasp 0 e_what 1 e_ho 2 diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index 21c2b16cf..ca182e2f7 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -65193,17 +65193,14 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true - nocart: true nostorage: true - nogstorage: true + nocart: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } - Script: <" - sc_start SC_INCMHPRATE,36000000,5; - percentheal 10,0; - "> + Script: <" sc_start2 SC_ATKER_ASPD,3600000,5,10; "> }, { Id: 12275 @@ -65215,17 +65212,14 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true - nocart: true nostorage: true - nogstorage: true + nocart: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } - Script: <" - sc_start SC_INCMSPRATE,36000000,5; - percentheal 0,10; - "> + Script: <" sc_start2 SC_ATKER_MOVESPEED,3600000,5,10; "> }, { Id: 12276 diff --git a/db/re/item_db.conf b/db/re/item_db.conf index 5596edd58..6620ba919 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -80085,17 +80085,14 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true - nocart: true nostorage: true - nogstorage: true + nocart: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } - Script: <" - sc_start SC_INCMHPRATE,36000000,5; - percentheal 10,0; - "> + Script: <" sc_start2 SC_ATKER_ASPD,3600000,5,10; "> }, { Id: 12275 @@ -80107,17 +80104,14 @@ item_db: ( Trade: { nodrop: true notrade: true - noselltonpc: true - nocart: true nostorage: true - nogstorage: true + nocart: true + noselltonpc: true nomail: true noauction: true + nogstorage: true } - Script: <" - sc_start SC_INCMSPRATE,36000000,5; - percentheal 0,10; - "> + Script: <" sc_start2 SC_ATKER_MOVESPEED,3600000,5,10; "> }, { Id: 12276 diff --git a/db/sc_config.txt b/db/sc_config.txt index 65e24e4e8..339a5257f 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -205,9 +205,9 @@ SC_S_LIFEPOTION, 92 SC_L_LIFEPOTION, 92 SC_CRITICALPERCENT, 92 SC_PLUSAVOIDVALUE, 92 -//SC_ATKER_ASPD, 28 -//SC_TARGET_ASPD, 92 -//SC_ATKER_MOVESPEED, 28 +SC_ATKER_ASPD, 28 +SC_TARGET_ASPD, 92 +SC_ATKER_MOVESPEED, 28 SC_ATKER_BLOOD, 28 SC_TARGET_BLOOD, 30 SC_ARMOR_PROPERTY, 29 @@ -317,7 +317,7 @@ SC_RAISINGDRAGON, 30 SC__IGNORANCE, 16 SC__LAZINESS, 16 SC_LIGHTNINGWALK, 28 -//SC_ACARAJE, 24 +SC_ACARAJE, 24 SC__UNLUCKY, 16 SC_CURSEDCIRCLE_ATKER, 28 SC_CURSEDCIRCLE_TARGET, 28 @@ -398,8 +398,6 @@ SC_MTF_CRIDAMAGE, 12 SC_FULL_THROTTLE, 18 SC_REBOUND, 18 SC_TELEKINESIS_INTENSE, 18 -SC_ACARAJE, 64 -SC_TARGET_ASPD, 92 // Geffen Scrolls SC_SKELSCROLL, 90 diff --git a/src/map/status.c b/src/map/status.c index 90a2531fc..acd31aefd 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -826,6 +826,8 @@ void initChangeTables(void) { status->dbs->IconChangeTable[SC_TARGET_BLOOD] = SI_TARGET_BLOOD; status->dbs->IconChangeTable[SC_ACARAJE] = SI_ACARAJE; status->dbs->IconChangeTable[SC_TARGET_ASPD] = SI_TARGET_ASPD; + status->dbs->IconChangeTable[SC_ATKER_ASPD] = SI_ATKER_ASPD; + status->dbs->IconChangeTable[SC_ATKER_MOVESPEED] = SI_ATKER_MOVESPEED; // Eden Crystal Synthesis status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1; @@ -989,6 +991,8 @@ void initChangeTables(void) { status->dbs->ChangeFlagTable[SC_ITEMSCRIPT] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_TARGET_BLOOD] |= SCB_ALL; status->dbs->ChangeFlagTable[SC_TARGET_ASPD] |= SCB_MAXSP; + status->dbs->ChangeFlagTable[SC_ATKER_ASPD] |= SCB_MAXHP | SCB_ALL; + status->dbs->ChangeFlagTable[SC_ATKER_MOVESPEED] |= SCB_MAXSP | SCB_ALL; // Cash Items status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR; @@ -3405,7 +3409,7 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str } else regen->flag&=~sce->val4; //Remove regen as specified by val4 } - if(sc->data[SC_GENTLETOUCH_REVITALIZE]) { + if (sc->data[SC_GENTLETOUCH_REVITALIZE]) { regen->hp += regen->hp * ( 30 * sc->data[SC_GENTLETOUCH_REVITALIZE]->val1 + 50 ) / 100; } if ((sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 1) //if insignia lvl 1 @@ -3413,12 +3417,16 @@ void status_calc_regen_rate(struct block_list *bl, struct regen_data *regen, str || (sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 1) || (sc->data[SC_WIND_INSIGNIA] && sc->data[SC_WIND_INSIGNIA]->val1 == 1)) regen->rate.hp *= 2; - if( sc->data[SC_VITALITYACTIVATION] ) + if (sc->data[SC_VITALITYACTIVATION]) regen->flag &=~RGN_SP; - if(sc->data[SC_EXTRACT_WHITE_POTION_Z]) - regen->rate.hp += regen->rate.hp * sc->data[SC_EXTRACT_WHITE_POTION_Z]->val1/100; + if (sc->data[SC_EXTRACT_WHITE_POTION_Z]) + regen->rate.hp += regen->rate.hp * sc->data[SC_EXTRACT_WHITE_POTION_Z]->val1 / 100; if (sc->data[SC_VITATA_500]) regen->rate.sp += regen->rate.sp * sc->data[SC_VITATA_500]->val1 / 100; + if (sc->data[SC_ATKER_ASPD]) + regen->rate.hp += regen->rate.hp * sc->data[SC_ATKER_ASPD]->val2 / 100; + if (sc->data[SC_ATKER_MOVESPEED]) + regen->rate.sp += regen->rate.sp * sc->data[SC_ATKER_MOVESPEED]->val2 / 100; } /// Recalculates parts of an object's battle status according to the specified flags. /// @param flag bitfield of values from enum scb_flag @@ -5851,6 +5859,8 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc, maxhp += maxhp * sc->data[SC_FRIGG_SONG]->val2 / 100; if (sc->data[SC_SOULSCROLL]) maxhp += maxhp * sc->data[SC_SOULSCROLL]->val1 / 100; + if (sc->data[SC_ATKER_ASPD]) + maxhp += maxhp * sc->data[SC_ATKER_ASPD]->val1 / 100; return (unsigned int)cap_value(maxhp,1,UINT_MAX); } @@ -5882,6 +5892,8 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc, maxsp += maxsp * sc->data[SC_TARGET_ASPD]->val1 / 100; if (sc->data[SC_SOULSCROLL]) maxsp += maxsp * sc->data[SC_SOULSCROLL]->val1 / 100; + if (sc->data[SC_ATKER_MOVESPEED]) + maxsp += maxsp * sc->data[SC_ATKER_MOVESPEED]->val1 / 100; return cap_value(maxsp,1,UINT_MAX); } diff --git a/src/map/status.h b/src/map/status.h index 723e95a53..e784eade8 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -770,6 +770,9 @@ typedef enum sc_type { SC_GEFFEN_MAGIC2, SC_GEFFEN_MAGIC3, SC_FENRIR_CARD, + + SC_ATKER_ASPD, + SC_ATKER_MOVESPEED, SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; @@ -1080,9 +1083,9 @@ enum si_type { SI_L_LIFEPOTION = 294, SI_CRITICALPERCENT = 295, SI_PLUSAVOIDVALUE = 296, - //SI_ATKER_ASPD = 297, + SI_ATKER_ASPD = 297, SI_TARGET_ASPD = 298, - //SI_ATKER_MOVESPEED = 299, + SI_ATKER_MOVESPEED = 299, SI_ATKER_BLOOD = 300, SI_TARGET_BLOOD = 301, -- cgit v1.2.3-70-g09d2