summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/constants.conf1
-rw-r--r--db/sc_config.conf6
-rw-r--r--src/map/pc.c4
-rw-r--r--src/map/skill.c2
-rw-r--r--src/map/status.c5
-rw-r--r--src/map/status.h1
6 files changed, 19 insertions, 0 deletions
diff --git a/db/constants.conf b/db/constants.conf
index 12fa6e059..c05f9c240 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -1418,6 +1418,7 @@ constants_db: {
SC_CLIENT_ONLY_EQUIP_ARROW: 668
SC_MADOGEAR: 669
SC_POPECOOKIE: 670
+ SC_VITALIZE_POTION: 671
comment__: "Emotes"
e_gasp: 0
diff --git a/db/sc_config.conf b/db/sc_config.conf
index acfc531f3..dbddfd57d 100644
--- a/db/sc_config.conf
+++ b/db/sc_config.conf
@@ -3683,3 +3683,9 @@ SC_POPECOOKIE: {
}
Icon: "SI_POPECOOKIE"
}
+SC_VITALIZE_POTION: {
+ Flags: {
+ NoDispelReset: true
+ }
+ Icon: "SI_VITALIZE_POTION"
+}
diff --git a/src/map/pc.c b/src/map/pc.c
index c96e957c7..0cc7d7d70 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -8786,6 +8786,10 @@ static int pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp)
// 2014 Halloween Event : Pumpkin Bonus
if ( sd->sc.data[SC_MTF_PUMPKIN] && itemid == ITEMID_PUMPKIN )
hp += (int)(hp * sd->sc.data[SC_MTF_PUMPKIN]->val1/100);
+
+ // Activation Potion
+ if (sd->sc.data[SC_VITALIZE_POTION] != NULL)
+ hp += hp * sd->sc.data[SC_VITALIZE_POTION]->val3 / 100;
}
if(sp) {
bonus = 100 + (sd->battle_status.int_<<1)
diff --git a/src/map/skill.c b/src/map/skill.c
index a8dbefbd7..ee23704bb 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -935,6 +935,8 @@ static int skill_calc_heal(struct block_list *src, struct block_list *target, ui
hp -= hp * 20/100;
if(sc->data[SC_HEALPLUS] && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN)
hp += hp * sc->data[SC_HEALPLUS]->val1/100; // Only affects Heal, Sanctuary and PotionPitcher.(like bHealPower) [Inkfish]
+ if (sc->data[SC_VITALIZE_POTION] != NULL && skill_id != NPC_EVILLAND && skill_id != BA_APPLEIDUN)
+ hp += hp * sc->data[SC_VITALIZE_POTION]->val3 / 100;
if(sc->data[SC_WATER_INSIGNIA] && sc->data[SC_WATER_INSIGNIA]->val1 == 2)
hp += hp / 10;
if (sc->data[SC_VITALITYACTIVATION])
diff --git a/src/map/status.c b/src/map/status.c
index c379dff28..b0fef0b2e 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -885,6 +885,7 @@ static void initChangeTables(void)
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;
+ status->dbs->ChangeFlagTable[SC_VITALIZE_POTION] |= SCB_BATK | SCB_MATK;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] |= SCB_STR;
@@ -4816,6 +4817,8 @@ static int status_calc_batk(struct block_list *bl, struct status_change *sc, int
batk += sc->data[SC_PLUSATTACKPOWER]->val1;
if (sc->data[SC_POPECOOKIE] != NULL)
batk += batk * sc->data[SC_POPECOOKIE]->val1 / 100;
+ if (sc->data[SC_VITALIZE_POTION] != NULL)
+ batk += batk * sc->data[SC_VITALIZE_POTION]->val1 / 100;
return cap_value(batk, battle_config.batk_min, battle_config.batk_max);
}
#ifndef RENEWAL
@@ -5037,6 +5040,8 @@ static int status_calc_matk(struct block_list *bl, struct status_change *sc, int
matk += matk * sc->data[SC_MINDBREAKER]->val2 / 100;
if (sc->data[SC_POPECOOKIE] != NULL)
matk += matk * sc->data[SC_POPECOOKIE]->val2 / 100;
+ if (sc->data[SC_VITALIZE_POTION] != NULL)
+ matk += matk * sc->data[SC_VITALIZE_POTION]->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 aaedc4cb4..7a14f1961 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -855,6 +855,7 @@ typedef enum sc_type {
SC_CLIENT_ONLY_EQUIP_ARROW,
SC_MADOGEAR,
SC_POPECOOKIE,
+ SC_VITALIZE_POTION,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif