diff options
author | Jedzkie <jedzkie13@rocketmail.com> | 2015-11-22 17:57:54 +0800 |
---|---|---|
committer | Jedzkie <jedzkie13@rocketmail.com> | 2015-11-22 17:57:54 +0800 |
commit | 5f8edc6c450ddc44b9a16dbbb9d5910b51cc3a62 (patch) | |
tree | f9bb22569b6c189d73c006de8d40334d0ceb8c9b /src/map | |
parent | 5dc5e91cda8eb469d36bf3f3bf4200b27af20fed (diff) | |
download | hercules-5f8edc6c450ddc44b9a16dbbb9d5910b51cc3a62.tar.gz hercules-5f8edc6c450ddc44b9a16dbbb9d5910b51cc3a62.tar.bz2 hercules-5f8edc6c450ddc44b9a16dbbb9d5910b51cc3a62.tar.xz hercules-5f8edc6c450ddc44b9a16dbbb9d5910b51cc3a62.zip |
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
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/status.c | 20 | ||||
-rw-r--r-- | src/map/status.h | 7 |
2 files changed, 21 insertions, 6 deletions
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, |