@abstract extends Resource class_name ProgressionData @export var run_number : int = 0 @export var best_run : int = 0 @abstract func get_story_step() -> StoryStep @abstract func get_story_progression() -> float @abstract func next_story_step() -> void @abstract func get_available_mutations() -> Array[PlantMutation] @abstract func are_all_mutations_unlocked() -> bool @abstract func discover_mutation(_pm : PlantMutation) -> void @abstract func get_mutations_discovered() -> Array[String] @abstract func unlock_new_mutation() -> PlantMutation func get_all_mutations() -> Array[PlantMutation]: return [ QualityMutation.new(), AncientMutation.new(), ProlificMutation.new(), PrecociousMutation.new(), PurificationMutation.new(), ToughMutation.new(), QuickMutation.new(), RobustMutation.new(), SocialMutation.new(), VivaciousMutation.new(), FertileMutation.new(), HurriedMutation.new(), GenerousMutation.new(), ProtectiveMutation.new(), PureMutation.new(), ] func get_all_artifacts() -> Array[Artefact]: return [ PileArtefact.new(), SeedCaseArtefact.new(), StabilisatorArtefact.new(), TalionOverloaderArtefact.new(), TalionSoilArtifact.new(), ] func get_all_story_steps() -> Array[StoryStep]: return [ TutorialStoryStep.new(), StartStoryStep.new(), MercuryStoryStep.new(), BoreaStoryStep.new() ] func finish_run(run : RunData): run_number += 1 best_run = max(best_run, run.level)