Added world for ArchipIDLE
This commit is contained in:
parent
97b1ae5ee9
commit
14ac139d03
|
@ -0,0 +1,127 @@
|
|||
item_table = (
|
||||
'Staples Easy Button',
|
||||
'One Million Dollars',
|
||||
'Replica Master Sword',
|
||||
'VHS Copy of Jurassic Park',
|
||||
'32GB USB Drive',
|
||||
'Pocket Protector',
|
||||
'Leftover Parts from IKEA Furniture',
|
||||
'Half-Empty Ink Cartridge for a Printer',
|
||||
'Watch Battery',
|
||||
'Towel',
|
||||
'Scarf',
|
||||
'2012 Magic the Gathering Core Set Starter Box',
|
||||
'Pokemon Booster Pack',
|
||||
'USB Speakers',
|
||||
'Plastic Spork',
|
||||
'Cheeseburger',
|
||||
'Brand New Car',
|
||||
'Hunting Knife',
|
||||
'Zippo Lighter',
|
||||
'Red Shirt',
|
||||
'One-Up Mushroom',
|
||||
'Nokia N-GAGE',
|
||||
'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 Heavenasward expansion up to level 60 for free with no restrictions on playtime!',
|
||||
'Can of Compressed Air',
|
||||
'Striped Kitten',
|
||||
'USB Power Adapter',
|
||||
'Fortune Cookie',
|
||||
'Nintendo Power Glove',
|
||||
'The Lampshade of No Real Significance',
|
||||
'Kneepads of Allure',
|
||||
'Get-Out-Of-Jail-Free Card',
|
||||
'Box Set of Stargate SG-1 Season 4',
|
||||
'The Missing Left Sock',
|
||||
'Poster Tube',
|
||||
'Electronic Picture Frame',
|
||||
'Bottle of Shampoo',
|
||||
'Your Mission, Should You Choose To Accept It',
|
||||
'Fanny Pack',
|
||||
'Robocop T-Shirt',
|
||||
'Suspiciously Small Monocle',
|
||||
'Table Saw',
|
||||
'Cookies and Cream Milkshake',
|
||||
'Deflated Accordion',
|
||||
'Grandma\'s Homemade Pie',
|
||||
'Invisible Lego on the Floor',
|
||||
'Pitfall Trap',
|
||||
'Flathead Screwdriver',
|
||||
'Leftover Pizza',
|
||||
'Voodoo Doll that Looks Like You',
|
||||
'Pink Shoelaces',
|
||||
'Half a Bottle of Scotch',
|
||||
'Reminder Not to Forget Aginah',
|
||||
'Medicine Ball',
|
||||
'Yoga Mat',
|
||||
'Chocolate Orange',
|
||||
'Old Concert Tickets',
|
||||
'The Pick of Destiny',
|
||||
'McGuffin',
|
||||
'Just a Regular McMuffin',
|
||||
'34 Tacos',
|
||||
'Duct Tape',
|
||||
'Copy of Untitled Goose Game',
|
||||
'Partially Used Bed Bath & Beyond Gift Card',
|
||||
'Mostly Popped Bubble Wrap',
|
||||
'Expired Driver\'s License',
|
||||
'The Look, You Know the One',
|
||||
'Transformers Lunch Box',
|
||||
'MP3 Player',
|
||||
'Dry Sharpie',
|
||||
'Chalkboard Eraser',
|
||||
'Overhead Projector',
|
||||
'Physical Copy of the Japanese 1.0 Link to the Past',
|
||||
'Collectable Action Figure',
|
||||
'Box Set of The Lord of the Rings Books',
|
||||
'Lite-Bright',
|
||||
'Stories from the Good-Old-Days',
|
||||
'Un-Reproducable Bug Reports',
|
||||
'Autographed Copy of Shaq-Fu',
|
||||
'Game-Winning Baseball',
|
||||
'Portable Battery Bank',
|
||||
'Blockbuster Membership Card',
|
||||
'Offensive Bumper Sticker',
|
||||
'Last Sunday\'s Crossword Puzzle',
|
||||
'Rubik\'s Cube',
|
||||
'Your First Grey Hair',
|
||||
'Embarrassing Childhood Photo',
|
||||
'Abandoned Sphere One Check',
|
||||
'The Internet',
|
||||
'Late-Night Cartoons',
|
||||
'The Correct Usage of a Semicolon',
|
||||
'Microsoft Windows 95 Resource Kit',
|
||||
'Car-Phone',
|
||||
'Walkman Radio',
|
||||
'Relevant XKCD Comic',
|
||||
'Razor Scooter',
|
||||
'Set of Beyblades',
|
||||
'Box of Pogs',
|
||||
'Beanie-Baby Collection',
|
||||
'Laser Tag Gun',
|
||||
'Radio Controlled Car',
|
||||
'Boogie Board',
|
||||
'Air Jordans',
|
||||
'Rubber Duckie',
|
||||
'The Last Cookie in the Cookie Jar',
|
||||
'Tin-Foil Hat',
|
||||
'Button-Up Shirt',
|
||||
'Designer Brand Bag',
|
||||
'Trapper Keeper',
|
||||
'Fake Moustache',
|
||||
'Colored Pencils',
|
||||
'Pair of 3D Glasses',
|
||||
'Pair of Movie Tickets',
|
||||
'Refrigerator Magnets',
|
||||
'NASCAR Dinner Plates',
|
||||
'The Final Boss',
|
||||
'Unskippable Cutscenes',
|
||||
'24 Rolls of Toilet Paper',
|
||||
'Canned Soup',
|
||||
'Warm Blanket',
|
||||
'3D Printer',
|
||||
'Jetpack',
|
||||
'Hoverboard',
|
||||
'Joycons with No Drift',
|
||||
'Double Rainbow',
|
||||
)
|
|
@ -0,0 +1,33 @@
|
|||
from BaseClasses import MultiWorld
|
||||
from ..AutoWorld import LogicMixin
|
||||
from ..generic.Rules import set_rule
|
||||
|
||||
|
||||
class ArchipIDLELogic(LogicMixin):
|
||||
def _archipidle_location_is_accessible(self, player_id, items_required):
|
||||
items_received = 0
|
||||
for item in self.prog_items:
|
||||
if item[1] == player_id:
|
||||
items_received += 1
|
||||
|
||||
return items_received >= items_required
|
||||
|
||||
|
||||
def set_rules(world: MultiWorld, player: int):
|
||||
for i in range(1, 11):
|
||||
set_rule(
|
||||
world.get_location(f"Location {i}", player),
|
||||
lambda state: state._archipidle_location_is_accessible(player, 0)
|
||||
)
|
||||
|
||||
for i in range(11, 31):
|
||||
set_rule(
|
||||
world.get_location(f"Location {i}", player),
|
||||
lambda state: state._archipidle_location_is_accessible(player, 4)
|
||||
)
|
||||
|
||||
for i in range(31, 51):
|
||||
set_rule(
|
||||
world.get_location(f"Location {i}", player),
|
||||
lambda state: state._archipidle_location_is_accessible(player, 20)
|
||||
)
|
|
@ -0,0 +1,73 @@
|
|||
from BaseClasses import Item, MultiWorld, Region, Location, Entrance
|
||||
from .Items import item_table
|
||||
from .Rules import set_rules
|
||||
from ..AutoWorld import World
|
||||
|
||||
|
||||
class ArchipIDLEWorld(World):
|
||||
game = "ArchipIDLE"
|
||||
topology_present = False
|
||||
data_version = 1
|
||||
|
||||
item_name_to_id = {}
|
||||
start_id = 9000
|
||||
for item in item_table:
|
||||
item_name_to_id[item] = start_id
|
||||
start_id += 1
|
||||
|
||||
location_name_to_id = {}
|
||||
start_id = 9000
|
||||
for i in range(1, 51):
|
||||
location_name_to_id[f"Location {i}"] = start_id
|
||||
start_id += 1
|
||||
|
||||
def generate_basic(self):
|
||||
item_table_copy = list(item_table)
|
||||
self.world.random.shuffle(item_table_copy)
|
||||
|
||||
item_pool = []
|
||||
for i in range(50):
|
||||
item = Item(item_table[i], True, self.item_name_to_id[item_table[i]], self.player)
|
||||
item.game = 'ArchipIDLE'
|
||||
item_pool.append(item)
|
||||
|
||||
self.world.itempool = item_pool
|
||||
|
||||
def set_rules(self):
|
||||
set_rules(self.world, self.player)
|
||||
|
||||
def create_item(self, name: str) -> Item:
|
||||
item_data = item_table[name]
|
||||
return Item(name, item_data.progression, item_data.code, self.player)
|
||||
|
||||
def create_regions(self):
|
||||
self.world.regions += [
|
||||
create_region(self.world, self.player, 'Menu', None, ['Entrance to IDLE Zone']),
|
||||
create_region(self.world, self.player, 'IDLE Zone', self.location_name_to_id)
|
||||
]
|
||||
|
||||
# link up our region with the entrance we just made
|
||||
self.world.get_entrance('Entrance to IDLE Zone', self.player)\
|
||||
.connect(self.world.get_region('IDLE Zone', self.player))
|
||||
|
||||
|
||||
def create_region(world: MultiWorld, player: int, name: str, locations=None, exits=None):
|
||||
region = Region(name, None, name, player)
|
||||
region.world = world
|
||||
if locations:
|
||||
for location_name in locations.keys():
|
||||
location = ArchipIDLELocation(player, location_name, locations[location_name], region)
|
||||
region.locations.append(location)
|
||||
|
||||
if exits:
|
||||
for _exit in exits:
|
||||
region.exits.append(Entrance(player, _exit, region))
|
||||
|
||||
return region
|
||||
|
||||
|
||||
class ArchipIDLELocation(Location):
|
||||
game: str = "ArchipIDLE"
|
||||
|
||||
def __init__(self, player: int, name: str, address=None, parent=None):
|
||||
super(ArchipIDLELocation, self).__init__(player, name, address, parent)
|
Loading…
Reference in New Issue