diff --git a/common/game_data/scripts/progression_data.gd b/common/game_data/scripts/progression_data.gd
index 9b98b40..9629074 100644
--- a/common/game_data/scripts/progression_data.gd
+++ b/common/game_data/scripts/progression_data.gd
@@ -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]:
diff --git a/common/icons/brand-tiktok.svg b/common/icons/brand-tiktok.svg
new file mode 100644
index 0000000..ecc91eb
--- /dev/null
+++ b/common/icons/brand-tiktok.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/common/icons/brand-tiktok.svg.import b/common/icons/brand-tiktok.svg.import
new file mode 100644
index 0000000..7a447ac
--- /dev/null
+++ b/common/icons/brand-tiktok.svg.import
@@ -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
diff --git a/common/icons/brand-youtube.svg b/common/icons/brand-youtube.svg
new file mode 100644
index 0000000..e1b265a
--- /dev/null
+++ b/common/icons/brand-youtube.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/common/icons/brand-youtube.svg.import b/common/icons/brand-youtube.svg.import
new file mode 100644
index 0000000..c7f5d7e
--- /dev/null
+++ b/common/icons/brand-youtube.svg.import
@@ -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
diff --git a/common/icons/lifebuoy.svg b/common/icons/lifebuoy.svg
new file mode 100644
index 0000000..3a5c82b
--- /dev/null
+++ b/common/icons/lifebuoy.svg
@@ -0,0 +1,47 @@
+
+
diff --git a/common/icons/lifebuoy.svg.import b/common/icons/lifebuoy.svg.import
new file mode 100644
index 0000000..c9b8864
--- /dev/null
+++ b/common/icons/lifebuoy.svg.import
@@ -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
diff --git a/common/scene_manager/scripts/scenes/credits_scene.gd b/common/scene_manager/scripts/scenes/credits_scene.gd
new file mode 100644
index 0000000..bcdece5
--- /dev/null
+++ b/common/scene_manager/scripts/scenes/credits_scene.gd
@@ -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
\ No newline at end of file
diff --git a/common/scene_manager/scripts/scenes/credits_scene.gd.uid b/common/scene_manager/scripts/scenes/credits_scene.gd.uid
new file mode 100644
index 0000000..bcbf015
--- /dev/null
+++ b/common/scene_manager/scripts/scenes/credits_scene.gd.uid
@@ -0,0 +1 @@
+uid://c1a1t8k7b4nny
diff --git a/common/steam_connection/steam_connection.gd b/common/steam_connection/steam_connection.gd
index 251c1f7..535ee2d 100644
--- a/common/steam_connection/steam_connection.gd
+++ b/common/steam_connection/steam_connection.gd
@@ -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()
\ No newline at end of file
diff --git a/entities/interactables/truck/recharge/scripts/truck_recharge.gd b/entities/interactables/truck/recharge/scripts/truck_recharge.gd
index 5612a26..580f5d6 100644
--- a/entities/interactables/truck/recharge/scripts/truck_recharge.gd
+++ b/entities/interactables/truck/recharge/scripts/truck_recharge.gd
@@ -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 (
diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd
index a007366..39caf2f 100644
--- a/entities/plants/scripts/plant.gd
+++ b/entities/plants/scripts/plant.gd
@@ -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()
diff --git a/entities/plants/scripts/plant_data.gd b/entities/plants/scripts/plant_data.gd
index bd9a847..933c2a0 100644
--- a/entities/plants/scripts/plant_data.gd
+++ b/entities/plants/scripts/plant_data.gd
@@ -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,
@@ -149,7 +150,14 @@ func get_score_buff() -> int:
buff = m.mutate_score_buff(self, buff)
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 )
diff --git a/entities/plants/scripts/plant_mutation.gd b/entities/plants/scripts/plant_mutation.gd
index 817d944..808ff16 100644
--- a/entities/plants/scripts/plant_mutation.gd
+++ b/entities/plants/scripts/plant_mutation.gd
@@ -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(
diff --git a/entities/plants/scripts/plant_mutation/adaptive_mutation.gd b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd
new file mode 100644
index 0000000..9157bb7
--- /dev/null
+++ b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd
@@ -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
diff --git a/entities/plants/scripts/plant_mutation/adaptive_mutation.gd.uid b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd.uid
new file mode 100644
index 0000000..343496b
--- /dev/null
+++ b/entities/plants/scripts/plant_mutation/adaptive_mutation.gd.uid
@@ -0,0 +1 @@
+uid://blwkliqwgqs32
diff --git a/entities/plants/scripts/plant_mutation/pure_mutation.gd b/entities/plants/scripts/plant_mutation/pure_mutation.gd
index e4b10c4..b280f32 100644
--- a/entities/plants/scripts/plant_mutation/pure_mutation.gd
+++ b/entities/plants/scripts/plant_mutation/pure_mutation.gd
@@ -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
diff --git a/entities/plants/scripts/plant_mutation/resistant_mutation.gd b/entities/plants/scripts/plant_mutation/resistant_mutation.gd
new file mode 100644
index 0000000..3ae1aef
--- /dev/null
+++ b/entities/plants/scripts/plant_mutation/resistant_mutation.gd
@@ -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
\ No newline at end of file
diff --git a/entities/plants/scripts/plant_mutation/resistant_mutation.gd.uid b/entities/plants/scripts/plant_mutation/resistant_mutation.gd.uid
new file mode 100644
index 0000000..80878cc
--- /dev/null
+++ b/entities/plants/scripts/plant_mutation/resistant_mutation.gd.uid
@@ -0,0 +1 @@
+uid://dfuknjnoo1fp8
diff --git a/entities/plants/scripts/plant_mutation/savior_mutation.gd b/entities/plants/scripts/plant_mutation/savior_mutation.gd
new file mode 100644
index 0000000..9f38046
--- /dev/null
+++ b/entities/plants/scripts/plant_mutation/savior_mutation.gd
@@ -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
diff --git a/entities/plants/scripts/plant_mutation/savior_mutation.gd.uid b/entities/plants/scripts/plant_mutation/savior_mutation.gd.uid
new file mode 100644
index 0000000..4e5501a
--- /dev/null
+++ b/entities/plants/scripts/plant_mutation/savior_mutation.gd.uid
@@ -0,0 +1 @@
+uid://dn1qruq8wu8y7
diff --git a/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd b/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd
index aaeb0e3..9289f1d 100644
--- a/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd
+++ b/entities/plants/scripts/plant_mutation/spontaneous_mutation.gd
@@ -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
diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd
index 7973d32..806f579 100644
--- a/entities/player/inventory/scripts/items/seed.gd
+++ b/entities/player/inventory/scripts/items/seed.gd
@@ -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())
- var chosen_mutation_possibility = mutation_possibility.pick_random()
-
- return chosen_mutation_possibility.mutate(mutations,nearby_mutations)
+ 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):
diff --git a/entities/player/scripts/player.gd b/entities/player/scripts/player.gd
index 81e4d86..fd24797 100644
--- a/entities/player/scripts/player.gd
+++ b/entities/player/scripts/player.gd
@@ -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()
diff --git a/gui/credits/credits.tscn b/gui/credits/credits.tscn
index 66a56f3..4646237 100644
--- a/gui/credits/credits.tscn
+++ b/gui/credits/credits.tscn
@@ -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
diff --git a/gui/game/pass_day/pass_day.tscn b/gui/game/pass_day/pass_day.tscn
index f88d06f..af5e2c4 100644
--- a/gui/game/pass_day/pass_day.tscn
+++ b/gui/game/pass_day/pass_day.tscn
@@ -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")
diff --git a/gui/game/pass_day/scripts/pass_day.gd b/gui/game/pass_day/scripts/pass_day.gd
index 9fd4014..91dee81 100644
--- a/gui/game/pass_day/scripts/pass_day.gd
+++ b/gui/game/pass_day/scripts/pass_day.gd
@@ -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(
diff --git a/project.godot b/project.godot
index e73399d..1eccda1 100644
--- a/project.godot
+++ b/project.godot
@@ -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]
diff --git a/root.gd b/root.gd
index 91cc92e..b58383b 100644
--- a/root.gd
+++ b/root.gd
@@ -1,4 +1,19 @@
extends Node
+var game_loaded := false
+
func _ready():
- SceneManager.change_to_scene(TitleScene.new(), false)
\ No newline at end of file
+ %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)
diff --git a/root.tscn b/root.tscn
index 80c7258..871ff14 100644
--- a/root.tscn
+++ b/root.tscn
@@ -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
diff --git a/stages/3d_scenes/aqua_base/aqua_base.tscn b/stages/3d_scenes/aqua_base/aqua_base.tscn
index c67033c..fd75829 100644
--- a/stages/3d_scenes/aqua_base/aqua_base.tscn
+++ b/stages/3d_scenes/aqua_base/aqua_base.tscn
@@ -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"]
diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd
index d73eae4..77ce80a 100644
--- a/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd
+++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/travel_screen/scripts/travel_screen_content.gd
@@ -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():
diff --git a/stages/terrain/region/scripts/region_data.gd b/stages/terrain/region/scripts/region_data.gd
index 547ee67..35b9bbb 100644
--- a/stages/terrain/region/scripts/region_data.gd
+++ b/stages/terrain/region/scripts/region_data.gd
@@ -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:
diff --git a/translation/game/gui.csv b/translation/game/gui.csv
index 427f111..d930765 100644
--- a/translation/game/gui.csv
+++ b/translation/game/gui.csv
@@ -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