diff --git a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll deleted file mode 100644 index 0812259..0000000 Binary files a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll and /dev/null differ diff --git a/common/game_data/scripts/story/story_step.gd b/common/game_data/scripts/story/story_step.gd index fd75560..04113f2 100644 --- a/common/game_data/scripts/story/story_step.gd +++ b/common/game_data/scripts/story/story_step.gd @@ -83,6 +83,8 @@ static func basic_objective_for_region(level : int) -> int: 3: return 20 4: return 30 5: return 45 + 6: return 65 + 7: return 90 _: return basic_objective_for_region(level-1) + (level-2) * 5 static func difficult_objective_for_region(level : int) -> int: diff --git a/common/game_data/scripts/story/story_steps/1_1_start_story_step.gd b/common/game_data/scripts/story/story_steps/1_1_start_story_step.gd index cb07725..0593329 100644 --- a/common/game_data/scripts/story/story_steps/1_1_start_story_step.gd +++ b/common/game_data/scripts/story/story_steps/1_1_start_story_step.gd @@ -32,7 +32,7 @@ func get_region_sequence_length(_difficulty_setting : int) -> int: return 5 func get_objective_multiplier() -> float: - return 0.6 + return 0.8 func is_run_point_dangerous(_level : int, _difficulty_setting : int) -> bool: return false @@ -47,7 +47,7 @@ func get_challenge_chance(_level : int, _difficulty_setting : int) -> float: return 0. func get_ship_dialog_path(level : int, difficulty_setting : int ,ship_in_space := true) -> String: - if ship_in_space and level + 1 == get_cave_occurence(level, difficulty_setting): + if ship_in_space and level == get_cave_occurence(level, difficulty_setting): return CAVE_DIALOG_PATH if ship_in_space and is_run_finished(level + 1, difficulty_setting): return MERCURY_ARRIVAL_DIALOG_PATH diff --git a/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd b/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd index 3fc346b..88d3abf 100644 --- a/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd +++ b/common/game_data/scripts/story/story_steps/1_2_mercury_story_step.gd @@ -36,7 +36,7 @@ func get_region_sequence_length(_difficulty_setting : int) -> int: return 6 func get_objective_multiplier() -> float: - return 0.8 + return 1 func get_ship_dialog_path(level : int, difficulty_setting : int, ship_in_space := true) -> String: if level == 0: diff --git a/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd b/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd index 6b4ba29..aa06f0c 100644 --- a/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd +++ b/common/game_data/scripts/story/story_steps/1_3_borea_story_step.gd @@ -25,6 +25,9 @@ func get_destination_text() -> String: func get_destination_scene() -> Scene: return BoreaScene.new() +func get_objective_multiplier() -> float: + return 1.2 + func get_player_max_energy(difficulty_setting := 1) -> int: if difficulty_setting == 0: return 4 + COSY_ENERGY_ADDITION diff --git a/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd b/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd index d56467d..443f0e1 100644 --- a/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd +++ b/common/game_data/scripts/story/story_steps/2_aqua_story_step.gd @@ -34,7 +34,7 @@ func get_player_max_inventory(_difficulty_setting) -> int: return 4 func get_objective_multiplier() -> float: - return 1.2 + return 1.4 func get_ship_dialog_path(level : int, _difficulty_setting : int, _ship_in_space := true) -> String: if level == 5: diff --git a/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd b/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd index f45da99..6c31f30 100644 --- a/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd +++ b/common/game_data/scripts/story/story_steps/3_subterra_story_step.gd @@ -35,7 +35,7 @@ func get_player_max_inventory(_difficulty_setting : int) -> int: return 5 func get_objective_multiplier() -> float: - return 1.4 + return 1.6 func get_ship_dialog_path(level : int, _difficulty_setting : int, _ship_in_space := true) -> String: if level == 5: diff --git a/common/game_data/scripts/story/story_steps/4_estia_story_step.gd b/common/game_data/scripts/story/story_steps/4_estia_story_step.gd index 18cceb6..9ace114 100644 --- a/common/game_data/scripts/story/story_steps/4_estia_story_step.gd +++ b/common/game_data/scripts/story/story_steps/4_estia_story_step.gd @@ -35,7 +35,7 @@ func get_player_max_inventory(_difficulty_setting : int) -> int: return 5 func get_objective_multiplier() -> float: - return 1.6 + return 1.8 func get_ship_dialog_path(level : int, _difficulty_setting : int, _ship_in_space := true) -> String: if level == 5: diff --git a/common/scene_manager/scripts/scenes/backrooms_scene.gd b/common/scene_manager/scripts/scenes/backrooms_scene.gd new file mode 100644 index 0000000..73d2e08 --- /dev/null +++ b/common/scene_manager/scripts/scenes/backrooms_scene.gd @@ -0,0 +1,17 @@ +extends Scene +class_name BackroomsScene + +func get_scene_id() -> String: + return "BACKROOMS" + +func get_scene_path() -> String: + return "res://stages/3d_scenes/backrooms/backrooms.tscn" + +func get_scene_title() -> String: + return "???" + +func is_mouse_captured() -> bool: + return true + +func is_needed_to_be_saved() -> bool: + return false \ No newline at end of file diff --git a/common/scene_manager/scripts/scenes/backrooms_scene.gd.uid b/common/scene_manager/scripts/scenes/backrooms_scene.gd.uid new file mode 100644 index 0000000..a8526f1 --- /dev/null +++ b/common/scene_manager/scripts/scenes/backrooms_scene.gd.uid @@ -0,0 +1 @@ +uid://dvfjj4bhdy55b diff --git a/common/steam_connection/steam_connection.gd b/common/steam_connection/steam_connection.gd index 6a567f8..06ef20a 100644 --- a/common/steam_connection/steam_connection.gd +++ b/common/steam_connection/steam_connection.gd @@ -16,6 +16,7 @@ const ACH_STW_HIT_10_INFINITE="STW_HIT_10_INFINITE" const ACH_STW_HIT_20_INFINITE="STW_HIT_20_INFINITE" const ACH_STW_HIT_30_INFINITE="STW_HIT_30_INFINITE" const ACH_STW_ALL_CASES="STW_ALL_CASES" +const ACH_STW_TOO_FAR="STW_TOO_FAR" func unlock_achievement(achivement_name : String): if Steam.isSteamRunning(): diff --git a/common/tools/scripts/random.gd b/common/tools/scripts/random.gd index 9d04925..c4107f0 100644 --- a/common/tools/scripts/random.gd +++ b/common/tools/scripts/random.gd @@ -6,6 +6,7 @@ const MAX_WORD_LEN = 8 const VOWEL = ["a","e","i","o","u","y"] const CONSONANTS = ["b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "z"] +#region ------------------ Plant Name ------------------ static func generate_random_word(_random_seed = randi()) -> String: if ( @@ -64,3 +65,135 @@ static func replace_character(word : String): word[character_id] = character return word + +#region ------------------ Region Name ------------------ + +const RANDOM_REGION_NAME_POOL = [ + "Pinouille", + "Hyugo", + "Dedana", + "Snowy", + "Eros", + "Snoop", + "Warmfuzzy", + "Sheepish", + "Nebula", + "Luna", + "Catapult", + "Kepler", + "Fabricius", + "Sagan", + "Lovelace", + "Torvalds", + "Turing", + "Asimov", + "Herbert", + "Wells", + "Pesquet", + "Tereshkova", + "Poiro", + "O'Malley", + "Dream", + "Cumulus", + "Pyrka", + "Pacho", + "Birdopia", + "Obsaya", + "Looping", + "Jarvis", + "Orion", + "Isitt", + "Pomoa", + "Ezeron", + "Ebis", + "Ecloya", + "Vlamedun", + "Faishostruc", + "Slazor", + "Plulune", + "Fledu", + "Jiclot", + "Greyun", + "Uasland", + "Ebimeron", + "Fosmule", + "Ushium", + "Nesnar", + "Broysau", + "Shiesal", + "Eblie", + "Ostraria", + "Scev", + "Nochuedan", + "Woshania", + "Eblor", + "Ochil", + "Speles", + "Oscesh", + "Estor", + "Lagronus", + "Relmania", + "Bobbeon", + "Peclite", + "Eivis", + "Drugantu", + "Latunides", + "Qisos", + "Bosos", + "Yesta", + "Nodeuria", + "Thosone", + "Zinuna", + "Viurus", + "Natis", + "Laduphus", + "Cebbaphus", + "Pungea", + "Vebos", + "Nebos", + "Dremili", + "Seganides", + "Icania", + "Aboulara", + "Guzadus", + "Dulmea", + "Kueli", + "Deothe", + "Gonides", + "Monvelib", + "Baccutum", + "Cimemia", + "Ricia", + "Nechov", + "Huphus", + "Maliat", + "Deaphus", +] + +const RANDOM_REGION_TYPE_POOL = [ + "REGION_TYPE_VALLEY", + "REGION_TYPE_HIGHLANDS", + "REGION_TYPE_HEIGHTS", + "REGION_TYPE_MOUNTAIN", + "REGION_TYPE_PEAKS", + "REGION_TYPE_HILLS", + "REGION_TYPE_PASS", + "REGION_TYPE_PLAIN", + "REGION_TYPE_CANAL", + "REGION_TYPE_FLATLANDS", + "REGION_TYPE_LABYRINTH", + "REGION_TYPE_REGION", + "REGION_TYPE_BARRIER", + "REGION_TYPE_CROWN", + "REGION_TYPE_SUMMIT", + "REGION_TYPE_PANORAMA", + "REGION_TYPE_EXPANSE", + "REGION_TYPE_GROUNDS", + "REGION_TYPE_PLATEAU", + "REGION_TYPE_FOOTHILLS", + "REGION_TYPE_CANYON", + "REGION_TYPE_RIDGE", + "REGION_TYPE_LANDSCAPE", +] + + diff --git a/common/vfx/materials/shaders/glitch.gdshader b/common/vfx/materials/shaders/glitch.gdshader new file mode 100644 index 0000000..dbd5eff --- /dev/null +++ b/common/vfx/materials/shaders/glitch.gdshader @@ -0,0 +1,38 @@ +// Stolent here : https://godotshaders.com/shader/glitch-double-vision/ +shader_type canvas_item; + +uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_nearest; +uniform float pixel_size : hint_range(1.0, 10.0) = 3.0; +uniform float vhs_intensity : hint_range(0.0, 10.0) = 3.0; +uniform float opacity : hint_range(0.0, 1.0) = 0.5; +uniform float double_vision_split : hint_range(0.0, 0.05) = 0.01; + +float random(vec2 uv) { + return fract(sin(dot(uv, vec2(12.9898, 78.233))) * 43758.5453123); +} + +void fragment() { + vec4 original_color = texture(SCREEN_TEXTURE, SCREEN_UV); + vec2 screen_res = vec2(textureSize(SCREEN_TEXTURE, 0)); + vec2 grid_uv = round(SCREEN_UV * (screen_res / pixel_size)) / (screen_res / pixel_size); + + float time_step = floor(TIME * 15.0); + float glitch = (random(vec2(time_step, floor(grid_uv.y * 30.0))) - 0.5) * 0.005 * vhs_intensity; + + vec2 uv = grid_uv; + uv.x += glitch; + + vec2 uv_red = uv + vec2(double_vision_split, 0.0); + vec2 uv_blue = uv - vec2(double_vision_split, 0.0); + + vec4 tex_red = texture(SCREEN_TEXTURE, uv_red); + vec4 tex_blue = texture(SCREEN_TEXTURE, uv_blue); + + vec3 red_vision = vec3(tex_red.r, 0.0, 0.0); + vec3 blue_vision = vec3(0.0, tex_blue.g, tex_blue.b); + vec3 vhs_color = red_vision + blue_vision; + + vec3 final_color = mix(original_color.rgb, vhs_color, opacity); + + COLOR = vec4(final_color, 1.0); +} \ No newline at end of file diff --git a/common/vfx/materials/shaders/glitch.gdshader.uid b/common/vfx/materials/shaders/glitch.gdshader.uid new file mode 100644 index 0000000..90ea26e --- /dev/null +++ b/common/vfx/materials/shaders/glitch.gdshader.uid @@ -0,0 +1 @@ +uid://ckowuw2qsgrks diff --git a/dialogs/timelines/1_waking_up/2_demeter_intro.dtl b/dialogs/timelines/1_waking_up/2_demeter_intro.dtl index 86a5d06..76a7be9 100644 --- a/dialogs/timelines/1_waking_up/2_demeter_intro.dtl +++ b/dialogs/timelines/1_waking_up/2_demeter_intro.dtl @@ -26,7 +26,7 @@ mysterious_demeter: I'm glad you're finally awake! To be honest, I wasn't sure I mysterious_demeter: I'm like you. A robot, an artificial intelligence, a machine... Our creators gave us several names. #id:136 mysterious_demeter: Okay, no more questions for now—listen closely. #id:137 -mysterious_demeter: A long time ago, this planet was full of life. Plants thrived in the mountains, beneath the seas, and across the plains. #id:138 +mysterious_demeter: A long time ago, our planet, Tau, was full of life. Plants thrived in the mountains, beneath the seas, and across the plains. #id:138 mysterious_demeter: But now, this world is a wasteland. You'll see when you step out of the base. #id:139 mysterious_demeter: Something happened last year... the [color=#FFA617][b]Talion[/b][/color]—a unique material capable of spawning new life forms when shattered—has reappeared. #id:13a mysterious_demeter: Now, with the help of this material, we can bring this planet back to life. #id:13b diff --git a/dialogs/timelines/1_waking_up/3_demeter_ship_presentation.dtl b/dialogs/timelines/1_waking_up/3_demeter_ship_presentation.dtl index 941b133..017349c 100644 --- a/dialogs/timelines/1_waking_up/3_demeter_ship_presentation.dtl +++ b/dialogs/timelines/1_waking_up/3_demeter_ship_presentation.dtl @@ -15,7 +15,7 @@ demeter: You are surely wondering where we are now... #id:143 audio "res://common/audio_manager/assets/sfx/dialogs/voices/great_2.wav" - Yes, among a lot of other questions ! So where am I ? #id:145 audio "res://common/audio_manager/assets/sfx/dialogs/voices/hmm_2.wav" - demeter: Actually, you are in one of fivehuman bases on this planet, [color=#FFA617][b]Astra[/b][/color]. This room is connected to the one where you were activated, but I had to make you travel across the surface to test your abilities. #id:146 + demeter: Actually, you are in one of five human bases on this planet, [color=#FFA617][b]Astra[/b][/color]. This room is connected to the one where you were activated, but I had to make you travel across the surface to test your abilities. #id:146 - Wait, can you explain what I did up there? #id:147 audio "res://common/audio_manager/assets/sfx/dialogs/voices/hmm_2.wav" demeter: You started replanting this planet, and in doing so, you generated plant energy that will be very useful to us... It's a long-term task; I hope you enjoy it! #id:148 diff --git a/dialogs/timelines/1_waking_up/5_mercury_arrival.dtl b/dialogs/timelines/1_waking_up/5_mercury_arrival.dtl index b06e46d..7e69cf8 100644 --- a/dialogs/timelines/1_waking_up/5_mercury_arrival.dtl +++ b/dialogs/timelines/1_waking_up/5_mercury_arrival.dtl @@ -7,7 +7,7 @@ demeter: I'm detecting the [color=#FFA617][b]Mercury base[/b][/color] from your audio "res://common/audio_manager/assets/sfx/dialogs/voices/hm-hm_1.wav" - Are you kidding? The battery is draining faster and faster, it's unbearable. #id:162 audio "res://common/audio_manager/assets/sfx/dialogs/voices/ohhh_2.wav" - + demeter: It's already impressive that nothing has exploded on the ship yet. #id:163 demeter: ... #id:164 demeter: Can we just pretend I didn't say anything? I really don't want to wipe your memory again. #id:165 @@ -21,7 +21,7 @@ demeter: Can we just pretend I didn't say anything? I really don't want to wipe - Wipe my memory? #id:16a audio "res://common/audio_manager/assets/sfx/dialogs/voices/sorry_1.wav" demeter: Let's just say you're not my first attempt... I don't want to discourage you as my previous attempts did... #id:16b - + demeter: Anyway, there's enough in the base to repair the Internode, and I even found some O-800 models, I mean models identical to yours. #id:16c demeter: I'd like you to find the base and synchronize your data with it. That will allow you to come back here if you run out of energy. #id:16d demeter: See you [color=#FFA617][b]Orchid[/b][/color] ! #id:16e diff --git a/dialogs/timelines/1_waking_up/92_borea_later.dtl b/dialogs/timelines/1_waking_up/92_borea_later.dtl index 930a0be..b244e84 100644 --- a/dialogs/timelines/1_waking_up/92_borea_later.dtl +++ b/dialogs/timelines/1_waking_up/92_borea_later.dtl @@ -1,6 +1,6 @@ - Hello, Demeter! #id:1c9 -... +... #id:2aa - Demeter? #id:1cb diff --git a/dialogs/timelines/3_subterra/2_subterra_energy.dtl b/dialogs/timelines/3_subterra/2_subterra_energy.dtl index 601740a..954f600 100644 --- a/dialogs/timelines/3_subterra/2_subterra_energy.dtl +++ b/dialogs/timelines/3_subterra/2_subterra_energy.dtl @@ -8,7 +8,7 @@ label energy_choice #id:238 jump energy_choice - Start experimental Talion generator #id:23d Injecting [color=#FFA617][b]Talion[/b][/color] into generator; starting up. #id:23e - + audio "res://common/audio_manager/assets/sfx/dialogs/sfx/freesound_community-generator-synthetic-63166.mp3" Energy flow unstable. 20% chance of incident #id:23f diff --git a/entities/plants/scripts/plant_mutation/tough_mutation.gd b/entities/plants/scripts/plant_mutation/tough_mutation.gd index 61a0a77..62ee7f3 100644 --- a/entities/plants/scripts/plant_mutation/tough_mutation.gd +++ b/entities/plants/scripts/plant_mutation/tough_mutation.gd @@ -25,7 +25,7 @@ func mutate_growing_time(_plant_data: PlantData, growing_time: int) -> int: return growing_time + maxi(0, get_growing_time_increase()) func get_growing_time_increase()->int: - return 2 + return 1 func get_score_multiplier()->float: return 0.5 * level diff --git a/entities/player/player.tscn b/entities/player/player.tscn index de00ec1..4d099bb 100644 --- a/entities/player/player.tscn +++ b/entities/player/player.tscn @@ -8,6 +8,8 @@ [ext_resource type="Script" uid="uid://b1mmtgmi5oq86" path="res://entities/player/scripts/player_sprite.gd" id="5_fkugw"] [ext_resource type="Texture2D" uid="uid://51255tpyl6vj" path="res://common/icons/no-bolt.svg" id="7_26q78"] [ext_resource type="AudioStream" uid="uid://cv5avkd3qekt7" path="res://common/audio_manager/assets/sfx/movement/movement.wav" id="7_qiwj3"] +[ext_resource type="PackedScene" uid="uid://edxmvtvtipwq" path="res://gui/game/alert/alert.tscn" id="9_bectd"] +[ext_resource type="Shader" uid="uid://ckowuw2qsgrks" path="res://common/vfx/materials/shaders/glitch.gdshader" id="10_wvtmh"] [sub_resource type="CircleShape2D" id="CircleShape2D_sglur"] radius = 13.0 @@ -284,6 +286,13 @@ _data = { &"float": SubResource("Animation_8fjmc") } +[sub_resource type="ShaderMaterial" id="ShaderMaterial_bectd"] +shader = ExtResource("10_wvtmh") +shader_parameter/pixel_size = 3.000000095 +shader_parameter/vhs_intensity = 1.0000000475 +shader_parameter/opacity = 0.5 +shader_parameter/double_vision_split = 0.0030000001425 + [node name="Player" type="CharacterBody2D" unique_id=447849413] script = ExtResource("1_abrql") @@ -317,7 +326,7 @@ position = Vector2(0.99999994, -17) scale = Vector2(0.221, 0.221) sprite_frames = SubResource("SpriteFrames_a1qjk") animation = &"left" -frame_progress = 0.2383069 +frame_progress = 0.9704077 offset = Vector2(0, -150) script = ExtResource("5_fkugw") wanted_orientation = 7 @@ -371,3 +380,21 @@ debug_use_custom = true debug_path_custom_color = Color(0.5882353, 0.7019608, 0.85882354, 0.3019608) debug_path_custom_point_size = 0.0 debug_path_custom_line_width = 1.0 + +[node name="LowSignalAlertCanvasLayer" type="CanvasLayer" parent="." unique_id=1137781278] +layer = 30 + +[node name="GlitchEffect" type="ColorRect" parent="LowSignalAlertCanvasLayer" unique_id=1835706901] +unique_name_in_owner = true +visible = false +material = SubResource("ShaderMaterial_bectd") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="LowSignalAlert" parent="LowSignalAlertCanvasLayer" unique_id=496897031 instance=ExtResource("9_bectd")] +unique_name_in_owner = true +title = "LOW_SIGNAL" +text = "RETURN_NEAR_PLANTATION_ZONE" diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index fd24797..4545614 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -8,6 +8,9 @@ const TURN_ANIMATION_MINIMUM_THRESHOLD = 0.2 const SPEED = 350 const JUST_DROPPED_ITEM_UPDATE_INTERVAL = 1. +const LOW_SIGNAL_ALERT_DISTANCE = 500 +const BACKROOM_DISTANCE = 2000 + signal player_updated(player: Player) signal upgraded @@ -30,11 +33,22 @@ var instruction : Instruction = null : if instruction and is_node_ready(): instruction.spawn_indicator(self) +var show_low_signal : bool = false : + set(v): + if is_node_ready(): + %GlitchEffect.visible = show_low_signal + if v and not show_low_signal: + %LowSignalAlert.appear() + elif not v and show_low_signal: + %LowSignalAlert.disappear() + show_low_signal = v + var just_dropped_item_objects : Array = [] var last_just_dropped_item_objects_updated := 0. var last_instruction_done := 0. var elapsed_time := 0. +var backrooms_loaded := false @onready var preview_zone : ActionZone = await setup_action_zone(Vector2.ZERO, null) @onready var action_zone : ActionZone = await setup_action_zone(Vector2.ZERO, null) @@ -122,6 +136,7 @@ func _process(delta): take_surrounding_seeds() move_and_slide() + handle_off_map() func _on_data_changed(pd : PlayerData): %NoEnergyLeftIcon.visible = pd.energy == 0 @@ -130,6 +145,17 @@ func _on_inventory_updated(_inventory: Inventory): setup_preview_zone(data.inventory.get_item()) emit_signal("player_updated", self) +func handle_off_map(): + show_low_signal = global_position.length() > Region.REGION_LIMIT + LOW_SIGNAL_ALERT_DISTANCE + + if global_position.length() > Region.REGION_LIMIT + BACKROOM_DISTANCE and not backrooms_loaded: + SteamConnection.unlock_achievement("ACH_STW_TOO_FAR") + backrooms_loaded = true + region.data.player_position = region.data.player_spawn + AudioManager.stop_all_ambiances() + AudioManager.stop_all_musics() + SceneManager.change_to_scene(BackroomsScene.new()) + func update_just_dropped_item_objects(): last_just_dropped_item_objects_updated = elapsed_time var overlapping_areas = (%InteractArea2D as Area2D).get_overlapping_areas() diff --git a/gui/game/alert/alert.tscn b/gui/game/alert/alert.tscn index 909a149..79a6d0f 100644 --- a/gui/game/alert/alert.tscn +++ b/gui/game/alert/alert.tscn @@ -19,7 +19,7 @@ length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("NoRechargeLeftBaneer:custom_minimum_size") +tracks/0/path = NodePath("Baneer:custom_minimum_size") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -31,26 +31,26 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("MarginContainer/Label:modulate") +tracks/1/path = NodePath(".:visible") 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, 0)] +"update": 1, +"values": [false] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath(".:visible") +tracks/2/path = NodePath(".:modulate:a") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 1, -"values": [false] +"values": [0.0] } [sub_resource type="Animation" id="Animation_bmajk"] @@ -71,26 +71,26 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("MarginContainer/Label:modulate") +tracks/1/path = NodePath("Baneer:custom_minimum_size") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0.06666667, 0.5), "transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +"values": [Vector2(0, 0), Vector2(0, 50)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("NoRechargeLeftBaneer:custom_minimum_size") -tracks/2/interp = 1 +tracks/2/path = NodePath(".:modulate:a") +tracks/2/interp = 2 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0.06666667, 0.5), +"times": PackedFloat32Array(0.06666667, 0.23333333), "transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [Vector2(0, 0), Vector2(0, 50)] +"values": [0.0, 1.0] } [sub_resource type="Animation" id="Animation_tr7ge"] @@ -99,7 +99,7 @@ length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("NoRechargeLeftBaneer:custom_minimum_size") +tracks/0/path = NodePath("Baneer:custom_minimum_size") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -111,7 +111,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("MarginContainer/Label:modulate") +tracks/1/path = NodePath("TitleLabel:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -139,7 +139,7 @@ length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("NoRechargeLeftBaneer:custom_minimum_size") +tracks/0/path = NodePath("Baneer:custom_minimum_size") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -151,7 +151,7 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("MarginContainer/Label:modulate") +tracks/1/path = NodePath("TitleLabel:modulate") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { @@ -183,31 +183,38 @@ _data = { [node name="Alert" type="VBoxContainer" unique_id=496897031] visible = false -anchors_preset = 10 +modulate = Color(1, 0.6509804, 0.09019608, 0) +anchors_preset = 15 anchor_right = 1.0 +anchor_bottom = 1.0 grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 2 theme = ExtResource("1_bmajk") -theme_override_constants/separation = 0 +theme_override_constants/separation = 19 +alignment = 1 script = ExtResource("2_tr7ge") -text = "Hello" -[node name="NoRechargeLeftBaneer" type="TextureRect" parent="." unique_id=23924313] +[node name="TitleLabel" type="Label" parent="." unique_id=1564390461] +unique_name_in_owner = true +layout_mode = 2 +label_settings = ExtResource("2_jqcc2") +horizontal_alignment = 1 + +[node name="Baneer" type="TextureRect" parent="." unique_id=23924313] layout_mode = 2 texture = SubResource("GradientTexture2D_j7f85") expand_mode = 1 stretch_mode = 1 +[node name="TextLabel" type="Label" parent="." unique_id=1261954978] +unique_name_in_owner = true +layout_mode = 2 +horizontal_alignment = 1 + [node name="MarginContainer" type="MarginContainer" parent="." unique_id=813474581] layout_mode = 2 -[node name="Label" type="Label" parent="MarginContainer" unique_id=1564390461] -unique_name_in_owner = true -modulate = Color(1, 1, 1, 0) -layout_mode = 2 -text = "Hello" -label_settings = ExtResource("2_jqcc2") -horizontal_alignment = 2 - [node name="AppearAnimationPlayer" type="AnimationPlayer" parent="." unique_id=1593798240] unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_jqcc2") diff --git a/gui/game/alert/scripts/alert.gd b/gui/game/alert/scripts/alert.gd index de84ae0..dd61ba5 100644 --- a/gui/game/alert/scripts/alert.gd +++ b/gui/game/alert/scripts/alert.gd @@ -2,11 +2,21 @@ extends VBoxContainer class_name Alert +@export var title = "" : + set(t): + title = t + if is_node_ready(): + %TitleLabel.text = t + @export var text = "" : set(t): text = t if is_node_ready(): - %Label.text = t + %TextLabel.text = t + +func _ready(): + title = title + text = text func appear( with_anim : bool = not visible diff --git a/gui/game/announce/scripts/announce.gd b/gui/game/announce/scripts/announce.gd index 5ddfd15..f81d09a 100644 --- a/gui/game/announce/scripts/announce.gd +++ b/gui/game/announce/scripts/announce.gd @@ -32,23 +32,30 @@ func _ready(): GameInfo.game_data.item_announced.append(i.name) ) - if ( - GameInfo.game_data.max_energy_announced != GameInfo.game_data.player_data.max_energy - ): - if GameInfo.game_data.max_energy_announced < GameInfo.game_data.player_data.max_energy: - announce_objects.append(AnnounceModel.new( - tr("UPGRADED_MAX_ENERGY_TO_%d") % GameInfo.game_data.player_data.max_energy - )) - GameInfo.game_data.max_energy_announced = GameInfo.game_data.player_data.max_energy + var player_max_energy = GameInfo.game_data.progression_data.get_story_step().get_player_max_energy( + GameInfo.game_data.current_run.difficulty_setting + ) + var player_max_inventory = GameInfo.game_data.progression_data.get_story_step().get_player_max_inventory( + GameInfo.game_data.current_run.difficulty_setting + ) if ( - GameInfo.game_data.max_inventory_announced != GameInfo.game_data.player_data.inventory.seeds_size + GameInfo.game_data.max_energy_announced != player_max_energy ): - if GameInfo.game_data.max_inventory_announced < GameInfo.game_data.player_data.inventory.seeds_size: + if GameInfo.game_data.max_energy_announced < player_max_energy: announce_objects.append(AnnounceModel.new( - tr("UPGRADED_INVENTORY_SIZE_TO_%d") % GameInfo.game_data.player_data.inventory.seeds_size + tr("UPGRADED_MAX_ENERGY_TO_%d") % player_max_energy )) - GameInfo.game_data.max_inventory_announced = GameInfo.game_data.player_data.inventory.seeds_size + GameInfo.game_data.max_energy_announced = player_max_energy + + if ( + GameInfo.game_data.max_inventory_announced != player_max_inventory + ): + if GameInfo.game_data.max_inventory_announced < player_max_inventory: + announce_objects.append(AnnounceModel.new( + tr("UPGRADED_INVENTORY_SIZE_TO_%d") % player_max_inventory + )) + GameInfo.game_data.max_inventory_announced = player_max_inventory diff --git a/gui/game/game_gui.tscn b/gui/game/game_gui.tscn index f4b826e..027fd9d 100644 --- a/gui/game/game_gui.tscn +++ b/gui/game/game_gui.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" uid="uid://cqao7n800qy40" path="res://gui/game/scripts/game_gui.gd" id="1_udau0"] [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_nq5i2"] -[ext_resource type="PackedScene" uid="uid://edxmvtvtipwq" path="res://gui/game/alert/alert.tscn" id="2_ykapk"] [ext_resource type="PackedScene" uid="uid://brfsapvj2quxm" path="res://gui/game/energy_info/energy_info.tscn" id="4_2wykm"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="6_2wykm"] [ext_resource type="PackedScene" uid="uid://df0eop555wfj5" path="res://gui/game/objective_progress_bar/objective_progress_bar.tscn" id="6_dr1y2"] @@ -111,10 +110,6 @@ grow_vertical = 2 mouse_filter = 2 texture = SubResource("GradientTexture2D_p6blc") -[node name="Alert" parent="." unique_id=496897031 instance=ExtResource("2_ykapk")] -unique_name_in_owner = true -modulate = Color(1, 0, 0.43137252, 1) - [node name="ScoreParticles" type="Control" parent="." unique_id=842190807] unique_name_in_owner = true layout_mode = 3 diff --git a/project.godot b/project.godot index 5ae31c6..85ba2be 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="0.1.0" +config/version="0.1.1" run/main_scene="uid://c5bruelvqbm1k" config/features=PackedStringArray("4.7", "Forward Plus") boot_splash/bg_color=Color(0.0627451, 0.05882353, 0.16862746, 1) @@ -119,7 +119,7 @@ translation/add_separator=false variables={ "estia_dialog_choice": 0 } -translation/id_counter=681 +translation/id_counter=682 translation/locales=[] history/visited_event_history_enabled=true audio/type_sound_bus="Sfx" diff --git a/stages/3d_scenes/backrooms/backrooms.tscn b/stages/3d_scenes/backrooms/backrooms.tscn index a3f1324..e338a43 100644 --- a/stages/3d_scenes/backrooms/backrooms.tscn +++ b/stages/3d_scenes/backrooms/backrooms.tscn @@ -3,6 +3,8 @@ [ext_resource type="Script" uid="uid://cwvmwpcuvo4mq" path="res://stages/3d_scenes/backrooms/scripts/backrooms.gd" id="1_5hv6p"] [ext_resource type="PackedScene" uid="uid://iu6snlm18qqj" path="res://stages/3d_scenes/backrooms/resources/backroom.blend" id="2_xnw3x"] [ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_7gjj1"] +[ext_resource type="AudioStream" uid="uid://cr0m1m31ityxl" path="res://stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3" id="4_7gjj1"] +[ext_resource type="PackedScene" uid="uid://b2tn4biidxwdo" path="res://entities/player_3d/dead_orchid.tscn" id="5_msdly"] [sub_resource type="Environment" id="Environment_y4ueh"] background_energy_multiplier = 1.01 @@ -24,7 +26,7 @@ environment = SubResource("Environment_y4ueh") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0022678375, -0.0022674203, 0.00014042854) [node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_7gjj1")] -transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.18744713, 1.1111141, 4.915328) +transform = Transform3D(0.98413754, 0, -0.17740725, 0, 1, 0, 0.17740725, 0, 0.98413754, -0.18744713, 1.1111141, -67.26987) [node name="Outline" parent="Player3D/Camera3D" parent_id_path=PackedInt32Array(549819967, 2091917091) index="0" unique_id=1477584785] visible = false @@ -32,4 +34,19 @@ visible = false [node name="InteractTutorial" parent="Player3D/CanvasLayer/3dTutorial" parent_id_path=PackedInt32Array(549819967, 259323543) index="1" unique_id=1117243867] visible = false +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=705358424] +stream = ExtResource("4_7gjj1") +volume_db = 0.479 +autoplay = true +bus = &"Ambiance" + +[node name="DeadOrchid" parent="." unique_id=1056532235 instance=ExtResource("5_msdly")] +transform = Transform3D(0.1392759, 0.34471768, 0.9283167, -0.05114577, 0.9387064, -0.3409023, -0.9889319, 0, 0.14837003, 4.0246277, 0.4754955, -96.991806) + +[node name="DeadOrchid2" parent="." unique_id=1647290799 instance=ExtResource("5_msdly")] +transform = Transform3D(0.1392759, 0.34471768, 0.9283167, -0.05114577, 0.9387064, -0.3409023, -0.9889319, 0, 0.14837003, 36.75826, 0.4754955, -55.182575) + +[node name="DeadOrchid3" parent="." unique_id=1088417260 instance=ExtResource("5_msdly")] +transform = Transform3D(0.1392759, 0.34471768, 0.9283167, -0.05114577, 0.9387064, -0.3409023, -0.9889319, 0, 0.14837003, 5.560206, 0.4754955, -123.28887) + [editable path="Player3D"] diff --git a/stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3 b/stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3 new file mode 100644 index 0000000..e119dd4 Binary files /dev/null and b/stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3 differ diff --git a/stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3.import b/stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3.import new file mode 100644 index 0000000..8bd5067 --- /dev/null +++ b/stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3.import @@ -0,0 +1,19 @@ +[remap] + +importer="mp3" +type="AudioStreamMP3" +uid="uid://cr0m1m31ityxl" +path="res://.godot/imported/freesound_community-neonlight_highpitch-7058.mp3-271ea6e3bc4882988338869dcd4c4fb0.mp3str" + +[deps] + +source_file="res://stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3" +dest_files=["res://.godot/imported/freesound_community-neonlight_highpitch-7058.mp3-271ea6e3bc4882988338869dcd4c4fb0.mp3str"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn b/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn index 20334e3..97532e5 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn @@ -100,7 +100,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0, 0.5, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, -"values": [Vector3(1, 1, 1), Vector3(1.2, 1.2, 1.2), Vector3(1, 1, 1)] +"values": [Vector3(1, 1, 1), Vector3(1.1, 1.1, 1.1), Vector3(1, 1, 1)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_2ofl5"] @@ -147,7 +147,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0, 0.5, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, -"values": [Vector3(1, 1.0000002, 1), Vector3(1.2, 1.2, 1.2), Vector3(1, 1.0000002, 1)] +"values": [Vector3(1, 1.0000002, 1), Vector3(1.1, 1.1, 1.1), Vector3(1, 1.0000002, 1)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_h8fs1"] @@ -191,7 +191,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0.033333335, 0.53333336, 1), "transitions": PackedFloat32Array(1, 1, 1), "update": 0, -"values": [Vector3(1, 1.0000002, 1), Vector3(1.2, 1.2, 1.2), Vector3(1, 1.0000002, 1)] +"values": [Vector3(1, 1.0000002, 1), Vector3(1.1, 1.1, 1.1), Vector3(1, 1.0000002, 1)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_cvt2p"] @@ -208,7 +208,6 @@ metadata/_custom_type_script = "uid://fnu2d6wna4yc" [node name="Dashboard" type="Node3D" unique_id=1374334508] script = ExtResource("1_vks67") -destination_text = null [node name="Background" type="Sprite3D" parent="." unique_id=747271324] transform = Transform3D(-1, 0, 8.742278e-08, 5.2901907e-08, 0.79612875, 0.6051273, -6.9599785e-08, 0.6051273, -0.79612875, 0, 0.85765254, 1.1502768) @@ -286,7 +285,7 @@ vertical_alignment = 1 [node name="DestinationScreen" type="Sprite3D" parent="." unique_id=1472417379] unique_name_in_owner = true -transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.4130048, 1.044728) +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.5415668, 0.71455646) pixel_size = 0.003 texture = SubResource("ViewportTexture_y1ysr") @@ -337,8 +336,8 @@ metadata/_custom_type_script = "uid://bj4d1x8n8ina" shape = SubResource("SphereShape3D_vlkbw") [node name="MainScreenSprite" type="Sprite3D" parent="MainScreen" unique_id=1081515212] -transform = Transform3D(-1, 8.0014914e-08, 5.4146472e-08, 7.923836e-08, 0.35859588, 0.9334929, 5.5276644e-08, 0.9334929, -0.35859588, 0, 0, 0) -pixel_size = 0.003 +transform = Transform3D(-1, 8.0014914e-08, 5.4146472e-08, 7.923836e-08, 0.35859588, 0.9334929, 5.5276644e-08, 0.9334929, -0.35859588, 0, -0.0066892505, 0) +pixel_size = 0.002 texture = SubResource("ViewportTexture_qbi61") [node name="SubViewport" type="SubViewport" parent="MainScreen/MainScreenSprite" unique_id=1101534363] diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_main_screen.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_main_screen.gd index b29d502..b856d3e 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_main_screen.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_main_screen.gd @@ -30,11 +30,12 @@ func set_state(s := state): interactable = true State.READY_TO_LAND: icon.texture = LAND_ICON - label.text = tr("LAND_SHIP") + label.text = tr("LAND_SHIP_IN_%S") % run_point.region_parameter.get_region_name() interactable = true + inspectable = true State.WAITING_CHOICE: icon.texture = WAITING_ICON - label.text = "" + label.text = "CHOOSE_A_REGION" State.LANDED: icon.texture = RUN_POINT_ICON label.text = "" if not run_point else run_point.region_parameter.get_region_name() diff --git a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd index 88ee094..f7ffe39 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd @@ -65,6 +65,7 @@ func update_dialogs(): if len(phone_dialogs): + await get_tree().create_timer(randf_range(0.5,3.)).timeout ring_phone() @@ -104,9 +105,8 @@ func _on_main_screen_activated(): land.emit() GameInfo.game_data.ship_in_space = false %PlantInfoScreen.update_plant_info() - get_tree().create_timer(randf_range(0,3)).timeout.connect( - func(): update_dialogs() - ) + update_dialogs() + else : take_off.emit() GameInfo.game_data.ship_in_space = true @@ -116,9 +116,7 @@ func _on_main_screen_activated(): var gauge_tween = get_tree().create_tween() gauge_tween.tween_property(%Gauge3D,"progress",0,3.) - get_tree().create_timer(randf_range(0,3)).timeout.connect( - func(): update_dialogs() - ) + update_dialogs() %Exit.interactable = can_exit() update_dashboard() @@ -161,6 +159,7 @@ func update_dashboard(with_animation := true): if GameInfo.game_data.ship_in_space: if choosen_run_point: + dashboard.main_screen_run_point = choosen_run_point dashboard.main_screen_state = DashboardMainScreen.State.READY_TO_LAND dashboard.status_text = "" else: diff --git a/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend b/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend index 18e382f..a325280 100644 Binary files a/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend and b/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend differ diff --git a/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend.import b/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend.import index 2b4b844..d148c61 100644 --- a/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend.import +++ b/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend.import @@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/vending_machine.blend-d2b640c8f4d0c595cec0b5e nodes/root_type="" nodes/root_name="" nodes/root_script=null +mesh_library/use_node_names_as_mesh_names=false +array_mesh/deduplicate_surfaces=true nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false @@ -57,7 +59,7 @@ blender/nodes/punctual_lights=true blender/nodes/cameras=true blender/nodes/custom_properties=true blender/nodes/modifiers=1 -blender/meshes/colors=false +blender/meshes/vertex_colors=2 blender/meshes/uvs=true blender/meshes/normals=true blender/meshes/export_geometry_nodes_instances=false @@ -71,3 +73,4 @@ blender/animation/limit_playback=true blender/animation/always_sample=true blender/animation/group_tracks=true gltf/naming_version=2 +gltf/texture_map_mode=0 diff --git a/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend1 b/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend1 new file mode 100644 index 0000000..1549e5f Binary files /dev/null and b/stages/3d_scenes/vending_machine_room/assets/3d/vending_machine.blend1 differ diff --git a/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd b/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd index 1e7e718..211fc96 100644 --- a/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd +++ b/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd @@ -17,7 +17,7 @@ signal used @export_tool_button("Fall Object 1", "Callable") var fall_object_2_action = fall_object_2 @export var state : State = State.CHOOSE : set = set_state -@export var choose_state : ChooseState = ChooseState.NONE +@export var choose_state : ChooseState = ChooseState.NONE : set = set_choose_state @export var artefact_1 : Artefact = null : set = set_artefact_1 @export var artefact_2 : Artefact = null : set = set_artefact_2 @export var price : VendingMachinePrice = null : set = set_price @@ -39,6 +39,7 @@ func update(): set_artefact_2() set_state() set_price() + set_choose_state() func set_state(s := state): state = s @@ -105,6 +106,12 @@ func set_price(p := price): %PayIcon.modulate = Color.WHITE if p.can_pay(GameInfo.game_data.player_data) else Color.RED price = p +func set_choose_state(cs := choose_state): + if is_node_ready(): + %SelectTop.visible = cs == ChooseState.FIRST + %SelectBottom.visible = cs == ChooseState.SECOND + choose_state = cs + func fall_object_1(): fall_object([ %Line1, diff --git a/stages/3d_scenes/vending_machine_room/vending_machine_3d.tscn b/stages/3d_scenes/vending_machine_room/vending_machine_3d.tscn index 5f52207..cdba081 100644 --- a/stages/3d_scenes/vending_machine_room/vending_machine_3d.tscn +++ b/stages/3d_scenes/vending_machine_room/vending_machine_3d.tscn @@ -9,6 +9,7 @@ [ext_resource type="Texture2D" uid="uid://3slhocr5wy3w" path="res://common/icons/hand-stop.svg" id="6_c54xj"] [ext_resource type="Texture2D" uid="uid://cwewx7cdy085h" path="res://common/icons/help-hexagon.svg" id="7_1vufv"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="8_5gq8t"] +[ext_resource type="Texture2D" uid="uid://80gifgp26h2g" path="res://common/icons/check.svg" id="9_ia2hc"] [ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="9_p1py0"] [ext_resource type="Script" uid="uid://cpdtt25r2ne23" path="res://stages/3d_scenes/vending_machine_room/scripts/vending_machine_select_interactable.gd" id="10_js246"] [ext_resource type="AudioStream" uid="uid://bynxc84w03so4" path="res://stages/3d_scenes/vending_machine_room/assets/sounds/alex_jauk-vending-machines-ambient-noise-236027.mp3" id="12_js246"] @@ -72,6 +73,23 @@ viewport_path = NodePath("PriceScreen/PriceScreenContent") font = ExtResource("8_5gq8t") font_size = 30 +[sub_resource type="Gradient" id="Gradient_vrdoi"] +colors = PackedColorArray(1, 0, 0.4333334, 0.78431374, 1, 0.6511667, 0.089999974, 0.78431374) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_g4v7s"] +gradient = SubResource("Gradient_vrdoi") +width = 102 +height = 42 +fill_from = Vector2(0.5, 1) +fill_to = Vector2(0.5, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_ia2hc"] +gradient = SubResource("Gradient_vrdoi") +width = 109 +height = 47 +fill_from = Vector2(0.5, 1) +fill_to = Vector2(0.5, 0) + [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_p1py0"] radius = 0.23339844 height = 1.2451172 @@ -242,6 +260,32 @@ texture = ExtResource("9_p1py0") expand_mode = 1 stretch_mode = 5 +[node name="SelectTop" type="Sprite3D" parent="." unique_id=1013628083] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.09805095, 0.83888793, -0.5682117) +shaded = true +texture = SubResource("GradientTexture2D_g4v7s") + +[node name="Sprite3D" type="Sprite3D" parent="SelectTop" unique_id=1049079427] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, -0.018707275) +pixel_size = 0.005 +shaded = true +double_sided = false +texture = ExtResource("9_ia2hc") + +[node name="SelectBottom" type="Sprite3D" parent="." unique_id=656087871] +unique_name_in_owner = true +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.09805095, 0.3876989, -0.5682117) +shaded = true +texture = SubResource("GradientTexture2D_ia2hc") + +[node name="Sprite3D" type="Sprite3D" parent="SelectBottom" unique_id=1406817348] +transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, -0.018707275) +pixel_size = 0.005 +shaded = true +double_sided = false +texture = ExtResource("9_ia2hc") + [node name="Select1Interactable" type="Area3D" parent="." unique_id=957239971] unique_name_in_owner = true transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.08462322, 0.884176, -0.18582645) @@ -328,7 +372,6 @@ bus = &"Sfx" [node name="ArtefactAnnounce" parent="." unique_id=1447182082 instance=ExtResource("13_tvcj6")] unique_name_in_owner = true -visible = false announce_artefact = null [connection signal="clicked" from="Select1Interactable" to="." method="_on_select_1_interactable_clicked"] diff --git a/stages/terrain/region/scripts/region.gd b/stages/terrain/region/scripts/region.gd index 656b11f..59f922b 100644 --- a/stages/terrain/region/scripts/region.gd +++ b/stages/terrain/region/scripts/region.gd @@ -49,26 +49,26 @@ var data_last_updated = 0. var plant_grid : PlantGrid # Cheat Code -func _input(_e): - if ( - Input.is_action_pressed("drop") - and Input.is_action_pressed("move_right") - and Input.is_action_pressed("move_left") - and Input.is_action_just_pressed("action") - ): - if data.state != RegionData.State.SUCCEEDED: - data.succeded.emit() - data.state = RegionData.State.SUCCEEDED - # data.update() +# func _input(_e): +# if ( +# Input.is_action_pressed("drop") +# and Input.is_action_pressed("move_right") +# and Input.is_action_pressed("move_left") +# and Input.is_action_just_pressed("action") +# ): +# if data.state != RegionData.State.SUCCEEDED: +# data.succeded.emit() +# data.state = RegionData.State.SUCCEEDED +# # data.update() - if ( - Input.is_action_pressed("drop") - and Input.is_action_pressed("move_right") - and Input.is_action_pressed("move_left") - and Input.is_action_just_pressed("move_pointer") - ): - data.charges = 0 - data.state = RegionData.State.FAILED +# if ( +# Input.is_action_pressed("drop") +# and Input.is_action_pressed("move_right") +# and Input.is_action_pressed("move_left") +# and Input.is_action_just_pressed("move_pointer") +# ): +# data.charges = 0 +# data.state = RegionData.State.FAILED func _init(): data = GameInfo.game_data.current_region_data diff --git a/stages/terrain/region/scripts/region_data.gd b/stages/terrain/region/scripts/region_data.gd index add77b8..0e5a68e 100644 --- a/stages/terrain/region/scripts/region_data.gd +++ b/stages/terrain/region/scripts/region_data.gd @@ -69,7 +69,7 @@ func _init( charges = parameter.get_charge() objective = parameter.get_objective() region_first_name = parameter.region_first_name; - region_name_key = parameter.region_name_key; + region_name_key = parameter.region_type_key; region_seed = parameter.get_region_seed() rock_threshold = parameter.get_rock_threshold() decontamination_threshold = parameter.get_decontamination_threshold() diff --git a/stages/terrain/region/scripts/region_parameter.gd b/stages/terrain/region/scripts/region_parameter.gd index ef52215..f130911 100644 --- a/stages/terrain/region/scripts/region_parameter.gd +++ b/stages/terrain/region/scripts/region_parameter.gd @@ -15,50 +15,31 @@ const REGION_TYPES_CSV := "res://translation/names/location_types.csv" const REGION_NAMES_FILE := "res://translation/names/location_names.csv" @export var region_first_name: String -@export var region_name_key: String +@export var region_type_key: String @export var objective: int @export var charge: int @export var region_seed: int @export var modifiers: Array[RegionModifier] func _init( - _name = "", + _region_first_name : String = "", + _region_type_key : String = "", _modifiers: Array[RegionModifier] = [], _region_seed = randi(), ): - set_random_region_name() + region_first_name = _region_first_name + region_type_key = _region_type_key modifiers = _modifiers region_seed = _region_seed - -func get_random_region_first_name() -> String: - var name_file := FileAccess.open(REGION_NAMES_FILE, FileAccess.READ) - var n_names := name_file.get_line().to_int() - var name_ind := randi_range(0, n_names) - var first_name := name_file.get_line() - for i in range(name_ind): - first_name = name_file.get_line() - return first_name - -func get_random_region_name_key() -> String: - var place_file := FileAccess.open(REGION_TYPES_CSV, FileAccess.READ) - var n_places := place_file.get_line().split(",")[0].to_int() - var place_ind := randi_range(0, n_places) - var place_key := place_file.get_line().split(",")[0] - for i in range(place_ind): - place_key = place_file.get_line().split(",")[0] - return place_key - -func set_random_region_name(): - region_first_name = get_random_region_first_name() - if randf() > JUST_NAME_PROBABILITY: - region_name_key = get_random_region_name_key() - else: - region_name_key = "" + + if region_first_name == "" or region_type_key == "": + region_first_name = Random.RANDOM_REGION_NAME_POOL.pick_random() + region_type_key = Random.RANDOM_REGION_TYPE_POOL.pick_random() func get_region_name() -> String: var n := region_first_name - if region_name_key != "": - n = tr(region_name_key).format({"name": region_first_name}) + if region_type_key != "": + n = tr(region_type_key).format({"name": region_first_name}) for m in modifiers: n = m.modify_region_name(n) diff --git a/stages/title_screen/scripts/title_screen.gd b/stages/title_screen/scripts/title_screen.gd index f6418b2..2919b90 100644 --- a/stages/title_screen/scripts/title_screen.gd +++ b/stages/title_screen/scripts/title_screen.gd @@ -76,7 +76,7 @@ func _process(delta): %Planet3d.rotate(Vector3.UP, planet_rotation.x * delta) %Planet3d.rotate(Vector3.RIGHT, planet_rotation.y * delta) - if not planet_spin_ach_sended and planet_rotation.length() > 100: + if not planet_spin_ach_sended and planet_rotation.length() > 200: planet_spin_ach_sended = true SteamConnection.unlock_achievement(SteamConnection.ACH_SPIN_PLANET) diff --git a/translation/dialogs/dialogic_2_demeter_intro_translation.csv b/translation/dialogs/dialogic_2_demeter_intro_translation.csv index cf34fef..b1f89db 100644 --- a/translation/dialogs/dialogic_2_demeter_intro_translation.csv +++ b/translation/dialogs/dialogic_2_demeter_intro_translation.csv @@ -21,7 +21,7 @@ Choice/135/text,What are you?,Qu'est-ce que vous êtes ? Choice/135/disabled_text,, Text/136/text,"I'm like you. A robot, an artificial intelligence, a machine... Our creators gave us several names.","Je suis comme toi. Un robot, une intelligence artificielle, une machine... Nos créateurs nous ont donné plusieurs noms." Text/137/text,"Okay, no more questions for now—listen closely.","Ok, plus de questions pour le moment, écoute-moi bien." -Text/138/text,"A long time ago, this planet was full of life. Plants thrived in the mountains, beneath the seas, and across the plains.","Il y a longtemps, cette planète était pleine de vie. Des plantes prospéraient dans les montagnes, sous les mers et sur les plaines." +Text/138/text,"A long time ago, our planet, Tau, was full of life. Plants thrived in the mountains, beneath the seas, and across the plains.","Il y a longtemps, notre planète, Tau, était pleine de vie. Des plantes prospéraient dans les montagnes, sous les mers et sur les plaines." Text/139/text,"But now, this world is a wasteland. You'll see when you step out of the base.","Mais maintenant, ce monde est une terre désolée. Tu verras quand tu sortiras de la base." Text/13a/text,Something happened last year... the [color=#FFA617][b]Talion[/b][/color]—a unique material capable of spawning new life forms when shattered—has reappeared.,"Quelque-chose est arrivé l'année dernière... Le [color=#FFA617][b]Talion[/b][/color], un matériau unique qui peut engendrer de nouvelles formes de vies quand il est brisé, est réapparu." Text/13b/text,"Now, with the help of this material, we can bring this planet back to life.","Maintenant et avec l'aide de ce matériau, on peut ramener cette planète à la vie." diff --git a/translation/dialogs/dialogic_3_demeter_ship_presentation_translation.csv b/translation/dialogs/dialogic_3_demeter_ship_presentation_translation.csv index 1925b06..6a188a4 100644 --- a/translation/dialogs/dialogic_3_demeter_ship_presentation_translation.csv +++ b/translation/dialogs/dialogic_3_demeter_ship_presentation_translation.csv @@ -8,7 +8,7 @@ Choice/144/text,"No, everything is perfectly clear to me!","Non, tout est parfai Choice/144/disabled_text,, Choice/145/text,"Yes, among a lot of other questions ! So where am I ?","Oui, c'est l'une de mes nombreuses questions ! Où suis-je ?" Choice/145/disabled_text,, -Text/146/text,"Actually, you are in one of fivehuman bases on this planet, [color=#FFA617][b]Astra[/b][/color]. This room is connected to the one where you were activated, but I had to make you travel across the surface to test your abilities.","En fait, tu es dans l'une des 5 bases humaines de cette planète, [color=#FFA617][b]Astra[/b][/color]. Cette salle est connectée à celle où tu t'es réveillé, mais je t'ai fait passer par la surface pour tester tes capacités." +Text/146/text,"Actually, you are in one of five human bases on this planet, [color=#FFA617][b]Astra[/b][/color]. This room is connected to the one where you were activated, but I had to make you travel across the surface to test your abilities.","En fait, tu es dans l'une des 5 bases humaines de cette planète, [color=#FFA617][b]Astra[/b][/color]. Cette salle est connectée à celle où tu t'es réveillé, mais je t'ai fait passer par la surface pour tester tes capacités." Choice/147/text,"Wait, can you explain what I did up there?","Attendez, pouvez-vous m'expliquer ce que j'ai fait là-haut ?" Choice/147/disabled_text,, Text/148/text,"You started replanting this planet, and in doing so, you generated plant energy that will be very useful to us... It's a long-term task; I hope you enjoy it!","Tu as commencé à replanter cette planète, et par la même occasion, tu as généré de l'énergie végétale qui nous sera très utile... C'est un travail de longue haleine, j'espère que ça te plaît !" diff --git a/translation/dialogs/dialogic_92_borea_later_translation.csv b/translation/dialogs/dialogic_92_borea_later_translation.csv index 688fd0e..e6481a6 100644 --- a/translation/dialogs/dialogic_92_borea_later_translation.csv +++ b/translation/dialogs/dialogic_92_borea_later_translation.csv @@ -1,7 +1,7 @@ keys,en,fr Choice/1c9/text,"Hello, Demeter!",Bonjour Demeter ! Choice/1c9/disabled_text,, -Text/1ca/text,...,... +Text/2aa/text,...,... Choice/1cb/text,Demeter?,Demeter ? Choice/1cb/disabled_text,, Text/1cc/text,Oh... You've woken up... I see... Your low battery must have triggered an emergency startup...,Oh... Tu t'es réveillé... Je vois... Ton manque de batterie a dû effectuer un réveil d'urgence... @@ -29,9 +29,9 @@ Text/1da/text,"Explore the world? Why not, after all? I've seen so much already, Choice/1db/text,I want to help you.,Je veux t'aider Choice/1db/disabled_text,, Text/1dc/text,"Orchid... You can't help me right now; together, we wouldn't be able to restore everything for the humans...","Orchid... Tu ne peux plus m'aider pour le moment, à nous deux nous ne pourrons pas remettre tout en état pour les humains..." -Choice/1dd/text,I want to replant this planet.,e veux replanter cette planète +Choice/1dd/text,I want to replant this planet.,Je veux replanter cette planète Choice/1dd/disabled_text,, -Text/1de/text,"Replant it? But if we can no longer make it habitable for humans, I don't quite understand the purpose.","a replanter ? Mais si nous ne pouvons plus la mettre en état pour les humains, je ne comprends pas bien dans quel but." +Text/1de/text,"Replant it? But if we can no longer make it habitable for humans, I don't quite understand the purpose.","La replanter ? Mais si nous ne pouvons plus la mettre en état pour les humains, je ne comprends pas bien dans quel but." Text/1df/text,"Well, if you really want to do something, I suppose you could...","Enfin si tu veux vraiment faire quelque chose, j'imagine que tu pourrais..." Text/1e0/text,"The last AI I spoke to is named Poseidon, and its servers are located in an underwater base not far from here.","La dernière IA avec laquelle j'ai parlé s'appelle Poséidon, et ses serveurs se trouvent dans une base sous-marine pas très loin d'ici." Text/1e1/text,I suppose you could go and see what's going on there.,J'imagine que tu pourrais aller voir ce qu'il s'y passe. diff --git a/translation/game/gui.csv b/translation/game/gui.csv index 579a99b..200c225 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -191,7 +191,7 @@ RECHARGE_STATION_DESC_TEXT,"[b]You can recharge yourself here.[/b] When rechargi TALION_CRISTAL,Talion Crystal,Cristal de Talion TALION_CRISTAL_DESC_TEXT,"A pure form of Talion, cannot be broken or used","Une forme pure de Talion, ne peut pas être cassé ou utilisé" TALION_CELL,Talion Cell,Cellule de Talion -TALION_CELL_DESC_TEXT,"This cell is filled with liquid form of Talion, let's see what's inside!","Cette cellule est remplie d'une forme liquide de Talio, voyons ce qu'il y a à l'intérieur !" +TALION_CELL_DESC_TEXT,"This cell is filled with liquid form of Talion, let's see what's inside!","Cette cellule est remplie d'une forme liquide de Talion, voyons ce qu'il y a à l'intérieur !" ENERGY_CELL,Energy Cell,Cellule d'énergie ENERGY_CELL_DESC_TEXT,"Some energy remain on this cell... Might be usefull. Can only be used when Orchid's energy is not full.","De l'énergie reste dans cette cellule... Cela pourra être utile. Peut seulement être utilisée si Orchid n'est pas complètement rechargé." LISTEN_MESSAGE,"Listen message","Lire le message" @@ -284,6 +284,7 @@ GIVE_UP,Give Up,Abandonner DESTINATION,Destination,Destination LOCATION,Location,Location LAND_SHIP,Land Ship,Atterrir +LAND_SHIP_IN_%S,Land Ship in %s,Atterrir à %s TAKE_OFF,Take Off,Décoller NO_MORE_ENERGY,No more energy,Plus assez d'énergie NO_RECHARGE_LEFT,"No recharge left, go to the ship to respawn","Pas de recharge restante, aller sur le vaisseau pour recommencer" @@ -436,3 +437,5 @@ CONNECT_TO_HADES,Connect to Hades,Se connecter à Hadès CONNECT_TO_ATHENA,Connect to Athena,Se connecter à Athéna NO_ENERGY,No Energy,Pas d'énergie THANK_YOU_FOR_YOUR_PURCHASE,Thank you for your purchase,Merci pour votre achat +LOW_SIGNAL,Low Signal,Signal Faible +RETURN_NEAR_PLANTATION_ZONE,Return near plantation zone,Retournez près de la zone de plantation diff --git a/translation/game/logs.csv b/translation/game/logs.csv index b70ed4d..e3085ac 100644 --- a/translation/game/logs.csv +++ b/translation/game/logs.csv @@ -18,7 +18,7 @@ Demeter: Certainly; my systems were successfully installed exactly 12 seconds ag User 47: Well, it's about time. Any news from Zeus? Demeter: The entity Zeus has been attempting to contact me for precisely one hour and 37 minutes. User 47: He's relentless! Alright, perfect—send him your report. In the meantime, can you remind me of the outside temperature? -Demeter: On the north face of Tau, the temperature is currently 32 degrees Celsius, and the air is 96% breathable. +Demeter: On the north face of the planet Tau, the temperature is currently 32 degrees Celsius, and the air is 96% breathable. User 47: Very well, I should get ready now... One last thing: can you list your functions? Demeter: My primary function is to ensure survival and assist humans, taking precedence over any other directives. Would you like me to detail the rest of my functions? User 47: No, that's fine! Start a comprehensive diagnostic; I'll ask for the results when I get back from the excursion.","[color=#FFA617][b]Connexion de l'utilisateur 47 sur le terminal Boréa 193[/b][/color] @@ -39,7 +39,7 @@ Demeter: Bien sûr, mes systèmes ont été correctement installés il y a exact Utilisateur 47: Et bah, c'est pas trop tôt, des nouvelles de Zeus ? Demeter: L'entité Zeus tente de me contacter depuis précisément une heure et 37 minutes. Utilisateur 47: Oh le forceur ! Bon parfait, envoie lui ton rapport. En attendant est-ce que tu peux me rappeler la température extérieure ? -Demeter: Sur la face nord de Tau, il fait actuellement 32 degrés Celsius et l'air y est respirable à 96%. +Demeter: Sur la face nord de la planète Tau, il fait actuellement 32 degrés Celsius et l'air y est respirable à 96%. Utilisateur 47: Très bien, je devrais me préparer maintenant... Une dernière chose, est-ce que tu peux m'énoncer tes fonctions ? Demeter: Ma fonction première est d'assurer la survie et d'assister les humains, au détriment de n'importe quelle directive. Veux-tu que je détaille le reste de mes fonctions ? Utilisateur 47: Non ça ira ! Commence un diagnostic approfondi, je te demanderai le résultat quand je serais revenue de l'excursion." @@ -72,7 +72,7 @@ Utilisateurs 47: Demeter, tu ne m'aides pas du tout là ! LOG_PLANET_DISCOVERY_2_TITLE_TEXT,"3152 - Planet Discovery 2","3152 - Découverte de la planète 2" LOG_PLANET_DISCOVERY_2_CONTENT_TEXT,"[color=#FFA617][b]User 47 connecting via relay antenna 502[/b][/color] [i]Corrupted data[/i] -User 47: So, that's why we ended up on Tau. +User 47: So, that's why we ended up on the planet Tau. Demeter: Thank you; I didn't have that information in my knowledge base. User 47: No problem, Demeter—don't hesitate to ask if you have any other questions! Demeter: Sandy, you have now walked exactly one mile from your spacecraft. Please keep an eye on your heart rate; the ambient air, while breathable, hasn't been fully tested yet, and the billions of species on this planet could all... @@ -86,7 +86,7 @@ User 47: It's an... orange crystal, just like the moss covering the ground. Demeter: I've noticed it scattered all over the ground via the cameras at my disposal. User 47: And... how strange... New plants are sprouting right before my eyes next to the debris... I'm bringing a sample back to the lab.","[color=#FFA617][b]Connexion de l'utilisateur 47 par l'antenne relais 502[/b][/color] [i]Données corrompus[/i] -Utilisateur 47: Et donc c'est pour ça que nous sommes arrivés sur Tau. +Utilisateur 47: Et donc c'est pour ça que nous sommes arrivés sur la planète Tau. Demeter: Merci, je n'avais pas cette information dans ma base de connaissances. Utilisateur 47: Pas de problème Demeter, n'hésite pas si tu as d'autres questions ! Demeter: Sandy, vous avez maintenant marché exactement deux kilom_tres depuis votre aéronef. Je vous prie de faire attention a votre rythme cardiaque, l'air ambiant, bien que respirable, n'a pas encore été entièrement testé et les milliards d'espèces sur cette planète peuvent toutes... diff --git a/translation/names/location_names.csv b/translation/names/location_names.csv index d133b36..d6befed 100644 --- a/translation/names/location_names.csv +++ b/translation/names/location_names.csv @@ -24,6 +24,14 @@ Tereshkova Poiro O'Malley Dream +Cumulus +Pyrka +Pacho +Birdopia +Obsaya +Looping +Jarvis +Orion Isitt Pomoa Ezeron diff --git a/translation/names/location_types.csv b/translation/names/location_types.csv index 3c53805..381434d 100644 --- a/translation/names/location_types.csv +++ b/translation/names/location_types.csv @@ -1,24 +1,24 @@ 23,en,fr -VALLEY,Valley of {name},Vallée {name} -HIGHLANDS,{name} Highlands,Hautes terres de {name} -HEIGHTS,{name} Heights,Hauteurs de {name} -MOUNTAIN,Mountain of {name},Montagne {name} -PEAKS,{name} Peaks,Piques de {name} -HILLS,{name} Hills,Collines {name} -PASS,Pass of {name},Passe {name} -PLAIN,Plain of {name},Plaine {name} -CANAL,Canal of {name},Canal de {name} -FLATLANDS,Flatlands of {name},Terres plates de {name} -LABYRINTH,{name} Labyrinth,Labyrinthe {name} -REGION,Region of {name},Région de {name} -BARRIER,Barrier of {name},Barrière de {name} -CROWN,{name} Crown,Couronne {name} -SUMMIT,Summit of {name},Sommet de {name} -PANORAMA,{name} Panorama,Panorama de {name} -EXPANSE,{name} Expanse,Étendues {name} -GROUNDS,{name} Grounds,Terres de {name} -PLATEAU,Plateau of {name},Plateau de {name} -FOOTHILLS,{name} Foothills,Contreforts de {name} -CANYON,Canyon of {name},Canyon {name} -RIDGE,{name} Ridge,Crête de {name} -LANDSCAPE,{name} Landscape,Paysage de {name} +REGION_TYPE_VALLEY,Valley of {name},Vallée {name} +REGION_TYPE_HIGHLANDS,{name} Highlands,Hautes terres de {name} +REGION_TYPE_HEIGHTS,{name} Heights,Hauteurs de {name} +REGION_TYPE_MOUNTAIN,Mountain of {name},Montagne {name} +REGION_TYPE_PEAKS,{name} Peaks,Piques de {name} +REGION_TYPE_HILLS,{name} Hills,Collines {name} +REGION_TYPE_PASS,Pass of {name},Passe {name} +REGION_TYPE_PLAIN,Plain of {name},Plaine {name} +REGION_TYPE_CANAL,Canal of {name},Canal de {name} +REGION_TYPE_FLATLANDS,Flatlands of {name},Terres plates de {name} +REGION_TYPE_LABYRINTH,{name} Labyrinth,Labyrinthe {name} +REGION_TYPE_REGION,Region of {name},Région de {name} +REGION_TYPE_BARRIER,Barrier of {name},Barrière de {name} +REGION_TYPE_CROWN,{name} Crown,Couronne {name} +REGION_TYPE_SUMMIT,Summit of {name},Sommet de {name} +REGION_TYPE_PANORAMA,{name} Panorama,Panorama de {name} +REGION_TYPE_EXPANSE,{name} Expanse,Étendues {name} +REGION_TYPE_GROUNDS,{name} Grounds,Terres de {name} +REGION_TYPE_PLATEAU,Plateau of {name},Plateau de {name} +REGION_TYPE_FOOTHILLS,{name} Foothills,Contreforts de {name} +REGION_TYPE_CANYON,Canyon of {name},Canyon {name} +REGION_TYPE_RIDGE,{name} Ridge,Crête de {name} +REGION_TYPE_LANDSCAPE,{name} Landscape,Paysage de {name}