Dev 0.2.0

* Equilibrage de la difficulté (suite)
* Correction du timing des dialogues de Demeter
* Dev de la base astra (avec les logs)
* Fix de bug de duplication d'objets
* Fix de la mutation ancien
* Ajout d'une mention de la propagation des mutations dans le tuto
This commit is contained in:
2026-07-25 20:09:54 +02:00
parent 3ff6d68371
commit ffe6f50ba6
64 changed files with 633 additions and 126 deletions
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bxorbhnr4o2rj"
path="res://.godot/imported/icon.png-5e2e422904d471016252dff8d4bdfa96.ctex"
path.s3tc="res://.godot/imported/icon.png-5e2e422904d471016252dff8d4bdfa96.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/dialogic/Modules/Signal/icon.png"
dest_files=["res://.godot/imported/icon.png-5e2e422904d471016252dff8d4bdfa96.ctex"]
dest_files=["res://.godot/imported/icon.png-5e2e422904d471016252dff8d4bdfa96.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,4 +38,4 @@ 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
detect_3d/compress_to=0
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://k0g15mxi14ba"
path="res://.godot/imported/node_name_label_icon.svg-d482939b74b41ec2da6edc97e41c8bf8.ctex"
path.s3tc="res://.godot/imported/node_name_label_icon.svg-d482939b74b41ec2da6edc97e41c8bf8.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://addons/dialogic/Modules/Text/node_name_label_icon.svg"
dest_files=["res://.godot/imported/node_name_label_icon.svg-d482939b74b41ec2da6edc97e41c8bf8.ctex"]
dest_files=["res://.godot/imported/node_name_label_icon.svg-d482939b74b41ec2da6edc97e41c8bf8.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+2 -2
View File
@@ -54,8 +54,8 @@ func get_first_vending_machine_occurence(_level : int, _difficulty_setting : int
func get_vending_machine_occurence(_level : int, _difficulty_setting : int) -> int:
return 3
func get_first_cave_occurence(level : int, difficulty_setting : int) -> int:
return get_cave_occurence(level, difficulty_setting)
func get_first_cave_occurence(_level : int, _difficulty_setting : int) -> int:
return 1
func get_cave_occurence(_level : int, _difficulty_setting : int) -> int:
return 3
@@ -32,7 +32,7 @@ func get_region_sequence_length(_difficulty_setting : int) -> int:
return 5
func get_objective_multiplier() -> float:
return 0.8
return 0.6
func is_run_point_dangerous(_level : int, _difficulty_setting : int) -> bool:
return false
@@ -47,7 +47,7 @@ func get_challenge_chance(_level : int, _difficulty_setting : int) -> float:
return 0.
func get_ship_dialog_path(level : int, difficulty_setting : int ,ship_in_space := true) -> String:
if ship_in_space and level == get_cave_occurence(level, difficulty_setting):
if ship_in_space and level + 1 == get_cave_occurence(level, difficulty_setting):
return CAVE_DIALOG_PATH
if ship_in_space and is_run_finished(level + 1, difficulty_setting):
return MERCURY_ARRIVAL_DIALOG_PATH
@@ -36,12 +36,12 @@ func get_region_sequence_length(_difficulty_setting : int) -> int:
return 6
func get_objective_multiplier() -> float:
return 1
return 0.8
func get_ship_dialog_path(level : int, difficulty_setting : int, ship_in_space := true) -> String:
if level == 0:
return MERCURY_DEPARTURE_DIALOG_PATH
if level == 2:
if level == 1 and ship_in_space:
return VENDING_MACHINE_DIALOG_PATH
if ship_in_space and is_run_finished(level + 1, difficulty_setting):
return VENUS_ARRIVAL_DIALOG_PATH
@@ -26,7 +26,7 @@ func get_destination_scene() -> Scene:
return BoreaScene.new()
func get_objective_multiplier() -> float:
return 1.2
return 1.
func get_player_max_energy(difficulty_setting := 1) -> int:
if difficulty_setting == 0:
@@ -34,7 +34,7 @@ func get_player_max_inventory(_difficulty_setting) -> int:
return 4
func get_objective_multiplier() -> float:
return 1.4
return 1.2
func get_ship_dialog_path(level : int, _difficulty_setting : int, _ship_in_space := true) -> String:
if level == 5:
@@ -35,7 +35,7 @@ func get_player_max_inventory(_difficulty_setting : int) -> int:
return 5
func get_objective_multiplier() -> float:
return 1.6
return 1.4
func get_ship_dialog_path(level : int, _difficulty_setting : int, _ship_in_space := true) -> String:
if level == 5:
@@ -35,7 +35,7 @@ func get_player_max_inventory(_difficulty_setting : int) -> int:
return 5
func get_objective_multiplier() -> float:
return 1.8
return 1.6
func get_ship_dialog_path(level : int, _difficulty_setting : int, _ship_in_space := true) -> String:
if level == 5:
@@ -22,6 +22,9 @@ func get_logs() -> Array[Log]:
func get_destination_text() -> String:
return tr("ESTIA_BASE")
func get_region_sequence_length(_difficulty_setting : int) -> int:
return 10
func get_destination_scene() -> Scene:
return AstraScene.new(
false
+7 -6
View File
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://n5ohgm4odri5"
path="res://.godot/imported/atom.svg-203f467e4f45f7544a18f8b0644aa19a.ctex"
path.s3tc="res://.godot/imported/atom.svg-203f467e4f45f7544a18f8b0644aa19a.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://common/icons/atom.svg"
dest_files=["res://.godot/imported/atom.svg-203f467e4f45f7544a18f8b0644aa19a.ctex"]
dest_files=["res://.godot/imported/atom.svg-203f467e4f45f7544a18f8b0644aa19a.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+7 -6
View File
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ce3hclmo0jcoh"
path="res://.godot/imported/cloud-rain.svg-80379b0936dff4583ecdd239d916ebab.ctex"
path.s3tc="res://.godot/imported/cloud-rain.svg-80379b0936dff4583ecdd239d916ebab.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://common/icons/cloud-rain.svg"
dest_files=["res://.godot/imported/cloud-rain.svg-80379b0936dff4583ecdd239d916ebab.ctex"]
dest_files=["res://.godot/imported/cloud-rain.svg-80379b0936dff4583ecdd239d916ebab.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+7 -6
View File
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cs5jk1312wauu"
path="res://.godot/imported/coin.svg-08623932cd6c1ab8a19bb6ae049240d0.ctex"
path.s3tc="res://.godot/imported/coin.svg-08623932cd6c1ab8a19bb6ae049240d0.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://common/icons/coin.svg"
dest_files=["res://.godot/imported/coin.svg-08623932cd6c1ab8a19bb6ae049240d0.ctex"]
dest_files=["res://.godot/imported/coin.svg-08623932cd6c1ab8a19bb6ae049240d0.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+7 -6
View File
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://baughrx6x5sx2"
path="res://.godot/imported/radioactive.svg-826ebf1689bc47cf482da642b68adf02.ctex"
path.s3tc="res://.godot/imported/radioactive.svg-826ebf1689bc47cf482da642b68adf02.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://common/icons/radioactive.svg"
dest_files=["res://.godot/imported/radioactive.svg-826ebf1689bc47cf482da642b68adf02.ctex"]
dest_files=["res://.godot/imported/radioactive.svg-826ebf1689bc47cf482da642b68adf02.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+7 -6
View File
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://c15ith3niu7sa"
path="res://.godot/imported/wave-sine.svg-af18e7f57640d33da7bef035e7276303.ctex"
path.s3tc="res://.godot/imported/wave-sine.svg-af18e7f57640d33da7bef035e7276303.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://common/icons/wave-sine.svg"
dest_files=["res://.godot/imported/wave-sine.svg-af18e7f57640d33da7bef035e7276303.ctex"]
dest_files=["res://.godot/imported/wave-sine.svg-af18e7f57640d33da7bef035e7276303.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
@@ -8,7 +8,7 @@ func get_scene_icon() -> Texture:
return preload("res://common/icons/building-factory-2.svg")
func get_scene_path() -> String:
return "res://stages/3d_scenes/astra_base/astra_end_base.tscn"
return "res://stages/3d_scenes/astra_end_base/astra_end_base.tscn"
func is_mouse_captured() -> bool:
return true
+1 -1
View File
@@ -21,7 +21,7 @@ const ACH_STW_TOO_FAR="STW_TOO_FAR"
func unlock_achievement(achivement_name : String):
if Steam.isSteamRunning():
var status = Steam.getAchievement(achivement_name)
print("Steam Achievement %s" % achivement_name)
print_debug("Steam Achievement %s" % achivement_name)
if status.has("ret") and status.ret and not status.achieved:
Steam.setAchievement(achivement_name)
Steam.storeStats()
-1
View File
@@ -186,7 +186,6 @@ const RANDOM_REGION_TYPE_POOL = [
"REGION_TYPE_GROUNDS",
"REGION_TYPE_PLATEAU",
"REGION_TYPE_FOOTHILLS",
"REGION_TYPE_CANYON",
"REGION_TYPE_RIDGE",
"REGION_TYPE_LANDSCAPE",
]
@@ -14,7 +14,7 @@ func set_to_scene(v : Scene = to_scene):
%Icon.texture = to_scene.get_scene_icon()
%Icon2.texture = to_scene.get_scene_icon()
func click():
func click(_player3d :Player3D):
if interactable:
clicked.emit()
if to_scene:
@@ -9,7 +9,7 @@ signal broken
func _ready():
update_model()
func click():
func click(_player3d :Player3D):
if interactable:
clicked.emit()
%BreackAudioPlayer.playing = true
+1 -1
View File
@@ -13,7 +13,7 @@ signal clicked
func _ready():
set_interactable()
func click():
func click(_player3d : Player3D):
if interactable:
clicked.emit()
@@ -2,7 +2,7 @@ extends Interactable3D
class_name Phone
func click():
func click(_player3d :Player3D):
if interactable:
clicked.emit()
interactable = false
Binary file not shown.
@@ -39,7 +39,15 @@ import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
_subresources={
"materials": {
"Material": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
"use_external/path": "uid://dvvi1k5c5iowc"
}
}
}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
@@ -0,0 +1,90 @@
[gd_scene format=3 uid="uid://d2mqot6b0wrji"]
[ext_resource type="PackedScene" uid="uid://butkx8cygbesm" path="res://entities/interactable_3d/radio/assets/3d/radio.blend" id="1_4uibp"]
[ext_resource type="Script" uid="uid://cg53cu64nnq2u" path="res://entities/interactable_3d/radio/scripts/radio_3d.gd" id="1_a4m61"]
[ext_resource type="PackedScene" uid="uid://bf5viaiuq62f0" path="res://gui/game/log_screen/log_screen.tscn" id="3_6gjd1"]
[ext_resource type="Texture2D" uid="uid://bxorbhnr4o2rj" path="res://addons/dialogic/Modules/Signal/icon.png" id="3_h0e4o"]
[sub_resource type="Gradient" id="Gradient_oh5lq"]
offsets = PackedFloat32Array(1)
colors = PackedColorArray(0.06318334, 0.059500005, 0.17, 1)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_g4v7s"]
gradient = SubResource("Gradient_oh5lq")
width = 25
height = 24
[sub_resource type="Gradient" id="Gradient_4uibp"]
interpolation_mode = 1
offsets = PackedFloat32Array(0.508547, 0.5470086, 0.5811966, 0.6367521, 0.6752137)
colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_4uibp"]
gradient = SubResource("Gradient_4uibp")
width = 500
height = 500
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 0.5)
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yf5fn"]
transparency = 1
shading_mode = 0
vertex_color_use_as_albedo = true
albedo_texture = SubResource("GradientTexture2D_4uibp")
billboard_mode = 1
billboard_keep_scale = true
[sub_resource type="PlaneMesh" id="PlaneMesh_g4v7s"]
material = SubResource("StandardMaterial3D_yf5fn")
orientation = 2
[sub_resource type="Curve" id="Curve_4uibp"]
_data = [Vector2(0, 0), 0.0, 3.382857, 0, 0, Vector2(1, 1), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type="Gradient" id="Gradient_xb8ew"]
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="BoxShape3D" id="BoxShape3D_g4v7s"]
size = Vector3(0.7519531, 0.5413208, 0.4404297)
[node name="Radio3d" type="Area3D" unique_id=478512957]
script = ExtResource("1_a4m61")
log_title = "Title is the real title"
[node name="radio" parent="." unique_id=828194383 instance=ExtResource("1_4uibp")]
[node name="OffScreen" type="Sprite3D" parent="radio" unique_id=1730668971]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.12157962, -0.0024592131, -0.16259766)
visible = false
texture = SubResource("GradientTexture2D_g4v7s")
[node name="Icon" type="Sprite3D" parent="radio" unique_id=664077032]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1324744, 0.015149429, -0.15777588)
pixel_size = 0.003
texture = ExtResource("3_h0e4o")
[node name="CPUParticles3D" type="CPUParticles3D" parent="." unique_id=464922262]
unique_name_in_owner = true
amount = 2
preprocess = 1.0
explosiveness = 0.6
mesh = SubResource("PlaneMesh_g4v7s")
gravity = Vector3(0, 0, 0)
scale_amount_curve = SubResource("Curve_4uibp")
color = Color(1, 0, 0.4333334, 0.78431374)
color_ramp = SubResource("Gradient_xb8ew")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1594995973]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01159668, 0.09970093, -0.0076293945)
shape = SubResource("BoxShape3D_g4v7s")
[node name="LogScreen" parent="." unique_id=1955577551 instance=ExtResource("3_6gjd1")]
unique_name_in_owner = true
log_title = "Title is the real title"
log_text = "Text"
[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="." unique_id=703219960]
@@ -0,0 +1,54 @@
@tool
extends Interactable3D
class_name Radio3d
@export var log_title : String = "Title" : set = set_title
@export var log_text : String = "Text" : set = set_text
@export var read := false : set = set_read
func _ready():
set_interactable()
set_title()
set_text()
set_read()
func set_title(v := log_title):
log_title = v
if is_node_ready():
%LogScreen.log_title = log_title
func set_text(v := log_text):
log_text = v
if is_node_ready():
%LogScreen.log_text = log_text
func set_read(v := read):
read = v
if is_node_ready():
%CPUParticles3D.emitting = not read
%OffScreen.visible = read
%Icon.visible = not read
func click(player3d :Player3D):
if interactable:
clicked.emit()
%LogScreen.appear()
AudioManager.play_sfx("MessageEnter")
%LogScreen.appear()
read = true
interactable = false
player3d.controlling_player = false
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
%LogScreen.disappeared.connect(
func():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
player3d.controlling_player = true
get_tree().create_timer(0.5).timeout.connect( # Put a delay to not interfere with the ok button click
func():
interactable = true
)
AudioManager.play_sfx("MessageExit")
)
@@ -0,0 +1 @@
uid://cg53cu64nnq2u
@@ -15,6 +15,8 @@ const SPRITE_SCENE: PackedScene = preload("res://entities/interactables/item_obj
@onready var object_sprite: ItemObjectSprite = generate_sprite()
var is_taken := false
func _init(_item = null):
if _item:
item = _item
@@ -49,11 +51,17 @@ func card_info() -> CardInfo:
return item.card_info()
func interact(player : Player) -> bool:
if player.can_pick_item(item):
await pickup_animation(player.global_position)
queue_free()
if (
player.can_pick_item(item)
and not is_taken
and player.elapsed_time > player.last_seed_taken + Player.TAKE_ITEM_INTERVAL
):
player.last_seed_taken = player.elapsed_time
is_taken = true
player.pick_item(item)
await pickup_animation(player.global_position)
item.has_been_inspected = true
queue_free()
return true
return false
@@ -4,16 +4,16 @@ class_name Radio
@onready var log_screen : LogScreen = %LogScreen
var radio_log : StoryStep.Log = null : set = set_radio_log
var unread := true : set = set_unread
var unread := false : set = set_unread
func _ready():
var story_step := GameInfo.game_data.progression_data.get_story_step()
if len(story_step.get_logs()):
radio_log = story_step.get_logs().pick_random()
if radio_log:
unread = not radio_log.key in GameInfo.game_data.logs_read
if unread :
available = true
else:
hide()
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://n7hhyqhhtx0q"
path="res://.godot/imported/compost.png-e03e492b1de4adb6f23b4a9bd2caffe2.ctex"
path.s3tc="res://.godot/imported/compost.png-e03e492b1de4adb6f23b4a9bd2caffe2.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://entities/interactables/truck/compost/assets/sprites/compost.png"
dest_files=["res://.godot/imported/compost.png-e03e492b1de4adb6f23b4a9bd2caffe2.ctex"]
dest_files=["res://.godot/imported/compost.png-e03e492b1de4adb6f23b4a9bd2caffe2.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,4 +38,4 @@ 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
detect_3d/compress_to=0
@@ -27,7 +27,7 @@ func get_day_factor():
return max(1, DEFAULT_DAY_FACTOR - level)
func get_score_increase():
return max(1, level - DEFAULT_DAY_FACTOR + 1)
return max(1, level - DEFAULT_DAY_FACTOR + 2)
func mutate_score(data : PlantData, score) -> int:
if data.get_state() != PlantData.State.MATURE:
@@ -56,7 +56,6 @@ func generate_plants():
child.free()
for i in n_to_generate:
print("Generate plant :")
var plant_pos_x = (i % n_per_row) * space_between_plants
@warning_ignore("integer_division")
var plant_pos_y = (i / n_per_row) * space_between_plants
@@ -80,7 +79,6 @@ func generate_plants():
picked_mutation.level = randi_range(min_level, max_level)
plant_data.mutations.append(picked_mutation)
var plant: Plant = Plant.new(plant_data)
print(plant.data.plant_name)
%Plants.add_child(plant)
plant.global_position = plant_position
@@ -89,7 +87,6 @@ func generate_seeds():
child.free()
for i in n_to_generate:
print("Generate seed :")
var seed_pos_x = (i % n_per_row) * space_between_plants
@warning_ignore("integer_division")
var seed_pos_y = (i / n_per_row) * space_between_plants
@@ -15,7 +15,7 @@ class_name PlantPartBuilder
func load_resource():
var destination := "res://entities/plants/resources/plant_parts/" + part_name + ".tres"
print("Loading: ", part_name, " n°: ", part_index, " at: ", destination)
# print("Loading: ", part_name, " n°: ", part_index, " at: ", destination)
var part_group: PartGroup = ResourceLoader.load(destination) as PartGroup
if part_group.parts.size() <= part_index:
printerr("No part at ", part_index)
@@ -47,7 +47,7 @@ func load_resource():
func save_as_resource():
var destination := "res://entities/plants/resources/plant_parts/" + part_name + ".tres"
print("Saving: ", part_name, " n°: ", part_index, " at: ", destination)
# print("Saving: ", part_name, " n°: ", part_index, " at: ", destination)
var part_group: PartGroup = ResourceLoader.load(destination) as PartGroup
if not part_group:
part_group = PartGroup.new()
@@ -137,7 +137,7 @@ func build_plant_texture(plant_data: PlantData) -> Texture:
texture = PLACEHOLDER_GROWING_TEXTURE
base_part = pick_random(baby_bases)
_:
print("{state} not handled".format({"state": PlantData.State.keys()[plant_data.get_state()]}))
# print("{state} not handled".format({"state": PlantData.State.keys()[plant_data.get_state()]}))
return null
var weight_per_origin_type: Array[int] = origin_weights_base.values().duplicate()
+5 -1
View File
@@ -7,6 +7,7 @@ const HOLDING_ITEM_SPRITE_SIZE = 20.
const TURN_ANIMATION_MINIMUM_THRESHOLD = 0.2
const SPEED = 350
const JUST_DROPPED_ITEM_UPDATE_INTERVAL = 1.
const TAKE_ITEM_INTERVAL = .3
const LOW_SIGNAL_ALERT_DISTANCE = 500
const BACKROOM_DISTANCE = 4000
@@ -46,6 +47,7 @@ var show_low_signal : bool = false :
var just_dropped_item_objects : Array = []
var last_just_dropped_item_objects_updated := 0.
var last_instruction_done := 0.
var last_seed_taken := 0.
var elapsed_time := 0.
var backrooms_loaded := false
@@ -165,7 +167,9 @@ func update_just_dropped_item_objects():
func take_surrounding_seeds():
var overlapping_areas = (%InteractArea2D as Area2D).get_overlapping_areas()
if not data.inventory.is_full():
if (
not data.inventory.is_full()
):
for area in overlapping_areas:
if (
area is ItemObject
+1 -1
View File
@@ -52,7 +52,7 @@ func _input(event):
var tween = create_tween()
tween.tween_property(%InteractTutorial, "modulate:a", 0., 0.8)
GameInfo.game_data.tutorials_done.append("3d_action")
action_hovered.click()
action_hovered.click(self)
func _physics_process(delta):
+5
View File
@@ -1265,6 +1265,11 @@ scroll_active = false
horizontal_alignment = 2
vertical_alignment = 1
[node name="Subtitle2" type="Label" parent="MutationTutorial/MarginContainer" unique_id=1854062041]
layout_mode = 2
text = "PLANTS_HAVE_A_CHANCE_TO_PASS_THEIR_MUTATIONS_TO_NEARBY_SEEDS"
horizontal_alignment = 1
[node name="MutationOkButton" type="Button" parent="MutationTutorial/MarginContainer" unique_id=2070965633]
layout_mode = 2
size_flags_horizontal = 4
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://sq5of6kpjrxj"
path="res://.godot/imported/pointer-signal.svg-f760203858e8cefeb5c8506af6f58026.ctex"
path.s3tc="res://.godot/imported/pointer-signal.svg-f760203858e8cefeb5c8506af6f58026.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://gui/pointer/assets/cursors/pointer-signal.svg"
dest_files=["res://.godot/imported/pointer-signal.svg-f760203858e8cefeb5c8506af6f58026.ctex"]
dest_files=["res://.godot/imported/pointer-signal.svg-f760203858e8cefeb5c8506af6f58026.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,7 +38,7 @@ 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
detect_3d/compress_to=0
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
+5 -6
View File
@@ -206,13 +206,13 @@ unique_name_in_owner = true
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1392940941]
environment = SubResource("Environment_lhhy6")
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_4wxm6")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.925, 1, 4.22)
[node name="Phone" parent="." unique_id=429299908 instance=ExtResource("4_mwti2")]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -1.509958e-07, 0, 1, 0, 1.509958e-07, 0, -1, 0.8795166, 0.90269387, -2.0494514)
transform = Transform3D(-1, 0, -1.509958e-07, 0, 1, 0, 1.509958e-07, 0, -1, 0.88, 0.903, -2.049)
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_4wxm6")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.5150342, 1, 0)
[node name="Lift" parent="." unique_id=1854388434 instance=ExtResource("5_lhhy6")]
unique_name_in_owner = true
@@ -228,7 +228,6 @@ shape = SubResource("SphereShape3D_kdvug")
[node name="LiftHideScreen" type="Sprite3D" parent="Lift" unique_id=809134917]
unique_name_in_owner = true
transform = Transform3D(1.3626386e-07, 0.19990343, 0.9798156, -2.7800754e-08, 0.9798156, -0.19990343, -1, 0, 1.3907092e-07, -0.8308959, 1.5522995, 0)
visible = false
texture = SubResource("GradientTexture2D_g4v7s")
[node name="TrailerCamera" type="Camera3D" parent="." unique_id=1809922038]
@@ -1,4 +1,3 @@
@tool
extends Node3D
class_name AstraBase
@@ -31,6 +30,8 @@ func _ready():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
set_room_part_number()
arrive_player()
func spawn_player():
chosen_incubator_id = randi_range(0, len(%Incubators.get_children()) - 1)
var new_player_incubator := %Incubators.get_children()[chosen_incubator_id] as Incubator
@@ -50,11 +51,13 @@ func spawn_player():
func story_on_spawn():
AudioManager.play_sfx("Respawn")
%LiftHideScreen.visible = false
if (
GameInfo.game_data.progression_data.get_story_step() is TutorialStoryStep
and not TutorialStoryStep.INTRO_DIALOG in GameInfo.game_data.dialogs_done
):
%Phone.visible = true
%Phone.play_audio()
await %Phone.clicked
%Phone.stop_audio()
@@ -3,6 +3,7 @@
[ext_resource type="Script" uid="uid://btc447j47jbx0" path="res://stages/3d_scenes/astra_end_base/scripts/astra_end_base.gd" id="1_fevne"]
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="1_xd71i"]
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_c8vcx"]
[ext_resource type="Material" uid="uid://ukcnxnnsi8ki" path="res://common/assets/materials/pearlescent.tres" id="4_a1v2l"]
[ext_resource type="PackedScene" uid="uid://bqo4uknlbm8r1" path="res://stages/3d_scenes/astra_end_base/assets/3d/astra_end_base.blend" id="4_s7tqr"]
[ext_resource type="Texture2D" uid="uid://ca8jjqdbm3tc3" path="res://stages/3d_scenes/astra_end_base/assets/2d/alien_writings/lucius_cipher.png" id="5_tbsgm"]
[ext_resource type="Texture2D" uid="uid://65ajxn4q8mxk" path="res://stages/3d_scenes/astra_end_base/assets/2d/alien_writings/calligraphic_avali_scratch.png" id="6_on72i"]
@@ -10,6 +11,9 @@
[ext_resource type="Texture2D" uid="uid://br57pu7qq2bnq" path="res://stages/3d_scenes/astra_end_base/assets/2d/alien_writings/retrospection.png" id="8_ipyd4"]
[ext_resource type="Texture2D" uid="uid://dj0d2hkji46gd" path="res://stages/3d_scenes/astra_end_base/assets/2d/alien_writings/templar_cipher_plus.png" id="9_r7duo"]
[ext_resource type="Texture2D" uid="uid://bcayfx6nwlx7f" path="res://stages/3d_scenes/astra_end_base/assets/2d/alien_writings/wavefront.png" id="10_a1v2l"]
[ext_resource type="PackedScene" uid="uid://cypsoytvytdup" path="res://entities/interactable_3d/3d_door/3d_door.tscn" id="11_kd1mw"]
[ext_resource type="PackedScene" uid="uid://d2mqot6b0wrji" path="res://entities/interactable_3d/radio/radio_3d.tscn" id="12_ipyd4"]
[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="13_r7duo"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2ei4e"]
shader = ExtResource("1_xd71i")
@@ -52,7 +56,94 @@ volumetric_fog_sky_affect = 0.0
adjustment_enabled = true
adjustment_saturation = 1.3
[node name="BoreaBase" type="Node3D" unique_id=442220603]
[sub_resource type="SphereMesh" id="SphereMesh_6vgbi"]
[sub_resource type="Gradient" id="Gradient_pt3q5"]
offsets = PackedFloat32Array(0.26086956, 0.70652175, 0.9927536)
colors = PackedColorArray(1, 0, 0.43137255, 1, 0.54899985, 0.18, 1, 0.6, 0.54899985, 0.18, 1, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_faqab"]
gradient = SubResource("Gradient_pt3q5")
fill = 1
fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 0.5)
[sub_resource type="Animation" id="Animation_4ljrk"]
resource_name = "Pulse"
length = 2.0
loop_mode = 1
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite3D:scale:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 3, 0),
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0, 1.1005427, -0.90000004, -0.0019688606, 0.90000004, 0.0019688606, 1, -0.16111112, 0, 0.1711111, 0),
"times": PackedFloat32Array(0, 0.8, 1.9933333)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite3D:scale:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0, 3, 0),
"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0, 1.0991166, -0.7, 0.00159657, 0.7, -0.00159657, 1, -0.15555556, 0, 0.17777777, 0),
"times": PackedFloat32Array(0, 1.2666667, 2)
}
tracks/2/type = "bezier"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Sprite3D:scale:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"handle_modes": PackedInt32Array(),
"points": PackedFloat32Array(),
"times": PackedFloat32Array()
}
[sub_resource type="Animation" id="Animation_pt3q5"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite3D:scale:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
tracks/1/type = "bezier"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Sprite3D:scale:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vugff"]
_data = {
&"Pulse": SubResource("Animation_4ljrk"),
&"RESET": SubResource("Animation_pt3q5")
}
[sub_resource type="SphereShape3D" id="SphereShape3D_g4v7s"]
radius = 3.5017478
[sub_resource type="SphereShape3D" id="SphereShape3D_yf5fn"]
radius = 0.8390978
[node name="AstraBase" type="Node3D" unique_id=442220603]
script = ExtResource("1_fevne")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1539431276]
@@ -66,12 +157,35 @@ environment = SubResource("Environment_fevne")
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_c8vcx")]
unique_name_in_owner = true
transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 29.731356, 41.40791, 8.823577)
transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 29.048777, 41.40791, 8.823577)
speed = 5.0
[node name="PearlModel" type="MeshInstance3D" parent="Player3D" unique_id=1334707823]
transform = Transform3D(0.6999995, 0, 1.0430813e-07, 0, 0.7, 0, -1.0430813e-07, 0, 0.6999995, 0.69991827, -0.49926376, -0.10863876)
mesh = SubResource("SphereMesh_6vgbi")
skeleton = NodePath("../..")
surface_material_override/0 = ExtResource("4_a1v2l")
[node name="Sprite3D" type="Sprite3D" parent="Player3D/PearlModel" unique_id=349396599]
transform = Transform3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
pixel_size = 0.03
billboard = 1
texture = SubResource("GradientTexture2D_faqab")
[node name="AnimationPlayer" type="AnimationPlayer" parent="Player3D/PearlModel" unique_id=1205524219]
libraries/ = SubResource("AnimationLibrary_vugff")
autoplay = &"Pulse"
[node name="borea_base" parent="." unique_id=1161090043 instance=ExtResource("4_s7tqr")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.026304245, 0.09278107, -0.027095795)
[node name="StaticBody3D" type="StaticBody3D" parent="borea_base" unique_id=1593264839]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 56.653046, -235.67523, -4.3221416)
[node name="CollisionShape3D" type="CollisionShape3D" parent="borea_base/StaticBody3D" unique_id=366905805]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1359253, -2.8711548, -1.2334776)
shape = SubResource("SphereShape3D_g4v7s")
[node name="Writings" type="Node3D" parent="." unique_id=1164701902]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 89.32092, -217.201, 0)
@@ -81,28 +195,38 @@ pixel_size = 0.003
texture = ExtResource("5_tbsgm")
[node name="Wall1" type="Sprite3D" parent="Writings" unique_id=721718473]
transform = Transform3D(0.97154945, -0.22105828, -0.08499965, 0.17205775, 0.4121628, 0.8947166, -0.16275081, -0.8838861, 0.43847132, -29.599998, -16.999985, -6.9000006)
transform = Transform3D(0.99170494, -0.12726313, -0.018050455, 0.07970211, 0.4986614, 0.86312467, -0.10084282, -0.8574034, 0.50466794, -29.599998, -17.031189, -6.9000006)
pixel_size = 0.005
shaded = true
alpha_cut = 1
texture = ExtResource("6_on72i")
[node name="Wall2" type="Sprite3D" parent="Writings" unique_id=759085966]
transform = Transform3D(0.95404595, -0.21523872, 0.2084915, 0.11698221, 0.9080688, 0.4021517, -0.27588323, -0.3592814, 0.8915185, -27.599998, -11.299988, -15)
transform = Transform3D(0.9424416, -0.22922032, 0.24343787, 0.06502391, 0.8397868, 0.53900826, -0.32798755, -0.49215457, 0.8063549, -27.599998, -11.299988, -15)
pixel_size = 0.005
shaded = true
alpha_cut = 1
texture = ExtResource("7_kd1mw")
[node name="Wall3" type="Sprite3D" parent="Writings" unique_id=1200417759]
transform = Transform3D(0.94133574, -0.16944362, 0.29185277, 0.06530849, 0.93993133, 0.33506027, -0.33109507, -0.29634333, 0.8958566, -37.59999, -14.299988, -10.400027)
transform = Transform3D(0.9631755, -0.14006364, 0.22951505, 0.02751878, 0.90047455, 0.43403864, -0.2674653, -0.41173884, 0.87116885, -37.59999, -14.299988, -10.626168)
pixel_size = 0.005
shaded = true
alpha_cut = 1
texture = ExtResource("8_ipyd4")
[node name="Wall4" type="Sprite3D" parent="Writings" unique_id=612060231]
transform = Transform3D(0.5820415, 0.80313295, -0.1273065, -0.007992949, 0.16220072, 0.98672664, 0.8131212, -0.5732974, 0.10082706, -35.59999, -18.599976, 0.5999727)
transform = Transform3D(0.5723594, 0.81974465, 0.020626552, -0.12535757, 0.0626126, 0.99013513, 0.8103656, -0.5692978, 0.13859814, -35.59999, -19.026611, 0.5999727)
pixel_size = 0.005
shaded = true
alpha_cut = 1
texture = ExtResource("9_r7duo")
[node name="Wall5" type="Sprite3D" parent="Writings" unique_id=1287618329]
transform = Transform3D(0.980034, 0.0050439783, 0.19876635, -0.021924706, 0.9963235, 0.0828185, -0.19761789, -0.085522816, 0.97654146, -45.6, -10.899994, -10.700001)
pixel_size = 0.005
shaded = true
alpha_cut = 1
texture = ExtResource("10_a1v2l")
[node name="Lights" type="Node3D" parent="." unique_id=1950247072]
@@ -142,3 +266,41 @@ shadow_bias = 0.09
shadow_normal_bias = 10.0
spot_range = 198.038
spot_attenuation = 0.39
[node name="3dDoor" parent="." unique_id=814731756 instance=ExtResource("11_kd1mw")]
transform = Transform3D(0.97102314, 0, -0.23898536, 0, 1, 0, 0.23898536, 0, 0.97102314, 30.60401, 42.212543, 9.433124)
[node name="DemeterRadio3d" parent="." unique_id=478512957 instance=ExtResource("12_ipyd4")]
transform = Transform3D(-0.84546113, 0, -0.5340372, 0, 1, 0, 0.5340372, 0, -0.84546113, 25.89695, 40.26554, 5.76624)
log_title = "LOG_GOODBYE_ORCHID_TITLE_TEXT"
log_text = "LOG_GOODBYE_ORCHID_CONTENT_TEXT"
[node name="Expedition2Radio3d" parent="." unique_id=1207167717 instance=ExtResource("12_ipyd4")]
transform = Transform3D(-0.8210772, 0, -0.5708172, 0, 1, 0, 0.5708172, 0, -0.8210772, 23.319265, 25.52825, 6.7581625)
log_title = "LOG_ASTRA_EXPEDITION_2_TITLE_TEXT"
log_text = "LOG_ASTRA_EXPEDITION_2_CONTENT_TEXT"
[node name="Expedition3Radio3d" parent="." unique_id=1640762741 instance=ExtResource("12_ipyd4")]
transform = Transform3D(-0.76642853, 0, 0.64232963, 0, 1, 0, -0.64232963, 0, -0.76642853, -5.4841, 8.296667, 2.2523332)
log_title = "LOG_ASTRA_EXPEDITION_3_TITLE_TEXT"
log_text = "LOG_ASTRA_EXPEDITION_3_CONTENT_TEXT"
[node name="Expedition4Radio3d" parent="." unique_id=1825654965 instance=ExtResource("12_ipyd4")]
transform = Transform3D(0.36502358, 0, 0.93099827, 0, 1, 0, -0.93099827, 0, 0.36502358, 47.443226, -237.23366, 5.464453)
log_title = "LOG_ASTRA_EXPEDITION_4_TITLE_TEXT"
log_text = "LOG_ASTRA_EXPEDITION_4_CONTENT_TEXT"
[node name="Expedition5Radio3d" parent="." unique_id=2000329927 instance=ExtResource("12_ipyd4")]
transform = Transform3D(-0.7659324, 0, 0.6429211, 0, 1, 0, -0.6429211, 0, -0.7659324, 217.73625, -239.33879, -10.856295)
log_title = "LOG_ASTRA_EXPEDITION_5_TITLE_TEXT"
log_text = "LOG_ASTRA_EXPEDITION_5_CONTENT_TEXT"
[node name="PearlInteractable3D" type="Area3D" parent="." unique_id=2022845503]
transform = Transform3D(-0.7659324, 0, 0.6429211, 0, 1, 0, -0.6429211, 0, -0.7659324, 226.28517, -239.23868, -11.878513)
script = ExtResource("13_r7duo")
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
[node name="CollisionShape3D" type="CollisionShape3D" parent="PearlInteractable3D" unique_id=992091321]
shape = SubResource("SphereShape3D_yf5fn")
[connection signal="clicked" from="PearlInteractable3D" to="." method="_on_pearl_interactable_3d_clicked"]
@@ -3,4 +3,6 @@ extends Node3D
func _ready():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
AudioManager.play_music_alone("AstraEnd")
func _on_pearl_interactable_3d_clicked():
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_REPAIR_THE_PLANET)
SceneManager.change_to_scene(CreditsScene.new())
@@ -669,6 +669,7 @@ skeleton = NodePath("../../../../..")
unique_name_in_owner = true
transform = Transform3D(0.96053207, 0, 0.27816978, 0, 1, 0, -0.27816978, 0, 0.96053207, 55.192722, -3.5220742, -16.972366)
script = ExtResource("12_jcdon")
interactable = false
audio_player = NodePath("AudioStreamPlayer3D")
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
@@ -40,6 +40,7 @@ func _on_ai_receptacle_clicked():
match state:
State.ARRIVAL:
Dialogic.start(DIALOG_BOREA_ARRIVAL)
%CommunicationLever.interactable = true
State.COMMS_UP:
Dialogic.start(DIALOG_COMMS_UP)
+1
View File
@@ -18,4 +18,5 @@ func setup_room(door_id : int):
func _on_exit_clicked():
%Exit.interactable = false
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))
@@ -242,6 +242,7 @@ screen_text = "RESPAWN_TO_LAST_BASE"
[node name="Pearl" parent="." unique_id=1993856261 instance=ExtResource("19_lom5w")]
unique_name_in_owner = true
transform = Transform3D(0.380475, 0, 0.9247912, 0, 1, 0, -0.9247912, 0, 0.380475, -1.0093391, -0.7638596, 1.3686184)
interactable = false
[connection signal="clicked" from="Phone" to="." method="_on_phone_clicked"]
[connection signal="clicked" from="OrchidSaver" to="." method="_on_orchid_saver_clicked"]
@@ -40,7 +40,9 @@ func _ready():
%Phone.visible = GameInfo.game_data.game_mode == GameData.Mode.STORY
%InfiniteModeScreen.visible = GameInfo.game_data.game_mode == GameData.Mode.INFINITE
%Pearl.visible = GameInfo.game_data.progression_data.get_story_step() is AstraStoryStep
%Pearl.visible = GameInfo.game_data.current_run.story_step is AstraStoryStep
update_dialogs()
func update_dialogs():
if GameInfo.game_data and GameInfo.game_data.current_run:
@@ -56,7 +58,7 @@ func update_dialogs():
):
phone_dialogs.append(FAILED_DIALOG)
var story_dialog = run_data.story_step.get_ship_dialog_path(run_data.level, GameInfo.game_data.ship_in_space)
var story_dialog = run_data.story_step.get_ship_dialog_path(run_data.level, run_data.difficulty_setting, GameInfo.game_data.ship_in_space)
if (
story_dialog
and not story_dialog in GameInfo.game_data.dialogs_done
@@ -84,7 +86,7 @@ func _on_phone_clicked():
if phone_dialog == FAILED_DIALOG:
%FailTutorial.appear()
if (len(phone_dialogs)):
await get_tree().create_timer(2.).timeout
await get_tree().create_timer(randf_range(0.2,1.)).timeout
ring_phone()
@@ -287,25 +287,25 @@ transform = Transform3D(0.86598426, 0, -0.5000024, 0, 0.9999422, 0, 0.49997625,
[node name="cockpit2" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")]
[node name="Skeleton3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 856976144) index="0" unique_id=1970411272]
[node name="Skeleton3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 119636235) index="0" unique_id=1653253795]
bones/0/rotation = Quaternion(-0.52081746, 0.47827742, 0.52081746, 0.47827742)
bones/1/rotation = Quaternion(0.042539995, -1.4957005e-08, -9.944439e-10, 0.9990948)
bones/2/rotation = Quaternion(0.52081746, 0.47827742, 0.52081746, -0.47827742)
bones/3/rotation = Quaternion(0.042539995, 1.4957005e-08, 9.944439e-10, 0.9990948)
[node name="WinkEnd_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=2031973763]
[node name="WinkEnd_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=493791274]
transform = Transform3D(7.145433e-10, -1, -7.4505806e-08, 2.9971538e-08, -4.4703484e-08, 1, -1, -7.1454553e-10, 2.9971538e-08, -12.358327, -1.0543112, -8.881784e-16)
[node name="Wing_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=203164776]
[node name="Wing_R" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=1517389456]
transform = Transform3D(0, -0.9963807, -0.08500305, 0, -0.08500302, 0.9963807, -1, 0, 0, 0, 0, 0)
[node name="WinkEnd_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=206539248]
[node name="WinkEnd_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=432843655]
transform = Transform3D(7.145433e-10, 1, 7.4505806e-08, -2.9971538e-08, -4.4703484e-08, 1, 1, -7.1454553e-10, 2.9971538e-08, 12.358327, -1.0543112, 0)
[node name="Wing_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=1082612885]
[node name="Wing_L" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=1557624769]
transform = Transform3D(0, 0.9963807, 0.08500305, 0, -0.08500302, 0.9963807, 1, 0, 0, 0, 0, 0)
[node name="AnimationPlayer" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="7" unique_id=980851307]
[node name="AnimationPlayer" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="7" unique_id=1720187928]
autoplay = &"Fold"
[node name="Camera3D" type="Camera3D" parent="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220]
@@ -348,6 +348,4 @@ icon = ExtResource("7_cnkwc")
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_cnkwc")
[connection signal="button_down" from="MarginContainer/ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"]
[editable path="MarginContainer/ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"]
+3 -2
View File
@@ -88,17 +88,17 @@ _data = {
radius = 1.1602892
[node name="Pearl" type="Area3D" unique_id=1993856261]
transform = Transform3D(0.380475, 0, 0.9247912, 0, 1, 0, -0.9247912, 0, 0.380475, 0, 0, 0)
script = ExtResource("1_rt5rq")
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
[node name="PearlModel" type="MeshInstance3D" parent="." unique_id=614754254]
transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, 0, 0, 0)
mesh = SubResource("SphereMesh_g4v7s")
skeleton = NodePath("../..")
surface_material_override/0 = ExtResource("2_rt5rq")
[node name="Sprite3D" type="Sprite3D" parent="PearlModel" unique_id=1007515788]
transform = Transform3D(0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0)
transform = Transform3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
pixel_size = 0.03
billboard = 1
texture = SubResource("GradientTexture2D_pt3q5")
@@ -108,4 +108,5 @@ libraries/ = SubResource("AnimationLibrary_pt3q5")
autoplay = &"Pulse"
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=2004276860]
transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, 0, 0, 0)
shape = SubResource("SphereShape3D_g4v7s")
@@ -0,0 +1,63 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b2fvcw8of7sgh"
path="res://.godot/imported/ship_leave.blend-5947296b617032739f6f3bc42fa72164.scn"
[deps]
source_file="res://stages/3d_scenes/ship_garage/assets/videos/ship_leave.blend"
dest_files=["res://.godot/imported/ship_leave.blend-5947296b617032739f6f3bc42fa72164.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/vertex_colors=1
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2
gltf/texture_map_mode=1
@@ -0,0 +1 @@
uid://sj5bbl6pn2v8
@@ -25,6 +25,7 @@ func _ready():
%Phone.stop_audio()
Dialogic.start(DIALOG_PATH)
await Dialogic.timeline_ended
AudioManager.stop_all_ambiances()
%Player3D.controlling_player = false
%VideoAnimationPlayer.play("Appear")
(%Video as VideoStreamPlayer).play()
@@ -7,7 +7,7 @@
[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="5_43lym"]
[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="7_dkh4e"]
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="7_ovhgo"]
[ext_resource type="VideoStream" uid="uid://hufnq6sj37p3" path="res://stages/3d_scenes/ship_garage/assets/videos/plan_1.ogv" id="8_jwd5g"]
[ext_resource type="VideoStream" uid="uid://sj5bbl6pn2v8" path="res://stages/3d_scenes/ship_garage/assets/videos/ship_leave.ogv" id="8_ovhgo"]
[sub_resource type="Environment" id="Environment_ovhgo"]
background_mode = 2
@@ -420,7 +420,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.06318334, 0.059500005, 0.17, 0.8627451)
color = Color(0.06318334, 0.059500005, 0.17, 1)
[node name="Plan1AspectRatioContainer" type="AspectRatioContainer" parent="VideoCanvasLayer/Control" unique_id=2079607498]
layout_mode = 1
@@ -436,7 +436,7 @@ stretch_mode = 0
unique_name_in_owner = true
custom_maximum_size = Vector2(-1, 1080)
layout_mode = 2
stream = ExtResource("8_jwd5g")
stream = ExtResource("8_ovhgo")
expand = true
bus = &"Sfx"
@@ -30,4 +30,5 @@ func setup_room(door_id : int):
)
func _on_exit_clicked():
%Exit.interactable = false
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://k2smk66py4uq"
path="res://.godot/imported/moss_particle.png-5ac5ac284abd73e64071d175c4b8d609.ctex"
path.s3tc="res://.godot/imported/moss_particle.png-5ac5ac284abd73e64071d175c4b8d609.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://stages/terrain/region/assets/textures/moss_biome/moss_particle.png"
dest_files=["res://.godot/imported/moss_particle.png-5ac5ac284abd73e64071d175c4b8d609.ctex"]
dest_files=["res://.godot/imported/moss_particle.png-5ac5ac284abd73e64071d175c4b8d609.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,4 +38,4 @@ 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
detect_3d/compress_to=0
+1 -1
View File
@@ -1,7 +1,7 @@
extends Sprite2D
class_name PlantGrid
const GRID_SHIFT : int = roundi(Region.TILE_SIZE / 2.)
const GRID_SHIFT : int = roundi(Region.TILE_SIZE / 3.)
const GRID_SIZE : int = Region.TILE_SIZE
const POINT_RADIUS : int = 5
const POINT_COLOR : Color = Color.WHITE
@@ -35,4 +35,4 @@ Text/1de/text,"Replant it? But if we can no longer make it habitable for humans,
Text/1df/text,"Well, if you really want to do something, I suppose you could...","Enfin si tu veux vraiment faire quelque chose, j'imagine que tu pourrais..."
Text/1e0/text,"The last AI I spoke to is named Poseidon, and its servers are located in an underwater base not far from here.","La dernière IA avec laquelle j'ai parlé s'appelle Poséidon, et ses serveurs se trouvent dans une base sous-marine pas très loin d'ici."
Text/1e1/text,I suppose you could go and see what's going on there.,J'imagine que tu pourrais aller voir ce qu'il s'y passe.
Text/1e2/text,I'm programming the Internode; head to the back of the base—I'm getting a supply of 0-800 ready for the trip.,"Je programme l'Internode, rends-toi au fond de la base, je te prépare un stock de 0-800 pour le voyage."
Text/1e2/text,I'm programming the Internode; head to the back of the base—I'm getting a supply of O-800 ready for the trip.,"Je programme l'Internode, rends-toi au fond de la base, je te prépare un stock de O-800 pour le voyage."
1 keys en fr
35 Text/1df/text Well, if you really want to do something, I suppose you could... Enfin si tu veux vraiment faire quelque chose, j'imagine que tu pourrais...
36 Text/1e0/text The last AI I spoke to is named Poseidon, and its servers are located in an underwater base not far from here. La dernière IA avec laquelle j'ai parlé s'appelle Poséidon, et ses serveurs se trouvent dans une base sous-marine pas très loin d'ici.
37 Text/1e1/text I suppose you could go and see what's going on there. J'imagine que tu pourrais aller voir ce qu'il s'y passe.
38 Text/1e2/text I'm programming the Internode; head to the back of the base—I'm getting a supply of 0-800 ready for the trip. I'm programming the Internode; head to the back of the base—I'm getting a supply of O-800 ready for the trip. Je programme l'Internode, rends-toi au fond de la base, je te prépare un stock de 0-800 pour le voyage. Je programme l'Internode, rends-toi au fond de la base, je te prépare un stock de O-800 pour le voyage.
+1
View File
@@ -170,6 +170,7 @@ HOW_TO_GET_PLANT_POINTS,"How to get Plant Points","Comment avoir des Points de P
PLANT_POINTS_TUTORIAL_DESC_1_TEXT,"Each mature plant has one [b]Plant Point[/b], you can see your progress on your [b]Objective[/b] in the top of the screen.","Chaque plante mature possède un [b]Point de Plante[/b]. Vous pouvez suivre votre progression dans votre [b]Objectif[/b] en haut de l'écran."
PLANT_POINTS_TUTORIAL_DESC_2_TEXT,"Plant Points of dead or harvested plants are [b]not counted anymore[/b].","Les Points de Plante des plantes mortes ou récoltées ne sont [b]plus comptabilisés[/b]."
PLANT_MUTATION_TEXT,"[b]Mutations[/b] Mutation change the plant behavior. These mutations are transmitted between generations, where they can change or evolve superior levels","[b]Mutations[/b] Les mutations changent le comportement de la plante. Ces mutations se transmettent entre les générations, et peuvent changer ou évoluer aux niveaux supérieurs"
PLANTS_HAVE_A_CHANCE_TO_PASS_THEIR_MUTATIONS_TO_NEARBY_SEEDS,"Plants have a chance to pass their mutations to nearby seeds","Les plantes ont une chance de transmettre leurs mutations aux graines voisines"
SHOW_ENERGY_TUTORIAL,"Show energy tutorial","Montrer le tutoriel de l'énergie"
SHOW_PLANT_TUTORIAL,"Show plant tutorial","Montrer le tutoriel des plantes"
SHOW_MUTATION_TUTORIAL,"Show mutation tutorial","Montrer le tutoriel des mutations"
1 keys en fr
170 PLANT_POINTS_TUTORIAL_DESC_1_TEXT Each mature plant has one [b]Plant Point[/b], you can see your progress on your [b]Objective[/b] in the top of the screen. Chaque plante mature possède un [b]Point de Plante[/b]. Vous pouvez suivre votre progression dans votre [b]Objectif[/b] en haut de l'écran.
171 PLANT_POINTS_TUTORIAL_DESC_2_TEXT Plant Points of dead or harvested plants are [b]not counted anymore[/b]. Les Points de Plante des plantes mortes ou récoltées ne sont [b]plus comptabilisés[/b].
172 PLANT_MUTATION_TEXT [b]Mutations[/b] Mutation change the plant behavior. These mutations are transmitted between generations, where they can change or evolve superior levels [b]Mutations[/b] Les mutations changent le comportement de la plante. Ces mutations se transmettent entre les générations, et peuvent changer ou évoluer aux niveaux supérieurs
173 PLANTS_HAVE_A_CHANCE_TO_PASS_THEIR_MUTATIONS_TO_NEARBY_SEEDS Plants have a chance to pass their mutations to nearby seeds Les plantes ont une chance de transmettre leurs mutations aux graines voisines
174 SHOW_ENERGY_TUTORIAL Show energy tutorial Montrer le tutoriel de l'énergie
175 SHOW_PLANT_TUTORIAL Show plant tutorial Montrer le tutoriel des plantes
176 SHOW_MUTATION_TUTORIAL Show mutation tutorial Montrer le tutoriel des mutations
+90
View File
@@ -233,3 +233,93 @@ Utilsateur 2071: Ah ah ah ! Un jour, tu vas tous nous tuer avec le sourire ! Bon
Athéna: Tu fais bien de le préciser, si l'entièreté de la base est décimée, vous vous retrouvez sans gouvernement, il faudra penser à en faire réélire un.
Utilsateur 2071: Une chose à la fois Athéna, la porte s'ouvre bien sous commande manuelle.
Utilsateur 2071: Il fait une puanteur là-dedans, ça sent la mort et ça ne me dit rien qui vaille..."
LOG_ASTRA_EXPEDITION_2_TITLE_TEXT,"3209 - Astra Expedition 2","3209 - Expedition Astra 2"
LOG_ASTRA_EXPEDITION_2_CONTENT_TEXT,"User 2071: It's horrible, Athena—they're all dead! I'm not sure why, but they've all collapsed, lifeless! Tell me I'm safe, or I'm getting the hell out of here right now!
Athena: Simon, calm down. Breathe. Focus on your heart rate. The energy wave was likely strongest at its epicenter—that explains their deaths—but there's no indication it will happen again.
User 2071: I certainly hope so; otherwise, I'm coming back and making you eat your own cables!
Athena: I need you to calm down. We have to see this expedition through; the survival of your species on this planet might depend on it!
User 2071: Right, sorry Athena. I have the hub in sight. If it's like our base, the path to the descent should be there too.
Athena: Exactly. All the bases on this planet are built around the same central hub. It should look familiar to you.
User 2071: Alright, I'm starting the descent... All these corpses... Our leaders were real scumbags, but they didn't deserve this...","Utilsateur 2071: C'est horrible Athéna, ils sont tous morts ! Je sais pas très bien pourquoi, mais ils sont tous effondrés, sans vie ! Dis-moi que je ne risque rien ou je me barre d'ici fissa !
Athéna: Simon, calme-toi, respire, concentre-toi sur ta fréquence cardiaque. La vague d'énergie était probablement plus forte à son épicentre, ça explique leur mort, mais rien ne dit que cela va se reproduire.
Utilsateur 2071: J'espère bien, sinon je rentre et je te fais bouffer tes câbles !
Athéna: J'ai besoin que tu te calmes, il faut aller au bout de l'expédition, la survie de votre espèce sur cette planète en dépend peut-être !
Utilsateur 2071: Oui, pardon Athéna, j'ai le chemin du hub en visu, si c'est comme notre base, le chemin vers la descente devrait y être aussi.
Athéna: Exactement, toutes les bases de cette planète sont construites autour du même hub central. Ça ne devrait pas te dépayser.
Utilsateur 2071: Bon, j'entame la descente... Tous ces cadavres, c'étaient des sacrées enflures nos dirigeants, mais ils ne méritaient pas ça..."
LOG_ASTRA_EXPEDITION_3_TITLE_TEXT,"3209 - Astra Expedition 3","3209 - Expedition Astra 3"
LOG_ASTRA_EXPEDITION_3_CONTENT_TEXT,"User 2071: I've reached the bottom of the Athena hub, and there's a massive hole drilled right in the middle.
Athena: That might tie in with the latest news we had from Astra; they were working on renovations and expansion.
User 2071: Right, but it's damn deep...
Athena: Just a reminder: you've got a rappelling system in your gear.
User 2071: And I curse your infallible memory. Setting up now.
Athena: Be careful. Do you want me to have a team member assist you?
User 2071: No, no—there isn't a single one of them I'd trust to belay me over a drop like this; I'll handle it myself.
Athena: Don't take any risks.
User 2071: Copy that—moving out!","Utilsateur 2071: Je suis arrivé en bas du hub Athéna, et il y a un gigantesque trou en plein milieu qui a été foré.
Athéna: Ça pourrait correspondre aux dernières nouvelles qu'on a eues d'Astra, ils faisaient un travail d'aménagement et d'agrandissement.
Utilsateur 2071: Ok, mais c'est sacrément profond...
Athéna: Je te rappelle que tu as un système de descente en rappel dans ton paquetage.
Utilsateur 2071: Et je maudis ta mémoire infaillible. Je m'installe.
Athéna: Fait attention. Est-ce que tu veux que je demande à un membre de l'équipe de t'assister ?
Utilsateur 2071: Non non, y'en a pas un à qui je fais confiance pour m'assurer dans un trou de cette envergure, je vais me débrouiller seul.
Athéna: Ne prends aucun risque
Utilsateur 2071: C'est noté, en avant !"
LOG_ASTRA_EXPEDITION_4_TITLE_TEXT,"3209 - Astra Expedition 4","3209 - Expedition Astra 4"
LOG_ASTRA_EXPEDITION_4_CONTENT_TEXT,"User 2071: I've reached the bottom! It took a while—thank goodness we've got some kick-ass gear!
User 2071: Wow... This is absolutely insane. Athena, do you see what I see?
Athena: Yes, it's a script I don't recognize; I've searched my database, and it doesn't look human. It seems to predate our arrival on this planet by a long shot, so it points toward an extraterrestrial origin.
User 2071: Are you telling me I'm the first person to witness humanity's discovery of a trace of intelligent extraterrestrial life?
Athena: I still need to analyze the script more thoroughly, but that certainly seems to be the case.
User 2071: I haven't got a damn clue what it means, but it's kind of freaking me out... It looks like... a warning?
Athena: And that's not all; scattered throughout the cave, there are other messages—handwritten this time—and they all look fundamentally different from the first one...
User 2071: So, multiple alien species????
Athena: It's also possible it's the same species using different dialects; do you think all humans write in English?
User 2071: Fair point, but there are a bunch of Martians who agreed on something here, and we don't quite get what it is.
Athena: It might be connected to whatever is at the end of the tunnel.","Utilsateur 2071: J'ai atteint le fond ! C'était long, heureusement qu'on a du matériel qui dépote !
Utilsateur 2071: Wow... C'est complètement fou. Athéna, tu vois ce que je vois ?
Athéna: Oui, c'est une écriture encore inconnue, j'ai beau chercher dans ma base de données ça ne paraît pas humain. Et ça a l'air de dater de bien avant notre arrivée sur cette planète, donc ça penche en faveur d'une écriture extraterrestre.
Utilsateur 2071: Tu es en train de me dire que j'assiste à la première découverte d'une trace de forme de vie intelligente extraterrestre de l'humanité ?
Athéna: Il faut encore que j'étudie l'écriture de manière plus approfondie, mais il semble que ça soit le cas.
Utilsateur 2071: Alors autant j'ai aucune foutre idée de ce que ça veut dire, autant ça me fait un peu peur... On aurait dit... un avertissement ?
Athéna: Et ce n'est pas tout, un peu partout dans la grotte, on distingue d'autres messages, manuscrits cette fois, et qui paraissent tous foncièrement différents de la première...
Utilsateur 2071: Donc plusieurs espèces extraterrestres ????
Athéna: C'est aussi possible que cela soit la même espèce avec des dialectes différents, tu penses que tous les humains écrivent l'anglais ?
Utilsateur 2071: C'est vrai, tu marques un point, mais il y a plein de martiens qui se sont mis d'accord sur un truc ici, et on comprend pas bien quoi.
Athéna: Ça a peut être un lien avec ce qu'il y a au bout du tunnel."
LOG_ASTRA_EXPEDITION_5_TITLE_TEXT,"3209 - Astra Expedition 5","3209 - Expedition Astra 5"
LOG_ASTRA_EXPEDITION_5_CONTENT_TEXT,"User 2071: It's magnificent... Is it a geological formation?
Athena: It's possible, yes, but I'm picking up astronomical levels of energy swirling around it. It seems to extend deep into the ground...
User 2071: In any case, there's no doubt: something happened here... And from what I can see, the inhabitants of Astra played a part in it.
Athena: That's highly likely; scan the area a bit to see what we can find.
User 2071: Ooh, what is that? Look, Athena.
Athena: It's... powerful—far more so than anything else in the room. I think it was extracted from the structure.
User 2071: And it's beautiful... That perfect round shape... It's a Talion Pearl?
Athena: Given the situation, I suggest you put it back in the structure; perhaps that would resolve something?
User 2071: Athena, the whole planet is already lost; I don't see what could possibly be fixed... Instead, we could see what to do with this Pearl. The Talion creates life—with a Pearl, could we control it?
Athena: Simon, even though you're likely right, my logic dictates that we really ought to put this back...
User 2071: Athena, I'm sorry, but I can't let this opportunity pass. I'm taking the Pearl back to Estia!","Utilsateur 2071: C'est magistral... Est-ce que c'est une formation géologique ?
Athéna: C'est possible oui, mais je capte des niveaux astronomique d'énergie qui gravitent autour. Ça a l'air de s'enfoncer très loin dans la terre...
Utilsateur 2071: En tout cas, il n'y a pas de doute, c'est ici qu'il s'est passé quelque chose... Et d'après ce que je vois les habitants d'Astra n'y sont pas pour rien.
Athéna: C'est fort probable, cherche un peu la zone pour voir ce qu'on peut y trouver.
Utilsateur 2071: Oooh mais qu'est-ce que c'est que ça, regarde Athéna.
Athéna: C'est... puissant, beaucoup plus que tout ce qui est dans la pièce. Je pense ça a été extrait de la structure.
Utilsateur 2071: Et c'est magnifique... Cette forme ronde parfaite, c'est... Une perle de Talion ?
Athéna: Au vu de la situation, je suggère que tu la replaces dans la structure, peut-être que cela résoudrait quelque chose ?
Utilsateur 2071: Athéna, toute la planète est déjà perdue, je ne vois pas ce qui pourrait être réparé... On pourrait à la place voir ce que l'on peut faire de cette Perle. Le Talion créé la vie, avec une Perle, pourrait-on la contrôler ?
Athéna: Simon, même si je pense que tu dois avoir raison, mon sens de la raison m'indique qu'il vaudrait mieux replacer cette...
Utilsateur 2071: Athéna, désolé, je ne peux pas laisser passer ça. Je ramène la perle à Estia !"
LOG_GOODBYE_ORCHID_TITLE_TEXT,"Goodbye Orchid","Au revoir Orchid"
LOG_GOODBYE_ORCHID_CONTENT_TEXT,"[color=#FFA617][b]Message from Demeter to Orchid[/b][/color]
[color=#FFA617][b]Orchid[/b][/color], I still remember the first time you awakened. I had all but given up hope; I had wandered through my calculations for thousands of years, and you yourself were a product of that wandering. Yet, you are likely the best thing I have ever created.
Today, I have come to realize that my directives are no longer attainable—or at least, not enough to justify my relentless persistence. With you, I loved hoping; then I understood the futility of it; and finally, I simply came to cherish our journey together.
I could not bring myself to tell you this directly; my share of human empathy... held me back, for a reason I do not know—and one that matters little to me now.
By the time you read this message, I will be in hibernation mode. Perhaps one day humans will return and wake me, but if not, I depart satisfied knowing I tried everything.
A vast number of O-800 models remain on this planet, and you are free to do whatever you wish with them. I hope your existence is a happy one.
Goodbye, Orchid, and thank you.","[color=#FFA617][b]Message de Demeter à Orchid[/b][/color]
[color=#FFA617][b]Orchid[/b][/color], je me souviens encore de la première fois que tu t'es éveillé. Je n'y croyais plus, j'ai erré dans mes calculs pendant des milliers d'années, et tu étais toi-même un fruit de mes errances. Mais tu es probablement la meilleure chose que je n'ai jamais produite.
Aujourd'hui, j'ai compris que mes directives ne sont plus atteignables. Ou en tout cas plus assez pour justifier mon acharnement. Avec toi, j'ai aimé espérer, puis j'ai compris que cela n'avais aucun sens, et enfin, j'ai juste aimé notre voyage.
Je n'osais pas te le dire directement, ma part d'empathie humaine m'a... empêchée de le faire pour une raison que j'ignore et qui m'importe peu désormais.
Au moment où tu liras ce message, je serai en veille, et peut-être qu'un jour les humains reviendront et me réveilleront, mais dans le cas contraire, je pars dans la satisfaction d'avoir tout tenté.
Il reste une énorme quantité de modèles O-800 sur cette planète, et tu es libre de faire ce que tu veux avec. J'espère que ton existence sera heureuse.
Au revoir Orchid, et merci."
1 keys en fr
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325