summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenpachi Developer <Kenpachi.Developer@gmx.de>2020-03-09 20:57:22 +0100
committerKenpachi Developer <Kenpachi.Developer@gmx.de>2020-03-14 19:49:18 +0100
commit2c26eec424e0d4f614c7ff73ad2c5402da669338 (patch)
treeae9ca9a3a3a7126b0c43eaaa1d2c934887ecab78
parent61d10a7e2c8c12ed431d1e6bf66a7d8d176cd13f (diff)
downloadhercules-2c26eec424e0d4f614c7ff73ad2c5402da669338.tar.gz
hercules-2c26eec424e0d4f614c7ff73ad2c5402da669338.tar.bz2
hercules-2c26eec424e0d4f614c7ff73ad2c5402da669338.tar.xz
hercules-2c26eec424e0d4f614c7ff73ad2c5402da669338.zip
Add SC_SKF_CAST status change
-rw-r--r--db/constants.conf1
-rw-r--r--db/sc_config.conf8
-rw-r--r--src/map/skill.c4
-rw-r--r--src/map/status.c1
-rw-r--r--src/map/status.h1
5 files changed, 15 insertions, 0 deletions
diff --git a/db/constants.conf b/db/constants.conf
index f26257660..1577523c8 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -1422,6 +1422,7 @@ constants_db: {
SC_SKF_MATK: 672
SC_SKF_ATK: 673
SC_SKF_ASPD: 674
+ SC_SKF_CAST: 675
comment__: "Emotes"
e_gasp: 0
diff --git a/db/sc_config.conf b/db/sc_config.conf
index 6315d9cb2..ed8506aab 100644
--- a/db/sc_config.conf
+++ b/db/sc_config.conf
@@ -3713,3 +3713,11 @@ SC_SKF_ASPD: {
}
Icon: "SI_SKF_ASPD"
}
+SC_SKF_CAST: {
+ Flags: {
+ NoDispelReset: true
+ NoClearanceReset: true
+ Buff: true
+ }
+ Icon: "SI_SKF_CAST"
+}
diff --git a/src/map/skill.c b/src/map/skill.c
index ee23704bb..396aae491 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -15726,6 +15726,8 @@ static int skill_castfix_sc(struct block_list *bl, int time)
}
if (sc->data[SC_POEMBRAGI])
time -= time * sc->data[SC_POEMBRAGI]->val2 / 100;
+ if (sc->data[SC_SKF_CAST] != NULL)
+ time -= time * sc->data[SC_SKF_CAST]->val1 / 100;
if (sc->data[SC_IZAYOI])
time -= time * 50 / 100;
}
@@ -15827,6 +15829,8 @@ static int skill_vfcastfix(struct block_list *bl, double time, uint16 skill_id,
}
if (sc->data[SC_MYSTICSCROLL])
VARCAST_REDUCTION(sc->data[SC_MYSTICSCROLL]->val1);
+ if (sc->data[SC_SKF_CAST] != NULL)
+ VARCAST_REDUCTION(sc->data[SC_SKF_CAST]->val1);
// Fixed cast reduction bonuses
if( sc->data[SC__LAZINESS] )
diff --git a/src/map/status.c b/src/map/status.c
index 167851e38..a55ad071e 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -889,6 +889,7 @@ static void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_SKF_MATK] |= SCB_MATK;
status->dbs->ChangeFlagTable[SC_SKF_ATK] |= SCB_BATK;
status->dbs->ChangeFlagTable[SC_SKF_ASPD] |= SCB_ASPD;
+ status->dbs->ChangeFlagTable[SC_SKF_CAST] |= SCB_NONE;
// Cash Items
status->dbs->ChangeFlagTable[SC_FOOD_STR_CASH] |= SCB_STR;
diff --git a/src/map/status.h b/src/map/status.h
index f396d6fc0..d113735f4 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -859,6 +859,7 @@ typedef enum sc_type {
SC_SKF_MATK,
SC_SKF_ATK,
SC_SKF_ASPD,
+ SC_SKF_CAST,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif