Skip to content

Commit 2c1c00c

Browse files
LegendaryLinuxEmilyV99
authored andcommitted
ArchipIDLE 2024 (ArchipelagoMW#3079)
* Update item pool to include 25 jokes and videos as progression items, as well as a progression GeroCities profile * Fix a bug in Items.py causing item names to be appended inappropriately * Remove unnecessary import * Change item pool to have 50 jokes and 20 motivational videos * Adjust item pool to have 40 of both jokes and videos * Fix imports to allow compressing for distribution as a .apworld
1 parent ea48446 commit 2c1c00c

File tree

3 files changed

+48
-34
lines changed

3 files changed

+48
-34
lines changed

worlds/archipidle/Items.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
item_table = (
2+
'An Old GeoCities Profile',
3+
'Very Funny Joke',
4+
'Motivational Video',
25
'Staples Easy Button',
36
'One Million Dollars',
47
'Replica Master Sword',
@@ -13,7 +16,7 @@
1316
'2012 Magic the Gathering Core Set Starter Box',
1417
'Poke\'mon Booster Pack',
1518
'USB Speakers',
16-
'Plastic Spork',
19+
'Eco-Friendly Spork',
1720
'Cheeseburger',
1821
'Brand New Car',
1922
'Hunting Knife',
@@ -22,7 +25,7 @@
2225
'One-Up Mushroom',
2326
'Nokia N-GAGE',
2427
'2-Liter of Sprite',
25-
'Free trial of the critically acclaimed MMORPG Final Fantasy XIV, including the entirety of A Realm Reborn and the award winning Heavensward expansion up to level 60 with no restrictions on playtime!',
28+
'Free trial of the critically acclaimed MMORPG Final Fantasy XIV, including the entirety of A Realm Reborn and the award winning Heavensward and Stormblood expansions up to level 70 with no restrictions on playtime!',
2629
'Can of Compressed Air',
2730
'Striped Kitten',
2831
'USB Power Adapter',

worlds/archipidle/Rules.py

+10-20
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from BaseClasses import MultiWorld
2-
from ..AutoWorld import LogicMixin
3-
from ..generic.Rules import set_rule
2+
from worlds.AutoWorld import LogicMixin
43

54

65
class ArchipIDLELogic(LogicMixin):
@@ -10,29 +9,20 @@ def _archipidle_location_is_accessible(self, player_id, items_required):
109

1110
def set_rules(world: MultiWorld, player: int):
1211
for i in range(16, 31):
13-
set_rule(
14-
world.get_location(f"IDLE item number {i}", player),
15-
lambda state: state._archipidle_location_is_accessible(player, 4)
16-
)
12+
world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
13+
state: state._archipidle_location_is_accessible(player, 4)
1714

1815
for i in range(31, 51):
19-
set_rule(
20-
world.get_location(f"IDLE item number {i}", player),
21-
lambda state: state._archipidle_location_is_accessible(player, 10)
22-
)
16+
world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
17+
state: state._archipidle_location_is_accessible(player, 10)
2318

2419
for i in range(51, 101):
25-
set_rule(
26-
world.get_location(f"IDLE item number {i}", player),
27-
lambda state: state._archipidle_location_is_accessible(player, 20)
28-
)
20+
world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
21+
state: state._archipidle_location_is_accessible(player, 20)
2922

3023
for i in range(101, 201):
31-
set_rule(
32-
world.get_location(f"IDLE item number {i}", player),
33-
lambda state: state._archipidle_location_is_accessible(player, 40)
34-
)
24+
world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
25+
state: state._archipidle_location_is_accessible(player, 40)
3526

3627
world.completion_condition[player] =\
37-
lambda state:\
38-
state.can_reach(world.get_location("IDLE item number 200", player), "Location", player)
28+
lambda state: state.can_reach(world.get_location("IDLE item number 200", player), "Location", player)

worlds/archipidle/__init__.py

+33-12
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification
2+
from worlds.AutoWorld import World, WebWorld
3+
from datetime import datetime
24
from .Items import item_table
35
from .Rules import set_rules
4-
from ..AutoWorld import World, WebWorld
5-
from datetime import datetime
66

77

88
class ArchipIDLEWebWorld(WebWorld):
@@ -29,11 +29,10 @@ class ArchipIDLEWebWorld(WebWorld):
2929

3030
class ArchipIDLEWorld(World):
3131
"""
32-
An idle game which sends a check every thirty seconds, up to two hundred checks.
32+
An idle game which sends a check every thirty to sixty seconds, up to two hundred checks.
3333
"""
3434
game = "ArchipIDLE"
3535
topology_present = False
36-
data_version = 5
3736
hidden = (datetime.now().month != 4) # ArchipIDLE is only visible during April
3837
web = ArchipIDLEWebWorld()
3938

@@ -56,18 +55,40 @@ def create_item(self, name: str) -> Item:
5655
return Item(name, ItemClassification.progression, self.item_name_to_id[name], self.player)
5756

5857
def create_items(self):
59-
item_table_copy = list(item_table)
60-
self.multiworld.random.shuffle(item_table_copy)
58+
item_pool = [
59+
ArchipIDLEItem(
60+
item_table[0],
61+
ItemClassification.progression,
62+
self.item_name_to_id[item_table[0]],
63+
self.player
64+
)
65+
]
6166

62-
item_pool = []
63-
for i in range(200):
64-
item = ArchipIDLEItem(
67+
for i in range(40):
68+
item_pool.append(ArchipIDLEItem(
69+
item_table[1],
70+
ItemClassification.progression,
71+
self.item_name_to_id[item_table[1]],
72+
self.player
73+
))
74+
75+
for i in range(40):
76+
item_pool.append(ArchipIDLEItem(
77+
item_table[2],
78+
ItemClassification.filler,
79+
self.item_name_to_id[item_table[2]],
80+
self.player
81+
))
82+
83+
item_table_copy = list(item_table[3:])
84+
self.random.shuffle(item_table_copy)
85+
for i in range(119):
86+
item_pool.append(ArchipIDLEItem(
6587
item_table_copy[i],
66-
ItemClassification.progression if i < 40 else ItemClassification.filler,
88+
ItemClassification.progression if i < 9 else ItemClassification.filler,
6789
self.item_name_to_id[item_table_copy[i]],
6890
self.player
69-
)
70-
item_pool.append(item)
91+
))
7192

7293
self.multiworld.itempool += item_pool
7394

0 commit comments

Comments
 (0)