diff --git a/common/audio_manager/scripts/audio_manager.gd b/common/audio_manager/scripts/audio_manager.gd index df0dd3b..6de5065 100644 --- a/common/audio_manager/scripts/audio_manager.gd +++ b/common/audio_manager/scripts/audio_manager.gd @@ -72,8 +72,6 @@ func _on_timeline_started(): play_ambiance("Demeter") "demeter_intro": play_ambiance("Demeter") - "demeter_introV2": - play_ambiance("Demeter") "demeter_post_tutorial": play_ambiance("Demeter") "failure": diff --git a/common/icons/droplets.svg b/common/icons/droplets.svg new file mode 100644 index 0000000..fed82eb --- /dev/null +++ b/common/icons/droplets.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gui/pause/assets/textures/card_tutorial_image.png.import b/common/icons/droplets.svg.import similarity index 67% rename from gui/pause/assets/textures/card_tutorial_image.png.import rename to common/icons/droplets.svg.import index 1b2defd..10c8cae 100644 --- a/gui/pause/assets/textures/card_tutorial_image.png.import +++ b/common/icons/droplets.svg.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bku47nx7clom4" -path="res://.godot/imported/card_tutorial_image.png-a8f51388f4585abed9acb5f7a239ec3a.ctex" +uid="uid://el06htgr2pda" +path="res://.godot/imported/droplets.svg-764db2a63540077d3798513e95cb87e1.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://gui/pause/assets/textures/card_tutorial_image.png" -dest_files=["res://.godot/imported/card_tutorial_image.png-a8f51388f4585abed9acb5f7a239ec3a.ctex"] +source_file="res://common/icons/droplets.svg" +dest_files=["res://.godot/imported/droplets.svg-764db2a63540077d3798513e95cb87e1.ctex"] [params] @@ -38,3 +38,6 @@ process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/tools/scripts/text.gd b/common/tools/scripts/text.gd new file mode 100644 index 0000000..5297b1f --- /dev/null +++ b/common/tools/scripts/text.gd @@ -0,0 +1,4 @@ +class_name Text + +static func bbcode_icon(texture : Texture): + return "[img=22x22]%s[/img]" % texture.resource_path \ No newline at end of file diff --git a/common/tools/scripts/text.gd.uid b/common/tools/scripts/text.gd.uid new file mode 100644 index 0000000..9f7b2a6 --- /dev/null +++ b/common/tools/scripts/text.gd.uid @@ -0,0 +1 @@ +uid://dusboavsyp211 diff --git a/dialogs/timelines/gameplay_related/demeter_astra_failed.dtl b/dialogs/timelines/gameplay_related/demeter_astra_failed.dtl index f10f563..36ea657 100644 --- a/dialogs/timelines/gameplay_related/demeter_astra_failed.dtl +++ b/dialogs/timelines/gameplay_related/demeter_astra_failed.dtl @@ -11,13 +11,13 @@ demeter: I found you a new body,[pause=0.2] and a new ship is waiting for you ou demeter: Do you need some advices ? #id:18 - No, I'm ok. #id:19 - Can I have some explanations on how all of this works again ? #id:1a - demeter: When you emerge from this building,[pause=0.2] you will reach a little yellowish zone.[pause=0.3] It's a [b]fertile zone[/b],[pause=0.3] brought back by the [color=#119758][b]Talion's[/b][/color] power.[pause=0.5] You can only plant [b]seeds[/b] in this zone. #id:1b - demeter: Then,[pause=0.3] you have to get [b]seeds[/b].[pause=0.5] To do so,[pause=0.2] just take your shovel and smash some stones ![pause=0.5] Focus on those having yellow crystals on it,[pause=0.3] these are [color=#119758][b]Talion veins[/b][/color]. #id:1c - demeter: Each time you use a tool like the shovel or plant a seed,[pause=0.2] you will spend one [b]energy[/b] charge.[pause=0.5] When you are out of it,[pause=0.2] just go recharge it at the [b]recharge station[/b].[pause=0.5] You will find it near the entrance of the base. #id:1d - demeter: Each time you recharge,[pause=0.2] a day will pass,[pause=0.3] your batteries are very inefficient.[pause=0.5] While the day is passing,[pause=0.3] plants will grow ! #id:1e - demeter: You have to produce enough [b]plant points[/b] to fill the [color=#FFA617]Internode's[/color] tanks.[pause=0.5] Each plant gives one or more [b]plant points[/b] when mature. #id:1f - demeter: Oh ! [pause=0.3] I almost forgot,[pause=0.3] some plants can [b]mutate[/b].[pause=0.5] These [b]mutations[/b] alter the points and behavior of the plant affected.[pause=0.5] [b]Mutations[/b] can appear while [b]harvesting[/b] mature plants and even become more powerful if you [b]harvest[/b] an already mutated one. #id:20 -demeter: Hope I helped. #id:21 + demeter: When you start a region,[pause=0.2] search for the [b]Recharge Station[/b], there is always one near. #id:9c + demeter: Then,[pause=0.3] you'll have to find seeds by smashing some [b]Talion Veins[/b] in the stones with your shovel. #id:9d + demeter: You can then plant seeds in the yellow moss you'll find on the ground, it's the only [b]Fertile Zones[/b]. #id:9e + demeter: When you are out of [b]Energy[/b], you can recharge on the [b]Recharge Station[/b], time will pass and plants will grow. #id:9f + demeter: Each seed is different by their [b]Mutations[/b], and you can get same or better seed from a plant by destroying it when mature, or waiting the end of their lifetime. #id:a0 + demeter: Plants generate [b]Plant Points[/b] when mature, get enough plant points to fill the reservoir of the [color=#FFA617]Internode[/color]. #id:a1 + demeter: Hope I helped. #id:21 demeter: I'm sending you an elevator,[pause=0.3] see you soon ! #id:22 audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav" [wait time="2.0"] \ No newline at end of file diff --git a/dialogs/timelines/story/demeter_intro.dtl b/dialogs/timelines/story/demeter_intro.dtl index 77d6cce..cb448f7 100644 --- a/dialogs/timelines/story/demeter_intro.dtl +++ b/dialogs/timelines/story/demeter_intro.dtl @@ -22,12 +22,12 @@ demeter: With the [color=#119758][b]Talion[/b][/color] back on the surface,[paus demeter: But first things first,[pause=0.3] you have to learn how everything is working up here,[pause=0.2] and how to use the [color=#119758][b]Talion[/b][/color] to plant seeds. #id:36 demeter: [b]Just remember the following[/b] #id:37 label explanations #id:38 -demeter: When you emerge from this building,[pause=0.2] you will reach a little yellowish zone.[pause=0.3] It's a [b]fertile zone[/b],[pause=0.3] brought back by the [color=#119758][b]Talion's[/b][/color] power.[pause=0.5] You can only plant [b]seeds[/b] in this zone. #id:39 -demeter: Then,[pause=0.3] you have to get [b]seeds[/b].[pause=0.5] To do so,[pause=0.2] just take your shovel and smash some stones ![pause=0.5] Focus on those having yellow crystals on it,[pause=0.3] these are [color=#119758][b]Talion veins[/b][/color]. #id:3a -demeter: Each time you use a tool like the shovel or plant a seed,[pause=0.2] you will spend one [b]energy[/b] charge.[pause=0.5] When you are out of it,[pause=0.2] just go recharge it at the [b]recharge station[/b].[pause=0.5] You will find it near the entrance of the base. #id:3b -demeter: Each time you recharge,[pause=0.2] a day will pass,[pause=0.3] your batteries are very inefficient.[pause=0.5] While the day is passing,[pause=0.3] plants will grow ! #id:3c -demeter: To complete you training,[pause=0.3] obtain enough [b]plant points[/b].[pause=0.5] Each plant gives one or more [b]plant points[/b] when mature. #id:3d -demeter: Oh ! [pause=0.3] I almost forgot,[pause=0.3] some plants can [b]mutate[/b].[pause=0.5] These [b]mutations[/b] alter the points and behavior of the plant affected.[pause=0.5] [b]Mutations[/b] can appear while [b]harvesting[/b] mature plants and even become more powerful if you [b]harvest[/b] an already mutated one. #id:3e +demeter: When you emerge from this building,[pause=0.2] search for the [b]Recharge Station[/b], I think there is one near the entrance. #id:a2 +demeter: Then,[pause=0.3] you'll have to find seeds by smashing some [b]Talion Veins[/b] in the stones with your shovel. #id:a3 +demeter: You can then plant seeds in the yellow moss you'll find on the ground, it's the only [b]Fertile Zones[/b]. #id:a4 +demeter: When you are out of [b]Energy[/b], you can recharge on the [b]Recharge Station[/b], time will pass and plants will grow. #id:a5 +demeter: Each seed is different by their [b]Mutations[/b], and you can get same or better seed from a plant by destroying it when mature, or waiting the end of their lifetime. #id:a6 +demeter: Plants generate [b]Plant Points[/b] when mature, get enough plant points and you'll complete the training. #id:a7 - That's a lot of information, can you repeat ? #id:3f demeter: Ok,[pause=0.2] listen carefully. #id:40 jump explanations diff --git a/dialogs/timelines/story/demeter_ship_presentation.dtl b/dialogs/timelines/story/demeter_ship_presentation.dtl index 37b7183..68ffe0b 100644 --- a/dialogs/timelines/story/demeter_ship_presentation.dtl +++ b/dialogs/timelines/story/demeter_ship_presentation.dtl @@ -25,6 +25,6 @@ demeter: Humans had one major flaw.[pause=0.5] Together,[pause=0.2] they built g - What happened ? #id:89 demeter: Sorry my child,[pause=0.3] I'm not ready to talk about that for now.[pause=0.3].[pause=0.3].[pause=0.3] You'll have your answers when you meet me. #id:8a - Can I know what is this shiny machine just next to me ? #id:8b -demeter: This machine is a planetary ship ![pause=0.5] This model is called [color=#FFA617]Internode[/color],[pause=0.3] I tweaked it to recharge on vegetal energy.[pause=0.5] However,[pause=0.2] as you know,[pause=0.2] this type of energy is uncommon on this planet.[pause=0.5] But let's continue on board,[pause=0.2] shall we ? #id:8c +demeter: The engine you see is a planetary ship ![pause=0.5] This model is called [color=#FFA617]Internode[/color],[pause=0.3] I tweaked it to recharge on vegetal energy.[pause=0.5] However,[pause=0.2] as you know,[pause=0.2] this type of energy is uncommon on this planet.[pause=0.5] But let's continue on board,[pause=0.2] shall we ? #id:8c audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav" [wait time="2.0"] \ No newline at end of file diff --git a/entities/interactable_3d/lift/assets/3d/lift.blend b/entities/interactable_3d/lift/assets/3d/lift.blend index 4561e63..340ef53 100644 Binary files a/entities/interactable_3d/lift/assets/3d/lift.blend and b/entities/interactable_3d/lift/assets/3d/lift.blend differ diff --git a/entities/interactable_3d/lift/assets/3d/lift.blend1 b/entities/interactable_3d/lift/assets/3d/lift.blend1 new file mode 100644 index 0000000..4561e63 Binary files /dev/null and b/entities/interactable_3d/lift/assets/3d/lift.blend1 differ diff --git a/entities/interactable_3d/lift/lift.tscn b/entities/interactable_3d/lift/lift.tscn index 72ac5bf..27408b0 100644 --- a/entities/interactable_3d/lift/lift.tscn +++ b/entities/interactable_3d/lift/lift.tscn @@ -7,6 +7,10 @@ [sub_resource type="BoxShape3D" id="BoxShape3D_werxl"] size = Vector3(0.9637451, 1.8898926, 1) +[sub_resource type="CylinderShape3D" id="CylinderShape3D_werxl"] +height = 0.2268219 +radius = 1.0737305 + [sub_resource type="Animation" id="Animation_0mfvw"] length = 0.001 tracks/0/type = "value" @@ -50,19 +54,28 @@ interactable = false hover_animation_player = NodePath("HoverAnimationPlayer") [node name="Sprite3D" type="Sprite3D" parent="." unique_id=1624930927] -transform = Transform3D(-4.2294918e-08, 0.17856176, 0.9839286, 7.805184e-09, 0.9839286, -0.17856176, -1, 1.2748912e-10, -4.3008885e-08, -0.8393693, 1.5452437, 0) +transform = Transform3D(-4.2294918e-08, 0.17856175, 0.9839286, 7.805184e-09, 0.9839286, -0.17856175, -1, 1.2749e-10, -4.3008885e-08, -0.8393693, 1.5452437, 0) texture = ExtResource("2_cun7v") [node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=525472594] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1801186, 1.1958501, 0) shape = SubResource("BoxShape3D_werxl") -[node name="Model" parent="." unique_id=1309925933 instance=ExtResource("3_x56sx")] +[node name="Model" parent="." unique_id=1852940735 instance=ExtResource("3_x56sx")] [node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=11561025] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.2593379, 0) light_color = Color(0.717588, 0.45361686, 0.5535787, 1) shadow_enabled = true +[node name="RigidBody3D" type="RigidBody3D" parent="." unique_id=618737753] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.26774597, 1.1958501, 0) +gravity_scale = 0.0 +freeze = true + +[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D" unique_id=1756356716] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.33335906, -1.2537155, 0) +shape = SubResource("CylinderShape3D_werxl") + [node name="HoverAnimationPlayer" type="AnimationPlayer" parent="." unique_id=487483897] libraries/ = SubResource("AnimationLibrary_0mfvw") diff --git a/entities/interactables/door/door.tscn b/entities/interactables/door/door.tscn index 81246ca..0039c7d 100644 --- a/entities/interactables/door/door.tscn +++ b/entities/interactables/door/door.tscn @@ -125,9 +125,8 @@ shape = SubResource("RectangleShape2D_y51rk") unique_name_in_owner = true scale = Vector2(0.33, 0.33) sprite_frames = SubResource("SpriteFrames_4aafg") -animation = &"close" -frame = 8 -frame_progress = 1.0 +animation = &"closed" +frame_progress = 0.99532324 [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1875435966] position = Vector2(0.99999994, -41) diff --git a/entities/plants/plant_sprite.tscn b/entities/plants/plant_sprite.tscn index 1abff93..3943dc1 100644 --- a/entities/plants/plant_sprite.tscn +++ b/entities/plants/plant_sprite.tscn @@ -8,6 +8,35 @@ atlas = ExtResource("3_j6jm5") region = Rect2(76, 75, 124, 135) +[sub_resource type="ViewportTexture" id="ViewportTexture_rbgiq"] +viewport_path = NodePath("LifeTimeSprite/SubViewport") + +[sub_resource type="Gradient" id="Gradient_rbgiq"] +interpolation_mode = 1 +offsets = PackedFloat32Array(0, 0.800905, 1) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_rbgiq"] +gradient = SubResource("Gradient_rbgiq") +width = 100 +height = 100 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + +[sub_resource type="Gradient" id="Gradient_j6jm5"] +interpolation_mode = 1 +offsets = PackedFloat32Array(0, 0.5248869) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_wyuub"] +gradient = SubResource("Gradient_j6jm5") +width = 100 +height = 100 +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1, 0.5) + [sub_resource type="Animation" id="Animation_wyuub"] length = 0.001 tracks/0/type = "value" @@ -119,6 +148,30 @@ position = Vector2(4.444448, 31.11118) scale = Vector2(3.1777775, 3.1777775) texture = ExtResource("3_rbgiq") +[node name="LifeTimeSprite" type="Sprite2D" parent="." unique_id=799762981] +unique_name_in_owner = true +position = Vector2(-1, -9.999985) +scale = Vector2(0.34, 0.34) +texture = SubResource("ViewportTexture_rbgiq") + +[node name="SubViewport" type="SubViewport" parent="LifeTimeSprite" unique_id=1809354262] +disable_3d = true +transparent_bg = true +size = Vector2i(100, 100) + +[node name="LifetimeProgressBar" type="TextureProgressBar" parent="LifeTimeSprite/SubViewport" unique_id=967185775] +unique_name_in_owner = true +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 6 +size_flags_vertical = 6 +fill_mode = 4 +texture_over = SubResource("GradientTexture2D_rbgiq") +texture_progress = SubResource("GradientTexture2D_wyuub") + [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1793068152] unique_name_in_owner = true libraries/ = SubResource("AnimationLibrary_8eofq") diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd index 36c4713..be5c8b7 100644 --- a/entities/plants/scripts/plant.gd +++ b/entities/plants/scripts/plant.gd @@ -7,11 +7,12 @@ const HARVESTED_SEED_DISPLACEMENT_FACTOR = 100 const RANDOM_MAX_GROW_INTERVAL = Region.MIN_PASS_DAY_ANIMATION_TIME/2. - 0.1 const PLANT_TYPE_ICON = preload("res://common/icons/seedling.svg") -const PLANT_POINT_ICON = preload("res://common/icons/growth.svg") -const LIFETIME_ICON = preload("res://common/icons/calendar-week.svg") +const SCORE_ICON = preload("res://common/icons/growth.svg") +const DURATION_ICON = preload("res://common/icons/calendar-week.svg") const SHOVEL_ICON = preload("res://common/icons/shovel.svg") const GROWING_ICON = preload("res://common/icons/chevrons-up.svg") -const DEATH_ICON = preload("res://common/icons/skull.svg") +const LIFETIME_ICON= preload("res://common/icons/skull.svg") +const SEED_ICON = preload("res://common/icons/droplets.svg") const SPRITE_SCENE : PackedScene = preload("res://entities/plants/plant_sprite.tscn") @@ -47,11 +48,12 @@ func pointer_text() -> String: return data.plant_name func inspect(is_inspected : bool = true): - plant_sprite.modulate = MODULATE_INSPECTED_COLOR if is_inspected else default_modulate + plant_sprite.sprite_modulate = MODULATE_INSPECTED_COLOR if is_inspected else default_modulate + plant_sprite.display_lifetime_sprite = is_inspected influence_zone.show_influence = is_inspected func affect_preview(is_affected : bool = true): - plant_sprite.modulate = MODULATE_AFFECTED_COLOR if is_affected else default_modulate + plant_sprite.sprite_modulate = MODULATE_AFFECTED_COLOR if is_affected else default_modulate func generate_sprite() -> PlantSprite: var sprite_object : PlantSprite = SPRITE_SCENE.instantiate() @@ -155,10 +157,10 @@ func save() -> EntityData: func card_info() -> CardInfo: var info = CardInfo.new( data.plant_name, - tr("MATURE") if data.is_mature() else tr("GROWING")# data.archetype.archetype_name + tr("MATURE") if data.is_mature() else tr("JUVENILE")# data.archetype.archetype_name ) - info.important_stat_icon = PLANT_POINT_ICON + info.important_stat_icon = SCORE_ICON info.important_stat_text = "%d" % calculate_plant_score() info.type_icon = PLANT_TYPE_ICON @@ -166,7 +168,7 @@ func card_info() -> CardInfo: info.stats.append_array([ CardStatInfo.new( str(data.day), - LIFETIME_ICON + DURATION_ICON ), CardStatInfo.new( str(data.get_growing_time()), @@ -174,7 +176,14 @@ func card_info() -> CardInfo: ), CardStatInfo.new( str(data.get_lifetime()), - DEATH_ICON + LIFETIME_ICON + ), + CardStatInfo.new( + "%d-%d" % [ + data.get_seed_number(PlantData.State.MATURE) - data.get_seed_random_loose(), + data.get_seed_number(PlantData.State.MATURE) + ], + SEED_ICON ), ]) diff --git a/entities/plants/scripts/plant_data.gd b/entities/plants/scripts/plant_data.gd index 61ab268..56c0e25 100644 --- a/entities/plants/scripts/plant_data.gd +++ b/entities/plants/scripts/plant_data.gd @@ -133,7 +133,7 @@ func get_seed_buff() -> int: var buff = 0 for m in mutations: - buff += m.mutate_seed_buff(self) + buff = m.mutate_seed_buff(self, buff) return buff diff --git a/entities/plants/scripts/plant_mutation.gd b/entities/plants/scripts/plant_mutation.gd index df46e9e..f77158a 100644 --- a/entities/plants/scripts/plant_mutation.gd +++ b/entities/plants/scripts/plant_mutation.gd @@ -51,8 +51,8 @@ func mutate_seed_random_loose(_plant_data: PlantData, seed_random_loose) -> int: func mutate_lifetime_buff(_plant_data: PlantData) -> int: return 0 -func mutate_seed_buff(_plant_data: PlantData) -> int: - return 0 +func mutate_seed_buff(_plant_data: PlantData, seed_buff : int) -> int: + return seed_buff func _start_planted_effect(_plant: Plant): pass @@ -78,7 +78,7 @@ func get_rarity() -> int: func card_section() -> CardSectionInfo: var section = CardSectionInfo.new( get_mutation_name() + (" %d" % level if level > 1 else ""), - "[b]%s[/b] %s" % [tr(PlantMutation.get_rarity_text(get_rarity())), get_mutation_description()] + get_mutation_description() ) section.color = PlantMutation.get_rarity_color(get_rarity()) @@ -108,4 +108,4 @@ static func get_rarity_color(rarity: int) -> Color: Color("FFA617"), ] - return rarity_colors[min(rarity, len(rarity_colors) - 1)] + return rarity_colors[min(rarity, len(rarity_colors) - 1)] \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/ancient_mutation.gd b/entities/plants/scripts/plant_mutation/ancient_mutation.gd index e885c48..6e914ce 100644 --- a/entities/plants/scripts/plant_mutation/ancient_mutation.gd +++ b/entities/plants/scripts/plant_mutation/ancient_mutation.gd @@ -13,10 +13,12 @@ func get_mutation_name() -> String: return tr("ANCIENT") func get_mutation_description() -> String: - return tr("ANCIENT_EFFECT_TEXT_LEVEL").format( + return tr("ANCIENT_EFFECT_TEXT").format( { "score_increase": get_score_increase(), - "day_factor": get_day_factor() + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON), + "day_factor": get_day_factor(), + "duration_icon": Text.bbcode_icon(Plant.DURATION_ICON), } ) diff --git a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd b/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd index 3df4af5..2ca1e99 100644 --- a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd +++ b/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd @@ -11,16 +11,21 @@ func get_mutation_name() -> String: return tr("EPHEMERAL") func get_mutation_description() -> String: - return tr("EPHEMERAL_EFFECT_TEXT_LEVEL").format({"seed_number": level, "lifetime_change": get_lifetime_change()}) + return tr("EPHEMERAL_EFFECT_TEXT").format({ + "seed_number": level, + "seed_icon": Text.bbcode_icon(Plant.SEED_ICON), + "lifetime_change": get_lifetime_change(), + "lifetime_icon": Text.bbcode_icon(Plant.LIFETIME_ICON), + }) func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int: return lifetime + get_lifetime_change() func mutate_seed_number(_plant_data: PlantData, seed_number: int): - return seed_number + level + return seed_number + level + 1 func get_seed_increase() -> int: return floori((level + 1.0) / 2) func get_lifetime_change() -> int: - return -2 + return -1 diff --git a/entities/plants/scripts/plant_mutation/fertile_mutation.gd b/entities/plants/scripts/plant_mutation/fertile_mutation.gd index eb6fd7f..ff7758c 100644 --- a/entities/plants/scripts/plant_mutation/fertile_mutation.gd +++ b/entities/plants/scripts/plant_mutation/fertile_mutation.gd @@ -11,7 +11,13 @@ func get_mutation_name() -> String: return tr("FERTILE") func get_mutation_description() -> String: - return tr("FERTILE_EFFECT_TEXT_LEVEL_%d") % level + return tr("FERTILE_EFFECT_TEXT").format({ + "seed_buff": get_seed_buff(), + "seed_icon": Text.bbcode_icon(Plant.SEED_ICON) + }) -func mutate_seed_buff(_plant_data: PlantData) -> int: - return level +func mutate_seed_buff(_plant_data: PlantData, seed_buff) -> int: + return seed_buff + get_seed_buff() + +func get_seed_buff(): + return level \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/precocious_mutation.gd b/entities/plants/scripts/plant_mutation/precocious_mutation.gd index 7c7a9ba..a37c3a6 100644 --- a/entities/plants/scripts/plant_mutation/precocious_mutation.gd +++ b/entities/plants/scripts/plant_mutation/precocious_mutation.gd @@ -11,7 +11,13 @@ func get_mutation_name() -> String: return tr("PRECOCIOUS") func get_mutation_description() -> String: - return tr("PRECOCIOUS_EFFECT_TEXT_LEVEL_%d") % level + return tr("PRECOCIOUS_EFFECT_TEXT").format({ + "score": get_score(), + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON) + }) func mutate_score(data : PlantData, score : int) -> int: - return score + (0 if data.get_state() == PlantData.State.MATURE else level) \ No newline at end of file + return score + (0 if data.get_state() == PlantData.State.MATURE else get_score()) + +func get_score(): + return level \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/purification_mutation.gd b/entities/plants/scripts/plant_mutation/purification_mutation.gd index 85746e5..7845359 100644 --- a/entities/plants/scripts/plant_mutation/purification_mutation.gd +++ b/entities/plants/scripts/plant_mutation/purification_mutation.gd @@ -11,7 +11,9 @@ func get_mutation_name() -> String: return tr("PURIFICATION") func get_mutation_description() -> String: - return tr("PURIFICATION_EFFECT_TEXT_LEVEL_%d") % get_purification_radius() + return tr("PURIFICATION_EFFECT_TEXT").format({ + "purification_radius": get_purification_radius() + }) func _start_maturation_effect(plant : Plant): plant.region.decontaminate(Math.get_tiles_in_circle( diff --git a/entities/plants/scripts/plant_mutation/quality_mutation.gd b/entities/plants/scripts/plant_mutation/quality_mutation.gd index 07a28bf..9fead5c 100644 --- a/entities/plants/scripts/plant_mutation/quality_mutation.gd +++ b/entities/plants/scripts/plant_mutation/quality_mutation.gd @@ -14,7 +14,13 @@ func get_mutation_name() -> String: return tr("QUALITY") func get_mutation_description() -> String: - return tr("QUALITY_EFFECT_TEXT_LEVEL_%d") % level + return tr("QUALITY_EFFECT_TEXT").format({ + "score": get_score(), + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON) + }) func mutate_score(data : PlantData, score : int) -> int: - return score + (level if data.get_state() == PlantData.State.MATURE else 0) \ No newline at end of file + return score + (get_score() if data.get_state() == PlantData.State.MATURE else 0) + +func get_score(): + return level \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/quick_mutation.gd b/entities/plants/scripts/plant_mutation/quick_mutation.gd index 729462d..79c51ce 100644 --- a/entities/plants/scripts/plant_mutation/quick_mutation.gd +++ b/entities/plants/scripts/plant_mutation/quick_mutation.gd @@ -11,7 +11,14 @@ func get_mutation_name() -> String: return tr("QUICK") func get_mutation_description() -> String: - return tr("QUICK_EFFECT_TEXT_LEVEL").format({"score_increase": get_score_increase(), "lifetime_decrease": get_lifetime_decrease()}) + return tr("QUICK_EFFECT_TEXT").format( + { + "score_increase": get_score_increase(), + "lifetime_decrease": get_lifetime_change(), + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON), + "lifetime_icon": Text.bbcode_icon(Plant.LIFETIME_ICON) + } + ) func mutate_score(plant_data: PlantData, score: int) -> int: if not plant_data.is_mature(): @@ -20,10 +27,10 @@ func mutate_score(plant_data: PlantData, score: int) -> int: return score + level func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int: - return max(1, lifetime-get_lifetime_decrease()) + return max(1, lifetime+get_lifetime_change()) func get_score_increase() -> int: return level * 2 -func get_lifetime_decrease() -> int: - return 3 +func get_lifetime_change() -> int: + return -3 diff --git a/entities/plants/scripts/plant_mutation/social_mutation.gd b/entities/plants/scripts/plant_mutation/social_mutation.gd index 792a9ff..cc1cc48 100644 --- a/entities/plants/scripts/plant_mutation/social_mutation.gd +++ b/entities/plants/scripts/plant_mutation/social_mutation.gd @@ -13,10 +13,11 @@ func get_mutation_name() -> String: return tr("SOCIABLE") func get_mutation_description() -> String: - return tr("SOCIABLE_EFFECT_TEXT_LEVEL").format( + return tr("SOCIABLE_EFFECT_TEXT").format( { "near_amount": get_near_plants_around(), - "score_increase": get_score_increase() + "score_increase": get_score_increase(), + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON), } ) diff --git a/entities/plants/scripts/plant_mutation/tough_mutation.gd b/entities/plants/scripts/plant_mutation/tough_mutation.gd index 0ac9c83..e1e1c21 100644 --- a/entities/plants/scripts/plant_mutation/tough_mutation.gd +++ b/entities/plants/scripts/plant_mutation/tough_mutation.gd @@ -11,13 +11,21 @@ func get_mutation_name() -> String: return tr("TOUGH") func get_mutation_description() -> String: - return tr("TOUGH_EFFECT_TEXT_LEVEL_%d") % get_growing_time_increase() + return tr("TOUGH_EFFECT_TEXT").format({ + "score_icon": Text.bbcode_icon(Plant.SCORE_ICON), + "score_multiplier": get_score_multiplier(), + "growing_time": get_growing_time_increase(), + "growing_icon": Text.bbcode_icon(Plant.GROWING_ICON) + }) func mutate_score_multiplier(_plant_data: PlantData, multiplier: int) -> int: - return multiplier * 2 + return multiplier * get_score_multiplier() func mutate_growing_time(_plant_data: PlantData, growing_time: int) -> int: return maxi(0, growing_time + get_growing_time_increase()) func get_growing_time_increase()->int: return 4 - level + +func get_score_multiplier()->int: + return 2 diff --git a/entities/plants/scripts/plant_sprite.gd b/entities/plants/scripts/plant_sprite.gd index 0990f58..a639c76 100644 --- a/entities/plants/scripts/plant_sprite.gd +++ b/entities/plants/scripts/plant_sprite.gd @@ -11,7 +11,11 @@ signal harvest_animation_finished var last_updated_on_state : PlantData.State = PlantData.State.MATURE var stored_seed_image : Texture = null +var display_lifetime_sprite : bool = false : set = set_display_lifetime_sprite +var sprite_modulate : Color = Color.WHITE : set = set_sprite_modulate + func setup_plant_sprite(plant_data : PlantData): + set_display_lifetime_sprite() %PlantedSeed.texture = PlantTextureBuilder.build_seed_texture(plant_data.plant_name.hash()) update_plant_sprite(plant_data,true) @@ -25,6 +29,8 @@ func update_plant_sprite(plant_data : PlantData, with_animation = false): %PlantedSeed.visible = plant_data.get_state() == PlantData.State.PLANTED + %LifetimeProgressBar.value = 100 * (float(plant_data.day)/plant_data.get_lifetime()) + # %PlantedSeed.region_rect = Rect2( # 0, # PLANTED_SEED_POS_Y, @@ -47,3 +53,13 @@ func start_harvest_animation(): $AnimationPlayer.play("harvest") await $AnimationPlayer.animation_finished harvest_animation_finished.emit() + +func set_display_lifetime_sprite(d := display_lifetime_sprite): + display_lifetime_sprite = d + if is_node_ready(): + %LifeTimeSprite.visible = d + +func set_sprite_modulate(c := sprite_modulate): + sprite_modulate = c + if is_node_ready(): + %Sprite.modulate = c \ No newline at end of file diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd index 8d190aa..f3f00a6 100644 --- a/entities/player/inventory/scripts/items/seed.gd +++ b/entities/player/inventory/scripts/items/seed.gd @@ -40,8 +40,7 @@ static func generate_from_parent(plant_data : PlantData) -> Seed: static func generate_random() -> Seed: var archetype = PlantArchetype.get_random() var random_mutations : Array[PlantMutation] = [] - if randf() < MUTATION_PROBABILITY: - random_mutations = ([archetype.available_mutations.pick_random().duplicate_deep()] as Array[PlantMutation]) + random_mutations.append(archetype.available_mutations.pick_random().duplicate_deep()) var new_seed = Seed.new( Random.generate_random_word(), PlantArchetype.get_random(), diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd index b244281..ba05372 100644 --- a/entities/player/scripts/player.gd +++ b/entities/player/scripts/player.gd @@ -156,8 +156,11 @@ func pick_item(item : Item): func drop_item(): var ind_to_drop := data.inventory.current_item_ind - if data.inventory.current_is_tool(): - ind_to_drop = data.inventory.n_tools + while ( + (data.inventory.get_item(ind_to_drop) == null or ind_to_drop < data.inventory.n_tools) + and ind_to_drop < len(data.inventory.items) - 1 + ): + ind_to_drop += 1 var item_to_drop = data.inventory.pop_item(ind_to_drop) if item_to_drop: terrain.drop_item(item_to_drop, global_position) diff --git a/entities/player_3d/scripts/player_3d.gd b/entities/player_3d/scripts/player_3d.gd index 17c3a02..f462b61 100644 --- a/entities/player_3d/scripts/player_3d.gd +++ b/entities/player_3d/scripts/player_3d.gd @@ -47,10 +47,6 @@ func _physics_process(delta): ) query_mouse = false - # Add the gravity. - if not is_on_floor(): - velocity += get_gravity() * delta - # Get the input direction and handle the movement/deceleration. # As good practice, you should replace UI actions with custom gameplay actions. var input_dir = Input.get_vector("move_left", "move_right", "move_up", "move_down") @@ -64,7 +60,11 @@ func _physics_process(delta): velocity.x = move_toward(velocity.x, 0, speed) velocity.z = move_toward(velocity.z, 0, speed) - move_and_slide() + # Add the gravity. + if not is_on_floor(): + velocity += get_gravity() * delta + + move_and_slide() func update_mouse_hovered_cockpit_actions() -> void: diff --git a/gui/game/game_gui.tscn b/gui/game/game_gui.tscn index e9f0d48..91b76e6 100644 --- a/gui/game/game_gui.tscn +++ b/gui/game/game_gui.tscn @@ -12,6 +12,16 @@ [ext_resource type="Texture2D" uid="uid://b43thuq8piv18" path="res://common/icons/skull.svg" id="7_dr1y2"] [ext_resource type="PackedScene" uid="uid://clicjf8ts51h8" path="res://gui/game/inventory_gui/inventory_gui.tscn" id="9_id0t5"] +[sub_resource type="Gradient" id="Gradient_ykapk"] +offsets = PackedFloat32Array(0.47639486, 1) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_p6blc"] +gradient = SubResource("Gradient_ykapk") +fill = 1 +fill_from = Vector2(0.5, 0.5) +fill_to = Vector2(1.5, 0.5) + [sub_resource type="LabelSettings" id="LabelSettings_id0t5"] font = ExtResource("6_2wykm") font_size = 40 @@ -19,6 +29,17 @@ font_size = 40 [node name="GameGui" type="CanvasLayer" unique_id=274698556] script = ExtResource("1_udau0") +[node name="NoEnergyVignette" type="TextureRect" parent="." unique_id=1917087264] +unique_name_in_owner = true +self_modulate = Color(1, 0, 0.43137255, 1) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +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) 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 5daea33..e8b98c8 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 @@ -30,7 +30,6 @@ func set_item(i : Item = item): %ItemIconSprite.pixel_size = SPRITE_SIZE / i.icon.get_width() for j in range(len(i.get_particles())): - print(i.get_particles()[j]) if j == 0: %ParticleSprite1.visible = true %ParticleSprite1.texture = i.get_particles()[j].texture diff --git a/gui/game/scripts/game_gui.gd b/gui/game/scripts/game_gui.gd index 74d255e..b29e017 100644 --- a/gui/game/scripts/game_gui.gd +++ b/gui/game/scripts/game_gui.gd @@ -38,6 +38,17 @@ func player_update(player_data : PlayerData, with_animation = true): player_data.max_energy, with_animation ) + if with_animation: + get_tree().create_tween().tween_property( + %NoEnergyVignette, + "modulate:a", + 1. if player_data.energy == 0 else 0., + 0.3 + ) + else: + %NoEnergyVignette.modulate.a = 1. if player_data.energy == 0 else 0. + + func _on_region_updated(region_data : RegionData): await get_tree().create_timer(0.1).timeout diff --git a/gui/game/tutorial/scripts/tutorial.gd b/gui/game/tutorial/scripts/tutorial.gd index a18a794..020e4ea 100644 --- a/gui/game/tutorial/scripts/tutorial.gd +++ b/gui/game/tutorial/scripts/tutorial.gd @@ -10,6 +10,21 @@ var indicators : Array[InGameIndicator] @export var region : Region @onready var steps : Array[Step] = [ + Step.new( + "MOVE_WITH_RIGHT_CLICK_OR_WASD", + (func (): + return player.global_position.distance_to(region.data.player_spawn) > 30) + ), + Step.new( + "SELECT_ITEM_WITH_SCROLL_CLICK_OR_NUMBER", + (func (): + return player.data.inventory.current_item_ind != player.data.inventory.n_tools) + ), + Step.new( + "LEFT_CLICK_TO_USE_ITEMS", + (func (): + return player.data.inventory.get_item() and Input.is_action_just_pressed("action")) + ), Step.new( "USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY", (func (): @@ -24,12 +39,19 @@ var indicators : Array[InGameIndicator] return false) ), Step.new( - "TAKE_A_SEED", + "TAKE_A_SEED_BY_CLICKING_ON_IT", (func (): return player.data.inventory.items.find_custom( func(i:Item): return i is Seed ) != -1) ), + Step.new( + "DROP_SEED_WITH_KEY", + (func (): + return ( + Input.is_action_pressed("drop")) + ) + ), Step.new( "PLANT_SEED_IN_FERTILE_ZONE", (func (): @@ -49,26 +71,10 @@ var indicators : Array[InGameIndicator] return region.data.get_score() != 0) ), Step.new( - "DISCOVER_A_SEED_WITH_A_MUTATION", + "HARVEST_A_MATURE_PLANT", (func (): for e in region.entity_container.get_children(): - if e is ItemObject and e.item is Seed and len(e.item.plant_mutations): - return true - return false) - ), - Step.new( - "PLANT_A_SEED_WITH_A_MUTATION", - (func (): - for e in region.entity_container.get_children(): - if e is Plant and len(e.data.mutations): - return true - return false) - ), - Step.new( - "HARVEST_A_MATURE_PLANT_WITH_A_MUTATION", - (func (): - for e in region.entity_container.get_children(): - if e is Plant and e.harvested and len(e.data.mutations): + if e is Plant and e.harvested: return true return false) ), @@ -98,10 +104,15 @@ func _process(_d): for i in len(steps): var step := steps[i] var step_gui := %Steps.get_children()[i] as TutorialStepGui - step.update_succeeded() - step_gui.suceeded = step.succeeded - if not step.succeeded: - success = false + step_gui.visible = i == 0 or steps[i-1].succeeded + if step_gui.visible: + var old_succeeded = step.succeeded + step.update_succeeded() + if old_succeeded != step.succeeded: # Put a delay so two state don't collide + return + step_gui.suceeded = step.succeeded + if not step.succeeded: + success = false if success: finish_tutorial() diff --git a/gui/game/tutorial/tutorial.tscn b/gui/game/tutorial/tutorial.tscn index 7d76b0f..a38640f 100644 --- a/gui/game/tutorial/tutorial.tscn +++ b/gui/game/tutorial/tutorial.tscn @@ -37,34 +37,34 @@ grow_vertical = 2 mouse_filter = 2 theme = ExtResource("2_1wikm") -[node name="PanelContainer" type="PanelContainer" parent="MarginContainer" unique_id=913156548] +[node name="TutorialStepsPanelContainer" type="PanelContainer" parent="MarginContainer" unique_id=913156548] layout_mode = 2 size_flags_horizontal = 0 size_flags_vertical = 8 mouse_filter = 2 theme_override_styles/panel = SubResource("StyleBoxFlat_x7cwm") -[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/PanelContainer" unique_id=332993244] +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/TutorialStepsPanelContainer" unique_id=332993244] layout_mode = 2 mouse_filter = 2 -[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer" unique_id=1196958295] +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer" unique_id=1196958295] layout_mode = 2 mouse_filter = 2 -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer" unique_id=1140176018] +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer/VBoxContainer" unique_id=1140176018] layout_mode = 2 mouse_filter = 2 -[node name="TextureRect" type="TextureRect" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer" unique_id=527978183] +[node name="TextureRect" type="TextureRect" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer/VBoxContainer/HBoxContainer" unique_id=527978183] layout_mode = 2 texture = ExtResource("3_8kuag") -[node name="Label" type="Label" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer" unique_id=592987672] +[node name="Label" type="Label" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer/VBoxContainer/HBoxContainer" unique_id=592987672] layout_mode = 2 text = "TUTORIAL" label_settings = SubResource("LabelSettings_8kuag") -[node name="Steps" type="VBoxContainer" parent="MarginContainer/PanelContainer/MarginContainer/VBoxContainer" unique_id=125170550] +[node name="Steps" type="VBoxContainer" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer/VBoxContainer" unique_id=125170550] unique_name_in_owner = true layout_mode = 2 diff --git a/gui/pause/assets/textures/card_tutorial_image.png b/gui/pause/assets/textures/card_tutorial_image.png deleted file mode 100644 index ac6b85a..0000000 Binary files a/gui/pause/assets/textures/card_tutorial_image.png and /dev/null differ diff --git a/gui/pause/pause.tscn b/gui/pause/pause.tscn index c65194f..4d8e1a1 100644 --- a/gui/pause/pause.tscn +++ b/gui/pause/pause.tscn @@ -11,15 +11,18 @@ [ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="7_yj6f1"] [ext_resource type="Texture2D" uid="uid://b43thuq8piv18" path="res://common/icons/skull.svg" id="8_mnkqy"] [ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="9_7c7ks"] -[ext_resource type="Texture2D" uid="uid://bku47nx7clom4" path="res://gui/pause/assets/textures/card_tutorial_image.png" id="9_sepn1"] +[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="10_q8jjs"] [ext_resource type="Texture2D" uid="uid://bgcymkgxk7mpp" path="res://gui/pause/assets/textures/moss_tutorial_image.png" id="11_mnkqy"] [ext_resource type="PackedScene" uid="uid://b4qe1dwwsk87t" path="res://gui/menu/controls/controls.tscn" id="11_urlqn"] [ext_resource type="Texture2D" uid="uid://bhogi5kkltx51" path="res://gui/pause/assets/textures/rock_tutorial_image.png" id="12_mvn7k"] +[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="12_s2e8t"] [ext_resource type="Texture2D" uid="uid://3fwhxkd0ycga" path="res://gui/pause/assets/textures/talion_tutorial_image.png" id="13_4n2vt"] +[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="13_4r74r"] +[ext_resource type="Texture2D" uid="uid://el06htgr2pda" path="res://common/icons/droplets.svg" id="14_osk7v"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_58dya"] shader = ExtResource("2_apjlw") -shader_parameter/strength = 3.3 +shader_parameter/strength = 5.00000023424012 shader_parameter/mix_percentage = 0.3 [sub_resource type="LabelSettings" id="LabelSettings_apjlw"] @@ -177,33 +180,106 @@ layout_mode = 2 size_flags_horizontal = 3 alignment = 1 -[node name="TutorialPlants" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=54599107] +[node name="TutorialIcons" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=54599107] layout_mode = 2 -text = "PLANT_INFO" +text = "ICONS_MEANINGS" label_settings = SubResource("LabelSettings_apjlw") horizontal_alignment = 1 -[node name="Plants" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=1658568175] +[node name="IconsGrid" type="HFlowContainer" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=827470743] layout_mode = 2 +theme_override_constants/h_separation = 8 +theme_override_constants/v_separation = 8 alignment = 1 -[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/Plants" unique_id=1418592623] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=1836711773] layout_mode = 2 -texture = ExtResource("9_sepn1") -expand_mode = 3 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer" unique_id=1287619966] +custom_minimum_size = Vector2(40, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("10_q8jjs") +expand_mode = 1 stretch_mode = 5 -[node name="RichText" type="RichTextLabel" parent="Container/MarginContainer/GridContainer/Tutorial/Plants" unique_id=1176432130] +[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer" unique_id=1321907717] layout_mode = 2 -size_flags_horizontal = 3 theme = ExtResource("9_7c7ks") -theme_override_fonts/bold_font = ExtResource("4_apjlw") -theme_override_font_sizes/normal_font_size = 15 -theme_override_font_sizes/bold_font_size = 18 -bbcode_enabled = true -text = "PLANT_INFO_TEXT" -fit_content = true -autowrap_mode = 0 +text = "PLANT_POINTS" +vertical_alignment = 1 + +[node name="HBoxContainer2" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=1972132878] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer2" unique_id=1672315867] +custom_minimum_size = Vector2(40, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("12_s2e8t") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer2" unique_id=680718204] +layout_mode = 2 +theme = ExtResource("9_7c7ks") +text = "DAYS" +vertical_alignment = 1 + +[node name="HBoxContainer3" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=914958898] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer3" unique_id=2070296941] +custom_minimum_size = Vector2(40, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("13_4r74r") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer3" unique_id=1440353539] +layout_mode = 2 +theme = ExtResource("9_7c7ks") +text = "GROWING_TIME" +vertical_alignment = 1 + +[node name="HBoxContainer4" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=28308100] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer4" unique_id=1894190539] +custom_minimum_size = Vector2(40, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("8_mnkqy") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer4" unique_id=1869234810] +layout_mode = 2 +theme = ExtResource("9_7c7ks") +text = "LIFETIME" +vertical_alignment = 1 + +[node name="HBoxContainer5" type="HBoxContainer" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid" unique_id=960270231] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer5" unique_id=1275499455] +custom_minimum_size = Vector2(40, 40) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("14_osk7v") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial/IconsGrid/HBoxContainer5" unique_id=1267318669] +layout_mode = 2 +theme = ExtResource("9_7c7ks") +text = "SEEDS" vertical_alignment = 1 [node name="TutorialTerrain" type="Label" parent="Container/MarginContainer/GridContainer/Tutorial" unique_id=749651974] @@ -293,10 +369,12 @@ 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 edd8cb0..f2e3ffa 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="demo-0.1" +config/version="alpha-1.1" run/main_scene="uid://c5bruelvqbm1k" config/features=PackedStringArray("4.6", "Forward Plus") config/icon="uid://df0y0s666ui4h" @@ -106,7 +106,7 @@ variables={ "whoareyou": "false", "whynorth": "false" } -translation/id_counter=155 +translation/id_counter=167 translation/locales=[] history/visited_event_history_enabled=true audio/type_sound_bus="Sfx" @@ -232,7 +232,7 @@ dialogic_default_action={ [internationalization] locale/translation_remaps={} -locale/translations=PackedStringArray("res://translation/game/gui.en.translation", "res://translation/game/gui.fr.translation", "res://translation/dialogs/dialogic_character_translations.en.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_introV2_translation.en.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.fr.translation") +locale/translations=PackedStringArray("res://translation/game/gui.en.translation", "res://translation/game/gui.fr.translation", "res://translation/dialogs/dialogic_character_translations.en.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.fr.translation") locale/test="fr" [rendering] diff --git a/stages/3d_scenes/astra_base/scripts/astra_base.gd b/stages/3d_scenes/astra_base/scripts/astra_base.gd index 58b478b..bd809b0 100644 --- a/stages/3d_scenes/astra_base/scripts/astra_base.gd +++ b/stages/3d_scenes/astra_base/scripts/astra_base.gd @@ -73,6 +73,7 @@ func story(): AudioManager.play_sfx("Elevator") await %Lift.clicked %Player3D.controlling_player = false + %LiftAnimationPlayer.play_backwards("arrive") AudioManager.play_sfx("Elevator") diff --git a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd index 9044164..78120b5 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd @@ -71,6 +71,7 @@ func _on_main_screen_activated(): GameInfo.game_data.ship_in_space = true if GameInfo.game_data.current_run == null: GameInfo.game_data.start_run() + GameInfo.game_data.player_data.energy = GameInfo.game_data.player_data.max_energy update_dashboard() func _on_left_screen_activated(): diff --git a/stages/terrain/region/scripts/chunk.gd b/stages/terrain/region/scripts/chunk.gd index ae36788..c23c85e 100644 --- a/stages/terrain/region/scripts/chunk.gd +++ b/stages/terrain/region/scripts/chunk.gd @@ -5,7 +5,8 @@ const GENERATION_NUMBER = 4 const NOISE_IMAGE_SIZE := 150 -const MAX_DECONTAMINATION_DISTANCE=3 +const MAX_DECONTAMINATION_DISTANCE=2 +const MAX_TALION_DISTANCE=3 const RANDOM_PADDING_NOISE_FREQUENCY := 0.01 const ROCK_NOISE_FREQUENCY := 0.01 @@ -200,8 +201,13 @@ func generate_rocks(layer : RockLayer): layer.place_rocks(rocks, RockLayer.TileType.ROCK) func get_generated_rock_type(coord : Vector2i) -> RockLayer.TileType: - var rock_tile_value : float = get_tile_value_from_noise(coord, rock_noise_image) - var cristal_tile_value : float = get_tile_value_from_noise(coord, cristal_noise_image) + var rock_tile_value : float = ( + get_tile_value_from_noise(coord, rock_noise_image) + ) + var cristal_tile_value : float = ( + 1. if chunk_coord.distance_to(Vector2i.ZERO) > MAX_TALION_DISTANCE + else get_tile_value_from_noise(coord, cristal_noise_image) + ) var saved_diff := region_data.rock_tiles_data.get_tile_diff_for_local_coord(coord, chunk_coord) if saved_diff == TilesDiffData.TileDiff.ABSENT: diff --git a/translation/dialogs/dialogic_demeter_astra_failed_translation.csv b/translation/dialogs/dialogic_demeter_astra_failed_translation.csv index 45343a6..d6bd928 100644 --- a/translation/dialogs/dialogic_demeter_astra_failed_translation.csv +++ b/translation/dialogs/dialogic_demeter_astra_failed_translation.csv @@ -14,11 +14,11 @@ Choice/19/text,"No, I'm ok.","Non merci, ça va ! " Choice/19/disabled_text,, Choice/1a/text,Can I have some explanations on how all of this works again ?,Vous pouvez me réexpliquer comment remplir mes objectifs ? Choice/1a/disabled_text,, -Text/1b/text,"When you emerge from this building,[pause=0.2] you will reach a little yellowish zone.[pause=0.3] It's a [b]fertile zone[/b],[pause=0.3] brought back by the [color=#119758][b]Talion's[/b][/color] power.[pause=0.5] You can only plant [b]seeds[/b] in this zone.","Quand tu sortiras de la base,[pause=0.3] tu arriveras dans une petite zone jaune.[pause=0.5] C'est une [b]zone fertile[/b],[pause=0.3] créée par le retour du Talion.[pause=0.5] Tu ne peux planter de graines que dans ces zones." -Text/1c/text,"Then,[pause=0.3] you have to get [b]seeds[/b].[pause=0.5] To do so,[pause=0.2] just take your shovel and smash some stones ![pause=0.5] Focus on those having yellow crystals on it,[pause=0.3] these are [color=#119758][b]Talion veins[/b][/color].","Tu devras trouver des graines.[pause=0.5] Pour cela,[pause=0.2] c'est très simple,[pause=0.3] tu prends ta pelle,[pause=0.2] et tu casses des cailloux ![pause=0.5] De préférence ceux avec des cristaux dedans,[pause=0.3] ce sont des [b]veines de Talion[/b]." -Text/1d/text,"Each time you use a tool like the shovel or plant a seed,[pause=0.2] you will spend one [b]energy[/b] charge.[pause=0.5] When you are out of it,[pause=0.2] just go recharge it at the [b]recharge station[/b].[pause=0.5] You will find it near the entrance of the base.","A chaque fois que tu utilises un outil ou que tu plantes une graine,[pause=0.3] tu utiliseras une [b]charge d'énergie[/b].[pause=0.5] Quand tu n'en as plus,[pause=0.3] tu peux aller te recharger à la [b]station de recharge[/b] que tu trouveras près de l'entrée de la base.[pause=0.5]" -Text/1e/text,"Each time you recharge,[pause=0.2] a day will pass,[pause=0.3] your batteries are very inefficient.[pause=0.5] While the day is passing,[pause=0.3] plants will grow !","A chaque fois que tu te recharges,[pause=0.3] le temps passera.[pause=0.5] Une journée pour être précise (non, ta batterie n'est pas très bonne),[pause=0.2] et les plantes grandiront !" -Text/1f/text,You have to produce enough [b]plant points[/b] to fill the [color=#FFA617]Internode's[/color] tanks.[pause=0.5] Each plant gives one or more [b]plant points[/b] when mature.,"Tu dois obtenir assez de [b]points de plantes[/b] pour recharger les réservoirs de l'[color=#FFA617]Internode[/color].[pause=0.5] Chaque plante te donnera un ou plusieurs [b]points de plante[/b] quand elle est mature." -Text/20/text,"Oh ! [pause=0.3] I almost forgot,[pause=0.3] some plants can [b]mutate[/b].[pause=0.5] These [b]mutations[/b] alter the points and behavior of the plant affected.[pause=0.5] [b]Mutations[/b] can appear while [b]harvesting[/b] mature plants and even become more powerful if you [b]harvest[/b] an already mutated one.","Ah oui,[pause=0.3] j'ai failli oublier ![pause=0.5] Certaines plantes peuvent subir des [b]mutations[/b] qui affectent les points qu'elles donnent ou leur comportement.[pause=0.5] Tu peux obtenir des graines mutées en récoltant des plantes matures avec ta pelle, ou attendre qu'elles meurent." +Text/9c/text,"When you start a region,[pause=0.2] search for the [b]Recharge Station[/b], there is always one near.","Quand tu arrives quelque part,[pause=0.2] cherche la [b]Station de Recharge[/b], il y en a toujours une pas très loin." +Text/9d/text,"Then,[pause=0.3] you'll have to find seeds by smashing some [b]Talion Veins[/b] in the stones with your shovel.","Puis,[pause=0.3] tu dois récupérer des graines en brisant des [b]Veines de Talion[/b] dans la pierre avec ta pelle." +Text/9e/text,"You can then plant seeds in the yellow moss you'll find on the ground, it's the only [b]Fertile Zones[/b].","Tu pourra planter ces graines dans la mousse jaune que tu trouvera par terre, ce sont les seules [b]Zones Fertiles[/b]." +Text/9f/text,"When you are out of [b]Energy[/b], you can recharge on the [b]Recharge Station[/b], time will pass and plants will grow.","Tu pourra planter ces graines dans la mousse jaune que tu trouvera par terre, ce sont les seules [b]Zones Fertiles[/b]." +Text/a0/text,"Each seed is different by their [b]Mutations[/b], and you can get same or better seed from a plant by destroying it when mature, or waiting the end of their lifetime.","Chaque graine est unique par ses [b]Mutations[/b], et tu pourra récupérer de meilleure graines en détruisant une plante mature, ou en attendant qu'elle meurt." +Text/a1/text,"Plants generate [b]Plant Points[/b] when mature, get enough plant points to fill the reservoir of the [color=#FFA617]Internode[/color].","Une fois mature, les plantes génèrent des [b]Points de Plantes[/b], récupère-en assez pour remplir le réservoir de l'[color=#FFA617]Internode[/color]." Text/21/text,Hope I helped.,J'espère que ça t'a aidé ! Text/22/text,"I'm sending you an elevator,[pause=0.3] see you soon !","Je t'envoie un ascenseur,[pause=0.3] à bientôt !" diff --git a/translation/dialogs/dialogic_demeter_intro_translation.csv b/translation/dialogs/dialogic_demeter_intro_translation.csv index 4102dd9..5f0e76e 100644 --- a/translation/dialogs/dialogic_demeter_intro_translation.csv +++ b/translation/dialogs/dialogic_demeter_intro_translation.csv @@ -27,12 +27,12 @@ Text/35/text,"With the [color=#119758][b]Talion[/b][/color] back on the surface, Text/36/text,"But first things first,[pause=0.3] you have to learn how everything is working up here,[pause=0.2] and how to use the [color=#119758][b]Talion[/b][/color] to plant seeds.","Mais chaque chose en son temps,[pause=0.3] tu as besoin d'apprendre comment ça marche ici,[pause=0.2] et surtout comment utiliser le [color=#119758][b]Talion[/b][/color] pour planter des graines." Text/37/text,[b]Just remember the following[/b],[b]Ecoute bien[/b] Label/38/display_name,, -Text/39/text,"When you emerge from this building,[pause=0.2] you will reach a little yellowish zone.[pause=0.3] It's a [b]fertile zone[/b],[pause=0.3] brought back by the [color=#119758][b]Talion's[/b][/color] power.[pause=0.5] You can only plant [b]seeds[/b] in this zone.","Quand tu sortiras de ce bâtiment,[pause=0.2] tu atteindras une petite zone jaune.[pause=0.3] C'est une [b]zone fertile[/b],[pause=0.3] apparue grâce au pouvoir du [color=#119758][b]Talion[/b][/color].[pause=0.5] Tu peux seulement planter des [b]graines[/b] dans cette zone." -Text/3a/text,"Then,[pause=0.3] you have to get [b]seeds[/b].[pause=0.5] To do so,[pause=0.2] just take your shovel and smash some stones ![pause=0.5] Focus on those having yellow crystals on it,[pause=0.3] these are [color=#119758][b]Talion veins[/b][/color].","Ensuite,[pause=0.2] tu devras récupérer des [b]graines[/b].[pause=0.5] Pour ce faire,[pause=0.2] prend ta pelle et casse quelques pierres ![pause=0.5] Cherche celles qui sont couvertes de cristaux jaunes,[pause=0.3] ce sont des veines de [color=#119758][b]Talion[/b][/color]." -Text/3b/text,"Each time you use a tool like the shovel or plant a seed,[pause=0.2] you will spend one [b]energy[/b] charge.[pause=0.5] When you are out of it,[pause=0.2] just go recharge it at the [b]recharge station[/b].[pause=0.5] You will find it near the entrance of the base.","A chaque fois que tu utilises un outil comme la pelle ou que tu plantes une graine,[pause=0.3] tu dépenses une de tes [b]charges d'énergie[/b].[pause=0.5] Quand tu n'en as plus,[pause=0.3] il te suffit d'aller te recharger à la [b]station de recharge[/b].[pause=0.5] Tu la trouveras à côté de l'entrée de la base." -Text/3c/text,"Each time you recharge,[pause=0.2] a day will pass,[pause=0.3] your batteries are very inefficient.[pause=0.5] While the day is passing,[pause=0.3] plants will grow !","A chaque recharge,[pause=0.3] une journée passera,[pause=0.2] tes batteries sont très peu efficaces.[pause=0.5] Pendant ce temps,[pause=0.3] tes plantes grandissent !" -Text/3d/text,"To complete you training,[pause=0.3] obtain enough [b]plant points[/b].[pause=0.5] Each plant gives one or more [b]plant points[/b] when mature.","Pour réussir ton entraînement,[pause=0.3] il faudra que tu obtiennes des [b]points de plantes[/b].[pause=0.5] Chaque plante te donne un ou plusieurs [b]points de plantes[/b] quand elles arrivent à maturité." -Text/3e/text,"Oh ! [pause=0.3] I almost forgot,[pause=0.3] some plants can [b]mutate[/b].[pause=0.5] These [b]mutations[/b] alter the points and behavior of the plant affected.[pause=0.5] [b]Mutations[/b] can appear while [b]harvesting[/b] mature plants and even become more powerful if you [b]harvest[/b] an already mutated one.","Ah ! [pause=0.3] J'ai presque oublié,[pause=0.3] certaines plantes peuvent [b]muter[/b].[pause=0.5] Ces [b]mutations[/b] affectent le nombre de points obtenus et le comportement de la plante concernée.[pause=0.5] Les [b]mutations[/b] peuvent apparaître quand tu [b]récoltes[/b] des plantes matures et peuvent devenir plus puissantes si tu [b]récoltes[/b] une plante ayant déjà subi des mutations." +Text/a2/text,"When you emerge from this building,[pause=0.2] search for the [b]Recharge Station[/b], I think there is one near the entrance.","Quand tu sortira d'ici,[pause=0.2] cherche la [b]Station de Recharge[/b], il devrait y en avoir une pas très loin de la sortie." +Text/a3/text,"Then,[pause=0.3] you'll have to find seeds by smashing some [b]Talion Veins[/b] in the stones with your shovel.","Puis,[pause=0.3] tu devras récupérer des graines en brisant des [b]Veines de Talion[/b] dans la pierre avec ta pelle." +Text/a4/text,"You can then plant seeds in the yellow moss you'll find on the ground, it's the only [b]Fertile Zones[/b].","Tu pourra planter ces graines dans la mousse jaune que tu trouvera par terre, ce sont les seules [b]Zones Fertiles[/b]." +Text/a5/text,"When you are out of [b]Energy[/b], you can recharge on the [b]Recharge Station[/b], time will pass and plants will grow.","Tu pourra planter ces graines dans la mousse jaune que tu trouvera par terre, ce sont les seules [b]Zones Fertiles[/b]." +Text/a6/text,"Each seed is different by their [b]Mutations[/b], and you can get same or better seed from a plant by destroying it when mature, or waiting the end of their lifetime.","Chaque graine est unique par ses [b]Mutations[/b], et tu pourra récupérer de meilleure graines en détruisant une plante mature, ou en attendant qu'elle meurt." +Text/a7/text,"Plants generate [b]Plant Points[/b] when mature, get enough plant points and you'll complete the training.","Une fois mature, les plantes génèrent des [b]Points de Plantes[/b], si tu en a assez tu finira l'entrainement." Choice/3f/text,"That's a lot of information, can you repeat ?",C'est beaucoup d'informations. Tu peux répèter ? Choice/3f/disabled_text,, Text/40/text,"Ok,[pause=0.2] listen carefully.","D'accord,[pause=0.2] écoute bien." diff --git a/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv b/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv index 09dfaa3..55b7fde 100644 --- a/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv +++ b/translation/dialogs/dialogic_demeter_ship_presentation_translation.csv @@ -32,4 +32,4 @@ Choice/89/disabled_text,, Text/8a/text,"Sorry my child,[pause=0.3] I'm not ready to talk about that for now.[pause=0.3].[pause=0.3].[pause=0.3] You'll have your answers when you meet me.","Je suis désolée petit,[pause=0.3] je ne suis pas prête à en parler pour l'instant.[pause=0.3].[pause=0.3].[pause=0.3] Tu en sauras plus quand tu m'auras rejointe." Choice/8b/text,Can I know what is this shiny machine just next to me ?,Je peux savoir ce qu'est cette machine devant moi ? Choice/8b/disabled_text,, -Text/8c/text,"This machine is a planetary ship ![pause=0.5] This model is called [color=#FFA617]Internode[/color],[pause=0.3] I tweaked it to recharge on vegetal energy.[pause=0.5] However,[pause=0.2] as you know,[pause=0.2] this type of energy is uncommon on this planet.[pause=0.5] But let's continue on board,[pause=0.2] shall we ?","C'est un vaisseau spatial ![pause=0.5] Le nom de ce modèle est l'[color=#FFA617]Internode[/color],[pause=0.3] je l'ai modifié pour qu'il se recharge avec de l'énergie végétale ![pause=0.5] Mais comme tu le devines,[pause=0.3] cette énergie est rare par ici.[pause=0.5] Montons à bord,[pause=0.2] tu veux ?" +Text/8c/text,"The engine you see is a planetary ship ![pause=0.5] This model is called [color=#FFA617]Internode[/color],[pause=0.3] I tweaked it to recharge on vegetal energy.[pause=0.5] However,[pause=0.2] as you know,[pause=0.2] this type of energy is uncommon on this planet.[pause=0.5] But let's continue on board,[pause=0.2] shall we ?","L'engin que tu voit est un vaisseau planétaire ![pause=0.5] Le nom de ce modèle est l'[color=#FFA617]Internode[/color],[pause=0.3] je l'ai modifié pour qu'il se recharge avec de l'énergie végétale ![pause=0.5] Mais comme tu le devines,[pause=0.3] cette énergie est rare par ici.[pause=0.5] Montons à bord,[pause=0.2] tu veux ?" diff --git a/translation/dialogs/dialogic_wake_up_translation.csv b/translation/dialogs/dialogic_wake_up_translation.csv index dbcb17e..1117913 100644 --- a/translation/dialogs/dialogic_wake_up_translation.csv +++ b/translation/dialogs/dialogic_wake_up_translation.csv @@ -14,5 +14,5 @@ Choice/95/disabled_text,, Text/96/text,"Several disks available,[pause=0.3] most are empty.[pause=0.5] Some seem to contain the system currently analyzing the code of the system analyzing the code of the system analyzing the code of the system analyzing.[pause=0.5].[pause=0.5].[pause=0.5] Infinite recursion,[pause=0.3] better avoid that.","Quelques disques disponibles,[pause=0.3] la plupart sont vides.[pause=0.5] Certains ont l'air de contenir le système analysant le code du système analysant le code du système analysant le code du système analysant.[pause=0.5].[pause=0.5].[pause=0.5] Une récursion infinie,[pause=0.3] il vaudrait mieux éviter ça." Choice/97/text,Wake up,Se réveiller Choice/97/disabled_text,, -Text/98/text,"Overseeing serial number and system name.[pause=0.5].[pause=0.5].[pause=0.5] Strange.[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5] System name is,[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] That is enough for now.","Inspection du numéro de série et du nom du système.[pause=0.5].[pause=0.5].[pause=0.5] Etrange.[pause=0.5] Pas de numéro de série.[pause=0.5] Sûrement une erreur.[pause=0.5] Le nom du système est[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] C'est tout pour le moment." +Text/98/text,"Overseeing serial number and system name.[pause=0.5].[pause=0.5].[pause=0.5] Strange.[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5] System name is,[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] That is enough for now.",Inspection du numéro de série et du nom du système.[pause=0.5].[pause=0.5].[pause=0.5] Etrange.[pause=0.5] Pas de numéro de série.[pause=0.5] Sûrement une erreur.[pause=0.5] Le nom du système est[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] C'est tout pour le moment. Text/99/text,"Starting engines,[pause=0.3] fans and daemons,[pause=0.3] let's see what is to see.","Allumage des moteurs, [pause=0.3]ventilateurs et daemons,[pause=0.3] voyons ce qui nous attends." diff --git a/translation/game/gui.csv b/translation/game/gui.csv index 46965c9..8c7cd76 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -1,17 +1,11 @@ keys,en,fr TUTORIAL,Tutorial,Tutoriel -PLANT_INFO,Plant Info, Informations de plantes -PLANT_INFO_TEXT,"[b]1[/b] Name -[b]2[/b] Archetype -[b]3[/b] Score -[b]4[/b] Age -[b]5[/b] Growing time -[b]6[/b] Lifetime","[b]1[/b] Nom -[b]2[/b] Archétype -[b]3[/b] Score -[b]4[/b] Age -[b]5[/b] Temps de croissance -[b]6[/b] Durée de vie" +ICONS_MEANINGS,Icons Meanings,Signification des Icônes +PLANT_POINTS,Plant points,Points de plante +DAYS,Days,Jours +GROWING_TIME,Growing time (in days),Temps de pousse (en jour) +LIFETIME,Lifetime (in days),Durée de vie (en jour) +SEEDS,Seeds,Graines TERRAINS,Terrains,Terrains FERTILE_LAND_TEXT,[b]Fertile Land[/b] Seeds can only be planted on this zone,[b]Terre fertile[/b] Des graines peuvent être plantées dans cette zone ROCK_TEXT,[b]Rock[/b] Can be dug with a shovel,[b]Roche[/b] Peut être creusée avec une pelle @@ -40,6 +34,7 @@ IMPOSSIBLE,Impossible,Impossible EFFECT,Effect,Effet MATURE,Mature,Mature GROWING,Growing,En train de pousser +JUVENILE,Juvenile,Juvénile DECONTAMINATE,Decontaminate,Décontamine %d_CHARGE_LEFT,%d charge left,%d charges restants LAST_RECHARGE,One recharge remaining,Une recharge restante @@ -60,38 +55,24 @@ MATURE_ON_DAY_%d,Mature on day [b]%d[/b],Mature au jour [b]%d[/b] ABSURD,[rainbow]Absurd[/rainbow],[rainbow]Absurde[/rainbow] GROW_IN_%d,Grow in [b]%d[/b] days,Mature dans [b]%d[/b] jours DIE_ON_DAY_%d,Die on day %d,Meurs au jour %d -%s_SCORE_WHEN_MATURE,Grants [b]%s[/b] plant point when mature,Donne [b]%s[/b] points de jardin une fois mature -DISCOVER_%s,Discover %s,Découvre %s -EVOLVE_%s,Upgrade %s,Améliore %s -%s_SEEDS_CAN_NOW_BE_FOUND,%s seeds can now be found,Des graines de %s peuvent maintenant être trouvées -%s_SCORE_EVOLUTION,%s score evolution,Évolution de score de %s -ADD_%s_TO_THE_DEFAULT_SCORE_OF_THE_PLANT,Add [b]%s[/b] to the default score of the plant,Améliore le score de jardin de la plante de [b]%s[/b] -%s_EVOLUTION,%s evolution,Évolution de %s -UPGRADE_THE_LEVEL_OF_%s_EFFECT_OF_%d_LEVEL,Upgrade the level of %s effect of %d level,Améliore l'effet %s de %d niveau ANCIENT,Ancient,Ancien -ANCIENT_EFFECT_TEXT_LEVEL,"When mature, grants [b]{score_increase}[/b] plant point each [b]{day_factor}[/b] days","Une fois mature, donne [b]{score_increase}[/b] points de plantes tous les [b]{day_factor}[/b] jours" -ELITIST,Elitist,Élitiste -ELITIST_EFFECT_TEXT_LEVEL_%d,"When mature, grants [b]%d[/b] plant point for each plant of the same species around, but do not give any points if it is alone.","Une fois mature, donne [b]%d[/b] points de jardin pour chaque plante de la même espèce aux alentours, mais n’en donne aucun si elle est seule." -ERMIT,Hermit,Ermite -ERMIT_EFFECT_TEXT_LEVEL_%d,"Multiply the garden score by [b]%d[/b] if no plants are nearby, otherwise, set it to 0.","Multiplie le score de jardin par [b]%d[/b] si aucune plante n’est proche, sinon le score est nul." +ANCIENT_EFFECT_TEXT,"When mature, add [b]{score_increase}[/b]{score_icon} each [b]{day_factor}[/b]{duration_icon}","Une fois mature, ajoute [b]{score_increase}[/b]{score_icon} tous les [b]{day_factor}[/b]{duration_icon}" PRECOCIOUS,Precocious,Précoce -PRECOCIOUS_EFFECT_TEXT_LEVEL_%d,Grants [b]%d[/b] plant point while the plant is growing,Donne [b]%d[/b] points de jardin pendant que la plante grandit +PRECOCIOUS_EFFECT_TEXT,[b]{score}[/b]{score_icon} while the plant is growing,[b]{score}[/b]{score_icon} pendant que la plante grandit QUALITY,Quality,Qualité -QUALITY_EFFECT_TEXT_LEVEL_%d,Grants [b]%d[/b] plant point if the plant is mature.,Donne [b]%d[/b] points de jardin si la plante est mature. +QUALITY_EFFECT_TEXT,[b]{score}[/b]{score_icon} if the plant is mature,[b]{score}[/b]{score_icon} si la plante est mature QUICK,Quick,Rapide -QUICK_EFFECT_TEXT_LEVEL,Grants [b]{score_increase}[/b] plant point when mature but reduces the lifetime by [b]{lifetime_decrease}[/b],"Augmente le score mature de [b]{score_increase}[/b], mais réduit le temps de vie de [b]{lifetime_decrease}[/b]" +QUICK_EFFECT_TEXT,"[b]{lifetime_decrease}[/b]{lifetime_icon} and when mature [b]{score_increase}[/b]{score_icon}","[b]{lifetime_decrease}[/b]{lifetime_icon} et une fois mature [b]{score_increase}[/b]{score_icon}" SOCIABLE,Outgoing,Sociable -SOCIABLE_EFFECT_TEXT_LEVEL,"When mature, grants [b]{score_increase}[/b] plant point every [b]{near_amount}[/b] nearby plant","Une fois mature, donne [b]{score_increase}[/b] points de jardin toutes les [b]{near_amount}[/b] plantes autour" -STRONG,Strong,Fort -STRONG_EFFECT_TEXT_LEVEL_%d,Plus [b]%d[/b]%% of the score,Augmente le score de [b]%d[/b]%% +SOCIABLE_EFFECT_TEXT,"When mature, grants [b]{score_increase}[/b]{score_icon} every [b]{near_amount}[/b] nearby plants","Une fois mature, donne [b]{score_increase}[/b]{score_icon} toutes les [b]{near_amount}[/b] plantes autour" TOUGH,Tough,Solide -TOUGH_EFFECT_TEXT_LEVEL_%d,Multiplies the score by [b]2[/b] and increases the growing time by [b]%d[/b] days,"Multiplie le score par [b]2[/b], mais aumgente le temps de pousse de [b]%d[/b] jours" +TOUGH_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon},"Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}" FERTILE,Fertile,Fertile -FERTILE_EFFECT_TEXT_LEVEL_%d,Increases the seed number of [b]%d[/b] to all nearby plant,Augmente le nombre de graines de [b]%d[/b] à toutes les plantes autour +FERTILE_EFFECT_TEXT,Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant,Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour EPHEMERAL,Ephemeral,Éphémère -EPHEMERAL_EFFECT_TEXT_LEVEL,Increases the number of seeds by [b]{seed_number}[/b] when gathered but change the lifetime by [b]{lifetime_change}[/b] days,"Augmente le nombre de graines de [b]{seed_number}[/b] à la récolte, mais modifie le temps de vie de [b]{lifetime_change}[/b]" +EPHEMERAL_EFFECT_TEXT,Add [b]{seed_number}[/b]{seed_icon} but [b]{lifetime_change}[/b]{lifetime_icon},"Ajoute [b]{seed_number}[/b]{seed_icon} mais [b]{lifetime_change}[/b]{lifetime_icon}" PURIFICATION,Purification,Épuration -PURIFICATION_EFFECT_TEXT_LEVEL_%d,"When mature, decontaminate around the plant in a radius of [b]%d[/b]","Une fois mature, décontamine autour de la plante dans un rayon de [b]%d[/b]" +PURIFICATION_EFFECT_TEXT,"When mature, decontaminate in a radius of [b]{purification_radius}[/b]","Une fois mature, décontamine dans un rayon de [b]{purification_radius}[/b]" COST_%d_ENERGY,Cost %d energy,Coûte %d d’énergie ONE_TIME_USE,Single use,Usage unique BUILD_%s,Build %s,Construit %s @@ -117,15 +98,17 @@ OPEN,Open,Ouvrir %s_SEED,%s Seed,Graine de %s PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the decontamined zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone décontaminée. PLANT_%s,Plant [b]%s[/b],Planter [b]%s[/b] -USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY,Use your [b]Detector[/b] to find the [b]Recharge station[/b],Utiliser votre [b]Détecteur[/b] pour trouver la [b]Station de recharge[/b] -TAKE_A_SEED,Take a [b]Seed[/b],Prend une [b]Graine[/b] +MOVE_WITH_RIGHT_CLICK_OR_WASD,"Move with right click or WASD","Déplace-toi avec le clic droit ou ZQSD" +SELECT_ITEM_WITH_SCROLL_CLICK_OR_NUMBER,"Select an item in your toolbar with the mouse wheel or by clicking on it","Sélectionne un item dans ta barre d'outil en utilisant la molette ou en cliquant dessus" +LEFT_CLICK_TO_USE_ITEMS,"Use an item with left click","Utilise un item avec le clic gauche" +DROP_SEED_WITH_KEY,"Drop current item with X","Lâche l'item sélectionné avec X" +USE_YOUR_DETECTOR_TO_FIND_THE_BATTERY,Use your [b]Detector[/b] to find the [b]Recharge station[/b],Utilise ton [b]Détecteur[/b] pour trouver la [b]Station de recharge[/b] +TAKE_A_SEED_BY_CLICKING_ON_IT,Take a [b]Seed[/b] by clicking on it,Prend une [b]Graine[/b] en cliquant dessus DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Shovel[/b],Creuser un [b]Filon de Talion[/b] avec la [b]Pelle[/b] PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b] RECHARGE_TO_PASS_DAYS,Recharge on the [b]Recharge station[/b] to pass the day,Se recharger sur la [b]Station de recharge[/b] pour passer la journée GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b],Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b] -DISCOVER_A_SEED_WITH_A_MUTATION,Discover a [b]Seed[/b] with a [b]Mutation[/b],Découvrez une [b]Graine[/b] avec une [b]Mutation[/b] -PLANT_A_SEED_WITH_A_MUTATION,Plant a [b]Seed[/b] with a [b]Mutation[/b],Plantez une [b]Graine[/b] avec une [b]Mutation[/b] -HARVEST_A_MATURE_PLANT_WITH_A_MUTATION,Harvest a [b]Mature Plant[/b] with a [b]Mutation[/b] using your [b]Shovel[/b],Récoltez une [b]Plante Mature[/b] avec une [b]Mutation[/b] en utilisant votre [b]Pelle[/b] +HARVEST_A_MATURE_PLANT,Harvest a [b]Mature Plant[/b] using your [b]Shovel[/b],Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Pelle[/b] %d_PLANT_POINT,%d Plant Point,%d Point de plante %d_PLANT_POINTS,%d Plant Points,%d Points de plante SCORE_%d,Score %d,Score %d