summaryrefslogtreecommitdiff
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
parent9106bbab19b4feaa4623a3b8e5d59e08ef73b640 (diff)
downloadhercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.tar.gz
hercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.tar.bz2
hercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.tar.xz
hercules-52c5fd966f6382087b9ab96c0000c791aa184c3e.zip
Add SC_POPECOOKIE status change
-rw-r--r--db/constants.conf1
-rw-r--r--db/sc_config.conf8
-rw-r--r--src/map/status.c17
-rw-r--r--src/map/status.h1
4 files changed, 27 insertions, 0 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 6f87b2d51..12fa6e059 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -1417,6 +1417,7 @@ constants_db: {
SC_RESIST_PROPERTY_WIND: 667
SC_CLIENT_ONLY_EQUIP_ARROW: 668
SC_MADOGEAR: 669
+ SC_POPECOOKIE: 670
comment__: "Emotes"
e_gasp: 0
diff --git a/db/sc_config.conf b/db/sc_config.conf
index 2520fc595..acfc531f3 100644
--- a/db/sc_config.conf
+++ b/db/sc_config.conf
@@ -3675,3 +3675,11 @@ SC_MADOGEAR: {
}
Icon: "SI_MADOGEAR"
}
+SC_POPECOOKIE: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+ Icon: "SI_POPECOOKIE"
+}
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