Introduced a bug with coffins and items when working on survival mode. Hopefully fixed now.
This commit is contained in:
@@ -34,14 +34,18 @@ class CoffinObject(Object):
|
||||
|
||||
# Determine item to drop
|
||||
if self.specified_item == "random":
|
||||
item_type = ItemProperties.get_random_item()
|
||||
# Check if we're in survival mode (level_id 999)
|
||||
is_survival_mode = hasattr(self.level, 'levelData') and self.level.levelData.get('level_id') == 999
|
||||
item_type = ItemProperties.get_random_item(survival_mode=is_survival_mode)
|
||||
else:
|
||||
# Validate specified item
|
||||
if ItemProperties.is_valid_item(self.specified_item):
|
||||
item_type = self.specified_item
|
||||
else:
|
||||
# Fall back to random if invalid item specified
|
||||
item_type = ItemProperties.get_random_item()
|
||||
# Check if we're in survival mode (level_id 999)
|
||||
is_survival_mode = hasattr(self.level, 'levelData') and self.level.levelData.get('level_id') == 999
|
||||
item_type = ItemProperties.get_random_item(survival_mode=is_survival_mode)
|
||||
|
||||
# Create item 1-2 tiles away in random direction
|
||||
direction = random.choice([-1, 1])
|
||||
|
||||
@@ -10,6 +10,7 @@ class ItemType(Enum):
|
||||
GUTS = auto()
|
||||
HAND_OF_GLORY = auto()
|
||||
JACK_O_LANTERN = auto()
|
||||
SHIN_BONE = auto()
|
||||
EXTRA_LIFE = auto()
|
||||
CAULDRON = auto()
|
||||
WITCH_BROOM = auto()
|
||||
@@ -18,11 +19,18 @@ class ItemType(Enum):
|
||||
class ItemProperties:
|
||||
"""Manages item properties and availability"""
|
||||
|
||||
# Items that naturally appear in graves and coffins (excluding special items like extra_life, cauldron, witch_broom)
|
||||
RANDOM_ELIGIBLE = {
|
||||
# Items for story mode (graves and coffins) - no powerful items
|
||||
STORY_MODE_ELIGIBLE = {
|
||||
ItemType.HAND_OF_GLORY: "hand_of_glory",
|
||||
ItemType.JACK_O_LANTERN: "jack_o_lantern"
|
||||
}
|
||||
|
||||
# Items for survival mode (graves and coffins) - includes powerful items
|
||||
SURVIVAL_MODE_ELIGIBLE = {
|
||||
ItemType.HAND_OF_GLORY: "hand_of_glory",
|
||||
ItemType.JACK_O_LANTERN: "jack_o_lantern",
|
||||
ItemType.GUTS: "guts"
|
||||
ItemType.GUTS: "guts",
|
||||
ItemType.SHIN_BONE: "shin_bone"
|
||||
}
|
||||
|
||||
# All possible items (including special ones)
|
||||
@@ -30,6 +38,7 @@ class ItemProperties:
|
||||
ItemType.GUTS: "guts",
|
||||
ItemType.HAND_OF_GLORY: "hand_of_glory",
|
||||
ItemType.JACK_O_LANTERN: "jack_o_lantern",
|
||||
ItemType.SHIN_BONE: "shin_bone",
|
||||
ItemType.EXTRA_LIFE: "extra_life",
|
||||
ItemType.CAULDRON: "cauldron",
|
||||
ItemType.WITCH_BROOM: "witch_broom",
|
||||
@@ -41,9 +50,12 @@ class ItemProperties:
|
||||
return ItemProperties.ALL_ITEMS.get(item_type)
|
||||
|
||||
@staticmethod
|
||||
def get_random_item():
|
||||
def get_random_item(survival_mode=False):
|
||||
"""Get a random item from eligible items"""
|
||||
item_type = random.choice(list(ItemProperties.RANDOM_ELIGIBLE.keys()))
|
||||
if survival_mode:
|
||||
item_type = random.choice(list(ItemProperties.SURVIVAL_MODE_ELIGIBLE.keys()))
|
||||
else:
|
||||
item_type = random.choice(list(ItemProperties.STORY_MODE_ELIGIBLE.keys()))
|
||||
return ItemProperties.get_sound_name(item_type)
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -151,7 +151,9 @@ class Level:
|
||||
# Story mode: use item as specified
|
||||
grave_item = obj.get("item", None)
|
||||
if grave_item == "random":
|
||||
grave_item = ItemProperties.get_random_item()
|
||||
# Check if we're in survival mode (level_id 999)
|
||||
is_survival_mode = self.levelData.get('level_id') == 999
|
||||
grave_item = ItemProperties.get_random_item(survival_mode=is_survival_mode)
|
||||
|
||||
grave = GraveObject(
|
||||
xPos[0],
|
||||
|
||||
Reference in New Issue
Block a user