@abstract extends Resource class_name ProgressionData @export var run_number : int = 0 @export var best_run : int = 0 : set = set_best_run @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 @abstract func unlock_all_mutation() -> void func set_best_run(v := best_run): best_run = v 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(), # CleaningMutation.new(), # ErmitMutation.new(), # TropicalMutation.new(), # RhizomeMutation.new(), # SpontaneousMutation.new(), # SaviorMutation.new(), # AdaptiveMutation.new(), # ResistantMutation.new(), ] func get_all_artifacts() -> Array[Artefact]: return [ PileArtefact.new(), SeedCaseArtefact.new(), StabilisatorArtefact.new(), TalionOverloaderArtefact.new(), TalionSoilArtifact.new(), TalionSprayArtifact.new() ] func get_all_story_steps() -> Array[StoryStep]: return [ TutorialStoryStep.new(), StartStoryStep.new(), MercuryStoryStep.new(), # BoreaStoryStep.new(), # AquaStoryStep.new(), # SubterraStoryStep.new(), # EstiaStoryStep.new(), # AstraStoryStep.new(), ] func update_best_run(run : RunData): best_run = max(best_run, run.level) func finish_run(run : RunData): run_number += 1 update_best_run(run)