summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKenpachi Developer <Kenpachi.Developer@gmx.de>2020-04-21 05:23:53 +0200
committerKenpachi Developer <Kenpachi.Developer@gmx.de>2020-05-10 21:23:47 +0200
commita31fa955dbc4f938f953555a50f2994f02aa14e6 (patch)
tree3c442fbe0d8560a71f690439c968aa1c943aad30 /src
parentc7f34b53e5bd0da415daf7d08d9abc7fe5a68116 (diff)
downloadhercules-a31fa955dbc4f938f953555a50f2994f02aa14e6.tar.gz
hercules-a31fa955dbc4f938f953555a50f2994f02aa14e6.tar.bz2
hercules-a31fa955dbc4f938f953555a50f2994f02aa14e6.tar.xz
hercules-a31fa955dbc4f938f953555a50f2994f02aa14e6.zip
Add pc_autocast_set_current() function
Diffstat (limited to 'src')
-rw-r--r--src/map/pc.c28
-rw-r--r--src/map/pc.h1
2 files changed, 29 insertions, 0 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index 411727c51..632b5693b 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -5356,6 +5356,33 @@ static int pc_autocast_clear(struct map_session_data *sd)
return 1;
}
+/**
+ * Sets a character's currently processed auto-cast skill data by comparing the skill ID.
+ *
+ * @param sd The character.
+ * @param skill_id The skill ID to compare.
+ *
+ **/
+static void pc_autocast_set_current(struct map_session_data *sd, int skill_id)
+{
+ nullpo_retv(sd);
+
+ sd->auto_cast_current.type = AUTOCAST_NONE;
+ sd->auto_cast_current.skill_id = 0;
+ sd->auto_cast_current.skill_lv = 0;
+ sd->auto_cast_current.itemskill_conditions_checked = false;
+ sd->auto_cast_current.itemskill_check_conditions = true;
+ sd->auto_cast_current.itemskill_instant_cast = false;
+ sd->auto_cast_current.itemskill_cast_on_self = false;
+
+ for (int i = 0; i < VECTOR_LENGTH(sd->auto_cast); i++) {
+ if (VECTOR_INDEX(sd->auto_cast, i).skill_id == skill_id) {
+ sd->auto_cast_current = VECTOR_INDEX(sd->auto_cast, i);
+ break;
+ }
+ }
+}
+
/*==========================================
* Add item on cart for given index.
* Return:
@@ -12887,6 +12914,7 @@ void pc_defaults(void)
pc->checkitem = pc_checkitem;
pc->useitem = pc_useitem;
pc->autocast_clear = pc_autocast_clear;
+ pc->autocast_set_current = pc_autocast_set_current;
pc->skillatk_bonus = pc_skillatk_bonus;
pc->skillheal_bonus = pc_skillheal_bonus;
diff --git a/src/map/pc.h b/src/map/pc.h
index d548339b2..40c32f594 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -1035,6 +1035,7 @@ END_ZEROED_BLOCK; /* End */
int (*checkitem) (struct map_session_data *sd);
int (*useitem) (struct map_session_data *sd,int n);
int (*autocast_clear) (struct map_session_data *sd);
+ void (*autocast_set_current) (struct map_session_data *sd, int skill_id);
int (*skillatk_bonus) (struct map_session_data *sd, uint16 skill_id);
int (*skillheal_bonus) (struct map_session_data *sd, uint16 skill_id);