Commit 90e3b6c186f613815abda64280c6283d9a1bca54

Authored by Andrew Minton
1 parent 23956754

Fix some overlapping set bugs

This fixes the Kinetic/Thermal/Charged set.

Previously, if you equipped all three mindstars, then removed Kinetic Focus, the
other two would lose ALL their set bonuses - including the Thermal/Charged set
bonus, even though both are still equipped. If you re-equipped the Kinetic
Focus, you would get the Kinetic/Thermal and Kinetic/Charged set bonuses, but
not the Thermal/Charged one.
In the general case, removing one item from any set would remove all set bonuses
from all items in that set. This worked fine for non-overlapping sets, but does
not work for overlapping ones: if X+Y, Y+Z, and X+Z are all sets, then removing
X would take away the set bonuses for Y+Z, which it obviously should not.

This commit changes set behaviour so that only set bonuses from the sets that
were *actually broken* are removed. If you remove X, the bonuses for X+Y and X+Z
are still removed, but the bonus for Y+Z remains. This fixes the
Kinetic/Thermal/Charged Focus set.

Object:specialSetAdd() now takes the set_id as a third parameter. This is
only needed for overlapping sets and can safely be omitted for sets that do not
overlap. Therefore, existing addons that use specialSetAdd() will not break.

There are still other problems with mindstar ego sets that need to be addressed
separately.

Additionally, if you had e.g. two Mighty Girdles, one worn and one in your pack, it was
possible that Actor:findInAllInventories() would find the one in your pack
first, meaning that the set would not be completed. This is mainly relevant for
mitotic mindstars, but could happen with any set in the game.

The set code now only looks in worn inventories if no inven_id is specified,
preventing this bug from happening. This also allows sets specifying non-worn
inven_ids to work.
0 builds
.gitlab-ci.yml not found in this commit
Status Build ID Ref Stage Name Duration Finished at