|
@@ -8032,13 +8032,14 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
case TK_HIGHJUMP:
|
|
case TK_HIGHJUMP:
|
|
{
|
|
{
|
|
int x,y, dir = unit_getdir(src);
|
|
int x,y, dir = unit_getdir(src);
|
|
|
|
+ struct map_data *mapdata = &map[src->m];
|
|
|
|
|
|
//Fails on noteleport maps, except for GvG and BG maps [Skotlex]
|
|
//Fails on noteleport maps, except for GvG and BG maps [Skotlex]
|
|
- if( map_getmapflag(src->m, MF_NOTELEPORT) &&
|
|
|
|
- !(map_getmapflag(src->m, MF_BATTLEGROUND) || map_flag_gvg2(src->m) )
|
|
|
|
|
|
+ if( mapdata->flag[MF_NOTELEPORT] &&
|
|
|
|
+ !(mapdata->flag[MF_BATTLEGROUND] || mapdata_flag_gvg2(mapdata) )
|
|
) {
|
|
) {
|
|
- x = src->x;
|
|
|
|
- y = src->y;
|
|
|
|
|
|
+ clif_skill_nodamage(src, bl, TK_HIGHJUMP, skill_lv, 1);
|
|
|
|
+ break;
|
|
} else if(dir%2) {
|
|
} else if(dir%2) {
|
|
//Diagonal
|
|
//Diagonal
|
|
x = src->x + dirx[dir]*(skill_lv*4)/3;
|
|
x = src->x + dirx[dir]*(skill_lv*4)/3;
|
|
@@ -8048,8 +8049,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
|
|
y = src->y + diry[dir]*skill_lv*2;
|
|
y = src->y + diry[dir]*skill_lv*2;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ int x1 = x + dirx[dir];
|
|
|
|
+ int y1 = y + diry[dir];
|
|
|
|
+
|
|
clif_skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1);
|
|
clif_skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1);
|
|
- if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x,y,CELL_CHKREACH) && unit_movepos(src, x, y, 1, 0))
|
|
|
|
|
|
+ if( !map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x,y,CELL_CHKREACH) &&
|
|
|
|
+ !map_count_oncell(src->m,x1,y1,BL_PC|BL_NPC|BL_MOB,0) && map_getcell(src->m,x1,y1,CELL_CHKREACH) &&
|
|
|
|
+ unit_movepos(src, x, y, 1, 0))
|
|
clif_blown(src);
|
|
clif_blown(src);
|
|
}
|
|
}
|
|
break;
|
|
break;
|