diff --git a/src/player/player.gd b/src/player/player.gd index 1f416d3..4156465 100644 --- a/src/player/player.gd +++ b/src/player/player.gd @@ -275,7 +275,7 @@ func serialize() -> Dictionary: } -func deserialize(data: Dictionary) -> void: +func deserialize(state: Dictionary) -> void: @warning_ignore("unsafe_cast") - inventory.assign(data["inventory"] as Dictionary) + inventory.assign(state["inventory"] as Dictionary) #endregion diff --git a/src/world/spook_manager/spook_manager.gd b/src/world/spook_manager/spook_manager.gd index a889e84..3c0ed5a 100644 --- a/src/world/spook_manager/spook_manager.gd +++ b/src/world/spook_manager/spook_manager.gd @@ -76,15 +76,15 @@ func on_alert_raised(new_level: int) -> void: func on_alert_cleared() -> void: - # Destroy all but one grunk beasts - var beasts := World.instance.get_tree().get_nodes_in_group(BEAST_GROUP) - if not beasts: - return + # Destroy all grunk beasts + for b: Node in World.instance.get_tree().get_nodes_in_group(BEAST_GROUP): + b.queue_free() - @warning_ignore("unsafe_cast") - var survivor := beasts.pick_random() as GrunkBeast - for beast: Node in beasts: - if beast != survivor: - beast.queue_free() + # And spawn one back in, if needed + if World.instance.manager.alert_level >= 2: + spawn_beast() - survivor.clear_aggro() + +## Set the state of spooky effects after a level is initialized & any save state is loaded. +func after_level_init() -> void: + on_alert_cleared() diff --git a/src/world/world.gd b/src/world/world.gd index 25c821f..d407e31 100644 --- a/src/world/world.gd +++ b/src/world/world.gd @@ -58,6 +58,7 @@ func load_level(level: PackedScene, save: SaveState = null) -> void: if save: save.load_to_world(self) print("Done!") + spook_manager.after_level_init() func on_player_death() -> void: