Fixed UF_RANGEDSINGLEUNIT skill interactions (#3098)
* Fixes #2969. * Resolves unit skills that use UF_RANGEDSINGLEUNIT not being properly removed by other skills that clear unit types. Thanks to @admkakaroto and @exneval!
This commit is contained in:
parent
34adde7623
commit
14f6ce4c20
@ -17363,6 +17363,10 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
|||||||
}
|
}
|
||||||
//It deletes everything except traps and barriers
|
//It deletes everything except traps and barriers
|
||||||
if ((!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP))) || unit->group->skill_id == WZ_FIREPILLAR || unit->group->skill_id == GN_HELLS_PLANT) {
|
if ((!(skill_get_inf2(unit->group->skill_id)&(INF2_TRAP)) && !(skill_get_inf3(unit->group->skill_id)&(INF3_NOLP))) || unit->group->skill_id == WZ_FIREPILLAR || unit->group->skill_id == GN_HELLS_PLANT) {
|
||||||
|
if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) {
|
||||||
|
if (unit->val2&UF_RANGEDSINGLEUNIT)
|
||||||
|
skill_delunitgroup(unit->group);
|
||||||
|
} else
|
||||||
skill_delunit(unit);
|
skill_delunit(unit);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -17373,6 +17377,10 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
|||||||
case HW_GANBANTEIN:
|
case HW_GANBANTEIN:
|
||||||
case LG_EARTHDRIVE:
|
case LG_EARTHDRIVE:
|
||||||
// Officially songs/dances are removed
|
// Officially songs/dances are removed
|
||||||
|
if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) {
|
||||||
|
if (unit->val2&UF_RANGEDSINGLEUNIT)
|
||||||
|
skill_delunitgroup(unit->group);
|
||||||
|
} else
|
||||||
skill_delunit(unit);
|
skill_delunit(unit);
|
||||||
return 1;
|
return 1;
|
||||||
case SA_VOLCANO:
|
case SA_VOLCANO:
|
||||||
@ -17431,6 +17439,10 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
|
|||||||
break;
|
break;
|
||||||
case RL_FIRE_RAIN:
|
case RL_FIRE_RAIN:
|
||||||
if (skill_get_unit_flag(unit->group->skill_id)&UF_REM_FIRERAIN) {
|
if (skill_get_unit_flag(unit->group->skill_id)&UF_REM_FIRERAIN) {
|
||||||
|
if (skill_get_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) {
|
||||||
|
if (unit->val2&UF_RANGEDSINGLEUNIT)
|
||||||
|
skill_delunitgroup(unit->group);
|
||||||
|
} else
|
||||||
skill_delunit(unit);
|
skill_delunit(unit);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user