I would like to change the movement of the asura, I wanted him to jump instead of slide,
example: the character disappeared and appeared behind the opponent as before.
i have an old-time project and i use a version of eathena.
I believe that the part corresponding to this is this src/map/skill.c
case MO_EXTREMITYFIST:
if( skillid == MO_EXTREMITYFIST )
{
status_change_end(src,SC_EXPLOSIONSPIRITS,-1);
status_change_end(src,SC_BLADESTOP,-1);
}
//Client expects you to move to target regardless of distance
{
struct unit_data *ud = unit_bl2ud(src);
short dx,dy;
int i,speed;
i = skillid == MO_EXTREMITYFIST?1:2; //Move 2 cells for Issen, 1 for Asura
dx = bl->x - src->x;
dy = bl->y - src->y;
if (dx < 0) dx-=i;
else if (dx > 0) dx+=i;
if (dy < 0) dy-=i;
else if (dy > 0) dy+=i;
if (!dx && !dy) dy++;
if (map_getcell(src->m, src->x+dx, src->y+dy, CELL_CHKNOPASS))
{
dx = bl->x;
dy = bl->y;
} else {
dx = src->x + dx;
dy = src->y + dy;
}
skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag);
if(unit_walktoxy(src, dx, dy, 2) && ud) {
//Increase can't walk delay to not alter your walk path
ud->canmove_tick = tick;
speed = status_get_speed(src);
for (i = 0; i < ud->walkpath.path_len; i ++)
{
if(ud->walkpath.path[i]&1)
ud->canmove_tick+=7*speed/5;
else
ud->canmove_tick+=speed;
}
}
}
break;
I would like to change the movement of the asura, I wanted him to jump instead of slide,
example: the character disappeared and appeared behind the opponent as before.
i have an old-time project and i use a version of eathena.
I believe that the part corresponding to this is this src/map/skill.c
case MO_EXTREMITYFIST: if( skillid == MO_EXTREMITYFIST ) { status_change_end(src,SC_EXPLOSIONSPIRITS,-1); status_change_end(src,SC_BLADESTOP,-1); } //Client expects you to move to target regardless of distance { struct unit_data *ud = unit_bl2ud(src); short dx,dy; int i,speed; i = skillid == MO_EXTREMITYFIST?1:2; //Move 2 cells for Issen, 1 for Asura dx = bl->x - src->x; dy = bl->y - src->y; if (dx < 0) dx-=i; else if (dx > 0) dx+=i; if (dy < 0) dy-=i; else if (dy > 0) dy+=i; if (!dx && !dy) dy++; if (map_getcell(src->m, src->x+dx, src->y+dy, CELL_CHKNOPASS)) { dx = bl->x; dy = bl->y; } else { dx = src->x + dx; dy = src->y + dy; } skill_attack(BF_WEAPON,src,src,bl,skillid,skilllv,tick,flag); if(unit_walktoxy(src, dx, dy, 2) && ud) { //Increase can't walk delay to not alter your walk path ud->canmove_tick = tick; speed = status_get_speed(src); for (i = 0; i < ud->walkpath.path_len; i ++) { if(ud->walkpath.path[i]&1) ud->canmove_tick+=7*speed/5; else ud->canmove_tick+=speed; } } } break;Link to comment
Share on other sites