diff --git a/common/game_data/scripts/game_data.gd b/common/game_data/scripts/game_data.gd index 507ae64..7a9a026 100644 --- a/common/game_data/scripts/game_data.gd +++ b/common/game_data/scripts/game_data.gd @@ -33,6 +33,7 @@ signal current_region_data_updated(p : RegionData) @export var game_mode : GameMode = GameMode.STORY @export var dialogs_done : Array[String] = [] #Chemin des dialogues terminés +@export var tutorials_done : Array[String] = [] func start_run() -> RunData: player_data.clear_inventory() diff --git a/common/game_data/scripts/run/run_data.gd b/common/game_data/scripts/run/run_data.gd index 62bc27a..e892791 100644 --- a/common/game_data/scripts/run/run_data.gd +++ b/common/game_data/scripts/run/run_data.gd @@ -32,27 +32,43 @@ func generate_next_run_points() -> Array[RunPoint]: next_run_points = [] for i in range(story_step.get_run_point_number(level+1)): + var last_modifiers : Array[String] = [] + if len(next_run_points): + for m in next_run_points[0].region_parameter.modifiers: + last_modifiers.append(m.modifier_name) next_run_points.append( - generate_next_run_point() + generate_next_run_point(last_modifiers) ) return next_run_points -func generate_next_run_point() -> RunPoint: +func generate_next_run_point(last_modifiers : Array[String] = []) -> RunPoint: var region_parameter = RegionParameter.new() var next_level = level+1 + + + var challenge_modifiers = generate_challenge_modifiers().filter( + func(m : RegionModifier): return not m.modifier_name in last_modifiers + ) + var benefic_modifiers = generate_benefic_modifiers().filter( + func(m : RegionModifier): return not m.modifier_name in last_modifiers + ) + var normal_modifiers = generate_normal_modifiers().filter( + func(m : RegionModifier): return not m.modifier_name in last_modifiers + ) + if story_step.need_gameplay_modifier(next_level): var is_challenge = randf() < story_step.get_challenge_chance(next_level) if is_challenge: region_parameter.modifiers = [ - generate_challenge_modifiers().pick_random(), - generate_benefic_modifiers().pick_random() + challenge_modifiers.pick_random(), + benefic_modifiers.pick_random() ] as Array[RegionModifier] else: region_parameter.modifiers = [ - generate_normal_modifiers().pick_random() + normal_modifiers.pick_random() ] as Array[RegionModifier] diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd index 05c8a8e..042befd 100644 --- a/entities/player/inventory/scripts/items/seed.gd +++ b/entities/player/inventory/scripts/items/seed.gd @@ -152,22 +152,15 @@ static func generate_first_mutation(rarity := 0) -> PlantMutation: static func mutate_mutations(mutations : Array[PlantMutation]) -> Array[PlantMutation]: - var mutation_possibility : Array[MutationPossibility] = [ - AddMutation.new() - ] + var mutation_possibility : Array[MutationPossibility] = [] if ( - len(mutations) >= GameInfo.game_data.current_run.plant_info.get_mutation_max_number() + len(mutations) < GameInfo.game_data.current_run.plant_info.get_mutation_max_number() ): - mutation_possibility = [ - UpgradeMutation.new(), - ] + mutation_possibility.append(AddMutation.new()) elif len(mutations) > 0: - mutation_possibility = [ - AddMutation.new(), - UpgradeMutation.new(), - ] - + mutation_possibility.append(UpgradeMutation.new()) + var chosen_mutation_possibility = mutation_possibility.pick_random() return chosen_mutation_possibility.mutate(mutations) diff --git a/gui/dialogs/FullBackground/custom_full_background.tscn b/gui/dialogs/FullBackground/custom_full_background.tscn index bf446fe..c83d021 100644 --- a/gui/dialogs/FullBackground/custom_full_background.tscn +++ b/gui/dialogs/FullBackground/custom_full_background.tscn @@ -2,12 +2,6 @@ [ext_resource type="Script" uid="uid://bqdylb4maacf0" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.gd" id="1_tu40u"] [ext_resource type="Script" uid="uid://oxcjhq2817c7" path="res://addons/dialogic/Modules/Background/node_background_holder.gd" id="2_ghan2"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="2_v1ioh"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_v1ioh"] -shader = ExtResource("2_v1ioh") -shader_parameter/strength = 3.3 -shader_parameter/mix_percentage = 0.3 [node name="BackgroundLayer" type="Control" unique_id=421215061] layout_direction = 2 @@ -20,7 +14,7 @@ grow_vertical = 2 script = ExtResource("1_tu40u") [node name="DialogicNode_BackgroundHolder_Blur" type="ColorRect" parent="." unique_id=726280929] -material = SubResource("ShaderMaterial_v1ioh") +modulate = Color(1, 1, 1, 0.8) layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 @@ -28,4 +22,5 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 +color = Color(0.0627451, 0.05882353, 0.16862746, 1) script = ExtResource("2_ghan2") diff --git a/gui/game/announce/announce.tscn b/gui/game/announce/announce.tscn index c4f2a5d..60de07a 100644 --- a/gui/game/announce/announce.tscn +++ b/gui/game/announce/announce.tscn @@ -2,7 +2,6 @@ [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="1_0ssee"] [ext_resource type="Script" uid="uid://bvb4v66bqteuc" path="res://gui/game/announce/scripts/announce.gd" id="1_4evne"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="2_b6hac"] [ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_iwcrn"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_7nrno"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_aao0q"] @@ -10,11 +9,6 @@ [ext_resource type="Script" uid="uid://bqisp5hjs06rj" path="res://gui/game/announce/scripts/announce_inspectable.gd" id="6_aao0q"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="9_b6hac"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_f0v68"] -shader = ExtResource("2_b6hac") -shader_parameter/strength = 5.00000023424012 -shader_parameter/mix_percentage = 0.3 - [sub_resource type="ViewportTexture" id="ViewportTexture_huxc5"] viewport_path = NodePath("Particles/SubViewport") @@ -85,6 +79,18 @@ tracks/3/keys = { "update": 0, "values": [Color(1, 1, 1, 1)] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("MarginContainer/BackgroundRect:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} [sub_resource type="Animation" id="Animation_b6hac"] resource_name = "appear" @@ -137,6 +143,18 @@ tracks/3/keys = { "update": 0, "values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("MarginContainer/BackgroundRect:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.03333333, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_6qyp1"] _data = { @@ -155,8 +173,7 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="BlurRect" type="ColorRect" parent="MarginContainer" unique_id=1271832904] -material = SubResource("ShaderMaterial_f0v68") +[node name="BackgroundRect" type="ColorRect" parent="MarginContainer" unique_id=1271832904] layout_mode = 2 color = Color(0.0352941, 0.0196078, 0.12549, 0.705882) @@ -231,7 +248,7 @@ size = Vector2i(300, 300) [node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=986671004] unique_name_in_owner = true -transform = Transform3D(-0.4963247, -0.7514756, 0.43456152, -0.8508927, 0.32199714, -0.4149924, 0.17189625, -0.57574874, -0.79934174, 0, 0, 0) +transform = Transform3D(-0.4322992, 0.01924802, 0.90143085, -0.8508927, 0.32199714, -0.4149924, -0.29827252, -0.94641316, -0.1228672, 0, 0, 0) [node name="Camera3D" type="Camera3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1788331074] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) diff --git a/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn b/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn index 0fa6fd0..dde4cf2 100644 --- a/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn +++ b/gui/game/inventory_gui/inventory_item/inventory_item_3d.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" uid="uid://mrw23oxsai10" path="res://gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd" id="1_nsad1"] [ext_resource type="PackedScene" uid="uid://oktd71knql00" path="res://gui/game/inventory_gui/assets/3d/item_screen.blend" id="2_1uxm0"] -[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="2_hv1tg"] [ext_resource type="Script" uid="uid://bq7admu4ahs5r" path="res://entities/player/inventory/scripts/item.gd" id="3_ixa47"] [ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="5_g1uf8"] [ext_resource type="Texture2D" uid="uid://ds4m14vl7he6v" path="res://common/icons/pick.svg" id="6_jdjjl"] @@ -60,14 +59,12 @@ texture = SubResource("GradientTexture2D_g1uf8") [node name="ItemScreen" type="Sprite3D" parent="." unique_id=1128109703] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.08962244) -visible = false transparent = false texture = SubResource("GradientTexture2D_jdjjl") [node name="ToolScreen" type="Sprite3D" parent="." unique_id=1384339729] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.08962244) -visible = false transparent = false texture = SubResource("GradientTexture2D_gj8fm") @@ -76,20 +73,40 @@ unique_name_in_owner = true transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0.004884802, -0.0937915) modulate = Color(1, 1, 1, 0.3) pixel_size = 0.0020833334 -texture = ExtResource("2_hv1tg") -[node name="ParticleSprite1" type="Sprite3D" parent="." unique_id=811884632] +[node name="ParticleSprites" type="Node3D" parent="." unique_id=427396867] unique_name_in_owner = true + +[node name="ParticleSprite1" type="Sprite3D" parent="ParticleSprites" unique_id=811884632] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04235574, -0.03381054, -0.105405755) pixel_size = 0.001 texture = ExtResource("5_g1uf8") -[node name="ParticleSprite2" type="Sprite3D" parent="." unique_id=1076243108] -unique_name_in_owner = true +[node name="ParticleSprite2" type="Sprite3D" parent="ParticleSprites" unique_id=1076243108] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.042, -0.034, -0.105) pixel_size = 0.001 texture = ExtResource("6_jdjjl") +[node name="ParticleSprite3" type="Sprite3D" parent="ParticleSprites" unique_id=490761808] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0029564463, -0.034, -0.105) +pixel_size = 0.001 +texture = ExtResource("6_jdjjl") + +[node name="ParticleSprite4" type="Sprite3D" parent="ParticleSprites" unique_id=1224179780] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04235574, 0.04323736, -0.105405755) +pixel_size = 0.001 +texture = ExtResource("5_g1uf8") + +[node name="ParticleSprite5" type="Sprite3D" parent="ParticleSprites" unique_id=241043116] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.042, 0.043047898, -0.105) +pixel_size = 0.001 +texture = ExtResource("6_jdjjl") + +[node name="ParticleSprite6" type="Sprite3D" parent="ParticleSprites" unique_id=1794865960] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0029564463, 0.043047898, -0.105) +pixel_size = 0.001 +texture = ExtResource("6_jdjjl") + [node name="Area3D" type="Area3D" parent="." unique_id=426596211] [node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D" unique_id=2020875183] diff --git a/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd b/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd index e8b98c8..3945517 100644 --- a/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd +++ b/gui/game/inventory_gui/inventory_item/scripts/inventory_item_3d.gd @@ -19,10 +19,9 @@ func _ready(): func set_item(i : Item = item): item = i if is_node_ready(): - %ParticleSprite1.visible = false - %ParticleSprite2.visible = false - %ParticleSprite1.modulate = Color.WHITE - %ParticleSprite2.modulate = Color.WHITE + for c in %ParticleSprites.get_children(): + c.visible = false + c.modulate = Color.WHITE %ItemIconSprite.texture = null if i and i.icon: @@ -30,15 +29,11 @@ func set_item(i : Item = item): %ItemIconSprite.pixel_size = SPRITE_SIZE / i.icon.get_width() for j in range(len(i.get_particles())): - if j == 0: - %ParticleSprite1.visible = true - %ParticleSprite1.texture = i.get_particles()[j].texture - %ParticleSprite1.modulate = i.get_particles()[j].color - if j == 1: - %ParticleSprite2.visible = true - %ParticleSprite2.texture = i.get_particles()[j].texture - %ParticleSprite2.modulate = i.get_particles()[j].color - + if j < 6: + var sprite = %ParticleSprites.get_children()[j] as Sprite3D + sprite.visible = true + sprite.texture = i.get_particles()[j].texture + sprite.modulate = i.get_particles()[j].color func set_state(s := state): diff --git a/gui/game/tutorial/tutorial.tscn b/gui/game/tutorial/tutorial.tscn index b389c8d..9ddc284 100644 --- a/gui/game/tutorial/tutorial.tscn +++ b/gui/game/tutorial/tutorial.tscn @@ -4,7 +4,6 @@ [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_1wikm"] [ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="3_8kuag"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_1wikm"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="5_5i4hd"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_hgus1"] [ext_resource type="PackedScene" uid="uid://753270jjxmfg" path="res://gui/game/card/card.tscn" id="6_vg3tr"] [ext_resource type="Texture2D" uid="uid://bgi4rc50par30" path="res://common/icons/arrow-narrow-right.svg" id="7_6k6bq"] @@ -30,11 +29,6 @@ corner_radius_bottom_left = 20 font = ExtResource("4_1wikm") font_size = 20 -[sub_resource type="ShaderMaterial" id="ShaderMaterial_pu6eb"] -shader = ExtResource("5_5i4hd") -shader_parameter/strength = 8.00000037674012 -shader_parameter/mix_percentage = 0.3 - [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ebkn5"] [sub_resource type="Resource" id="Resource_ditr3"] @@ -99,6 +93,18 @@ tracks/2/keys = { "update": 1, "values": [1.0] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Background:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} [sub_resource type="Animation" id="Animation_58nqq"] resource_name = "appear" @@ -139,6 +145,18 @@ tracks/2/keys = { "update": 0, "values": [0.0, 1.0] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Background:modulate:a") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.06666667, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_ebkn5"] _data = { @@ -200,8 +218,7 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 -[node name="BlurRect" type="ColorRect" parent="PlantInfoTutorial" unique_id=35513528] -material = SubResource("ShaderMaterial_pu6eb") +[node name="Background" type="ColorRect" parent="PlantInfoTutorial" unique_id=35513528] layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 diff --git a/gui/pause/pause.tscn b/gui/pause/pause.tscn index 0949554..749dc30 100644 --- a/gui/pause/pause.tscn +++ b/gui/pause/pause.tscn @@ -177,12 +177,10 @@ vertical_alignment = 1 [node name="Settings" parent="." unique_id=758381952 instance=ExtResource("4_58dya")] unique_name_in_owner = true -visible = false mouse_filter = 2 [node name="Controls" parent="." unique_id=358658336 instance=ExtResource("11_urlqn")] unique_name_in_owner = true -visible = false mouse_filter = 2 [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1779993260] diff --git a/project.godot b/project.godot index bbbc7d9..f784f3f 100644 --- a/project.godot +++ b/project.godot @@ -16,7 +16,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true config/name="Seeding The Wasteland" config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot." -config/version="beta-1.1" +config/version="beta-1.2" run/main_scene="uid://c5bruelvqbm1k" config/features=PackedStringArray("4.6", "Forward Plus") config/icon="uid://df0y0s666ui4h" diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png similarity index 100% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png.import similarity index 73% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png.import index 4ac6faf..c98636d 100644 --- a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://7lw40nfj4lhl" -path="res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex" +path="res://.godot/imported/dashboard_screenshot.png-497ed6906da9bb4e00209ea265f64ca1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" -dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex"] +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png" +dest_files=["res://.godot/imported/dashboard_screenshot.png-497ed6906da9bb4e00209ea265f64ca1.ctex"] [params] diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png new file mode 100644 index 0000000..38b69e7 Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png.import new file mode 100644 index 0000000..7c77899 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cc1lk4ei4flxs" +path="res://.godot/imported/empty_inventory_screenshot.png-139ea0dba0426e0f0c8ad7743c9059ac.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png" +dest_files=["res://.godot/imported/empty_inventory_screenshot.png-139ea0dba0426e0f0c8ad7743c9059ac.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png similarity index 100% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png.import similarity index 73% rename from stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import rename to stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png.import index d12279f..fa00947 100644 --- a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://d17ru4hw8okj1" -path="res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex" +path="res://.godot/imported/objective_screenshot.png-b92431e401836a099382d2c5069658a3.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" -dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex"] +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png" +dest_files=["res://.godot/imported/objective_screenshot.png-b92431e401836a099382d2c5069658a3.ctex"] [params] diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png new file mode 100644 index 0000000..03f5053 Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png.import new file mode 100644 index 0000000..8b815e4 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0x6r3010hvul" +path="res://.godot/imported/orchid_saver_screenshot.png-9e2871da6a274f9384dfce696db1bb4d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png" +dest_files=["res://.godot/imported/orchid_saver_screenshot.png-9e2871da6a274f9384dfce696db1bb4d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/stages/3d_scenes/cockpit_scene/cockpit.tscn b/stages/3d_scenes/cockpit_scene/cockpit.tscn index 2b3af15..9e9729d 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit.tscn @@ -14,6 +14,7 @@ [ext_resource type="PackedScene" uid="uid://cd8j7v7qtybi8" path="res://stages/3d_scenes/cockpit_scene/ship_tutorial.tscn" id="13_u7lr8"] [ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="14_d1blr"] [ext_resource type="PackedScene" uid="uid://ci4x1q326lvyy" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_screen.tscn" id="15_q4ojn"] +[ext_resource type="PackedScene" uid="uid://cn2hob1i72a25" path="res://stages/3d_scenes/cockpit_scene/fail_tutorial.tscn" id="15_wrlf0"] [ext_resource type="PackedScene" uid="uid://u3o5g8lmck74" path="res://entities/interactable_3d/orchid_saver/orchid_saver.tscn" id="16_nfjul"] [ext_resource type="Texture2D" uid="uid://d3k7rl7nbp7yx" path="res://common/icons/device-floppy.svg" id="17_ggekp"] [ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="17_omtjc"] @@ -163,8 +164,13 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.239, 0, 4.02) [node name="MutationDiscoveryScreen" parent="." unique_id=1948337200 instance=ExtResource("15_q4ojn")] transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1.1896521, 0.015508115, 3.982) -[node name="ShipTutorial" parent="." unique_id=868547496 instance=ExtResource("13_u7lr8")] +[node name="ShipTutorial" parent="." unique_id=868547496 node_paths=PackedStringArray("player") instance=ExtResource("13_u7lr8")] unique_name_in_owner = true +player = NodePath("../Player3D") + +[node name="FailTutorial" parent="." unique_id=190805806 node_paths=PackedStringArray("player") instance=ExtResource("15_wrlf0")] +unique_name_in_owner = true +player = NodePath("../Player3D") [node name="TrailerCamera" type="Camera3D" parent="." unique_id=297848285] unique_name_in_owner = true diff --git a/stages/3d_scenes/cockpit_scene/fail_tutorial.tscn b/stages/3d_scenes/cockpit_scene/fail_tutorial.tscn new file mode 100644 index 0000000..a776a78 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/fail_tutorial.tscn @@ -0,0 +1,333 @@ +[gd_scene format=3 uid="uid://cn2hob1i72a25"] + +[ext_resource type="Script" uid="uid://cqc8vta5ffmwt" path="res://stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd" id="1_rymdr"] +[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_46i67"] +[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_liq62"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_wr0v8"] +[ext_resource type="PackedScene" uid="uid://bihsgpfqaiqml" path="res://entities/interactable_3d/orchid_saver/assets/3d/orchid_saver.blend" id="5_p3ndq"] +[ext_resource type="Texture2D" uid="uid://d0x6r3010hvul" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/orchid_saver_screenshot.png" id="5_rymdr"] +[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="7_1fdaa"] +[ext_resource type="Texture2D" uid="uid://cc1lk4ei4flxs" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/empty_inventory_screenshot.png" id="8_46i67"] +[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="9_xako4"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="10_dpqev"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_2y716"] +viewport_path = NodePath("Particles/SubViewport") + +[sub_resource type="Curve" id="Curve_6olc8"] +_limits = [-200.0, 200.0, 0.0, 1.0] +_data = [Vector2(0, -200), 0.0, 560.0, 0, 0, Vector2(0.08235294, 92.384125), 1336.3082, 1336.3082, 0, 0, Vector2(0.34901965, 200), 0.0, 0.0, 0, 0, Vector2(0.854902, -200), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="Gradient" id="Gradient_cnkwc"] +offsets = PackedFloat32Array(0, 0.8689956, 0.98253274) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="LabelSettings" id="LabelSettings_n2u7g"] +font = ExtResource("3_liq62") +font_size = 50 +font_color = Color(1, 0.6509804, 0.09019608, 1) + +[sub_resource type="ViewportTexture" id="ViewportTexture_11pbi"] +viewport_path = NodePath("MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport") + +[sub_resource type="Animation" id="Animation_2y716"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MarginContainer/FailTutorialContainer:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Particles:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MarginContainer/FailTutorialContainer:theme_override_constants/separation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [12] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_6olc8"] +resource_name = "appear" +length = 0.8 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.13333334), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MarginContainer/FailTutorialContainer:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.2, 0.73333335), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Particles:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.2, 0.7), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("MarginContainer/FailTutorialContainer:theme_override_constants/separation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.26666665, 0.73333335), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [554, 8] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.16666667, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_cnkwc"] +_data = { +&"RESET": SubResource("Animation_2y716"), +&"appear": SubResource("Animation_6olc8") +} + +[node name="FailTutorial" type="CanvasLayer" unique_id=868547496 node_paths=PackedStringArray("object_3d", "ok_button", "animation_player")] +script = ExtResource("1_rymdr") +object_3d = NodePath("MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport/orchid_saver") +ok_button = NodePath("MarginContainer/FailTutorialContainer/OkButton") +animation_player = NodePath("AnimationPlayer") +tutorial_name = "fail" + +[node name="Background" type="ColorRect" parent="." unique_id=1582095070] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.037180007, 0.020800002, 0.13, 1) + +[node name="Particles" type="TextureRect" parent="." unique_id=552383374] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -179.0 +offset_top = -179.0 +offset_right = 179.0 +offset_bottom = 179.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_2y716") +expand_mode = 1 + +[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=205461032] +transparent_bg = true +size = Vector2i(1000, 1000) + +[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=612988274] +position = Vector2(500, 500) +amount = 20 +texture = ExtResource("2_46i67") +preprocess = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 2.0 +initial_velocity_max = 2.0 +linear_accel_min = 5.0 +linear_accel_max = 5.0 +linear_accel_curve = SubResource("Curve_6olc8") +color_ramp = SubResource("Gradient_cnkwc") + +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1783612054] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="FailTutorialContainer" type="VBoxContainer" parent="MarginContainer" unique_id=732188526] +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="ShipTutorialText" type="Label" parent="MarginContainer/FailTutorialContainer" unique_id=1403992763] +unique_name_in_owner = true +layout_mode = 2 +text = "OUT_OF_ENERGY" +label_settings = SubResource("LabelSettings_n2u7g") +horizontal_alignment = 1 + +[node name="ShipTutorialTitle" type="Label" parent="MarginContainer/FailTutorialContainer" unique_id=2022459650] +unique_name_in_owner = true +layout_mode = 2 +text = "USE_THE_BACKUP_DEVICE_TO_RESPAWN_TO_LAST_BASE" +label_settings = ExtResource("4_wr0v8") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/FailTutorialContainer" unique_id=1001794244] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/h_separation = 35 +columns = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/FailTutorialContainer/GridContainer" unique_id=1184100238] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] +layout_mode = 2 +texture = ExtResource("5_rymdr") +expand_mode = 5 +stretch_mode = 5 + +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] +layout_mode = 2 +bbcode_enabled = true +text = "STEP_ON_THE_DATA_SAVER_TEXT" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="OrchidSaverVisualiser" type="TextureRect" parent="MarginContainer/FailTutorialContainer/GridContainer" unique_id=692971472] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 0 +texture = SubResource("ViewportTexture_11pbi") +stretch_mode = 5 + +[node name="SubViewport" type="SubViewport" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser" unique_id=1153633037] +own_world_3d = true +transparent_bg = true +size = Vector2i(400, 400) + +[node name="orchid_saver" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport" unique_id=1027429202 instance=ExtResource("5_p3ndq")] +transform = Transform3D(0.4685929, 0, -0.8834142, 0, 1, 0, 0.8834142, 0, 0.4685929, 0, -0.5, 0) + +[node name="Capsule" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport/orchid_saver" index="0" unique_id=1504808872] +visible = false + +[node name="Camera3D" type="Camera3D" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport" unique_id=541588220] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5) +current = true +fov = 30.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport" unique_id=1274670225] +environment = ExtResource("7_1fdaa") + +[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/FailTutorialContainer/GridContainer" unique_id=1062837751] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] +layout_mode = 2 +texture = ExtResource("8_46i67") +expand_mode = 5 +stretch_mode = 5 + +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/FailTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] +layout_mode = 2 +bbcode_enabled = true +text = "RESTART_FROM_LAST_BASE_WITHOUT_SEEDS_TEXT" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="OkButton" type="Button" parent="MarginContainer/FailTutorialContainer" unique_id=879779245] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("9_xako4") +text = "OK" +icon = ExtResource("10_dpqev") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1299060348] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_cnkwc") + +[connection signal="button_down" from="MarginContainer/FailTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] + +[editable path="MarginContainer/FailTutorialContainer/GridContainer/OrchidSaverVisualiser/SubViewport/orchid_saver"] diff --git a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd index e5ac598..a208f0a 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd @@ -34,23 +34,14 @@ func _ready(): %Exit.clicked.connect(_on_exit_clicked) %Exit.interactable = can_exit() - if not GameInfo.game_data.progression_data.ship_tutorial_done: + if not "ship" in GameInfo.game_data.tutorials_done: await get_tree().create_timer(1).timeout - await show_tutorial() + %ShipTutorial.appear() + if GameInfo.game_data.game_mode == GameData.GameMode.STORY: update_dialogs() -func show_tutorial(): - AudioManager.play_sfx("Reveal") - %ShipTutorial.appear() - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - %Player3D.controlling_player=false - await %ShipTutorial.disappeared - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - %Player3D.controlling_player=true - GameInfo.game_data.progression_data.ship_tutorial_done = true - func update_dialogs(): if GameInfo.game_data and GameInfo.game_data.current_run: var run_data = GameInfo.game_data.current_run @@ -86,11 +77,15 @@ func _on_phone_clicked(): %Phone.stop_audio() %Phone.interactable = false if len(phone_dialogs): - Dialogic.start(phone_dialogs.pop_front()) + var phone_dialog : String = phone_dialogs.pop_front() + Dialogic.start(phone_dialog) await Dialogic.timeline_ended + if phone_dialog == FAILED_DIALOG: + %FailTutorial.appear() if (len(phone_dialogs)): await get_tree().create_timer(2.).timeout ring_phone() + func move_to_choosen_run_point(): GameInfo.game_data.current_run.choose_next_run_point(choosen_run_point) diff --git a/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd index 3dcd875..e9e41cb 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd @@ -1,7 +1,13 @@ extends CanvasLayer class_name ShipTutorial -const DEFAULT_SHIP_ACCELERATION = Vector2(1,0) +const DEFAULT_OBJECT_ACCELERATION = Vector2(1,0) + +@export var object_3d : Node3D +@export var ok_button : Button +@export var animation_player : AnimationPlayer +@export var player : Player3D +@export var tutorial_name := "ship" signal disappeared @@ -14,9 +20,13 @@ var next_mouse_pos : Vector2 func _ready(): hide() + ok_button.button_down.connect(_on_ok_button_button_down) func appear(): - %AnimationPlayer.play("appear") + AudioManager.play_sfx("Reveal") + animation_player.play("appear") + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + player.controlling_player=false Pointer.action_disabled = true func _process(delta): @@ -44,15 +54,18 @@ func update_rotation(delta): ) prev_mouse_pos = next_mouse_pos else : - object_acceleration = object_acceleration.lerp(DEFAULT_SHIP_ACCELERATION, 0.1) + object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1) - %Ship.rotate(Vector3.UP, object_rotation.x * delta) - %Ship.rotate(Vector3.RIGHT, object_rotation.y * delta) + object_3d.rotate(Vector3.UP, object_rotation.x * delta) + object_3d.rotate(Vector3.RIGHT, object_rotation.y * delta) func _on_ok_button_button_down(): - %AnimationPlayer.play_backwards("appear") + animation_player.play_backwards("appear") disappeared.emit() + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + player.controlling_player = true + GameInfo.game_data.tutorials_done.append(tutorial_name) get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click func(): Pointer.action_disabled = false diff --git a/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn b/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn index bf20ad5..4e48834 100644 --- a/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn +++ b/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn @@ -1,21 +1,15 @@ [gd_scene format=3 uid="uid://cd8j7v7qtybi8"] [ext_resource type="Script" uid="uid://cqc8vta5ffmwt" path="res://stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd" id="1_1jkg7"] -[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_11pbi"] [ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="2_1jkg7"] [ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="3_ofwam"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_wyjs5"] [ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="4_ofwam"] [ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="5_2y716"] -[ext_resource type="Texture2D" uid="uid://7lw40nfj4lhl" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" id="6_2y716"] +[ext_resource type="Texture2D" uid="uid://7lw40nfj4lhl" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/dashboard_screenshot.png" id="6_2y716"] [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="6_6olc8"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_cnkwc"] -[ext_resource type="Texture2D" uid="uid://d17ru4hw8okj1" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" id="9_6olc8"] - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_wa8fb"] -shader = ExtResource("1_11pbi") -shader_parameter/strength = 8.00000037674012 -shader_parameter/mix_percentage = 0.3 +[ext_resource type="Texture2D" uid="uid://d17ru4hw8okj1" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/objective_screenshot.png" id="9_6olc8"] [sub_resource type="ViewportTexture" id="ViewportTexture_2y716"] viewport_path = NodePath("Particles/SubViewport") @@ -35,7 +29,7 @@ font_size = 50 font_color = Color(1, 0.6509804, 0.09019608, 1) [sub_resource type="ViewportTexture" id="ViewportTexture_11pbi"] -viewport_path = NodePath("ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport") +viewport_path = NodePath("MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport") [sub_resource type="Animation" id="Animation_2y716"] length = 0.001 @@ -54,7 +48,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("ShipTutorialContainer:modulate") +tracks/1/path = NodePath("MarginContainer/ShipTutorialContainer:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -78,7 +72,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("ShipTutorialContainer:theme_override_constants/separation") +tracks/3/path = NodePath("MarginContainer/ShipTutorialContainer:theme_override_constants/separation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -87,6 +81,18 @@ tracks/3/keys = { "update": 1, "values": [12] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} [sub_resource type="Animation" id="Animation_6olc8"] resource_name = "appear" @@ -106,7 +112,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("ShipTutorialContainer:modulate") +tracks/1/path = NodePath("MarginContainer/ShipTutorialContainer:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -130,7 +136,7 @@ tracks/2/keys = { tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("ShipTutorialContainer:theme_override_constants/separation") +tracks/3/path = NodePath("MarginContainer/ShipTutorialContainer:theme_override_constants/separation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { @@ -139,6 +145,18 @@ tracks/3/keys = { "update": 0, "values": [554, 8] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Background:modulate:a") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.16666667, 0.8), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.8] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_cnkwc"] _data = { @@ -146,11 +164,13 @@ _data = { &"appear": SubResource("Animation_6olc8") } -[node name="ShipTutorial" type="CanvasLayer" unique_id=868547496] +[node name="ShipTutorial" type="CanvasLayer" unique_id=868547496 node_paths=PackedStringArray("object_3d", "ok_button", "animation_player")] script = ExtResource("1_1jkg7") +object_3d = NodePath("MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship") +ok_button = NodePath("MarginContainer/ShipTutorialContainer/OkButton") +animation_player = NodePath("AnimationPlayer") -[node name="BlurRect" type="ColorRect" parent="." unique_id=1582095070] -material = SubResource("ShaderMaterial_wa8fb") +[node name="Background" type="ColorRect" parent="." unique_id=1582095070] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -191,48 +211,56 @@ linear_accel_max = 5.0 linear_accel_curve = SubResource("Curve_6olc8") color_ramp = SubResource("Gradient_cnkwc") -[node name="ShipTutorialContainer" type="VBoxContainer" parent="." unique_id=732188526] +[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1342614121] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 + +[node name="ShipTutorialContainer" type="VBoxContainer" parent="MarginContainer" unique_id=732188526] +layout_mode = 2 theme_override_constants/separation = 12 alignment = 1 -[node name="ShipTutorialText" type="Label" parent="ShipTutorialContainer" unique_id=1403992763] +[node name="ShipTutorialText" type="Label" parent="MarginContainer/ShipTutorialContainer" unique_id=1403992763] unique_name_in_owner = true layout_mode = 2 text = "SHIP_ACQUIRED" label_settings = SubResource("LabelSettings_n2u7g") horizontal_alignment = 1 -[node name="ShipTutorialTitle" type="Label" parent="ShipTutorialContainer" unique_id=2022459650] +[node name="ShipTutorialTitle" type="Label" parent="MarginContainer/ShipTutorialContainer" unique_id=2022459650] unique_name_in_owner = true layout_mode = 2 text = "USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET" label_settings = ExtResource("2_1jkg7") horizontal_alignment = 1 +autowrap_mode = 3 -[node name="GridContainer" type="GridContainer" parent="ShipTutorialContainer" unique_id=1001794244] +[node name="GridContainer" type="GridContainer" parent="MarginContainer/ShipTutorialContainer" unique_id=1001794244] layout_mode = 2 size_flags_horizontal = 4 theme_override_constants/h_separation = 35 columns = 3 -[node name="VBoxContainer" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1184100238] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/ShipTutorialContainer/GridContainer" unique_id=1184100238] custom_minimum_size = Vector2(300, 0) layout_mode = 2 theme_override_constants/separation = 12 alignment = 1 -[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] layout_mode = 2 texture = ExtResource("6_2y716") expand_mode = 5 stretch_mode = 5 -[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] layout_mode = 2 bbcode_enabled = true text = "JUMP_BETWEEN_REGION_TEXT" @@ -240,7 +268,7 @@ fit_content = true horizontal_alignment = 1 vertical_alignment = 1 -[node name="ShipVisualiser" type="TextureRect" parent="ShipTutorialContainer/GridContainer" unique_id=692971472] +[node name="ShipVisualiser" type="TextureRect" parent="MarginContainer/ShipTutorialContainer/GridContainer" unique_id=692971472] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 @@ -248,59 +276,59 @@ mouse_filter = 0 texture = SubResource("ViewportTexture_11pbi") stretch_mode = 5 -[node name="SubViewport" type="SubViewport" parent="ShipTutorialContainer/GridContainer/ShipVisualiser" unique_id=1153633037] +[node name="SubViewport" type="SubViewport" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser" unique_id=1153633037] own_world_3d = true transparent_bg = true size = Vector2i(400, 400) -[node name="Ship" type="Node3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=434320277] +[node name="Ship" type="Node3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=434320277] unique_name_in_owner = true transform = Transform3D(0.86598426, 0, -0.5000024, 0, 0.9999422, 0, 0.49997625, 0, 0.8660295, 0, 0, 0) -[node name="cockpit2" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")] +[node name="cockpit2" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")] -[node name="Skeleton3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 368440226) index="0" unique_id=1318180746] +[node name="Skeleton3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 368440226) index="0" unique_id=1318180746] bones/0/rotation = Quaternion(-0.52081746, 0.47827742, 0.52081746, 0.47827742) bones/1/rotation = Quaternion(0.042539995, -1.4957005e-08, -9.944439e-10, 0.9990948) bones/2/rotation = Quaternion(0.52081746, 0.47827742, 0.52081746, -0.47827742) bones/3/rotation = Quaternion(0.042539995, 1.4957005e-08, 9.944439e-10, 0.9990948) -[node name="WinkEnd_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475] +[node name="WinkEnd_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475] transform = Transform3D(7.145433e-10, -1, -7.4505806e-08, 2.9971538e-08, -4.4703484e-08, 1, -1, -7.1454553e-10, 2.9971538e-08, -12.358327, -1.0543112, -8.881784e-16) -[node name="Wing_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283] +[node name="Wing_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283] transform = Transform3D(0, -0.9963807, -0.08500305, 0, -0.08500302, 0.9963807, -1, 0, 0, 0, 0, 0) -[node name="WinkEnd_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672] +[node name="WinkEnd_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672] transform = Transform3D(7.145433e-10, 1, 7.4505806e-08, -2.9971538e-08, -4.4703484e-08, 1, 1, -7.1454553e-10, 2.9971538e-08, 12.358327, -1.0543112, 0) -[node name="Wing_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525] +[node name="Wing_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525] transform = Transform3D(0, 0.9963807, 0.08500305, 0, -0.08500302, 0.9963807, 1, 0, 0, 0, 0, 0) -[node name="AnimationPlayer" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="6" unique_id=1861191625] +[node name="AnimationPlayer" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="6" unique_id=1861191625] autoplay = &"Fold" -[node name="Camera3D" type="Camera3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220] +[node name="Camera3D" type="Camera3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50) current = true fov = 30.0 -[node name="WorldEnvironment" type="WorldEnvironment" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=1274670225] +[node name="WorldEnvironment" type="WorldEnvironment" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=1274670225] environment = ExtResource("5_2y716") -[node name="VBoxContainer2" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1062837751] +[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/ShipTutorialContainer/GridContainer" unique_id=1062837751] custom_minimum_size = Vector2(300, 0) layout_mode = 2 theme_override_constants/separation = 12 alignment = 1 -[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] layout_mode = 2 texture = ExtResource("9_6olc8") expand_mode = 5 stretch_mode = 5 -[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] +[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] layout_mode = 2 bbcode_enabled = true text = "RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT" @@ -308,7 +336,7 @@ fit_content = true horizontal_alignment = 1 vertical_alignment = 1 -[node name="OkButton" type="Button" parent="ShipTutorialContainer" unique_id=879779245] +[node name="OkButton" type="Button" parent="MarginContainer/ShipTutorialContainer" unique_id=879779245] unique_name_in_owner = true layout_mode = 2 size_flags_horizontal = 4 @@ -320,6 +348,6 @@ icon = ExtResource("7_cnkwc") unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_cnkwc") -[connection signal="button_down" from="ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] +[connection signal="button_down" from="MarginContainer/ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] -[editable path="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"] +[editable path="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"] diff --git a/stages/terrain/region/scripts/chunk.gd b/stages/terrain/region/scripts/chunk.gd index b9ef698..53f606b 100644 --- a/stages/terrain/region/scripts/chunk.gd +++ b/stages/terrain/region/scripts/chunk.gd @@ -6,7 +6,7 @@ const GENERATION_NUMBER = 4 const NOISE_IMAGE_SIZE := 150 const MAX_DECONTAMINATION_DISTANCE=0 -const MAX_TALION_DISTANCE=2 +const MAX_TALION_DISTANCE=3 const RANDOM_PADDING_NOISE_FREQUENCY := 0.01 const ROCK_NOISE_FREQUENCY := 0.005 diff --git a/stages/terrain/region/scripts/post_process/meteo.gd b/stages/terrain/region/scripts/post_process/meteo.gd index 9912e46..a13e1d2 100644 --- a/stages/terrain/region/scripts/post_process/meteo.gd +++ b/stages/terrain/region/scripts/post_process/meteo.gd @@ -48,10 +48,7 @@ func generate_rainy() -> void: rain_value = rng.randf_range(0.3,1.) cloud_value = rng.randf_range(0.5,0.9) ambiance_name = "ExteriorRaining" - if rng.randi() % 2 == 0: - wind_force = rng.randf_range(0.,0.7) - else: - fog_value = max(0, 0.5) + wind_force = rng.randf_range(0.,0.5) func generate_foggy() -> void: print("generate_foggy") diff --git a/translation/game/gui.csv b/translation/game/gui.csv index 87e8a0e..8962851 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -206,6 +206,10 @@ SHIP_ACQUIRED,Ship Acquired,Vaisseau Acquis USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET,"Use the ship to travel across the planet","Utilisez le vaisseau pour voyager sur la planète" JUMP_BETWEEN_REGION_TEXT,"[b]Jump between regions[/b] Use the ship dashboard to choose the next region between two choices","[b]Changez de région[/b] Utilisez le tableau de bord pour changer de région parmi deux choix" RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT,"[b]Recharge your ship with plant score[/b] The Internode has fuel for only one jump; recharge it with plants on the planet","[b]Rechargez votre vaisseau avec les scores de plantes[/b] L'Internode a du carburant pour un seul changement, rechargez le en plantant sur la planète" +OUT_OF_ENERGY,Out of energy,À court d'énergie +USE_THE_BACKUP_DEVICE_TO_RESPAWN_TO_LAST_BASE,Use the backup device to respawn to last base,Utilisez l'appareil de sauvegarde pour réapparaitre à la dernière base +STEP_ON_THE_DATA_SAVER_TEXT,[b]Step on the backup device to use it[/b] You can use it at any time.,[b]Déplacez-vous sur l'appareil de sauvegarde pour l'utiliser[/b] Vous pouvez l'utiliser à tout moment +RESTART_FROM_LAST_BASE_WITHOUT_SEEDS_TEXT,[b]Restart from last base without any seeds[/b] You will also lose all artefacts found.,[b]Recommencer à partir de la dernière base sans aucune graine[/b] Vous perdrez également tous les artefacts trouvés. SHIP_IS_READY_TO_TAKE_OFF,Ship is ready to take off,Le vaisseau est prêt à partir SAVE_ORCHID_MEMORY_AND_RESPAWN,Save Orchid Memory and respawn,Sauvegarder la mémoire d'Orchid et recommencer DOWNLOAD_ORCHID_DATA_TO_LOCAL_SERVERS,Download Orchid data to local servers,Télécharger les données d'Orchid sur les serveurs locaux