Skip to content

Commit 571ae47

Browse files
authored
Merge pull request #2 from neocerber/enhance-filterItemsToLocationsNb
Enhance: filter items to fit with the number of locations
2 parents 1cd4175 + eefad96 commit 571ae47

File tree

3 files changed

+114
-76
lines changed

3 files changed

+114
-76
lines changed

worlds/enderlilies/Items.py

+74-74
Original file line numberDiff line numberDiff line change
@@ -18,87 +18,87 @@ class ItemData(NamedTuple):
1818
'Aptitude.special_attack' : ItemData(code=0x7171ed, count=1 , classification=IC.progression),
1919
'Aptitude.wallgrab' : ItemData(code=0x7171ee, count=1 , classification=IC.progression),
2020
'Generic.i_FinalPassivePart_Up' : ItemData(code=0x7171ef, count=7 , classification=IC.progression),
21-
'Generic.i_HealPower_Up' : ItemData(code=0x7171f0, count=8 , classification=IC.filler),
22-
'Generic.i_PassiveSlot_Up' : ItemData(code=0x7171f1, count=18, classification=IC.filler),
23-
'Generic.i_SpiritCurrencyLv1_L' : ItemData(code=0x7171f2, count=12, classification=IC.filler),
24-
'Generic.i_SpiritCurrencyLv1_LL' : ItemData(code=0x7171f3, count=5 , classification=IC.filler),
25-
'Generic.i_SpiritCurrencyLv1_M' : ItemData(code=0x7171f4, count=26, classification=IC.filler),
26-
'Generic.i_SpiritCurrencyLv1_S' : ItemData(code=0x7171f5, count=49, classification=IC.filler),
27-
'Generic.i_SpiritCurrencyLv2_L' : ItemData(code=0x7171f6, count=5 , classification=IC.filler),
28-
'Generic.i_SpiritCurrencyLv2_LL' : ItemData(code=0x7171f7, count=2 , classification=IC.filler),
29-
'Generic.i_SpiritCurrencyLv2_M' : ItemData(code=0x7171f8, count=11, classification=IC.filler),
30-
'Generic.i_SpiritCurrencyLv2_S' : ItemData(code=0x7171f9, count=19, classification=IC.filler),
31-
'Generic.i_SpiritCurrencyLv3_1' : ItemData(code=0x7171fa, count=1 , classification=IC.filler),
32-
'Generic.i_SpiritCurrencyLv3_2' : ItemData(code=0x7171fb, count=2 , classification=IC.filler),
33-
'Parameter.i_maxHPUp_01' : ItemData(code=0x7171fc, count=36, classification=IC.filler),
34-
'Parameter.i_maxHPUp_02' : ItemData(code=0x7171fd, count=6 , classification=IC.filler),
35-
'Parameter.i_maxHPUp_03' : ItemData(code=0x7171fe, count=1 , classification=IC.filler),
36-
'Passive.i_passive_dmgcut_LV1' : ItemData(code=0x7171ff, count=1 , classification=IC.filler),
37-
'Passive.i_passive_dmgcut_LV2' : ItemData(code=0x717200, count=1 , classification=IC.filler),
38-
'Passive.i_passive_dmgcut_LV3' : ItemData(code=0x717201, count=1 , classification=IC.filler),
39-
'Passive.i_passive_dmgup' : ItemData(code=0x717202, count=1 , classification=IC.filler),
40-
'Passive.i_passive_dmgup_airborne' : ItemData(code=0x717203, count=1 , classification=IC.filler),
41-
'Passive.i_passive_dmgup_airborne_LV2' : ItemData(code=0x717204, count=1 , classification=IC.filler),
42-
'Passive.i_passive_dmgup_grounded' : ItemData(code=0x717205, count=1 , classification=IC.filler),
43-
'Passive.i_passive_dmgup_grounded_LV2' : ItemData(code=0x717206, count=1 , classification=IC.filler),
44-
'Passive.i_passive_dmgup_maxhp' : ItemData(code=0x717207, count=1 , classification=IC.filler),
45-
'Passive.i_passive_dmgup_swimming' : ItemData(code=0x717208, count=1 , classification=IC.filler),
46-
'Passive.i_passive_expup_1' : ItemData(code=0x717209, count=1 , classification=IC.filler),
47-
'Passive.i_passive_expup_2' : ItemData(code=0x71720a, count=1 , classification=IC.filler),
21+
'Generic.i_HealPower_Up' : ItemData(code=0x7171f0, count=8 , classification=IC.useful),
22+
'Generic.i_PassiveSlot_Up' : ItemData(code=0x7171f1, count=18, classification=IC.useful),
23+
'Generic.i_SpiritCurrencyLv1_L' : ItemData(code=0x7171f2, count=12, classification=IC.useful),
24+
'Generic.i_SpiritCurrencyLv1_LL' : ItemData(code=0x7171f3, count=5 , classification=IC.useful),
25+
'Generic.i_SpiritCurrencyLv1_M' : ItemData(code=0x7171f4, count=26, classification=IC.useful),
26+
'Generic.i_SpiritCurrencyLv1_S' : ItemData(code=0x7171f5, count=49, classification=IC.useful),
27+
'Generic.i_SpiritCurrencyLv2_L' : ItemData(code=0x7171f6, count=5 , classification=IC.useful),
28+
'Generic.i_SpiritCurrencyLv2_LL' : ItemData(code=0x7171f7, count=2 , classification=IC.useful),
29+
'Generic.i_SpiritCurrencyLv2_M' : ItemData(code=0x7171f8, count=11, classification=IC.useful),
30+
'Generic.i_SpiritCurrencyLv2_S' : ItemData(code=0x7171f9, count=19, classification=IC.useful),
31+
'Generic.i_SpiritCurrencyLv3_1' : ItemData(code=0x7171fa, count=1 , classification=IC.useful),
32+
'Generic.i_SpiritCurrencyLv3_2' : ItemData(code=0x7171fb, count=2 , classification=IC.useful),
33+
'Parameter.i_maxHPUp_01' : ItemData(code=0x7171fc, count=36, classification=IC.useful),
34+
'Parameter.i_maxHPUp_02' : ItemData(code=0x7171fd, count=6 , classification=IC.useful),
35+
'Parameter.i_maxHPUp_03' : ItemData(code=0x7171fe, count=1 , classification=IC.useful),
36+
'Passive.i_passive_dmgcut_LV1' : ItemData(code=0x7171ff, count=1 , classification=IC.useful),
37+
'Passive.i_passive_dmgcut_LV2' : ItemData(code=0x717200, count=1 , classification=IC.useful),
38+
'Passive.i_passive_dmgcut_LV3' : ItemData(code=0x717201, count=1 , classification=IC.useful),
39+
'Passive.i_passive_dmgup' : ItemData(code=0x717202, count=1 , classification=IC.useful),
40+
'Passive.i_passive_dmgup_airborne' : ItemData(code=0x717203, count=1 , classification=IC.useful),
41+
'Passive.i_passive_dmgup_airborne_LV2' : ItemData(code=0x717204, count=1 , classification=IC.useful),
42+
'Passive.i_passive_dmgup_grounded' : ItemData(code=0x717205, count=1 , classification=IC.useful),
43+
'Passive.i_passive_dmgup_grounded_LV2' : ItemData(code=0x717206, count=1 , classification=IC.useful),
44+
'Passive.i_passive_dmgup_maxhp' : ItemData(code=0x717207, count=1 , classification=IC.useful),
45+
'Passive.i_passive_dmgup_swimming' : ItemData(code=0x717208, count=1 , classification=IC.useful),
46+
'Passive.i_passive_expup_1' : ItemData(code=0x717209, count=1 , classification=IC.useful),
47+
'Passive.i_passive_expup_2' : ItemData(code=0x71720a, count=1 , classification=IC.useful),
4848
'Passive.i_passive_heal_count_up_1' : ItemData(code=0x71720b, count=1 , classification=IC.progression),
4949
'Passive.i_passive_heal_count_up_2' : ItemData(code=0x71720c, count=1 , classification=IC.progression),
5050
'Passive.i_passive_heal_count_up_3' : ItemData(code=0x71720d, count=1 , classification=IC.progression),
51-
'Passive.i_passive_heal_power_up' : ItemData(code=0x71720e, count=1 , classification=IC.filler),
51+
'Passive.i_passive_heal_power_up' : ItemData(code=0x71720e, count=1 , classification=IC.useful),
5252
'Passive.i_passive_ignore_damage_area' : ItemData(code=0x71720f, count=1 , classification=IC.progression),
53-
'Passive.i_passive_jump_height_up' : ItemData(code=0x717210, count=1 , classification=IC.filler),
54-
'Passive.i_passive_maxhpup_LV1' : ItemData(code=0x717211, count=1 , classification=IC.filler),
55-
'Passive.i_passive_maxhpup_LV2' : ItemData(code=0x717212, count=1 , classification=IC.filler),
56-
'Passive.i_passive_maxhpup_LV3' : ItemData(code=0x717213, count=1 , classification=IC.filler),
57-
'Passive.i_passive_maxmpup' : ItemData(code=0x717214, count=1 , classification=IC.filler),
58-
'Passive.i_passive_move_speed_up' : ItemData(code=0x717215, count=1 , classification=IC.filler),
59-
'Passive.i_passive_mp_restore_up_LV1' : ItemData(code=0x717216, count=1 , classification=IC.filler),
60-
'Passive.i_passive_override_skin_level' : ItemData(code=0x717217, count=1 , classification=IC.filler),
61-
'Passive.i_passive_override_skin_level_max' : ItemData(code=0x717218, count=1 , classification=IC.filler),
62-
'Passive.i_passive_parry' : ItemData(code=0x717219, count=1 , classification=IC.filler),
63-
'Passive.i_passive_post_damage_invincibility' : ItemData(code=0x71721a, count=1 , classification=IC.filler),
64-
'Passive.i_passive_recast_time_cut_LV1' : ItemData(code=0x71721b, count=1 , classification=IC.filler),
65-
'Passive.i_passive_recast_time_cut_LV2' : ItemData(code=0x71721c, count=1 , classification=IC.filler),
66-
'Passive.i_passive_recast_time_cut_LV3' : ItemData(code=0x71721d, count=1 , classification=IC.filler),
67-
'Passive.i_passive_regenHP_attack' : ItemData(code=0x71721e, count=1 , classification=IC.filler),
68-
'Passive.i_passive_regenHP_kill' : ItemData(code=0x71721f, count=1 , classification=IC.filler),
69-
'Passive.i_passive_shortheal' : ItemData(code=0x717220, count=1 , classification=IC.filler),
70-
'Passive.i_passive_spirit_maxcast_count_up_LV1' : ItemData(code=0x717221, count=1 , classification=IC.filler),
71-
'Passive.i_passive_spirit_maxcast_count_up_LV2' : ItemData(code=0x717222, count=1 , classification=IC.filler),
72-
'Passive.i_passive_spirit_maxcast_count_up_LV3' : ItemData(code=0x717223, count=1 , classification=IC.filler),
73-
'Passive.i_passive_stamina_up' : ItemData(code=0x717224, count=1 , classification=IC.filler),
74-
'Passive.i_passive_stunstamina_damage_up' : ItemData(code=0x717225, count=1 , classification=IC.filler),
75-
'Passive.i_passive_swim_fast' : ItemData(code=0x717226, count=1 , classification=IC.filler),
76-
'Spirit.s2002' : ItemData(code=0x717227, count=1 , classification=IC.filler),
77-
'Spirit.s2012' : ItemData(code=0x717228, count=1 , classification=IC.filler),
78-
'Spirit.s2022' : ItemData(code=0x717229, count=1 , classification=IC.filler),
79-
'Spirit.s2032' : ItemData(code=0x71722a, count=1 , classification=IC.filler),
53+
'Passive.i_passive_jump_height_up' : ItemData(code=0x717210, count=1 , classification=IC.useful),
54+
'Passive.i_passive_maxhpup_LV1' : ItemData(code=0x717211, count=1 , classification=IC.useful),
55+
'Passive.i_passive_maxhpup_LV2' : ItemData(code=0x717212, count=1 , classification=IC.useful),
56+
'Passive.i_passive_maxhpup_LV3' : ItemData(code=0x717213, count=1 , classification=IC.useful),
57+
'Passive.i_passive_maxmpup' : ItemData(code=0x717214, count=1 , classification=IC.useful),
58+
'Passive.i_passive_move_speed_up' : ItemData(code=0x717215, count=1 , classification=IC.useful),
59+
'Passive.i_passive_mp_restore_up_LV1' : ItemData(code=0x717216, count=1 , classification=IC.useful),
60+
'Passive.i_passive_override_skin_level' : ItemData(code=0x717217, count=1 , classification=IC.useful),
61+
'Passive.i_passive_override_skin_level_max' : ItemData(code=0x717218, count=1 , classification=IC.useful),
62+
'Passive.i_passive_parry' : ItemData(code=0x717219, count=1 , classification=IC.useful),
63+
'Passive.i_passive_post_damage_invincibility' : ItemData(code=0x71721a, count=1 , classification=IC.useful),
64+
'Passive.i_passive_recast_time_cut_LV1' : ItemData(code=0x71721b, count=1 , classification=IC.useful),
65+
'Passive.i_passive_recast_time_cut_LV2' : ItemData(code=0x71721c, count=1 , classification=IC.useful),
66+
'Passive.i_passive_recast_time_cut_LV3' : ItemData(code=0x71721d, count=1 , classification=IC.useful),
67+
'Passive.i_passive_regenHP_attack' : ItemData(code=0x71721e, count=1 , classification=IC.useful),
68+
'Passive.i_passive_regenHP_kill' : ItemData(code=0x71721f, count=1 , classification=IC.useful),
69+
'Passive.i_passive_shortheal' : ItemData(code=0x717220, count=1 , classification=IC.useful),
70+
'Passive.i_passive_spirit_maxcast_count_up_LV1' : ItemData(code=0x717221, count=1 , classification=IC.useful),
71+
'Passive.i_passive_spirit_maxcast_count_up_LV2' : ItemData(code=0x717222, count=1 , classification=IC.useful),
72+
'Passive.i_passive_spirit_maxcast_count_up_LV3' : ItemData(code=0x717223, count=1 , classification=IC.useful),
73+
'Passive.i_passive_stamina_up' : ItemData(code=0x717224, count=1 , classification=IC.useful),
74+
'Passive.i_passive_stunstamina_damage_up' : ItemData(code=0x717225, count=1 , classification=IC.useful),
75+
'Passive.i_passive_swim_fast' : ItemData(code=0x717226, count=1 , classification=IC.useful),
76+
'Spirit.s2002' : ItemData(code=0x717227, count=1 , classification=IC.useful),
77+
'Spirit.s2012' : ItemData(code=0x717228, count=1 , classification=IC.useful),
78+
'Spirit.s2022' : ItemData(code=0x717229, count=1 , classification=IC.useful),
79+
'Spirit.s2032' : ItemData(code=0x71722a, count=1 , classification=IC.useful),
8080
'Spirit.s2052' : ItemData(code=0x71722b, count=1 , classification=IC.progression),
81-
'Spirit.s2072' : ItemData(code=0x71722c, count=1 , classification=IC.filler),
82-
'Spirit.s2082' : ItemData(code=0x71722d, count=1 , classification=IC.filler),
83-
'Spirit.s2092' : ItemData(code=0x71722e, count=1 , classification=IC.filler),
84-
'Spirit.s2102' : ItemData(code=0x71722f, count=1 , classification=IC.filler),
85-
'Spirit.s2112' : ItemData(code=0x717230, count=1 , classification=IC.filler),
86-
'Spirit.s2122' : ItemData(code=0x717231, count=1 , classification=IC.filler),
87-
'Spirit.s2132' : ItemData(code=0x717232, count=1 , classification=IC.filler),
88-
'Spirit.s2162' : ItemData(code=0x717233, count=1 , classification=IC.filler),
81+
'Spirit.s2072' : ItemData(code=0x71722c, count=1 , classification=IC.useful),
82+
'Spirit.s2082' : ItemData(code=0x71722d, count=1 , classification=IC.useful),
83+
'Spirit.s2092' : ItemData(code=0x71722e, count=1 , classification=IC.useful),
84+
'Spirit.s2102' : ItemData(code=0x71722f, count=1 , classification=IC.useful),
85+
'Spirit.s2112' : ItemData(code=0x717230, count=1 , classification=IC.useful),
86+
'Spirit.s2122' : ItemData(code=0x717231, count=1 , classification=IC.useful),
87+
'Spirit.s2132' : ItemData(code=0x717232, count=1 , classification=IC.useful),
88+
'Spirit.s2162' : ItemData(code=0x717233, count=1 , classification=IC.useful),
8989
'Spirit.s2172' : ItemData(code=0x717234, count=1 , classification=IC.progression),
90-
'Spirit.s2182' : ItemData(code=0x717235, count=1 , classification=IC.filler),
91-
'Spirit.s2192' : ItemData(code=0x717236, count=1 , classification=IC.filler),
92-
'Spirit.s2232' : ItemData(code=0x717237, count=1 , classification=IC.filler),
93-
'Spirit.s5000' : ItemData(code=0x717238, count=1 , classification=IC.filler),
94-
'Spirit.s5010' : ItemData(code=0x717239, count=1 , classification=IC.filler),
90+
'Spirit.s2182' : ItemData(code=0x717235, count=1 , classification=IC.useful),
91+
'Spirit.s2192' : ItemData(code=0x717236, count=1 , classification=IC.useful),
92+
'Spirit.s2232' : ItemData(code=0x717237, count=1 , classification=IC.useful),
93+
'Spirit.s5000' : ItemData(code=0x717238, count=1 , classification=IC.useful),
94+
'Spirit.s5010' : ItemData(code=0x717239, count=1 , classification=IC.useful),
9595
'Spirit.s5020' : ItemData(code=0x71723a, count=1 , classification=IC.progression),
96-
'Spirit.s5030' : ItemData(code=0x71723b, count=1 , classification=IC.filler),
97-
'Spirit.s5040' : ItemData(code=0x71723c, count=1 , classification=IC.filler),
98-
'Spirit.s5050' : ItemData(code=0x71723d, count=1 , classification=IC.filler),
99-
'Spirit.s5060' : ItemData(code=0x71723e, count=1 , classification=IC.filler),
100-
'Spirit.s5070' : ItemData(code=0x71723f, count=1 , classification=IC.filler),
101-
'Spirit.s5080' : ItemData(code=0x717240, count=1 , classification=IC.filler),
96+
'Spirit.s5030' : ItemData(code=0x71723b, count=1 , classification=IC.useful),
97+
'Spirit.s5040' : ItemData(code=0x71723c, count=1 , classification=IC.useful),
98+
'Spirit.s5050' : ItemData(code=0x71723d, count=1 , classification=IC.useful),
99+
'Spirit.s5060' : ItemData(code=0x71723e, count=1 , classification=IC.useful),
100+
'Spirit.s5070' : ItemData(code=0x71723f, count=1 , classification=IC.useful),
101+
'Spirit.s5080' : ItemData(code=0x717240, count=1 , classification=IC.useful),
102102
'Tip.tip_001' : ItemData(code=0x717241, count=1 , classification=IC.filler),
103103
'Tip.tip_002' : ItemData(code=0x717242, count=1 , classification=IC.filler),
104104
'Tip.tip_003' : ItemData(code=0x717243, count=1 , classification=IC.filler),

worlds/enderlilies/Options.py

+13
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ class StartingSpirit(Choice):
3838
option_any = 2
3939
default = option_vanilla
4040

41+
class ItemFilterBehavior(Choice):
42+
"""Defines how items are filtered to ensure that the number of items provided by the world match its number of locations.
43+
44+
filler: Only items classified as filler will be considered. (i.e. lore)
45+
nonProgressive: All items that are not progressive will be considered. (i.e. useful + filler)
46+
nothing: Do not remove any items prior letting the multiworld choose what it keeps. """
47+
display_name = "Item filter behavior"
48+
option_filler = 0
49+
option_nonProgressive = 1
50+
option_nothing = 2
51+
default = option_filler
52+
4153
el_options: Dict[str, type(Option)] = {
4254
# # Not added since not sure if the client can read it right now.
4355
# "shuffle_slots": ShuffleSlots,
@@ -48,6 +60,7 @@ class StartingSpirit(Choice):
4860
# "mini_boss_incrememnts_chapter": MiniBossIncrementsChapter,
4961
# "shuffle_upgrades": ShuffleUpgrades,
5062
"starting_spirit": StartingSpirit,
63+
"item_filter_behavior": ItemFilterBehavior,
5164
}
5265

5366

0 commit comments

Comments
 (0)