From 895341723c0c601c798e22c0a53f0aaaa73e08d1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 19 Jul 2016 01:57:38 +0300 Subject: Add skill atributes for allow moving while casting skill. New SkillInfo attributes: FreeCastReduced - allow move while casting with slowdown FreeCastNormal - allow move while casting with normal speed --- src/map/skill.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/map/skill.c') diff --git a/src/map/skill.c b/src/map/skill.c index 1527d31b2..a7ed0b8f2 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4916,12 +4916,11 @@ int skill_castend_id(int tid, int64 tick, int id, intptr_t data) { return 0; } - if( sd && ud->skilltimer != INVALID_TIMER && (pc->checkskill(sd,SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK) ) + if (sd && ud->skilltimer != INVALID_TIMER && (pc->checkskill(sd, SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK || (skill->get_inf2(ud->skill_id) & INF2_FREE_CAST_REDUCED) != 0)) {// restore original walk speed ud->skilltimer = INVALID_TIMER; status_calc_bl(&sd->bl, SCB_SPEED|SCB_ASPD); } - ud->skilltimer = INVALID_TIMER; } @@ -9946,7 +9945,7 @@ int skill_castend_pos(int tid, int64 tick, int id, intptr_t data) return 0; } - if( sd && ud->skilltimer != INVALID_TIMER && ( pc->checkskill(sd,SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK ) ) + if (sd && ud->skilltimer != INVALID_TIMER && (pc->checkskill(sd, SA_FREECAST) > 0 || ud->skill_id == LG_EXEEDBREAK || (skill->get_inf2(ud->skill_id) & INF2_FREE_CAST_REDUCED) != 0)) {// restore original walk speed ud->skilltimer = INVALID_TIMER; status_calc_bl(&sd->bl, SCB_SPEED|SCB_ASPD); @@ -19204,6 +19203,18 @@ void skill_validate_skillinfo(struct config_setting_t *conf, struct s_skill_db * } else { sk->inf2 &= ~INF2_CHORUS_SKILL; } + } else if (strcmpi(type, "FreeCastNormal") == 0) { + if (on) { + sk->inf2 |= INF2_FREE_CAST_NORMAL; + } else { + sk->inf2 &= ~INF2_FREE_CAST_NORMAL; + } + } else if (strcmpi(type, "FreeCastReduced") == 0) { + if (on) { + sk->inf2 |= INF2_FREE_CAST_REDUCED; + } else { + sk->inf2 &= ~INF2_FREE_CAST_REDUCED; + } } else if (strcmpi(type, "None") != 0) { skilldb_invalid_error(type, config_setting_name(t), sk->nameid); } -- cgit v1.2.3-60-g2f50