deadzero 1 Posted October 3, 2015 Hi, I modified my skill.c for MO_EXTREMITYFIST return to old animation. I replace this: case MO_EXTREMITYFIST: { short x, y, i = 2; // Move 2 cells for Issen(from target) struct block_list *mbl = bl; short dir = 0; skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag); if( skill_id == MO_EXTREMITYFIST ) { mbl = src; i = 2; // for Asura(from caster) status->set_sp(src, 0, 0); status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER); status_change_end(src, SC_BLADESTOP, INVALID_TIMER); #ifdef RENEWAL sc_start(src, src,SC_EXTREMITYFIST2,100,skill_lv,skill->get_time(skill_id,skill_lv)); #endif // RENEWAL } else { status_change_end(src, SC_NJ_NEN, INVALID_TIMER); status_change_end(src, SC_HIDING, INVALID_TIMER); #ifdef RENEWAL status->set_hp(src, max(status_get_max_hp(src)/100, 1), 0); #else // not RENEWAL status->set_hp(src, 1, 0); #endif // RENEWAL } dir = map->calc_dir(src,bl->x,bl->y); if( dir > 0 && dir < 4) x = -i; else if( dir > 4 ) x = i; else x = 0; if( dir > 2 && dir < 6 ) y = -i; else if( dir == 7 || dir < 2 ) y = i; else y = 0; if ((mbl == src || (!map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground))) { // only NJ_ISSEN don't have slide effect in GVG if (!(unit->movepos(src, mbl->x+x, mbl->y+y, 1, 1))) { // The cell is not reachable (wall, object, ...), move next to the target if (x > 0) x = -1; else if (x < 0) x = 1; if (y > 0) y = -1; else if (y < 0) y = 1; unit->movepos(src, bl->x+x, bl->y+y, 1, 1); } clif->slide(src, src->x, src->y); clif->fixpos(src); clif->spiritball(src); } } break; For this: case MO_EXTREMITYFIST: if (skill_id == MO_EXTREMITYFIST) { status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER); status_change_end(src, SC_BLADESTOP, INVALID_TIMER); #ifdef RENEWAL sc_start(src,SC_EXTREMITYFIST2,100,skill_lv,skill_get_time(skill_id,skill_lv)); #endif // RENEWAL } //Client expects you to move to target regardless of distance { struct unit_data *ud = unit->bl2ud(bl); short dx,dy; int i,speed; i = skill_id == 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++; status->set_sp(src, 0, 0); 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,skill_id,skill_lv,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&1) ud->canmove_tick+=7*speed/5; else ud->canmove_tick+=speed; } } } break; it works, but the damage was low with the modification. Can someone help me? Quote Share this post Link to post Share on other sites
0 Viray420 1 Posted March 11, 2016 Up! not working Quote Share this post Link to post Share on other sites
Hi, I modified my skill.c for MO_EXTREMITYFIST return to old animation.
I replace this:
case MO_EXTREMITYFIST:
{
short x, y, i = 2; // Move 2 cells for Issen(from target)
struct block_list *mbl = bl;
short dir = 0;
skill->attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
if( skill_id == MO_EXTREMITYFIST ) {
mbl = src;
i = 2; // for Asura(from caster)
status->set_sp(src, 0, 0);
status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
sc_start(src, src,SC_EXTREMITYFIST2,100,skill_lv,skill->get_time(skill_id,skill_lv));
#endif // RENEWAL
} else {
status_change_end(src, SC_NJ_NEN, INVALID_TIMER);
status_change_end(src, SC_HIDING, INVALID_TIMER);
#ifdef RENEWAL
status->set_hp(src, max(status_get_max_hp(src)/100, 1), 0);
#else // not RENEWAL
status->set_hp(src, 1, 0);
#endif // RENEWAL
}
dir = map->calc_dir(src,bl->x,bl->y);
if( dir > 0 && dir < 4) x = -i;
else if( dir > 4 ) x = i;
else x = 0;
if( dir > 2 && dir < 6 ) y = -i;
else if( dir == 7 || dir < 2 ) y = i;
else y = 0;
if ((mbl == src || (!map_flag_gvg2(src->m) && !map->list[src->m].flag.battleground))) { // only NJ_ISSEN don't have slide effect in GVG
if (!(unit->movepos(src, mbl->x+x, mbl->y+y, 1, 1))) {
// The cell is not reachable (wall, object, ...), move next to the target
if (x > 0) x = -1;
else if (x < 0) x = 1;
if (y > 0) y = -1;
else if (y < 0) y = 1;
unit->movepos(src, bl->x+x, bl->y+y, 1, 1);
}
clif->slide(src, src->x, src->y);
clif->fixpos(src);
clif->spiritball(src);
}
}
break;
For this:
case MO_EXTREMITYFIST:
if (skill_id == MO_EXTREMITYFIST)
{
status_change_end(src, SC_EXPLOSIONSPIRITS, INVALID_TIMER);
status_change_end(src, SC_BLADESTOP, INVALID_TIMER);
#ifdef RENEWAL
sc_start(src,SC_EXTREMITYFIST2,100,skill_lv,skill_get_time(skill_id,skill_lv));
#endif // RENEWAL
}
//Client expects you to move to target regardless of distance
{
struct unit_data *ud = unit->bl2ud(bl);
short dx,dy;
int i,speed;
i = skill_id == 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++;
status->set_sp(src, 0, 0);
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,skill_id,skill_lv,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&1)
ud->canmove_tick+=7*speed/5;
else
ud->canmove_tick+=speed;
}
}
}
break;
it works, but the damage was low with the modification.
Can someone help me?
Share this post
Link to post
Share on other sites