summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/status.c20
-rw-r--r--src/map/status.h7
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,