summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorKenpachi Developer <Kenpachi.Developer@gmx.de>2020-03-06 22:11:45 +0100
committerKenpachi Developer <Kenpachi.Developer@gmx.de>2020-03-14 19:45:25 +0100
commit52c5fd966f6382087b9ab96c0000c791aa184c3e (patch)
treedd200bc65592163da4a7faff34fa336cccd296a2 /src/map
parent9106bbab19b4feaa4623a3b8e5d59e08ef73b640 (diff)
downloadhercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.tar.gz
hercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.tar.bz2
hercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.tar.xz
hercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.zip
Add SC_POPECOOKIE status change
Diffstat (limited to 'src/map')
-rw-r--r--src/map/status.c17
-rw-r--r--src/map/status.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/src/map/status.c b/src/map/status.c
index 1f0f31119..c379dff28 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -884,6 +884,7 @@ static void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_PHI_DEMON] |= SCB_ALL;
status->dbs->ChangeFlagTable[SC_MAGIC_CANDY] |= SCB_MATK | SCB_ALL;
status->dbs->ChangeFlagTable[SC_MYSTICPOWDER] |= SCB_FLEE | SCB_LUK;
+ status->dbs->ChangeFlagTable[SC_POPECOOKIE] |= SCB_BASE | SCB_BATK | SCB_MATK;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] |= SCB_STR;
@@ -3038,6 +3039,18 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o
sd->subele[ELE_EARTH] += i;
sd->subele[ELE_FIRE] -= i;
}
+ if (sc->data[SC_POPECOOKIE] != NULL) {
+ i = sc->data[SC_POPECOOKIE]->val3;
+ sd->subele[ELE_WATER] += i;
+ sd->subele[ELE_EARTH] += i;
+ sd->subele[ELE_FIRE] += i;
+ sd->subele[ELE_WIND] += i;
+ sd->subele[ELE_POISON] += i;
+ sd->subele[ELE_HOLY] += i;
+ sd->subele[ELE_DARK] += i;
+ sd->subele[ELE_GHOST] += i;
+ sd->subele[ELE_UNDEAD] += i;
+ }
if (sc->data[SC_MTF_MLEATKED])
sd->subele[ELE_NEUTRAL] += sc->data[SC_MTF_MLEATKED]->val1;
if (sc->data[SC_FIRE_INSIGNIA] && sc->data[SC_FIRE_INSIGNIA]->val1 == 3)
@@ -4801,6 +4814,8 @@ static int status_calc_batk(struct block_list *bl, struct status_change *sc, int
/* some statuses that are hidden in the status window */
if(sc->data[SC_PLUSATTACKPOWER])
batk += sc->data[SC_PLUSATTACKPOWER]->val1;
+ if (sc->data[SC_POPECOOKIE] != NULL)
+ batk += batk * sc->data[SC_POPECOOKIE]->val1 / 100;
return cap_value(batk, battle_config.batk_min, battle_config.batk_max);
}
#ifndef RENEWAL
@@ -5020,6 +5035,8 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int
/* some statuses that are hidden in the status window */
if (sc->data[SC_MINDBREAKER])
matk += matk * sc->data[SC_MINDBREAKER]->val2 / 100;
+ if (sc->data[SC_POPECOOKIE] != NULL)
+ matk += matk * sc->data[SC_POPECOOKIE]->val2 / 100;
return cap_value(matk, battle_config.matk_min, battle_config.matk_max);
}
diff --git a/src/map/status.h b/src/map/status.h
index ada18bc0a..aaedc4cb4 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -854,6 +854,7 @@ typedef enum sc_type {
SC_RESIST_PROPERTY_WIND,
SC_CLIENT_ONLY_EQUIP_ARROW,
SC_MADOGEAR,
+ SC_POPECOOKIE,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif