ArchipIDLE 2024 (#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
This commit is contained in:
Chris Wilson 2024-04-12 00:32:10 -04:00 committed by GitHub
parent 30dda013de
commit 242126b4b2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 50 additions and 36 deletions

View File

@ -1,4 +1,7 @@
item_table = ( item_table = (
'An Old GeoCities Profile',
'Very Funny Joke',
'Motivational Video',
'Staples Easy Button', 'Staples Easy Button',
'One Million Dollars', 'One Million Dollars',
'Replica Master Sword', 'Replica Master Sword',
@ -13,7 +16,7 @@ item_table = (
'2012 Magic the Gathering Core Set Starter Box', '2012 Magic the Gathering Core Set Starter Box',
'Poke\'mon Booster Pack', 'Poke\'mon Booster Pack',
'USB Speakers', 'USB Speakers',
'Plastic Spork', 'Eco-Friendly Spork',
'Cheeseburger', 'Cheeseburger',
'Brand New Car', 'Brand New Car',
'Hunting Knife', 'Hunting Knife',
@ -22,7 +25,7 @@ item_table = (
'One-Up Mushroom', 'One-Up Mushroom',
'Nokia N-GAGE', 'Nokia N-GAGE',
'2-Liter of Sprite', '2-Liter of Sprite',
'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!', '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!',
'Can of Compressed Air', 'Can of Compressed Air',
'Striped Kitten', 'Striped Kitten',
'USB Power Adapter', 'USB Power Adapter',

View File

@ -1,6 +1,5 @@
from BaseClasses import MultiWorld from BaseClasses import MultiWorld
from ..AutoWorld import LogicMixin from worlds.AutoWorld import LogicMixin
from ..generic.Rules import set_rule
class ArchipIDLELogic(LogicMixin): class ArchipIDLELogic(LogicMixin):
@ -10,29 +9,20 @@ class ArchipIDLELogic(LogicMixin):
def set_rules(world: MultiWorld, player: int): def set_rules(world: MultiWorld, player: int):
for i in range(16, 31): for i in range(16, 31):
set_rule( world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
world.get_location(f"IDLE item number {i}", player), state: state._archipidle_location_is_accessible(player, 4)
lambda state: state._archipidle_location_is_accessible(player, 4)
)
for i in range(31, 51): for i in range(31, 51):
set_rule( world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
world.get_location(f"IDLE item number {i}", player), state: state._archipidle_location_is_accessible(player, 10)
lambda state: state._archipidle_location_is_accessible(player, 10)
)
for i in range(51, 101): for i in range(51, 101):
set_rule( world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
world.get_location(f"IDLE item number {i}", player), state: state._archipidle_location_is_accessible(player, 20)
lambda state: state._archipidle_location_is_accessible(player, 20)
)
for i in range(101, 201): for i in range(101, 201):
set_rule( world.get_location(f"IDLE item number {i}", player).access_rule = lambda \
world.get_location(f"IDLE item number {i}", player), state: state._archipidle_location_is_accessible(player, 40)
lambda state: state._archipidle_location_is_accessible(player, 40)
)
world.completion_condition[player] =\ world.completion_condition[player] =\
lambda state:\ lambda state: state.can_reach(world.get_location("IDLE item number 200", player), "Location", player)
state.can_reach(world.get_location("IDLE item number 200", player), "Location", player)

View File

@ -1,8 +1,8 @@
from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification from BaseClasses import Item, MultiWorld, Region, Location, Entrance, Tutorial, ItemClassification
from worlds.AutoWorld import World, WebWorld
from datetime import datetime
from .Items import item_table from .Items import item_table
from .Rules import set_rules from .Rules import set_rules
from ..AutoWorld import World, WebWorld
from datetime import datetime
class ArchipIDLEWebWorld(WebWorld): class ArchipIDLEWebWorld(WebWorld):
@ -29,11 +29,10 @@ class ArchipIDLEWebWorld(WebWorld):
class ArchipIDLEWorld(World): class ArchipIDLEWorld(World):
""" """
An idle game which sends a check every thirty seconds, up to two hundred checks. An idle game which sends a check every thirty to sixty seconds, up to two hundred checks.
""" """
game = "ArchipIDLE" game = "ArchipIDLE"
topology_present = False topology_present = False
data_version = 5
hidden = (datetime.now().month != 4) # ArchipIDLE is only visible during April hidden = (datetime.now().month != 4) # ArchipIDLE is only visible during April
web = ArchipIDLEWebWorld() web = ArchipIDLEWebWorld()
@ -56,18 +55,40 @@ class ArchipIDLEWorld(World):
return Item(name, ItemClassification.progression, self.item_name_to_id[name], self.player) return Item(name, ItemClassification.progression, self.item_name_to_id[name], self.player)
def create_items(self): def create_items(self):
item_table_copy = list(item_table) item_pool = [
self.multiworld.random.shuffle(item_table_copy) ArchipIDLEItem(
item_table[0],
item_pool = [] ItemClassification.progression,
for i in range(200): self.item_name_to_id[item_table[0]],
item = ArchipIDLEItem(
item_table_copy[i],
ItemClassification.progression if i < 40 else ItemClassification.filler,
self.item_name_to_id[item_table_copy[i]],
self.player self.player
) )
item_pool.append(item) ]
for i in range(40):
item_pool.append(ArchipIDLEItem(
item_table[1],
ItemClassification.progression,
self.item_name_to_id[item_table[1]],
self.player
))
for i in range(40):
item_pool.append(ArchipIDLEItem(
item_table[2],
ItemClassification.filler,
self.item_name_to_id[item_table[2]],
self.player
))
item_table_copy = list(item_table[3:])
self.random.shuffle(item_table_copy)
for i in range(119):
item_pool.append(ArchipIDLEItem(
item_table_copy[i],
ItemClassification.progression if i < 9 else ItemClassification.filler,
self.item_name_to_id[item_table_copy[i]],
self.player
))
self.multiworld.itempool += item_pool self.multiworld.itempool += item_pool