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:
Aleos 2018-05-08 12:38:26 -04:00 committed by GitHub
parent 34adde7623
commit 14f6ce4c20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17363,6 +17363,10 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
}
//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_unit_flag(unit->group->skill_id)&UF_RANGEDSINGLEUNIT) {
if (unit->val2&UF_RANGEDSINGLEUNIT)
skill_delunitgroup(unit->group);
} else
skill_delunit(unit);
return 1;
}
@ -17373,6 +17377,10 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
case HW_GANBANTEIN:
case LG_EARTHDRIVE:
// 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);
return 1;
case SA_VOLCANO:
@ -17431,6 +17439,10 @@ static int skill_cell_overlap(struct block_list *bl, va_list ap)
break;
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_RANGEDSINGLEUNIT) {
if (unit->val2&UF_RANGEDSINGLEUNIT)
skill_delunitgroup(unit->group);
} else
skill_delunit(unit);
return 1;
}