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:
parent
30dda013de
commit
242126b4b2
|
@ -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',
|
||||||
|
|
|
@ -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)
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue