Files
seeding-planets/common/game_data/scripts/story/story_step.gd
Zacharie Guet 940b3c1553 Dev Démo 1.2
* les plantes se placent désormais sur une grille
* ajouts de curseurs relatifs à l'item
* ajout de settings sur la sensibilité à la souris
* ajout d'un défi en fin de run
2026-06-12 16:42:00 +02:00

98 lines
2.9 KiB
GDScript

@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() - 1
func get_region_sequence_length() -> int:
return 7
func get_first_vending_machine_occurence(_level : int) -> int:
return 2
func get_vending_machine_occurence(_level : int) -> int:
return 3
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.15
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 is_run_point_dangerous(level : int) -> bool:
return level == get_region_sequence_length() - 2
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 get_gameplay_modifiers_for_region(level : int) -> Array[RegionModifier]:
var modifiers : Array[RegionModifier] = []
if need_gameplay_modifier(level):
var first_vending = get_first_vending_machine_occurence(level)
var vending_occurence = get_vending_machine_occurence(level)
if vending_occurence > 0 and level >= first_vending:
if (level - first_vending)%vending_occurence == 0:
modifiers.append(VendingMachineModifier.new())
var first_cave = get_first_cave_occurence(level)
var cave_occurence = get_cave_occurence(level)
if cave_occurence > 0 and level >= first_cave:
if (level - first_cave)%cave_occurence == 0:
modifiers.append(CaveModifier.new())
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