* Changements de la texture des cristaux de Talion dans tous les assets 3D pour correspondre aux assets 2D * Ajout d'un évenement en fin de région, une résurgence de Talion qui décontamine et fait looter les plantes mature aux alentours * Ajout d'un path finding sur le mouvement du robot * Modification du flow des actions à la souris : ajout d'un nouveau son, d'un icône à l'emplacement de l'action * Modification du nombre et de l'ordre de mutation débloquées * Augmentation de la valeur maximale de zoom * Modification des scores à atteindre dans les premières régions * Modification de l'interface du vaisseau, laissant apparaitre une roadmap plus claire, et laissant inspecter l'inventaire actuel * Modification de l'icône d'action dans les scènes 3D * Augmentation de la zone d'écart entre les plantes, et augmentation du taux de zone fertile en conséquence * La station de recharge devient inutilisable après la fin de la région * Ajout d'une transparence lors de la sélection d'objets derrières d'autres objets * Les plantes juvéniles donneront toujours une graine si coupées * Ajout d'un bouclage sur les couleurs des mutations * Fix des hitbox des plantes pour l'inspection à la souris * Fix de plusieurs bugs sur la manipulation de l'inventaire * Ajout de nombreux screenshots d'utilisation des outils lors du tutoriel * Amélioration mineure de la traduction/wording
95 lines
2.8 KiB
GDScript
95 lines
2.8 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 6
|
|
|
|
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.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)
|
|
|
|
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 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())
|
|
|
|
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
|