Ajout des mutations Sauveteuse, Adaptative et résistante, ajout des crédits du jeu et d'un splash screen (+ un peu de debug)

This commit is contained in:
2026-07-10 14:34:27 +02:00
parent 22b753c6a9
commit 3caab11468
34 changed files with 729 additions and 158 deletions
+4 -1
View File
@@ -45,7 +45,10 @@ func get_all_mutations() -> Array[PlantMutation]:
ErmitMutation.new(),
TropicalMutation.new(),
RhizomeMutation.new(),
SpontaneousMutation.new()
SpontaneousMutation.new(),
SaviorMutation.new(),
AdaptiveMutation.new(),
ResistantMutation.new(),
]
func get_all_artifacts() -> Array[Artefact]:
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-brand-tiktok"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M16.083 2h-4.083a1 1 0 0 0 -1 1v11.5a1.5 1.5 0 1 1 -2.519 -1.1l.12 -.1a1 1 0 0 0 .399 -.8v-4.326a1 1 0 0 0 -1.23 -.974a7.5 7.5 0 0 0 1.73 14.8l.243 -.005a7.5 7.5 0 0 0 7.257 -7.495v-2.7l.311 .153c1.122 .53 2.333 .868 3.59 .993a1 1 0 0 0 1.099 -.996v-4.033a1 1 0 0 0 -.834 -.986a5.005 5.005 0 0 1 -4.097 -4.096a1 1 0 0 0 -.986 -.835z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 849 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcpi3j7568ssj"
path="res://.godot/imported/brand-tiktok.svg-90d59fe4c9acbda3dd44d01df8d28aaf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/brand-tiktok.svg"
dest_files=["res://.godot/imported/brand-tiktok.svg-90d59fe4c9acbda3dd44d01df8d28aaf.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-brand-youtube"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M18 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-12a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-9 6v6a1 1 0 0 0 1.514 .857l5 -3a1 1 0 0 0 0 -1.714l-5 -3a1 1 0 0 0 -1.514 .857z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 674 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://r5xl8pwfnxwj"
path="res://.godot/imported/brand-youtube.svg-31f5c2fee0d5c1adf44bc13b41fe4ea0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/brand-youtube.svg"
dest_files=["res://.godot/imported/brand-youtube.svg-31f5c2fee0d5c1adf44bc13b41fe4ea0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+47
View File
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-lifebuoy"
version="1.1"
id="svg7"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs7" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M8 12a4 4 0 1 0 8 0a4 4 0 1 0 -8 0"
id="path2"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"
id="path3"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M15 15l3.35 3.35"
id="path4"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M9 15l-3.35 3.35"
id="path5"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M5.65 5.65l3.35 3.35"
id="path6"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M18.35 5.65l-3.35 3.35"
id="path7"
style="stroke:#ffffff;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bu7t6am6rptlw"
path="res://.godot/imported/lifebuoy.svg-cc678597b00928806b7d9adfb55d35f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/lifebuoy.svg"
dest_files=["res://.godot/imported/lifebuoy.svg-cc678597b00928806b7d9adfb55d35f6.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
@@ -0,0 +1,11 @@
extends Scene
class_name CreditsScene
func get_scene_id() -> String:
return "CREDITS"
func get_scene_path() -> String:
return "res://gui/credits/credits.tscn"
func is_needed_to_be_saved() -> bool:
return false
@@ -0,0 +1 @@
uid://c1a1t8k7b4nny
+1 -1
View File
@@ -19,7 +19,7 @@ const ACH_STW_HIT_30_INFINITE="STW_HIT_30_INFINITE"
func unlock_achievement(achivement_name : String):
if Steam.isSteamRunning():
var status = Steam.getAchievement(achivement_name)
print("Steam Achievement %s" %achivement_name)
print_verbose("Steam Achievement %s" %achivement_name)
if status.has("ret") and status.ret and not status.achieved:
Steam.setAchievement(achivement_name)
Steam.storeStats()
@@ -11,7 +11,9 @@ func update():
else Color.RED )
%EnergyText.text = str(region.data.charges)
if not region.data.pass_day_ended.is_connected(update):
region.data.pass_day_ended.connect(update)
region.data.pass_day_ended.connect(
func (_data): update()
)
func can_interact(_p : Player) -> bool:
return (
-2
View File
@@ -131,11 +131,9 @@ func harvest():
if do_produce_seeds:
for i in range(data.get_seed_number()):
await produce_seed()
if data.get_state() == PlantData.State.MATURE:
for m in data.mutations:
m._start_harvested_effect(self)
harvested = true
plant_sprite.start_harvest_animation()
+8
View File
@@ -17,6 +17,7 @@ enum State {PLANTED, GROWING, MATURE, DEAD}
var decontamination_area_factor = 0.
var nearby_plants : Array[PlantData]
var region_data : RegionData
func _init(
_position: Vector2 = Vector2.ZERO,
@@ -150,6 +151,13 @@ func get_score_buff() -> int:
return buff
func get_mutation_probability_boost() -> float:
var boost = 0
for m in mutations:
boost = m.mutate_mutation_probability_boost(self, boost)
return boost
func disappear():
disappeared.emit(self )
+10 -1
View File
@@ -18,6 +18,9 @@ func get_icon() -> Texture:
func get_base_rarity() -> int:
return 0
func get_max_rarity() -> int:
return MAX_RARITY
@abstract func get_mutation_id() -> String
func get_mutation_name() -> String:
@@ -31,6 +34,9 @@ func mutate_plant_data(_plant_data: PlantData):
func nullify_score(_plant_data: PlantData) -> bool:
return false
func allow_planting_on_decontamined_terrain(_seed : Seed) -> bool:
return false
func mutate_score(_plant_data: PlantData, score: int) -> int:
return score
@@ -61,6 +67,9 @@ func mutate_seed_buff(_plant_data: PlantData, seed_buff : int) -> int:
func mutate_score_buff(_plant_data: PlantData, score_buff : int) -> int:
return score_buff
func mutate_mutation_probability_boost(_plant_data: PlantData, mutation_probability_boost : int) -> float:
return mutation_probability_boost
func _start_planted_effect(_plant: Plant):
pass
@@ -83,7 +92,7 @@ func get_rarity() -> int:
return get_base_rarity() + level - 1
func is_max_level() -> bool:
return get_base_rarity() + level < MAX_RARITY
return get_base_rarity() + level < get_max_rarity()
func card_info() -> CardInfo:
var info = CardInfo.new(
@@ -0,0 +1,19 @@
extends PlantMutation
class_name AdaptiveMutation
func get_icon() -> Texture:
return preload("res://common/icons/dna.svg")
func get_mutation_id() -> String:
return "ADAPTIVE"
func get_base_rarity() -> int:
return 0
func get_mutation_description() -> String:
return tr("ADAPTIVE_EFFECT_TEXT").format({
"mutation_probability_boost": get_mutation_probability_boost(),
})
func get_mutation_probability_boost()->float:
return level * 0.05
@@ -0,0 +1 @@
uid://blwkliqwgqs32
@@ -21,5 +21,5 @@ func mutate_score_multiplier(plant_data: PlantData, multiplier: float) -> float:
return multiplier + get_score_multiplier()
return multiplier
func get_score_multiplier()->int:
return level
func get_score_multiplier()->float:
return 0.5 * level
@@ -0,0 +1,20 @@
extends PlantMutation
class_name ResistantMutation
func get_icon() -> Texture:
return preload("res://common/icons/radioactive.svg")
func get_mutation_id() -> String:
return "RESISTANT"
func get_base_rarity() -> int:
return 0
func get_mutation_description() -> String:
return tr("RESISTANT_EFFECT_TEXT")
func is_max_level() -> bool:
return true
func allow_planting_on_decontamined_terrain(_seed : Seed) -> bool:
return true
@@ -0,0 +1 @@
uid://dfuknjnoo1fp8
@@ -0,0 +1,25 @@
extends PlantMutation
class_name SaviorMutation
func get_icon() -> Texture:
return preload("res://common/icons/lifebuoy.svg")
func get_mutation_id() -> String:
return "SAVIOR"
func get_base_rarity() -> int:
return 0
func get_mutation_description() -> String:
return tr("SAVIOR_EFFECT_TEXT").format({
"score_icon": Text.bbcode_icon(Plant.SCORE_ICON),
"score_multiplier": get_score_multiplier() + 1,
})
func mutate_score_multiplier(plant_data: PlantData, multiplier: float) -> float:
if plant_data.region_data and plant_data.region_data.charges == 0:
return multiplier + get_score_multiplier()
return multiplier
func get_score_multiplier()->float:
return 0.5 * level
@@ -0,0 +1 @@
uid://dn1qruq8wu8y7
@@ -5,7 +5,7 @@ func get_icon() -> Texture:
return preload("res://common/icons/sparkles.svg")
func get_base_rarity() -> int:
return 0
return 1
func is_max_level() -> bool:
return true
+29 -11
View File
@@ -19,7 +19,10 @@ func _init(
static func generate_from_parent(plant_data : PlantData, nearby_plants : Array[PlantData] = []) -> Seed:
var mutations : Array[PlantMutation] = plant_data.mutations
var mutation_probability = GameInfo.game_data.current_run.plant_info.get_mutation_probability()
var mutation_probability = (
GameInfo.game_data.current_run.plant_info.get_mutation_probability()
+ plant_data.get_mutation_probability_boost()
)
var nearby_mutations : Array[PlantMutation] = []
for pd in nearby_plants:
@@ -107,9 +110,15 @@ func can_use(player : Player, zone : Player.ActionZone) -> bool:
zone.get_global_position(),
)] as Array[Vector2i]
var is_decontaminated = player.region.is_coords_decontaminated(plant_tiles)
for m in plant_mutations:
if m.allow_planting_on_decontamined_terrain(self):
is_decontaminated = true
return (
not is_there_a_plant_here
and player.region.is_coords_decontaminated(plant_tiles)
and is_decontaminated
and not player.region.is_coords_rocky(plant_tiles)
)
@@ -178,11 +187,12 @@ static func generate_first_mutations(rarity := 0) -> Array[PlantMutation]:
if rarity < 0:
return []
var possible_mutation : PlantMutation = GameInfo.game_data.progression_data.get_available_mutations().filter(
var possible_mutations : Array[PlantMutation] = GameInfo.game_data.progression_data.get_available_mutations().filter(
func (m : PlantMutation): return m.get_base_rarity() <= rarity
).pick_random()
)
if possible_mutation:
if len(possible_mutations):
var possible_mutation = possible_mutations.pick_random()
possible_mutation = possible_mutation.duplicate_deep()
var level_to_add = rarity - possible_mutation.get_base_rarity()
@@ -197,9 +207,11 @@ static func mutate_mutations(mutations : Array[PlantMutation], nearby_mutations
var mutation_possibility : Array[MutationPossibility] = []
var evolvable_mutations : Array[PlantMutation] = mutations.filter(
func (m : PlantMutation): return not m.is_max_level()
func (m : PlantMutation):
return not m.is_max_level()
)
if (
len(mutations) < GameInfo.game_data.current_run.plant_info.get_mutation_max_number()
):
@@ -208,9 +220,12 @@ static func mutate_mutations(mutations : Array[PlantMutation], nearby_mutations
if len(evolvable_mutations) > 0:
mutation_possibility.append(UpgradeMutation.new())
if len(mutation_possibility) > 0:
var chosen_mutation_possibility = mutation_possibility.pick_random()
return chosen_mutation_possibility.mutate(mutations,nearby_mutations)
else:
print_debug("No mutation possility available")
return mutations
class MutationPossibility:
func mutate(_mutations : Array[PlantMutation], _nearby_mutations : Array[PlantMutation])-> Array[PlantMutation]:
@@ -229,13 +244,16 @@ class AddMutation extends MutationPossibility:
return mutations.find_custom(func(m2: PlantMutation): return m2.id == m.id) == -1
)
var nearby_impacted_possible_new_mutations : Array[PlantMutation] = []
for m1 in possible_new_mutations:
nearby_impacted_possible_new_mutations.append(m1)
for m2 in nearby_mutations:
if m1.id == m2.id:
possible_new_mutations.append(m1) # Double les chances d'avoir la mutation si elle est présente dans les voisins
nearby_impacted_possible_new_mutations.append(m1) # Double les chances d'avoir la mutation si elle est présente dans les voisins
if len(possible_new_mutations):
new_mutations.append(possible_new_mutations.pick_random())
if len(nearby_impacted_possible_new_mutations):
new_mutations.append(nearby_impacted_possible_new_mutations.pick_random())
return new_mutations
@@ -250,7 +268,7 @@ class UpgradeMutation extends MutationPossibility:
for i in range(len(mutations)):
var m = mutations[i]
if m.get_rarity() < PlantMutation.MAX_RARITY:
if not m.is_max_level():
evolvable_mutations_id.append(i)
if len(evolvable_mutations_id):
-3
View File
@@ -115,9 +115,6 @@ func _process(delta):
elif velocity != Vector2.ZERO and %MovementAudioStreamPlayer.playing == false:
%MovementAudioStreamPlayer.play()
# print("-----")
# print(elapsed_time)
# print(last_just_dropped_item_objects_updated)
if elapsed_time > last_just_dropped_item_objects_updated + JUST_DROPPED_ITEM_UPDATE_INTERVAL:
update_just_dropped_item_objects()
+147 -68
View File
@@ -4,15 +4,12 @@
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="2_luv2b"]
[ext_resource type="Texture2D" uid="uid://cdpqg3pkjcw2h" path="res://stages/title_screen/assets/textures/title.png" id="3_urbel"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="4_5k6jv"]
[ext_resource type="PackedScene" uid="uid://bc3byq8e45ejj" path="res://gui/credits/socials/steam.tscn" id="5_luv2b"]
[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="6_kip8e"]
[ext_resource type="PackedScene" uid="uid://c8flevrkelpvy" path="res://gui/credits/socials/instagram.tscn" id="5_urbel"]
[ext_resource type="PackedScene" uid="uid://cm5b7w7j6527f" path="res://stages/title_screen/planet_3d.tscn" id="6_luv2b"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="7_urbel"]
[ext_resource type="Texture2D" uid="uid://b75k12a4wc5t4" path="res://common/icons/book-2.svg" id="8_a8ny4"]
[ext_resource type="Texture2D" uid="uid://dbv5hm7lyi1f6" path="res://common/icons/infinity.svg" id="9_xl2r5"]
[sub_resource type="LabelSettings" id="LabelSettings_m5waa"]
font = ExtResource("7_urbel")
font_size = 20
[sub_resource type="ViewportTexture" id="ViewportTexture_urbel"]
viewport_path = NodePath("SubViewport")
[sub_resource type="LabelSettings" id="LabelSettings_5k6jv"]
font = ExtResource("7_urbel")
@@ -68,9 +65,34 @@ tracks/3/keys = {
"update": 1,
"values": [true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("SubViewport/Camera3D:rotation:x")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("SubViewport/Planet3d:fertility_factor")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="Animation" id="Animation_kip8e"]
resource_name = "appear"
length = 10.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
@@ -78,7 +100,7 @@ tracks/0/path = NodePath("MarginContainer/GridContainer:theme_override_constants
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1),
"times": PackedFloat32Array(9, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [2000, 0]
@@ -90,7 +112,7 @@ tracks/1/path = NodePath("ColorRect:modulate")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.033333335, 0.5),
"times": PackedFloat32Array(9.033333, 9.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
@@ -102,7 +124,7 @@ tracks/2/path = NodePath("MarginContainer:modulate")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.43333334, 1),
"times": PackedFloat32Array(9.433333, 10),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
@@ -114,11 +136,35 @@ tracks/3/path = NodePath(".:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.033333335),
"times": PackedFloat32Array(9.033333),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("SubViewport/Camera3D:rotation:x")
tracks/4/interp = 2
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 9.033333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.51, 0.0]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("SubViewport/Planet3d:fertility_factor")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0.46666667, 9.066667),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_a8ny4"]
_data = {
@@ -126,6 +172,9 @@ _data = {
&"appear": SubResource("Animation_kip8e")
}
[sub_resource type="FastNoiseLite" id="FastNoiseLite_5k6jv"]
frequency = 1.0
[node name="Credits" type="CanvasLayer" unique_id=180964898]
layer = 99
script = ExtResource("1_kip8e")
@@ -138,6 +187,17 @@ grow_horizontal = 2
grow_vertical = 2
color = Color(0.03529412, 0.019607844, 0.1254902, 0.8)
[node name="Background1" type="TextureRect" parent="." unique_id=799945411]
z_index = -1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("ViewportTexture_urbel")
expand_mode = 2
stretch_mode = 6
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1349934988]
anchors_preset = 15
anchor_right = 1.0
@@ -149,7 +209,7 @@ theme = ExtResource("2_luv2b")
[node name="GridContainer" type="GridContainer" parent="MarginContainer" unique_id=1426452837]
layout_mode = 2
theme_override_constants/h_separation = 544
theme_override_constants/v_separation = 448
theme_override_constants/v_separation = 0
columns = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=1825004235]
@@ -169,63 +229,12 @@ stretch_mode = 5
[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=215880453]
layout_mode = 2
text = "THANKS_FOR_PLAYING_DEMO"
text = "THANKS_FOR_PLAYING"
label_settings = ExtResource("4_5k6jv")
horizontal_alignment = 1
[node name="SteamButton" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=1181450581 instance=ExtResource("5_luv2b")]
[node name="Button" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=927302743 instance=ExtResource("5_urbel")]
layout_mode = 2
link = "https://store.steampowered.com/app/4444510/Seeding_The_Wasteland/"
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer" unique_id=465861616]
modulate = Color(1, 0.6509804, 0.09019608, 1)
layout_mode = 2
theme_override_constants/separation = 4
[node name="Label2" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=1013363580]
layout_mode = 2
text = "IN_THE_COMPLETE_GAME"
label_settings = ExtResource("4_5k6jv")
horizontal_alignment = 1
[node name="VBoxContainer" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=115205131]
layout_mode = 2
alignment = 1
[node name="TextureRect" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer" unique_id=148775652]
layout_mode = 2
texture = ExtResource("6_kip8e")
[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer" unique_id=1109596403]
layout_mode = 2
text = "TWICE_MORE_MUTATIONS"
label_settings = SubResource("LabelSettings_m5waa")
[node name="VBoxContainer2" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=921966638]
layout_mode = 2
alignment = 1
[node name="TextureRect" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer2" unique_id=32161915]
layout_mode = 2
texture = ExtResource("8_a8ny4")
[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer2" unique_id=578114248]
layout_mode = 2
text = "A_3_4_HOURS_STORY"
label_settings = SubResource("LabelSettings_m5waa")
[node name="VBoxContainer3" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2" unique_id=1755435556]
layout_mode = 2
alignment = 1
[node name="TextureRect" type="TextureRect" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer3" unique_id=1636037226]
layout_mode = 2
texture = ExtResource("9_xl2r5")
[node name="Label" type="Label" parent="MarginContainer/GridContainer/VBoxContainer/VBoxContainer2/VBoxContainer3" unique_id=222316161]
layout_mode = 2
text = "AN_INFINITE_MODE"
label_settings = SubResource("LabelSettings_m5waa")
[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/GridContainer" unique_id=105267250]
layout_mode = 2
@@ -276,7 +285,7 @@ alignment = 1
[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine4" unique_id=1820679506]
layout_mode = 2
text = "Eva"
text = "Eva Martel"
label_settings = SubResource("LabelSettings_5k6jv")
horizontal_alignment = 1
@@ -291,7 +300,7 @@ alignment = 1
[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine3" unique_id=1412859434]
layout_mode = 2
text = "Victor RJ"
text = "Victor Robert Jaunet"
label_settings = SubResource("LabelSettings_5k6jv")
horizontal_alignment = 1
@@ -330,6 +339,21 @@ layout_mode = 2
text = "COMMUNICATION"
horizontal_alignment = 1
[node name="CreditsLine11" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=544572887]
layout_mode = 2
alignment = 1
[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine11" unique_id=1419201058]
layout_mode = 2
text = "Madison"
label_settings = SubResource("LabelSettings_5k6jv")
horizontal_alignment = 1
[node name="Role" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine11" unique_id=550646115]
layout_mode = 2
text = "PR_AND_MARKETING"
horizontal_alignment = 1
[node name="CreditsLine6" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=192767961]
layout_mode = 2
alignment = 1
@@ -375,13 +399,28 @@ layout_mode = 2
text = "TRAILER"
horizontal_alignment = 1
[node name="CreditsLine13" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=1407984580]
layout_mode = 2
alignment = 1
[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine13" unique_id=651448224]
layout_mode = 2
text = "Baptiste Pocard"
label_settings = SubResource("LabelSettings_5k6jv")
horizontal_alignment = 1
[node name="Role" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine13" unique_id=1434120919]
layout_mode = 2
text = "CONCEPT_ARTS"
horizontal_alignment = 1
[node name="CreditsLine10" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=1089087276]
layout_mode = 2
alignment = 1
[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine10" unique_id=399643362]
layout_mode = 2
text = "Ny Andy"
text = "Ny Andy Ratinarivelo"
label_settings = SubResource("LabelSettings_5k6jv")
horizontal_alignment = 1
@@ -390,6 +429,46 @@ layout_mode = 2
text = "SPLASH_ART"
horizontal_alignment = 1
[node name="CreditsLine12" type="HBoxContainer" parent="MarginContainer/GridContainer/VBoxContainer2" unique_id=1932899531]
layout_mode = 2
alignment = 1
[node name="Name" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine12" unique_id=2037812278]
layout_mode = 2
text = "Cesire"
label_settings = SubResource("LabelSettings_5k6jv")
horizontal_alignment = 1
[node name="Role" type="Label" parent="MarginContainer/GridContainer/VBoxContainer2/CreditsLine12" unique_id=590486308]
layout_mode = 2
text = "DEMETER_VOICE"
horizontal_alignment = 1
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1455518318]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_a8ny4")
autoplay = &"appear"
[node name="SubViewport" type="SubViewport" parent="." unique_id=245713755]
size = Vector2i(1980, 1080)
[node name="WorldEnvironment" type="WorldEnvironment" parent="SubViewport" unique_id=186360917]
[node name="Planet3d" parent="SubViewport" unique_id=866166298 instance=ExtResource("6_luv2b")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
noise = SubResource("FastNoiseLite_5k6jv")
[node name="Camera3D" type="Camera3D" parent="SubViewport" unique_id=232867368]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 64.323)
current = true
fov = 34.0
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="SubViewport" unique_id=1781058708]
transform = Transform3D(0.044800885, 0.76661056, -0.6405476, -0.8325595, 0.38302267, 0.4001729, 0.55212104, 0.51536596, 0.65540874, -23.18848, 19.508549, 0)
light_volumetric_fog_energy = 0.0
light_specular = 0.0
shadow_enabled = true
shadow_normal_bias = 0.0
shadow_opacity = 0.92
shadow_blur = 4.667
+120 -8
View File
@@ -3,7 +3,6 @@
[ext_resource type="Script" uid="uid://2qomrdxbvxqa" path="res://gui/game/pass_day/scripts/pass_day.gd" id="1_0pm4g"]
[ext_resource type="PackedScene" uid="uid://brfsapvj2quxm" path="res://gui/game/energy_info/energy_info.tscn" id="2_feyaf"]
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="4_0pm4g"]
[ext_resource type="Script" uid="uid://0dhj8sdpil7q" path="res://gui/tools/control_animation_player.gd" id="5_dqmg8"]
[ext_resource type="Texture2D" uid="uid://cymrmhsihkj44" path="res://common/icons/recharge.svg" id="6_h2bel"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="7_h2bel"]
[ext_resource type="Texture2D" uid="uid://cihiibon53147" path="res://gui/game/pass_day/assets/day_night_sprite.svg" id="7_m84xg"]
@@ -51,9 +50,121 @@ _data = {
&"pass": SubResource("Animation_5ap0m")
}
[sub_resource type="Animation" id="Animation_0pm4g"]
resource_name = "Appear"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Background:modulate:a")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("NightAnimation:modulate:a")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("PassDayInfo:modulate:a")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.23333333, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MarginContainer/EnergyPassDayInfo:modulate:a")
tracks/3/interp = 2
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.33333334, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
[sub_resource type="Animation" id="Animation_dqmg8"]
resource_name = "Disappear"
[sub_resource type="Animation" id="Animation_m84xg"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Background:modulate:a")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0.0]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("NightAnimation:modulate:a")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0.0]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("PassDayInfo:modulate:a")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0.0]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MarginContainer/EnergyPassDayInfo:modulate:a")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_h2bel"]
_data = {
&"Appear": SubResource("Animation_0pm4g"),
&"Disappear": SubResource("Animation_dqmg8"),
&"RESET": SubResource("Animation_m84xg")
}
[node name="PassDay" type="CanvasLayer" unique_id=335255544]
layer = 3
visible = false
script = ExtResource("1_0pm4g")
[node name="Background" type="ColorRect" parent="." unique_id=527935985]
@@ -68,7 +179,7 @@ color = Color(0.0627451, 0.05882353, 0.16862746, 1)
[node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506]
unique_name_in_owner = true
visible = false
modulate = Color(1, 1, 1, 0)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
@@ -77,11 +188,6 @@ grow_vertical = 2
theme = ExtResource("4_0pm4g")
alignment = 1
[node name="PassDayInfoAnimationPlayer" type="Node" parent="PassDayInfo" unique_id=857480517]
unique_name_in_owner = true
script = ExtResource("5_dqmg8")
metadata/_custom_type_script = "uid://0dhj8sdpil7q"
[node name="TextureRect" type="TextureRect" parent="PassDayInfo" unique_id=1350962162]
layout_mode = 2
size_flags_horizontal = 4
@@ -99,6 +205,7 @@ vertical_alignment = 1
[node name="NightAnimation" type="TextureRect" parent="." unique_id=126988628]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
custom_minimum_size = Vector2(500, 0)
anchors_preset = 8
anchor_left = 0.5
@@ -140,8 +247,13 @@ theme_override_constants/margin_bottom = 15
[node name="EnergyPassDayInfo" parent="MarginContainer" unique_id=2044341204 instance=ExtResource("2_feyaf")]
unique_name_in_owner = true
modulate = Color(1, 1, 1, 0)
layout_mode = 2
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 15
theme_override_constants/margin_right = 15
theme_override_constants/margin_bottom = 15
[node name="PassDayAnimationPlayer" type="AnimationPlayer" parent="." unique_id=2130854776]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_h2bel")
+4 -28
View File
@@ -24,8 +24,6 @@ var is_animation_disappeared := false
func _ready():
hide()
setup_energy_values()
%PassDayInfo.hide()
%Background.modulate.a = 0.
func _process(delta):
if recharging:
@@ -71,36 +69,14 @@ func pass_day_animation():
func appear():
show()
add_tween(
"modulate:a",
%Background,
1.,
0.5
)
await add_tween(
"modulate:a",
%NightAnimation,
1.,
0.5
).finished
%PassDayAnimationPlayer.play("Appear")
await %PassDayInfoAnimationPlayer.appear()
await %PassDayAnimationPlayer.animation_finished
func disappear():
await %PassDayInfoAnimationPlayer.disappear()
add_tween(
"modulate:a",
%Background,
0.0,
0.5
)
await add_tween(
"modulate:a",
%NightAnimation,
0.,
0.5
).finished
%PassDayAnimationPlayer.play_backwards("Appear")
await %PassDayAnimationPlayer.animation_finished
hide()
func add_tween(
+1
View File
@@ -19,6 +19,7 @@ config/description="Seeding planets is a survival, managment and cosy game in wh
config/version="0.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)
config/icon="uid://df0y0s666ui4h"
[audio]
+15
View File
@@ -1,4 +1,19 @@
extends Node
var game_loaded := false
func _ready():
%SplashScreenAnimationPlayer.play("SplashScreen")
await %SplashScreenAnimationPlayer.animation_finished
load_game()
func _input(event):
if event is InputEventKey or event is InputEventJoypadButton or event is InputEventMouseButton:
load_game()
func load_game():
if not game_loaded:
game_loaded = true
SceneManager.change_to_scene(TitleScene.new(), false)
+62
View File
@@ -1,6 +1,68 @@
[gd_scene format=3 uid="uid://c5bruelvqbm1k"]
[ext_resource type="Script" uid="uid://bely2if04v736" path="res://root.gd" id="1_pq8q7"]
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="2_vvh5c"]
[sub_resource type="Animation" id="Animation_jnlp7"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("OrchindiePresentLabel:modulate:a")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [1.0]
}
[sub_resource type="Animation" id="Animation_l8v81"]
resource_name = "SplashScreen"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("OrchindiePresentLabel:modulate:a")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2, 1.8, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"update": 0,
"values": [0.0, 1.0, 1.0, 0.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vyht1"]
_data = {
&"RESET": SubResource("Animation_jnlp7"),
&"SplashScreen": SubResource("Animation_l8v81")
}
[node name="Root" type="Node" unique_id=72535230]
script = ExtResource("1_pq8q7")
[node name="SplashScreenAnimationPlayer" type="AnimationPlayer" parent="." unique_id=2094545804]
unique_name_in_owner = true
root_node = NodePath("../CanvasLayer")
libraries/ = SubResource("AnimationLibrary_vyht1")
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1024220320]
[node name="OrchindiePresentLabel" type="RichTextLabel" parent="CanvasLayer" unique_id=1828726261]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("2_vvh5c")
theme_override_font_sizes/normal_font_size = 30
theme_override_font_sizes/bold_font_size = 30
theme_override_font_sizes/bold_italics_font_size = 30
theme_override_font_sizes/italics_font_size = 30
theme_override_font_sizes/mono_font_size = 30
bbcode_enabled = true
text = "ORCHINDIE_PRESENTS"
horizontal_alignment = 1
vertical_alignment = 1
-20
View File
@@ -41,9 +41,6 @@ shading_mode = 0
albedo_color = Color(0.5882353, 0.7019608, 0.85882354, 1)
albedo_texture = ExtResource("2_mr0dk")
[sub_resource type="ViewportTexture" id="ViewportTexture_dlfx2"]
viewport_path = NodePath("Screen/SubViewport")
[sub_resource type="QuadMesh" id="QuadMesh_m5l0g"]
size = Vector2(3, 3)
@@ -189,21 +186,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -3.9, -0.34409285)
screen_text = "CONNECT_TO_POSEIDON"
broken = true
[node name="Model" parent="AiReceptacle" index="0" unique_id=154868613]
visible = false
[node name="ModelBroken" parent="AiReceptacle" index="1" unique_id=1633938801]
visible = true
[node name="Support" parent="AiReceptacle/ModelBroken" index="5" unique_id=1098621972]
surface_material_override/0 = ExtResource("4_nydtf")
[node name="Screen" parent="AiReceptacle" index="3" unique_id=1396407912]
texture = SubResource("ViewportTexture_dlfx2")
[node name="ScreenTitle" parent="AiReceptacle/Screen/SubViewport/ScreenContent/VBoxContainer" parent_id_path=PackedInt32Array(1082354698, 1893636910) index="1" unique_id=443526476]
text = "CONNECT_TO_POSEIDON"
[node name="SpotLight3D" type="SpotLight3D" parent="AiReceptacle" unique_id=1906884086]
transform = Transform3D(1, 0, 0, 0, -0.67415154, -0.73859304, 0, 0.73859304, -0.67415154, 0, 0.66735864, 3.2564082)
light_color = Color(0.972549, 0.007843138, 0.3764706, 1)
@@ -281,6 +263,4 @@ autoplay = &"blink"
[connection signal="clicked" from="AiReceptacle" to="." method="_on_ai_receptacle_clicked"]
[editable path="hub"]
[editable path="AiReceptacle"]
[editable path="AiReceptacle/ModelBroken"]
[editable path="Player3D"]
@@ -33,7 +33,6 @@ var ship_icon : Sprite2D
func update(with_animation := true, recreate_map = false):
if is_node_ready() and story_step:
print(current_position)
if recreate_map or not ship_icon:
if story_step and get_step_number() < story_step.get_region_sequence_length():
@@ -141,6 +141,7 @@ func add_plant_data(plant_data : PlantData, with_update = true):
func (pd : PlantData): return pd.random_seed == plant_data.random_seed
) == -1:
plants.append(plant_data)
plant_data.region_data = self
plant_data.disappeared.connect(_on_plant_disappeared)
plant_data.updated.connect(func (_p : PlantData) : update())
if with_update:
+17 -7
View File
@@ -1,4 +1,5 @@
keys,en,fr
ORCHINDIE_PRESENTS,Orchindie presents,Orchindie présente
TUTORIAL,Tutorial,Tutoriel
ICONS_MEANINGS,Icons Meanings,Signification des Icônes
PLANT_POINTS,Plant points,Points de plante
@@ -62,7 +63,7 @@ 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
ANCIENT,Ancient,Ancien
ANCIENT,Ancient,Ancienne
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,[b]{score}[/b]{score_icon} while the plant is growing,[b]{score}[/b]{score_icon} pendant que la plante grandit
@@ -76,9 +77,9 @@ TOUGH,Tough,Solide
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,"When mature, add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon} to itself","Si mature, ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon} pour elle même"
PURIFICATION,Purification,Purification
PURIFICATION,Purification,Purificatrice
PURIFICATION_EFFECT_TEXT,"When mature, create fertile zone in a radius of [b]{purification_radius}[/b]","Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]"
HURRIED,Hurried,Pressé
HURRIED,Hurried,Pressée
HURRIED_EFFECT_TEXT,"[b]{growing_time_change}[/b]{growing_time_icon}","[b]{growing_time_change}[/b]{growing_time_icon}"
VIVACIOUS,Vivacious,Vivace
VIVACIOUS_EFFECT_TEXT,[b]{score_change}[/b]{score_icon} the first day of maturation,[b]{score_change}[/b]{score_icon} le premier jour de maturation
@@ -88,20 +89,26 @@ PROLIFIC,Prolific,Prolifique
PROLIFIC_EFFECT_TEXT,[b]+{seeds_change}[/b]{seeds_icon} if mature,[b]+{seeds_change}[/b]{seeds_icon} si mature
PURE,Pure,Pure
PURE_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] if the all the area around is fertile,Multiplie {score_icon} par [b]{score_multiplier}[/b] si toute la zone autour est fertile
GENEROUS,Generous,Généreux
GENEROUS,Generous,Généreuse
GENEROUS_EFFECT_TEXT,"When mature, add [b]{score_buff}[/b]{score_icon} to all nearby plants, but no longer make point","Si mature, ajoute [b]{score_buff}[/b]{score_icon} à toutes les plantes à proximité, mais ne génère plus de points"
PROTECTIVE,Protective,Protecteur
PROTECTIVE,Protective,Protectrice
PROTECTIVE_EFFECT_TEXT,"Add [b]{lifetime_buff}[/b]{lifetime_icon} to all nearby plants","Ajoute [b]{lifetime_buff}[/b]{lifetime_icon} à toutes les plantes à proximité"
CLEANING,Cleaning,Nettoyage
CLEANING,Cleaner,Nettoyante
CLEANING_EFFECT_TEXT,"At the end of its lifetime, create fertile zone in a radius of [b]{purification_radius}[/b]","À la fin de sa durée de vie, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]"
HERMIT,Hermit,Ermite
HERMIT_EFFECT_TEXT,"Multiplies {score_icon} by [b]{score_multiplier}[/b] but make no points near other plants","Multiplie {score_icon} par [b]{score_multiplier}[/b] mais ne fait aucun point si à proximité d'autres plantes"
TROPICAL,Tropical,Tropical
TROPICAL,Tropical,Tropicale
TROPICAL_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] if the day is rainy (1/4 chance),"Multiplie {score_icon} par [b]{score_multiplier}[/b] s'il pleut (1 chance sur 4)"
RHIZOME,Rhizome,Rhizome
RHIZOME_EFFECT_TEXT,"On maturation, dig on a radius of {digging_radius} around","À la maturation, creuse sur un rayon de {digging_radius} autour"
SPONTANEOUS,Spontaneous,Spontanée
SPONTANEOUS_EFFECT_TEXT,Now produces seeds only on maturation,Produit maintenant des graines uniquement à la maturation
SAVIOR,Savior,Sauveuse
SAVIOR_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] when out of recharge,"Multiplie {score_icon} par [b]{score_multiplier}[/b] si aucune recharge restante"
ADAPTIVE,Adaptive,Adaptative
ADAPTIVE_EFFECT_TEXT,Increase mutation chance by [b]{mutation_probability_boost}[/b],Augmente les chances de mutations de [b]{mutation_probability_boost}[/b]
RESISTANT,Resistant,Résistante
RESISTANT_EFFECT_TEXT,Can be planted on non fertile terrain,Peut être plantée sur un terrain non fertile
COST_%d_ENERGY,Cost %d energy,Coûte %d d'énergie
ONE_TIME_USE,Single use,Usage unique
BUILD_%s,Build %s,Construit %s
@@ -292,6 +299,9 @@ WRITING_DEV_AND_GAME_DESIGN,"Writing, Development and Game Design","Écriture,
MUSIC_SOUND_DESIGN_AND_WRITING,"Music, Sound design and Wrinting","Musique, Sons et Écriture"
COMMUNICATION,"Communication","Communication"
SPLASH_ART,Splash Art,Splash Art
PR_AND_MARKETING,"PR & Marketing","PR & Marketing"
DEMETER_VOICE,"Demeter's Voice","Voix de Demeter"
CONCEPT_ARTS,"Concept Arts","Concept Arts"
TRAILER,"Trailer","Trailer"
CREDITS,Credits,Crédits
ASTRA_FACTORY,Astra Factory,Usine Astra
1 keys en fr
2 ORCHINDIE_PRESENTS Orchindie presents Orchindie présente
3 TUTORIAL Tutorial Tutoriel
4 ICONS_MEANINGS Icons Meanings Signification des Icônes
5 PLANT_POINTS Plant points Points de plante
63 ABSURD [rainbow]Absurd[/rainbow] [rainbow]Absurde[/rainbow]
64 GROW_IN_%d Grow in [b]%d[/b] days Mature dans [b]%d[/b] jours
65 DIE_ON_DAY_%d Die on day %d Meurs au jour %d
66 ANCIENT Ancient Ancien Ancienne
67 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}
68 PRECOCIOUS Precocious Précoce
69 PRECOCIOUS_EFFECT_TEXT [b]{score}[/b]{score_icon} while the plant is growing [b]{score}[/b]{score_icon} pendant que la plante grandit
77 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}
78 FERTILE Fertile Fertile
79 FERTILE_EFFECT_TEXT When mature, add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon} to itself Si mature, ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon} pour elle même
80 PURIFICATION Purification Purification Purificatrice
81 PURIFICATION_EFFECT_TEXT When mature, create fertile zone in a radius of [b]{purification_radius}[/b] Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]
82 HURRIED Hurried Pressé Pressée
83 HURRIED_EFFECT_TEXT [b]{growing_time_change}[/b]{growing_time_icon} [b]{growing_time_change}[/b]{growing_time_icon}
84 VIVACIOUS Vivacious Vivace
85 VIVACIOUS_EFFECT_TEXT [b]{score_change}[/b]{score_icon} the first day of maturation [b]{score_change}[/b]{score_icon} le premier jour de maturation
89 PROLIFIC_EFFECT_TEXT [b]+{seeds_change}[/b]{seeds_icon} if mature [b]+{seeds_change}[/b]{seeds_icon} si mature
90 PURE Pure Pure
91 PURE_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] if the all the area around is fertile Multiplie {score_icon} par [b]{score_multiplier}[/b] si toute la zone autour est fertile
92 GENEROUS Generous Généreux Généreuse
93 GENEROUS_EFFECT_TEXT When mature, add [b]{score_buff}[/b]{score_icon} to all nearby plants, but no longer make point Si mature, ajoute [b]{score_buff}[/b]{score_icon} à toutes les plantes à proximité, mais ne génère plus de points
94 PROTECTIVE Protective Protecteur Protectrice
95 PROTECTIVE_EFFECT_TEXT Add [b]{lifetime_buff}[/b]{lifetime_icon} to all nearby plants Ajoute [b]{lifetime_buff}[/b]{lifetime_icon} à toutes les plantes à proximité
96 CLEANING Cleaning Cleaner Nettoyage Nettoyante
97 CLEANING_EFFECT_TEXT At the end of its lifetime, create fertile zone in a radius of [b]{purification_radius}[/b] À la fin de sa durée de vie, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]
98 HERMIT Hermit Ermite
99 HERMIT_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] but make no points near other plants Multiplie {score_icon} par [b]{score_multiplier}[/b] mais ne fait aucun point si à proximité d'autres plantes
100 TROPICAL Tropical Tropical Tropicale
101 TROPICAL_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] if the day is rainy (1/4 chance) Multiplie {score_icon} par [b]{score_multiplier}[/b] s'il pleut (1 chance sur 4)
102 RHIZOME Rhizome Rhizome
103 RHIZOME_EFFECT_TEXT On maturation, dig on a radius of {digging_radius} around À la maturation, creuse sur un rayon de {digging_radius} autour
104 SPONTANEOUS Spontaneous Spontanée
105 SPONTANEOUS_EFFECT_TEXT Now produces seeds only on maturation Produit maintenant des graines uniquement à la maturation
106 SAVIOR Savior Sauveuse
107 SAVIOR_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] when out of recharge Multiplie {score_icon} par [b]{score_multiplier}[/b] si aucune recharge restante
108 ADAPTIVE Adaptive Adaptative
109 ADAPTIVE_EFFECT_TEXT Increase mutation chance by [b]{mutation_probability_boost}[/b] Augmente les chances de mutations de [b]{mutation_probability_boost}[/b]
110 RESISTANT Resistant Résistante
111 RESISTANT_EFFECT_TEXT Can be planted on non fertile terrain Peut être plantée sur un terrain non fertile
112 COST_%d_ENERGY Cost %d energy Coûte %d d'énergie
113 ONE_TIME_USE Single use Usage unique
114 BUILD_%s Build %s Construit %s
299 MUSIC_SOUND_DESIGN_AND_WRITING Music, Sound design and Wrinting Musique, Sons et Écriture
300 COMMUNICATION Communication Communication
301 SPLASH_ART Splash Art Splash Art
302 PR_AND_MARKETING PR & Marketing PR & Marketing
303 DEMETER_VOICE Demeter's Voice Voix de Demeter
304 CONCEPT_ARTS Concept Arts Concept Arts
305 TRAILER Trailer Trailer
306 CREDITS Credits Crédits
307 ASTRA_FACTORY Astra Factory Usine Astra