@abstract extends Resource class_name StoryStep #region ------------------ Story ------------------ @abstract func get_respawn_scene() -> Scene @abstract func get_destination_text() -> String func get_destination_scene() -> Scene: return BoreaScene.new() func get_run_progress(level : int) -> int: return get_region_sequence_length() - level func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String: return "" #region ------------------ Run ------------------ func is_run_finished(level : int) -> bool: return level == get_region_sequence_length() func get_region_sequence_length() -> int: return 6 func get_first_vending_machine_occurence(_level : int) -> int: return 2 func get_vending_machine_occurence(_level : int) -> int: return 4 func get_first_cave_occurence(level : int) -> int: return get_cave_occurence(level) func get_cave_occurence(_level : int) -> int: return 3 func get_challenge_chance(_level : int) -> float: return 0.3 func get_run_point_number(level : int) -> int: if is_run_finished(level): return 1 return 2 func get_charge_number(_level : int) -> int: return 10 func get_objective_for_region(level : int) -> int: match level: 1: return 10 2: return 15 3: return 20 4: return 30 5: return 45 _: return get_objective_for_region(level-1) + (level-2) * 5 func get_story_modifiers_for_region(level : int) -> Array[RegionModifier]: var modifiers : Array[RegionModifier] = [] if is_run_finished(level): var dest_mod = DestinationModifier.new() dest_mod.destination_scene = get_destination_scene() modifiers.append(dest_mod) return modifiers func need_gameplay_modifier(level : int): if is_run_finished(level): return false return true func _on_finish(): GameInfo.game_data.incubator_used = [] GameInfo.game_data.dead_orchid_position = Vector3.ZERO GameInfo.game_data.dead_orchid_rotation = Vector3.ZERO