diff options
Diffstat (limited to 'src/map/battle.c')
-rw-r--r-- | src/map/battle.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/map/battle.c b/src/map/battle.c index 1bc612e0c..9f3361237 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3682,15 +3682,22 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f // スキルユニットの場合、親を求める if( src->type==BL_SKILL) { - int inf2 = skill_get_inf2(((struct skill_unit *)src)->group->skill_id); - if( (ss=map_id2bl( ((struct skill_unit *)src)->group->src_id))==NULL ) + struct skill_unit *su = (struct skill_unit *)src; + int skillid, inf2; + + nullpo_retr (-1, su); + nullpo_retr (-1, su->group); + skillid = su->group->skill_id; + inf2 = skill_get_inf2(skillid); + if( (ss=map_id2bl( su->group->src_id))==NULL ) return -1; if(ss->prev == NULL) return -1; if(inf2&0x80 && - (map[src->m].flag.pvp || pc_iskiller((struct map_session_data *)src, (struct map_session_data *)target)) && // [MouseJstr] - !(target->type == BL_PC && pc_isinvisible((struct map_session_data *)target))) - return 0; + (map[src->m].flag.pvp || + (skillid >= 115 && skillid <= 125 && map[src->m].flag.gvg)) && + !(target->type == BL_PC && pc_isinvisible((struct map_session_data *)target))) + return 0; if(ss == target) { if(inf2&0x100) return 0; |