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