Files
seeding-planets/common/scene_manager/scripts/scenes/relay_base_scene.gd
Zacharie Guet 908878dff4 Dev de la démo
* Modification de l'apparence de l'UI des dialogues
* Changement de l'ordre de déblocage des mutations
* Ajout d'une confirmation pour l'abandon
* Ajout de la scène de fin avec la base Boréa, en tant que fin de démo
* Modification des icône de durée de vie, temps de pousse, et de mort
* Ajout d'un icône au dessus du joueur quand il n'a plus d'énergie
* Amélioration des dialogues du jeu
* Changement du modèle du téléphone
* Ajout de cellule d'énergie et de cellule de talion trouvable sur la carte
* Il est à nouveau possible de se recharger après la fin d'une région
* Buff des mutations ancien sociale et solide
* Modification de la mutation fertile (ne donne de gain de graine qu'à la maturation)
* Ajout d'une récupération automatique des graines
* Ajout de deux cartons de tutoriel ainsi qu'une option pour les revoir dans l'aide de jeu
* Amélioration générale du tutoriel
* Ajout d'un écran titre digne de ce nom
* Lors de l'arrivée à destination, ne téléporte plus le joueur sur une map vide, mais directement dans les lieux de cinématique
* Ajout graphique de plus de pattern de mousse et de roche
* Le talion apparait maintenant sur toute la carte
* La roche peut désormais apparaitre sur la zone de départ
* Ajout dud modificateur de région Canyon
* Equilibrage général
* Fix de bugs en tout genre
2026-05-27 19:13:32 +02:00

92 lines
3.0 KiB
GDScript

extends Scene
class_name RelayBaseScene
@export var base_name : String
@export var base_number : String
@export var is_spawning : bool
const DEAD_ORCHID_SCENE = preload("res://entities/player_3d/dead_orchid.tscn")
func _init(
_base_name : String = "",
_base_number : String = "",
_is_spawning : bool = false,
):
base_name = _base_name
base_number = _base_number
is_spawning = _is_spawning
func get_scene_path() -> String:
return "res://stages/3d_scenes/relay_base/relay_base.tscn"
func get_scene_title() -> String:
return tr("RELAY_BASE_X") % tr(base_name)
func get_scene_icon() -> Texture:
return preload("res://common/icons/route.svg")
func is_mouse_captured() -> bool:
return true
func is_needed_to_be_announced() -> bool:
return true
func _on_generated(generated_scene : Node):
var relay_base := generated_scene as RelayBase
relay_base.base_name = base_name
relay_base.base_number = base_number
if is_spawning:
AudioManager.play_sfx("Respawn")
spawn_player(relay_base)
spawn_dead_orchid(relay_base)
relay_base.exit_scene = CockpitScene.new()
else:
# relay_base.exit_scene = RegionScene.new(GameInfo.game_data.current_region_data)
handle_orchid_save(relay_base)
func spawn_player(relay_base : RelayBase):
var incubators := relay_base.get_incubators()
var possible_incubators : Array[Incubator] = []
var choosen_incubator : Incubator = null
for i in range(len(incubators)):
var incubator = incubators[i]
if i in GameInfo.game_data.incubator_used:
incubator.used = true
else:
possible_incubators.append(incubator)
if len(possible_incubators):
choosen_incubator = possible_incubators.pick_random()
GameInfo.game_data.incubator_used.append(
incubators.find(choosen_incubator)
)
else:
choosen_incubator = incubators.pick_random()
choosen_incubator.used = true
relay_base.player.global_position = choosen_incubator.global_position + Vector3.UP
relay_base.player.rotation.y = choosen_incubator.rotation.y
func spawn_dead_orchid(relay_base : RelayBase):
var dead_orchid := DEAD_ORCHID_SCENE.instantiate() as Node3D
relay_base.add_child(dead_orchid)
if GameInfo.game_data.dead_orchid_position == Vector3.ZERO:
dead_orchid.global_position = relay_base.orchid_saver.global_position + Vector3.UP * 0.5
dead_orchid.rotation.y = -90
else:
dead_orchid.position = GameInfo.game_data.dead_orchid_position
dead_orchid.rotation = GameInfo.game_data.dead_orchid_rotation
relay_base.orchid_saver.active = false
relay_base.dead_orchid = dead_orchid
func handle_orchid_save(relay_base : RelayBase):
relay_base.orchid_saved.connect(
func ():
GameInfo.game_data.finish_story_step()
var new_story_step = GameInfo.game_data.progression_data.get_story_step()
SceneManager.change_to_scene(
new_story_step.get_respawn_scene()
)
)