@@ -3072,7 +3072,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
if (!map_flag_gvg2(src->m) && !map[src->m].flag.battleground && unit_movepos(src,bl->x,bl->y,1,1)) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src); //Aegis send this packet too
clif_fixpos(src);
}
if (i < dmg.blewcount)
skill_addtimerskill(src, tick + 300 * ((flag&2) ? 1 : 2), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag|4);
@@ -4108,8 +4108,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
uint8 dir = map_calc_dir(bl, src->x, src->y);
// teleport to target (if not on WoE grounds)
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x, bl->y, 0, 1) )
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x, bl->y, 0, 1) ) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
}
// cause damage and knockback if the path to target was a straight one
if( path )
@@ -4224,7 +4226,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
// Ashura Strike still has slide effect in GVG
if ((mbl == src || (!map_flag_gvg2(src->m) && !map[src->m].flag.battleground)) &&
unit_movepos(src, mbl->x + x, mbl->y + y, 1, 1)) {
clif_slide(src, src ->x, src ->y);
clif_slide(src, mbl ->x, mbl ->y);
clif_fixpos(src);
clif_spiritball(src);
}
@@ -4640,9 +4642,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
else
y = 0;
// Doesn't have slide effect in GVG
if (!map_flag_gvg2(src->m) && !map[src->m].flag.battleground &&
unit_movepos(src, bl->x + x, bl->y + y, 1, 1)) {
clif_slide(src, bl->x + x, bl->y + y);
if (!map_flag_gvg2(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x + x, bl->y + y, 1, 1)) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
clif_spiritball(src);
}
@@ -4716,8 +4717,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
{ //You don't move on GVG grounds.
short x, y;
map_search_freecell(bl, 0, &x, &y, 1, 1, 0);
if (unit_movepos(src, x, y, 0, 0))
clif_slide(src,src->x,src->y);
if (unit_movepos(src, x, y, 0, 0)) {
clif_slide(src, src->x, src->y);
clif_fixpos(src);
}
}
status_change_end(src, SC_HIDING, INVALID_TIMER);
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
@@ -4760,10 +4763,9 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
else if( dir == 7 || dir < 2 ) y = -2;
else y = 0;
if( unit_movepos(src, bl->x+x, bl->y+y, 1, 1) )
{
clif_slide(src,bl->x+x,bl->y+y);
clif_fixpos(src); // the official server send these two packts.
if( unit_movepos(src, bl->x+x, bl->y+y, 1, 1) ) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
if( rnd()%100 < 4 * skill_lv )
skill_castend_damage_id(src,bl,GC_CROSSIMPACT,skill_lv,tick,flag);
@@ -4978,9 +4980,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
short y[8]={1,1,0,-1,-1,-1,0,1};
uint8 dir = map_calc_dir(bl, src->x, src->y);
if( unit_movepos(src, bl->x+x[dir], bl->y+y[dir], 1, 1) )
{
clif_slide(src, bl->x+x[dir], bl->y+y[dir]);
if( unit_movepos(src, bl->x+x[dir], bl->y+y[dir], 1, 1) ) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
skill_attack(BF_WEAPON, src, src, bl, skill_id, skill_lv, tick, flag);
}
@@ -5039,7 +5040,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
break;
case NC_MAGNETICFIELD:
if( !map[src->m].flag.pvp ) // Doesn't affect enemies on PvP maps
if( flag&1 && !map[src->m].flag.pvp ) // Doesn't affect enemies on PvP maps
sc_start2(src,bl,SC_MAGNETICFIELD,100,skill_lv,src->id,skill_get_time(skill_id,skill_lv));
break;
case SC_FATALMENACE:
@@ -5058,8 +5059,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
}
break;
case LG_PINPOINTATTACK:
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x, bl->y, 1, 1) )
clif_slide(src,bl->x,bl->y);
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x, bl->y, 1, 1) ) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
}
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
break;
@@ -5074,8 +5077,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
case SR_KNUCKLEARROW:
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, bl->x, bl->y, 1, 1) ) {
clif_slide(src,bl->x,bl->y);
clif_fixpos(src); // Aegis send this packet too.
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
}
if( flag&1 )
@@ -5176,8 +5179,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
else
y = 0;
if (unit_movepos(src,bl->x + x,bl->y + y,1,1)) {
clif_slide(src,bl->x + x, bl->y + y);
clif_fixpos(src); //The official server send these two packts.
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
}
}
@@ -5290,6 +5293,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
if (skill_id == MH_TINDER_BREAKER && unit_movepos(src, bl->x, bl->y, 1, 1)) {
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
clif_skill_poseffect(src,skill_id,skill_lv,bl->x,bl->y,tick);
}
clif_skill_nodamage(src,bl,skill_id,skill_lv,
@@ -5949,15 +5953,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
case TK_JUMPKICK:
/* Check if the target is an enemy; if not, skill should fail so the character doesn't unit_movepos (exploitable) */
if( battle_check_target(src, bl, BCT_ENEMY) > 0 )
{
if( unit_movepos(src, bl->x, bl->y, 1, 1) )
{
if( battle_check_target(src, bl, BCT_ENEMY) > 0 ) {
if( unit_movepos(src, bl->x, bl->y, 1, 1) ) {
skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
}
}
else
} else
clif_skill_fail(sd,skill_id,USESKILL_FAIL,0);
break;
@@ -7261,9 +7263,9 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
}
clif_skill_nodamage(src,bl,TK_HIGHJUMP,skill_lv,1);
if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && map_getcell(src->m,x,y,CELL_CHKREACH)) {
clif_slide(src,x, y);
unit_movepos (src, x, y, 1, 0 );
if(!map_count_oncell(src->m,x,y,BL_PC|BL_NPC|BL_MOB) && map_getcell(src->m,x,y,CELL_CHKREACH) && unit_movepos(src, x, y, 1, 0) ) {
clif_slide(src, src->x, src-> y);
clif_fixpos (src);
}
}
break;
@@ -8151,11 +8153,12 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
if (unit_movepos(src,bl->x,bl->y,0,0)) {
clif_skill_nodamage(src,src,skill_id,skill_lv,1); // Homunc
clif_slide(src,bl->x,bl->y) ;
if (unit_movepos(bl,x,y,0,0))
{
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
if (unit_movepos(bl,x,y,0,0)) {
clif_skill_nodamage(bl,bl,skill_id,skill_lv,1); // Master
clif_slide(bl,x,y) ;
clif_slide(bl, x, y);
clif_fixpos(src);
}
//TODO: Shouldn't also players and the like switch targets?
@@ -8946,8 +8949,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
{
uint8 dir = (skill_id == NC_F_SIDESLIDE) ? (unit_getdir(src)+4)%8 : unit_getdir(src);
skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),dir,0x1);
clif_slide(src,src->x,src->y);
clif_fixpos(src); //Aegis sent this packet
clif_slide(src, src->x, src->y);
clif_fixpos(src);
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
}
break;
@@ -9887,14 +9890,16 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
if (unit_movepos(src,bl->x,bl->y,0,0)) {
clif_skill_nodamage(src,src,skill_id,skill_lv,1);
clif_slide(src,bl->x,bl->y) ;
clif_slide(src, bl->x, bl->y);
clif_fixpos(src);
sc_start(src,src,SC_CONFUSION,25,skill_lv,skill_get_time(skill_id,skill_lv));
if (unit_movepos(bl,x,y,0,0))
{
clif_skill_damage(bl,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, -1, 6);
if( bl->type == BL_PC && pc_issit((TBL_PC*)bl))
clif_sitting(bl); //Avoid sitting sync problem
clif_slide(bl,x,y) ;
clif_slide(bl, x, y);
clif_fixpos(bl);
sc_start(src,bl,SC_CONFUSION,75,skill_lv,skill_get_time(skill_id,skill_lv));
}
}
@@ -10958,9 +10963,9 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
}
break;
case NJ_SHADOWJUMP:
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground ) { //You don't move on GVG grounds.
unit_movepos (src, x, y, 1, 0 );
clif_slide (src,x,y );
if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground && unit_movepos(src, x, y, 1, 0) ) { //You don't move on GVG grounds.
clif_slide (src, x, y);
clif_fixpos (src);
}
status_change_end(src, SC_HIDING, INVALID_TIMER);
break;
@@ -11402,7 +11407,8 @@ int skill_castend_pos2(struct block_list* src, int x, int y, uint16 skill_id, ui
if (unit_movepos(src,x,y,1,1)) {
enum e_skill skill_use = GS_DESPERADO;
uint8 skill_use_lv = pc_checkskill(sd,skill_use);
clif_slide(src,x,y);
clif_slide(src, x, y);
clif_fixpos(src);
if (skill_check_condition_castend(sd,skill_use,skill_use_lv)) {
sd->skill_id_old = RL_FALLEN_ANGEL;
skill_castend_pos2(src,src->x,src->y,skill_use,skill_use_lv,tick,SD_LEVEL|SD_ANIMATION|SD_SPLASH);
this is weird @aleos89 xD
//@auction