summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/battle.c53
-rw-r--r--src/map/clif.c8
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/skill.c2
4 files changed, 31 insertions, 34 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index b0ad2f075..c430cf5e4 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -2964,36 +2964,33 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
if (sc && sc->data[SC_CLOAKING] && !(sc->data[SC_CLOAKING]->val4&2))
status_change_end(src,SC_CLOAKING,-1);
- //Check for counter attacks that block your attack. [Skotlex]
- if(tsc)
+ if( tsc && tsc->data[SC_AUTOCOUNTER] && status_check_skilluse(target, src, KN_AUTOCOUNTER, 1) )
{
- if(tsc->data[SC_AUTOCOUNTER] &&
- status_check_skilluse(target, src, KN_AUTOCOUNTER, 1)
- ) {
- int dir = map_calc_dir(target,src->x,src->y);
- int t_dir = unit_getdir(target);
- int dist = distance_bl(src, target);
- if(dist <= 0 || (!map_check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1))
- {
- int skilllv = tsc->data[SC_AUTOCOUNTER]->val1;
- clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
- clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
- status_change_end(target,SC_AUTOCOUNTER,-1);
- skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skilllv,tick,0);
- return ATK_NONE;
- }
+ int dir = map_calc_dir(target,src->x,src->y);
+ int t_dir = unit_getdir(target);
+ int dist = distance_bl(src, target);
+ if(dist <= 0 || (!map_check_dir(dir,t_dir) && dist <= tstatus->rhw.range+1))
+ {
+ int skilllv = tsc->data[SC_AUTOCOUNTER]->val1;
+ clif_skillcastcancel(target); //Remove the casting bar. [Skotlex]
+ clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
+ status_change_end(target,SC_AUTOCOUNTER,-1);
+ skill_attack(BF_WEAPON,target,target,src,KN_AUTOCOUNTER,skilllv,tick,0);
+ return ATK_NONE;
}
- if (tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src)) {
- int skilllv = tsc->data[SC_BLADESTOP_WAIT]->val1;
- int duration = skill_get_time2(MO_BLADESTOP,skilllv);
- status_change_end(target, SC_BLADESTOP_WAIT, -1);
- if(sc_start4(src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration))
- { //Target locked.
- clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
- clif_bladestop(target, src->id, 1);
- sc_start4(target, SC_BLADESTOP, 100, skilllv, 0, 0, src->id, duration);
- return ATK_NONE;
- }
+ }
+
+ if( tsc && tsc->data[SC_BLADESTOP_WAIT] && !is_boss(src) )
+ {
+ int skilllv = tsc->data[SC_BLADESTOP_WAIT]->val1;
+ int duration = skill_get_time2(MO_BLADESTOP,skilllv);
+ status_change_end(target, SC_BLADESTOP_WAIT, -1);
+ if(sc_start4(src, SC_BLADESTOP, 100, sd?pc_checkskill(sd, MO_BLADESTOP):5, 0, 0, target->id, duration))
+ { //Target locked.
+ clif_damage(src, target, tick, sstatus->amotion, 1, 0, 1, 0, 0); //Display MISS.
+ clif_bladestop(target, src->id, 1);
+ sc_start4(target, SC_BLADESTOP, 100, skilllv, 0, 0, src->id, duration);
+ return ATK_NONE;
}
}
diff --git a/src/map/clif.c b/src/map/clif.c
index 739805f04..b17e85aab 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -9378,7 +9378,10 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
return;
if( sd->bl.id != target_id && !sd->state.skill_flag && tmp&INF_SELF_SKILL )
- target_id = sd->bl.id; //What good is it to mess up the target in self skills? Wished I knew... [Skotlex]
+ target_id = sd->bl.id; // never trust the client
+
+ if( target_id < 0 && -target_id == sd->bl.id ) // for disguises [Valaris]
+ target_id = sd->bl.id;
if( sd->ud.skilltimer != -1 )
{
@@ -9397,9 +9400,6 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
if( sd->sc.data[SC_BASILICA] && (skillnum != HP_BASILICA || sd->sc.data[SC_BASILICA]->val4 != sd->bl.id) )
return; // On basilica only caster can use Basilica again to stop it.
- if( target_id < 0 && -target_id == sd->bl.id ) // for disguises [Valaris]
- target_id = sd->bl.id;
-
if( sd->menuskill_id )
{
if( sd->menuskill_id == SA_TAMINGMONSTER )
diff --git a/src/map/pc.c b/src/map/pc.c
index ee9dc1878..aa3b45157 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -5266,7 +5266,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
npc_script_event(sd,NPCE_DIE);
- if ( sd && sd->spiritball ) // maybe also monks' spiritballs ?
+ if ( sd && sd->spiritball )
pc_delspiritball(sd,sd->spiritball,0);
if (src)
diff --git a/src/map/skill.c b/src/map/skill.c
index 159f445ea..cb8fb986d 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1306,7 +1306,7 @@ int skill_blown(struct block_list* src, struct block_list* target, int count, in
break;
case BL_SKILL:
su = (struct skill_unit *)target;
- if( su->group->unit_id == UNT_ANKLESNARE )
+ if( su->group->skill_id == HT_ANKLESNARE )
return 0; // ankle snare cannot be knocked back
break;
}