Filler is now being placed yippe

This commit is contained in:
MarioSpore
2025-07-28 23:12:47 -04:00
parent 7e06efb1d0
commit 1762fefba9
4 changed files with 34 additions and 15 deletions

View File

@@ -153,12 +153,15 @@ KEYS_TABLE: dict[str, GrinchItemData] = {
#Misc Items
MISC_ITEMS_TABLE: dict[str, GrinchItemData] = {
"Fully Healed Grinch": GrinchItemData("Health Items", 500, IC.filler, [GrinchRamData(0x800E8FDC, value=120)]),
"Heart of Stone": GrinchItemData("Health Items", 501, IC.useful, [GrinchRamData(0x800100ED, value=1)]),
"5 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 502, IC.filler, [GrinchRamData(0x80010058, value=5)]),
"10 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 503, IC.filler, [GrinchRamData(0x80010058, value=10)]),
"20 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 504, IC.filler, [GrinchRamData(0x80010058, value=20)])
}
USEFUL_IC_TABLE: dict[str, GrinchItemData] = {
"Heart of Stone": GrinchItemData("Health Items", 501, IC.useful, [GrinchRamData(0x800100ED, value=1)])
}
#Traps
TRAPS_TABLE: dict[str, GrinchItemData] = {
# "Freeze Trap": GrinchItemData("Traps", 600, IC.trap, [GrinchRamData()]), #alias to Ice Trap for traplink
@@ -176,13 +179,13 @@ TRAPS_TABLE: dict[str, GrinchItemData] = {
}
#Movesets
MOVES_TABLE: dict[str, GrinchItemData] = {
"Bad Breath": GrinchItemData("Movesets", 700, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=1)]),
"Pancake": GrinchItemData("Movesets", 701, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=2)]),
"Push & Pull": GrinchItemData("Movesets", 702, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=3)]),
"Max": GrinchItemData("Movesets", 703, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=4)]),
"Tip Toe": GrinchItemData("Movesets", 704, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=5)]),
}
# MOVES_TABLE: dict[str, GrinchItemData] = {
# "Bad Breath": GrinchItemData("Movesets", 700, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=1)]),
# "Pancake": GrinchItemData("Movesets", 701, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=2)]),
# "Push & Pull": GrinchItemData("Movesets", 702, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=3)]),
# "Max": GrinchItemData("Movesets", 703, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=4)]),
# "Tip Toe": GrinchItemData("Movesets", 704, IC.progression, [GrinchRamData(0x800100BB, binary_bit_pos=5)])
# }
#Double star combines all dictionaries from each individual list together
ALL_ITEMS_TABLE: dict[str, GrinchItemData] = {
**GADGETS_TABLE,
@@ -191,7 +194,8 @@ ALL_ITEMS_TABLE: dict[str, GrinchItemData] = {
**KEYS_TABLE,
**MISC_ITEMS_TABLE,
**TRAPS_TABLE,
**MOVES_TABLE
**USEFUL_IC_TABLE
# **MOVES_TABLE
}
def grinch_items_to_id() -> dict[str, int]:

View File

@@ -6,11 +6,14 @@ from .Options import GrinchOptions
from BaseClasses import Region
from .Rules import access_rules_dict, interpret_rule
import logging
logger = logging.getLogger()
if TYPE_CHECKING:
from . import GrinchWorld
mainareas_list = [
"Mount Crumpit",
"Whoville",
"Who Forest",
"Who Dump",
@@ -51,10 +54,11 @@ def create_regions(world: "GrinchWorld"):
world.multiworld.regions.append(Region(supadow, world.player, world.multiworld))
def grinchconnect(world: "GrinchWorld", current_region_name: str, connected_region_name: str):
rule = []
logger.info("Current Region Name: "+ current_region_name)
logger.info("Connected Region Name: "+ connected_region_name)
current_region = world.get_region(current_region_name)
connected_region = world.get_region(connected_region_name)
required_items: set[list[str]] = access_rules_dict[connected_region.name]
required_items: list[list[str]] = access_rules_dict[connected_region.name]
rule = interpret_rule(required_items, world.player)
#Goes from current to connected
current_region.connect(connected_region, rule = rule)

View File

@@ -1,7 +1,8 @@
from worlds.AutoWorld import World
# from .Options import GrinchOptions
from worlds.generic.Rules import add_rule
import logging
logger = logging.getLogger()
def set_rules(world: World):
all_locations = world.get_locations()
@@ -455,5 +456,6 @@ def interpret_rule(rule_set: list[list[str]], player: int):
else:
old_rule = lambda state: False
for item_set in rule_set:
logger.info("Rules to access: " + ";".join(item_set))
old_rule = lambda state: state.has_all(item_set, player) or old_rule
return old_rule

View File

@@ -1,6 +1,6 @@
from BaseClasses import Region, Item, ItemClassification
from .Locations import grinch_locations_to_id, grinch_locations, GrinchLocation
from .Items import grinch_items_to_id, GrinchItem, ALL_ITEMS_TABLE
from .Items import grinch_items_to_id, GrinchItem, ALL_ITEMS_TABLE, MISC_ITEMS_TABLE
from .Regions import connect_regions
from .Rules import set_rules
@@ -53,8 +53,17 @@ class GrinchWorld(World):
if item == "Heart of Stone":
for _ in range(3):
self_itempool.append(self.create_item(item))
#Get number of current unfilled locations
unfilled_locations: int = len(self.multiworld.get_unfilled_locations(self.player))
for _ in range(unfilled_locations):
self_itempool.append(self.create_item((self.get_other_filler_item(list(MISC_ITEMS_TABLE.keys())))))
self.multiworld.itempool += self_itempool
def set_rules(self):
self.multiworld.completion_condition[self.player] = lambda state: state.has("Goal", self.player)
set_rules(self)
set_rules(self)
def get_other_filler_item(self, other_filler: list[str]) -> str:
return self.random.choices(other_filler)[0]