summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/status.c22
-rw-r--r--src/map/status.h3
2 files changed, 25 insertions, 0 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 5225dd40d..f6a068b98 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -848,6 +848,8 @@ void initChangeTables(void) {
status->dbs->IconChangeTable[SC_ATKER_MOVESPEED] = SI_ATKER_MOVESPEED;
status->dbs->IconChangeTable[SC_CUP_OF_BOZA] = SI_CUP_OF_BOZA;
status->dbs->IconChangeTable[SC_OVERLAPEXPUP] = SI_OVERLAPEXPUP;
+ status->dbs->IconChangeTable[SC_GM_BATTLE] = SI_GM_BATTLE;
+ status->dbs->IconChangeTable[SC_GM_BATTLE2] = SI_GM_BATTLE2;
// Eden Crystal Synthesis
status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1;
@@ -1031,6 +1033,8 @@ void initChangeTables(void) {
status->dbs->ChangeFlagTable[SC_ATKER_MOVESPEED] |= SCB_MAXSP | SCB_ALL;
status->dbs->ChangeFlagTable[SC_FOOD_CRITICALSUCCESSVALUE] |= SCB_CRI;
status->dbs->ChangeFlagTable[SC_CUP_OF_BOZA] |= SCB_VIT | SCB_ALL;
+ status->dbs->ChangeFlagTable[SC_GM_BATTLE] |= SCB_BATK | SCB_MATK | SCB_MAXHP | SCB_MAXSP;
+ status->dbs->ChangeFlagTable[SC_GM_BATTLE2] |= SCB_BATK | SCB_MATK | SCB_MAXHP | SCB_MAXSP;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] = SCB_STR;
@@ -4703,6 +4707,11 @@ unsigned short status_calc_batk(struct block_list *bl, struct status_change *sc,
if (sc->data[SC_QUEST_BUFF3])
batk += sc->data[SC_QUEST_BUFF3]->val1;
+ if (sc->data[SC_GM_BATTLE])
+ batk += sc->data[SC_GM_BATTLE]->val1;
+ if (sc->data[SC_GM_BATTLE2])
+ batk += sc->data[SC_GM_BATTLE2]->val1;
+
return (unsigned short)cap_value(batk,0,USHRT_MAX);
}
@@ -4883,6 +4892,11 @@ unsigned short status_calc_matk(struct block_list *bl, struct status_change *sc,
if (sc->data[SC_FENRIR_CARD])
matk += sc->data[SC_FENRIR_CARD]->val1;
+ if (sc->data[SC_GM_BATTLE])
+ matk += sc->data[SC_GM_BATTLE]->val1;
+ if (sc->data[SC_GM_BATTLE2])
+ matk += sc->data[SC_GM_BATTLE2]->val1;
+
return (unsigned short)cap_value(matk,0,USHRT_MAX);
}
@@ -5931,6 +5945,10 @@ unsigned int status_calc_maxhp(struct block_list *bl, struct status_change *sc,
maxhp += maxhp * sc->data[SC_ATKER_ASPD]->val1 / 100;
if (sc->data[SC_MVPCARD_TAOGUNKA])
maxhp += maxhp * sc->data[SC_MVPCARD_TAOGUNKA]->val1 / 100;
+ if (sc->data[SC_GM_BATTLE])
+ maxhp -= maxhp * sc->data[SC_GM_BATTLE]->val1 / 100;
+ if (sc->data[SC_GM_BATTLE2])
+ maxhp -= maxhp * sc->data[SC_GM_BATTLE2]->val1 / 100;
return (unsigned int)cap_value(maxhp,1,UINT_MAX);
}
@@ -5964,6 +5982,10 @@ unsigned int status_calc_maxsp(struct block_list *bl, struct status_change *sc,
maxsp += maxsp * sc->data[SC_SOULSCROLL]->val1 / 100;
if (sc->data[SC_ATKER_MOVESPEED])
maxsp += maxsp * sc->data[SC_ATKER_MOVESPEED]->val1 / 100;
+ if (sc->data[SC_GM_BATTLE])
+ maxsp -= maxsp * sc->data[SC_GM_BATTLE]->val1 / 100;
+ if (sc->data[SC_GM_BATTLE2])
+ maxsp -= maxsp * sc->data[SC_GM_BATTLE2]->val1 / 100;
return cap_value(maxsp,1,UINT_MAX);
}
diff --git a/src/map/status.h b/src/map/status.h
index 2bf3c0a57..df1154794 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -809,6 +809,9 @@ typedef enum sc_type {
SC_MAGICAL_FEATHER,
SC_BLOSSOM_FLUTTERING,
+ SC_GM_BATTLE,
+ SC_GM_BATTLE2,
+
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
} sc_type;