summaryrefslogtreecommitdiff
path: root/src/map/unit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/unit.c')
-rw-r--r--src/map/unit.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/map/unit.c b/src/map/unit.c
index 923438d78..ee721bb64 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1051,6 +1051,7 @@ static int unit_skilluse_id(struct block_list *src, int target_id, uint16 skill_
sd->itemskill_lv = 0;
sd->state.itemskill_conditions_checked = 0;
sd->state.itemskill_no_conditions = 0;
+ sd->state.itemskill_no_casttime = 0;
}
return ret;
@@ -1610,6 +1611,11 @@ static int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill
if (!ud->state.running) //need TK_RUN or WUGDASH handler to be done before that, see bugreport:6026
unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);// even though this is not how official works but this will do the trick. bugreport:6829
+ if (sd != NULL && sd->state.itemskill_no_casttime == 1 && sd->itemskill_id == sd->skillitem
+ && sd->itemskill_lv == sd->skillitemlv) {
+ casttime = 0;
+ }
+
// in official this is triggered even if no cast time.
clif->useskill(src, src->id, target_id, 0,0, skill_id, skill_lv, casttime);
if( casttime > 0 || temp )
@@ -1689,6 +1695,7 @@ static int unit_skilluse_pos(struct block_list *src, short skill_x, short skill_
sd->itemskill_lv = 0;
sd->state.itemskill_conditions_checked = 0;
sd->state.itemskill_no_conditions = 0;
+ sd->state.itemskill_no_casttime = 0;
}
return ret;
@@ -1816,6 +1823,12 @@ static int unit_skilluse_pos2(struct block_list *src, short skill_x, short skill
}
unit->stop_walking(src, STOPWALKING_FLAG_FIXPOS);
+
+ if (sd != NULL && sd->state.itemskill_no_casttime == 1 && sd->itemskill_id == sd->skillitem
+ && sd->itemskill_lv == sd->skillitemlv) {
+ casttime = 0;
+ }
+
// in official this is triggered even if no cast time.
clif->useskill(src, src->id, 0, skill_x, skill_y, skill_id, skill_lv, casttime);
if( casttime > 0 ) {