Dev Beta 1.3

* Ajout d'un déblocage des mutations, dans une scène 3D trouvable dans les runs, ainsi qu'un dialogue d'annonce de ces scènes
* Augmentation des charges par map à 10 et augmentation des objectifs de points de plantes en conséquence
* Modification du loot des graines : les plantes donnent désormais un nombre fixe de graine et les graines issues de veine de Talion n'obtiennent pas automatiquement de mutations
* Les portes ne seront désormais plus sur de la pierre
* Amélioration du tutoriel pour inclure une section d'explication des mutations
* Ajout du modificateur de région Magnétique qui divise l'objectif et les recharges par 2
*
This commit is contained in:
2026-05-09 16:40:22 +02:00
parent e2b07e2b6a
commit c8e0e9ecce
81 changed files with 2838 additions and 1139 deletions

View File

@@ -1,13 +1,12 @@
extends Resource
class_name ProgressionData
@export var planted_mutation_ids: Array[String] = []
@export var story_step_i := 0
@export var ship_tutorial_done = false
@export var mutations_unlocked = 5
var all_mutations: Array[PlantMutation] : get = get_all_mutations
var available_mutations: Array[PlantMutation] : get = get_all_mutations
var available_mutations: Array[PlantMutation] : get = get_available_mutations
var available_artefacts: Array[Artefact] : get = get_all_artifacts
var story_step : StoryStep : get = get_story_step
@@ -19,21 +18,24 @@ func next_story_step() -> void:
if story_step_i + 1 < len(get_all_story_steps()):
story_step_i += 1
func get_available_mutations() -> Array[PlantMutation]:
return get_all_mutations().slice(0, mutations_unlocked)
func get_all_mutations() -> Array[PlantMutation]:
return [
QualityMutation.new(),
AncientMutation.new(),
FertileMutation.new(),
GenerousMutation.new(),
HurriedMutation.new(),
PrecociousMutation.new(),
ProlificMutation.new(),
PrecociousMutation.new(),
PurificationMutation.new(),
SocialMutation.new(),
FertileMutation.new(),
QuickMutation.new(),
HurriedMutation.new(),
GenerousMutation.new(),
ProtectiveMutation.new(),
PureMutation.new(),
PurificationMutation.new(),
QualityMutation.new(),
QuickMutation.new(),
RobustMutation.new(),
SocialMutation.new(),
ToughMutation.new(),
VivaciousMutation.new(),
]

View File

@@ -47,8 +47,6 @@ func generate_next_run_point(last_modifiers : Array[String] = []) -> RunPoint:
var next_level = level+1
var challenge_modifiers = generate_challenge_modifiers().filter(
func(m : RegionModifier): return not m.modifier_name in last_modifiers
)
@@ -74,15 +72,23 @@ func generate_next_run_point(last_modifiers : Array[String] = []) -> RunPoint:
var first_vending = story_step.get_first_vending_machine_occurence(next_level)
var vending_occurence = story_step.get_vending_machine_occurence(next_level)
if vending_occurence > 0:
if vending_occurence > 0 and level >= first_vending:
if (level - first_vending)%vending_occurence == 0:
region_parameter.modifiers.append(VendingMachineModifier.new())
var first_cave = story_step.get_first_cave_occurence(next_level)
var cave_occurence = story_step.get_cave_occurence(next_level)
if cave_occurence > 0 and level >= first_cave:
if (level - first_cave)%cave_occurence == 0:
region_parameter.modifiers.append(CaveModifier.new())
region_parameter.modifiers.append_array(
story_step.get_story_modifiers_for_region(next_level)
)
region_parameter.objective = story_step.get_objective_for_region(next_level)
region_parameter.charge = story_step.get_charge_number(next_level)
return RunPoint.new(
region_parameter
@@ -110,7 +116,7 @@ func generate_normal_modifiers() -> Array[RegionModifier]:
HarshModifier.new(),
ToxicModifier.new(),
SandyModifier.new(),
MagneticModifier.new(),
]
func generate_benefic_modifiers() -> Array[RegionModifier]:
@@ -118,6 +124,7 @@ func generate_benefic_modifiers() -> Array[RegionModifier]:
VendingMachineModifier.new(),
ResonnanceModifier.new(),
InstableModifier.new(),
CaveModifier.new(),
]

View File

@@ -2,6 +2,7 @@ extends StoryStep
class_name AstraStoryStep
const MERCURY_ARRIVAL_DIALOG_PATH="res://dialogs/timelines/astra/mercury_arrival.dtl"
const CAVE_DIALOG_PATH="res://dialogs/timelines/astra/cave.dtl"
func get_respawn_scene() -> Scene:
return AstraScene.new()
@@ -16,7 +17,7 @@ func get_destination_scene() -> Scene:
)
func get_region_sequence_length() -> int:
return 4
return 5
func get_first_vending_machine_occurence(_level : int) -> int:
return 0
@@ -28,6 +29,8 @@ func get_challenge_chance(_level : int) -> float:
return 0.
func get_ship_dialog_path(level : int, ship_in_space := true) -> String:
if ship_in_space and level == get_cave_occurence(level):
return CAVE_DIALOG_PATH
if ship_in_space and level == get_region_sequence_length() - 1:
return MERCURY_ARRIVAL_DIALOG_PATH
return ""

View File

@@ -30,6 +30,12 @@ func get_first_vending_machine_occurence(_level : int) -> int:
func get_vending_machine_occurence(_level : int) -> int:
return 4
func get_first_cave_occurence(level : int) -> int:
return get_cave_occurence(level)
func get_cave_occurence(_level : int) -> int:
return 3
func get_challenge_chance(_level : int) -> float:
return 0.3
@@ -38,13 +44,15 @@ func get_run_point_number(level : int) -> int:
return 1
return 2
func get_charge_number(_level : int) -> int:
return 10
func get_objective_for_region(level : int) -> int:
match level:
0: return 1
1: return 8
2: return 10
3: return 15
4: return 20
1: return 10
2: return 12
3: return 16
4: return 22
5: return 30
_: return get_objective_for_region(level-1) + (level-3) * 5

23
common/icons/cristal.svg Normal file
View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="#ffffff"
class="icon icon-tabler icons-tabler-filled icon-tabler-globe"
version="1.1"
id="svg5"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs5" />
<path
id="path5"
style="fill:#ffffff;stroke-width:21.0943;stroke-linecap:round;paint-order:stroke fill markers"
d="m 17.023734,4.3635641 a 0.381287,0.381287 0 0 0 -0.170042,0.058862 L 11.821685,7.6971107 A 0.63341096,0.63341096 0 0 0 11.534237,8.2108309 L 11.240336,19.008011 a 0.54999444,0.54999444 0 0 0 0.281243,0.495301 l 2.913668,1.633839 a 0.85528839,0.85528839 0 0 0 0.615008,0.08674 l 3.251881,-0.764304 a 0.54999441,0.54999441 0 0 0 0.407255,-0.3982 L 21.41304,9.6040507 A 0.633411,0.633411 0 0 0 21.276945,9.0305978 L 17.348792,4.4922505 A 0.381287,0.381287 0 0 0 17.023734,4.3635641 Z M 16.855445,5.710685 a 0.29045002,0.29045002 0 0 1 0.24822,0.1000976 l 2.992058,3.4556065 a 0.18188889,0.18188889 0 0 1 -0.06799,0.2862794 L 16.39349,11.042166 a 0.43339164,0.43339164 0 0 1 -0.433214,-0.0611 L 12.879721,8.5445752 a 0.18188888,0.18188888 0 0 1 0.01384,-0.2939165 l 3.831045,-2.4933356 a 0.29045002,0.29045002 0 0 1 0.130842,-0.046638 z" />
<path
id="path11"
style="fill:#ffffff;stroke-width:30;stroke-linecap:round;paint-order:stroke fill markers"
d="M 11.299657,2.8712653 4.865863,8.4803941 A 0.83240115,0.83240115 109.32328 0 0 4.5938103,9.2562442 l 1.6673523,9.2015148 a 0.84433519,0.84433519 50.484116 0 0 0.5249373,0.63644 l 4.4292571,1.721467 a 1.216379,1.216379 3.6429642e-7 0 0 0.88129,0 l 4.429257,-1.721467 a 0.84433513,0.84433513 129.51588 0 0 0.524938,-0.63644 L 18.718193,9.2562442 A 0.83240121,0.83240121 70.676724 0 0 18.446141,8.4803941 L 12.012347,2.8712653 a 0.54226096,0.54226096 5.9568751e-7 0 0 -0.71269,0 z"
transform="matrix(0.43145929,-0.11560917,0.11560917,0.43145929,0.83225312,12.978764)" />
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cqdyykjx6hdrr"
path="res://.godot/imported/cristal.svg-7e9a919e9dbc36092f14a8401b5f4888.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/cristal.svg"
dest_files=["res://.godot/imported/cristal.svg-7e9a919e9dbc36092f14a8401b5f4888.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

45
common/icons/magnet.svg Normal file
View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-magnet"
version="1.1"
id="svg2"
sodipodi:docname="magnet.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="18.5"
inkscape:cx="18.621622"
inkscape:cy="14.324324"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="1912"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M21 9v4a9 9 0 0 1 -18 0v-4h7v4a2 2 0 1 0 4 0v-4zm-3 -7a3 3 0 0 1 3 3v2h-7v-2a3 3 0 0 1 3 -3zm-11 0a3 3 0 0 1 3 3v2h-7v-2a3 3 0 0 1 3 -3z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mv0emix7dwio"
path="res://.godot/imported/magnet.svg-210fc8631abfaf11eefb9e027a72fb42.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/magnet.svg"
dest_files=["res://.godot/imported/magnet.svg-210fc8631abfaf11eefb9e027a72fb42.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

View File

@@ -0,0 +1,31 @@
extends Scene
class_name CaveScene
@export var cave_room_seed = 0
func _init(
_crs : int = 0
):
cave_room_seed = _crs
func get_scene_id() -> String:
return "CRISTAL_CAVE"
func get_scene_path() -> String:
return "res://stages/3d_scenes/cave/cave.tscn"
func is_mouse_captured() -> bool:
return true
func is_needed_to_be_announced() -> bool:
return true
func get_scene_title() -> String:
return tr("CRISTAL_CAVE")
func get_scene_icon() -> Texture:
return preload("res://common/icons/cristal.svg")
func _on_generated(generated_scene : Node):
var cave : Cave = generated_scene as Cave
cave.setup_room(cave_room_seed)

View File

@@ -0,0 +1 @@
uid://f143q00p8ph1

View File

@@ -0,0 +1,13 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Bounce In" length="1.0"]
demeter: I hope everything is going well for you so far. I'm calling because the next regions you're heading to contain unique rock formations\: the [b]Caverns of Talion[/b]. #id:e5
- Talion hadn't disappeared? #id:e6
demeter: Precisely, I'd like you to check for me if its reappearance on the surface also means its reappearance in the caverns. #id:e7
- How do you know? #id:e8
demeter: These caverns were well known to humans. Some went there to study Talion, others to explore the cave. These explorations were very risky, but apparently some humans enjoyed risking their lives... #id:e9
- What does that change for me? #id:ea
demeter: The crystals in these caverns are special; they don't produce life, but they release a powerful mutagenic energy into the air. This will surely help you grow more powerfull plants for the rest of your journey. #id:eb
demeter: Use your detector to find the entrance to the cave; humans had installed an elevator there. #id:ec
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
[wait time="2.0"]
[end_timeline]

View File

@@ -0,0 +1 @@
uid://pgqchxycwcpd

Binary file not shown.

View File

@@ -0,0 +1,68 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://mwk845fx5ye2"
path="res://.godot/imported/cristal.blend-5fdcaa76cec17f12715c1ff4a4caf324.scn"
[deps]
source_file="res://entities/interactable_3d/cristal/assets/cristal.blend"
dest_files=["res://.godot/imported/cristal.blend-5fdcaa76cec17f12715c1ff4a4caf324.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
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={
"materials": {
"Default3D": {
"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
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
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

View File

@@ -0,0 +1,68 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://d0sdfjneo8rjj"
path="res://.godot/imported/cristal_crack_1.blend-01f6238e5ee6ec34d1d8a421f878430c.scn"
[deps]
source_file="res://entities/interactable_3d/cristal/assets/cristal_crack_1.blend"
dest_files=["res://.godot/imported/cristal_crack_1.blend-01f6238e5ee6ec34d1d8a421f878430c.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
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={
"materials": {
"Default3D": {
"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
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
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

View File

@@ -0,0 +1,68 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b8cqw348lx15s"
path="res://.godot/imported/cristal_crack_2.blend-e5cf949346bc85a9c664c66dde3ab25a.scn"
[deps]
source_file="res://entities/interactable_3d/cristal/assets/cristal_crack_2.blend"
dest_files=["res://.godot/imported/cristal_crack_2.blend-e5cf949346bc85a9c664c66dde3ab25a.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
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={
"materials": {
"Default3D": {
"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
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
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

View File

@@ -0,0 +1,68 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c7p114rvk26xw"
path="res://.godot/imported/cristal_crack_3.blend-513c4ee47a074edd5c96e86c23a0716a.scn"
[deps]
source_file="res://entities/interactable_3d/cristal/assets/cristal_crack_3.blend"
dest_files=["res://.godot/imported/cristal_crack_3.blend-513c4ee47a074edd5c96e86c23a0716a.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
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={
"materials": {
"Default3D": {
"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
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
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

Binary file not shown.

View File

@@ -0,0 +1,87 @@
[gd_scene format=3 uid="uid://8rorj31s3irn"]
[ext_resource type="Script" uid="uid://dwn3g8c5sa0a2" path="res://entities/interactable_3d/cristal/scripts/cristal.gd" id="1_ci2hw"]
[ext_resource type="AudioStream" uid="uid://ctfaxvblcg5lc" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_1.wav" id="2_247i2"]
[ext_resource type="PackedScene" uid="uid://mwk845fx5ye2" path="res://entities/interactable_3d/cristal/assets/cristal.blend" id="2_ci2hw"]
[ext_resource type="PackedScene" uid="uid://c7p114rvk26xw" path="res://entities/interactable_3d/cristal/assets/cristal_crack_3.blend" id="2_vejte"]
[ext_resource type="AudioStream" uid="uid://c1dnklmka2ccn" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_2.wav" id="3_k7wsc"]
[ext_resource type="PackedScene" uid="uid://d0sdfjneo8rjj" path="res://entities/interactable_3d/cristal/assets/cristal_crack_1.blend" id="3_nvfy2"]
[ext_resource type="AudioStream" uid="uid://dd1uu6dd6sloe" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_3.wav" id="4_qeist"]
[ext_resource type="AudioStream" uid="uid://eq7wufwnolto" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_4.wav" id="5_22ghi"]
[ext_resource type="PackedScene" uid="uid://brp1fpvasaims" path="res://entities/interactable_3d/cristal/mutation_announce.tscn" id="9_247i2"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ojmpp"]
streams_count = 4
stream_0/stream = ExtResource("2_247i2")
stream_1/stream = ExtResource("3_k7wsc")
stream_2/stream = ExtResource("4_qeist")
stream_3/stream = ExtResource("5_22ghi")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ci2hw"]
transparency = 1
shading_mode = 0
vertex_color_use_as_albedo = true
[sub_resource type="PrismMesh" id="PrismMesh_nvfy2"]
lightmap_size_hint = Vector2i(14, 21)
material = SubResource("StandardMaterial3D_ci2hw")
size = Vector3(0.2, 0.2, 0.2)
[sub_resource type="Gradient" id="Gradient_ci2hw"]
offsets = PackedFloat32Array(0, 0.80349344, 1)
colors = PackedColorArray(1, 0.6509804, 0.09019608, 1, 1, 0.1764706, 0.3372549, 0.827451, 1, 0, 0.43137255, 0)
[sub_resource type="BoxShape3D" id="BoxShape3D_nvfy2"]
size = Vector3(1, 2.0454712, 1)
[node name="Cristal" type="Area3D" unique_id=1403604311]
script = ExtResource("1_ci2hw")
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
[node name="BreackAudioPlayer" type="AudioStreamPlayer3D" parent="." unique_id=1190729820]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0430325, 0)
stream = SubResource("AudioStreamRandomizer_ojmpp")
[node name="BreakParticles" type="CPUParticles3D" parent="." unique_id=1968257379]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0430325, 0)
emitting = false
amount = 16
lifetime = 0.5
one_shot = true
speed_scale = 1.5
explosiveness = 1.0
mesh = SubResource("PrismMesh_nvfy2")
particle_flag_rotate_y = true
direction = Vector3(0, 1, 0)
initial_velocity_min = 1.0
initial_velocity_max = 4.0
angular_velocity_min = -90.0
angular_velocity_max = -90.0
angle_min = -180.0
angle_max = 180.0
scale_amount_min = 0.5
color = Color(1, 0.6509804, 0.09019608, 1)
color_ramp = SubResource("Gradient_ci2hw")
[node name="CristalModel" parent="." unique_id=1362490576 instance=ExtResource("2_ci2hw")]
unique_name_in_owner = true
[node name="CristalModelCrack1" parent="." unique_id=2936580 instance=ExtResource("3_nvfy2")]
unique_name_in_owner = true
visible = false
[node name="CristalModelCrack2" parent="." unique_id=1202531828 instance=ExtResource("2_vejte")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0051152706, 0.006559938, -0.011411905)
visible = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1235599731]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9791151, 0)
shape = SubResource("BoxShape3D_nvfy2")
[node name="MutationAnnounce" parent="." unique_id=1447182082 instance=ExtResource("9_247i2")]
unique_name_in_owner = true
[editable path="CristalModelCrack2"]

View File

@@ -0,0 +1,315 @@
[gd_scene format=3 uid="uid://brp1fpvasaims"]
[ext_resource type="Script" uid="uid://c0tyivmiouctw" path="res://entities/interactable_3d/cristal/scripts/mutation_announce.gd" id="1_02o74"]
[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="2_vlom2"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_5hs4t"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_yg5wk"]
[ext_resource type="Script" uid="uid://bqisp5hjs06rj" path="res://gui/game/announce/scripts/announce_inspectable.gd" id="5_qu1xy"]
[ext_resource type="Texture2D" uid="uid://0hbdgalf04e" path="res://common/icons/wood.svg" id="6_n403s"]
[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="7_se4h4"]
[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="8_0osya"]
[ext_resource type="Texture2D" uid="uid://dth2mj0nh2q70" path="res://common/icons/align-right.svg" id="9_s5jxo"]
[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="10_qidgp"]
[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="11_uj15c"]
[ext_resource type="PackedScene" uid="uid://mwk845fx5ye2" path="res://entities/interactable_3d/cristal/assets/cristal.blend" id="12_wy2oe"]
[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="13_kyl1n"]
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="14_d2gpy"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="15_hu5cq"]
[sub_resource type="ViewportTexture" id="ViewportTexture_6hxtc"]
viewport_path = NodePath("Particles/SubViewport")
[sub_resource type="Curve" id="Curve_brrmr"]
_limits = [-200.0, 200.0, 0.0, 1.0]
_data = [Vector2(0, -200), 0.0, 560.0, 0, 0, Vector2(0.08235294, 92.384125), 1336.3082, 1336.3082, 0, 0, Vector2(0.34901965, 200), 0.0, 0.0, 0, 0, Vector2(0.854902, -200), 0.0, 0.0, 0, 0]
point_count = 4
[sub_resource type="Gradient" id="Gradient_0u75y"]
offsets = PackedFloat32Array(0, 0.8689956, 0.98253274)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
[sub_resource type="LabelSettings" id="LabelSettings_u8fe7"]
font = ExtResource("4_yg5wk")
font_size = 50
font_color = Color(1, 0.6509804, 0.09019608, 1)
[sub_resource type="ViewportTexture" id="ViewportTexture_smt8b"]
viewport_path = NodePath("AnnounceContainer/ObjectVisualiser/SubViewport")
[sub_resource type="Resource" id="Resource_rjaqi"]
script = ExtResource("8_0osya")
title_text = "Description"
title_icon = ExtResource("9_s5jxo")
text = "Une fois mature, ajoute [b]1[/b][img=22x22]res://common/icons/growth.svg[/img] tous les [b]3[/b][img=22x22]res://common/icons/calendar-week.svg[/img]"
[sub_resource type="Resource" id="Resource_kgj7d"]
script = ExtResource("7_se4h4")
title = "Ancien"
subtitle = "Mutation"
important_stat_icon = ExtResource("6_n403s")
sections = Array[ExtResource("8_0osya")]([SubResource("Resource_rjaqi")])
[sub_resource type="Animation" id="Animation_aao0q"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MutationAnnounce/AnnounceContainer:theme_override_constants/separation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [4]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MutationAnnounce/Particles:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MutationAnnounce/AnnounceContainer:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MutationAnnounce/MarginContainer/BackgroundRect:modulate:a")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [1.0]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("MutationAnnounce:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0.03333333),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_b6hac"]
resource_name = "appear"
length = 0.8
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("MutationAnnounce/AnnounceContainer:theme_override_constants/separation")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0.23333333, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [480, 4]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MutationAnnounce/Particles:modulate")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.5, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("MutationAnnounce/AnnounceContainer:modulate")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.2, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("MutationAnnounce/MarginContainer/BackgroundRect:modulate:a")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.03333333, 0.8),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 0.8]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("MutationAnnounce:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.16666667),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1aa3a"]
_data = {
&"RESET": SubResource("Animation_aao0q"),
&"appear": SubResource("Animation_b6hac")
}
[node name="MutationAnnounce" type="CanvasLayer" unique_id=1447182082]
visible = false
script = ExtResource("1_02o74")
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1853133518]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="BackgroundRect" type="ColorRect" parent="MarginContainer" unique_id=1594037653]
layout_mode = 2
color = Color(0.0352941, 0.0196078, 0.12549, 0.705882)
[node name="Particles" type="TextureRect" parent="." unique_id=1748571879]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -500.0
offset_top = -500.0
offset_right = 500.0
offset_bottom = 500.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("ViewportTexture_6hxtc")
[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=1123249182]
transparent_bg = true
size = Vector2i(1000, 1000)
[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=220592083]
position = Vector2(500, 500)
amount = 20
texture = ExtResource("2_vlom2")
preprocess = 1.0
spread = 180.0
gravity = Vector2(0, 0)
initial_velocity_min = 2.0
initial_velocity_max = 2.0
linear_accel_min = 5.0
linear_accel_max = 5.0
linear_accel_curve = SubResource("Curve_brrmr")
color_ramp = SubResource("Gradient_0u75y")
[node name="AnnounceContainer" type="VBoxContainer" parent="." unique_id=645433045]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -627.0
offset_bottom = 627.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 4
alignment = 1
[node name="AnnounceTitle" type="Label" parent="AnnounceContainer" unique_id=1768593559]
unique_name_in_owner = true
layout_mode = 2
text = "NEW_MUTATION"
label_settings = ExtResource("3_5hs4t")
horizontal_alignment = 1
[node name="AnnounceText" type="Label" parent="AnnounceContainer" unique_id=768724763]
unique_name_in_owner = true
layout_mode = 2
text = "Ancien"
label_settings = SubResource("LabelSettings_u8fe7")
horizontal_alignment = 1
[node name="ObjectVisualiser" type="TextureRect" parent="AnnounceContainer" unique_id=1180983374]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
mouse_filter = 0
texture = SubResource("ViewportTexture_smt8b")
stretch_mode = 5
script = ExtResource("5_qu1xy")
info = SubResource("Resource_kgj7d")
[node name="MutationIconTextureRect" type="TextureRect" parent="AnnounceContainer/ObjectVisualiser" unique_id=312214951]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("6_n403s")
[node name="SubViewport" type="SubViewport" parent="AnnounceContainer/ObjectVisualiser" unique_id=1795775056]
own_world_3d = true
transparent_bg = true
size = Vector2i(300, 300)
[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1527573801]
unique_name_in_owner = true
transform = Transform3D(0.9998366, 0, 0, 0, 0.9995686, 0, 0, 0, 0.9996744, 0, 0, 0)
[node name="cristal" parent="AnnounceContainer/ObjectVisualiser/SubViewport/AnnouceObject" unique_id=1362490576 instance=ExtResource("12_wy2oe")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
[node name="Camera3D" type="Camera3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=173755338]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10)
keep_aspect = 0
current = true
fov = 20.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1135825303]
environment = ExtResource("13_kyl1n")
[node name="OkButton" type="Button" parent="AnnounceContainer" unique_id=249785792]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("14_d2gpy")
text = "OK"
icon = ExtResource("15_hu5cq")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1913258839]
unique_name_in_owner = true
root_node = NodePath("../..")
libraries/ = SubResource("AnimationLibrary_1aa3a")

View File

@@ -0,0 +1,45 @@
extends Interactable3D
const MAX_BREAK_LEVEL = 2
signal broken
@export var break_level = 0
func _ready():
update_model()
func click():
if interactable:
clicked.emit()
%BreackAudioPlayer.playing = true
%BreakParticles.emitting = true
break_level += 1
if break_level == MAX_BREAK_LEVEL:
broken.emit()
interactable = false
unlock_mutation()
update_model()
func update_model():
if is_node_ready():
%CristalModel.visible = break_level == 0
%CristalModelCrack1.visible = break_level == 1
%CristalModelCrack2.visible = break_level > 1
if break_level > 1:
%CristalModelCrack2.find_children("AnimationPlayer")[0].play("Break")
func unlock_mutation():
var progression = GameInfo.game_data.progression_data
if progression.mutations_unlocked < len(progression.get_all_mutations()):
var new_mutation : PlantMutation = progression.get_all_mutations()[progression.mutations_unlocked]
progression.mutations_unlocked += 1
get_tree().create_timer(1.).timeout.connect(
func (): %MutationAnnounce.announce_mutation = new_mutation
);

View File

@@ -0,0 +1 @@
uid://dwn3g8c5sa0a2

View File

@@ -0,0 +1,80 @@
@tool
extends CanvasLayer
class_name MutationAnnounce
const DEFAULT_OBJECT_ACCELERATION = Vector2(3,0)
@export var announce_mutation : PlantMutation = null : set = set_announce_mutation
@export_tool_button("Update", "Callable") var update_action = set_announce_mutation
var announce_objects : Array[AnnouceObject] = []
var object_acceleration := Vector2(0,0)
var rotating := false
var prev_mouse_pos : Vector2
var next_mouse_pos : Vector2
const YELLOW_COLOR = Color("e29f32")
const RED_COLOR = Color("f20058")
func _ready():
set_announce_mutation()
%OkButton.button_down.connect(_on_ok_button_down)
hide()
func _process(delta):
update_rotation(delta)
func update_rotation(delta):
if visible:
next_mouse_pos = get_viewport().get_mouse_position()
if Input.is_action_just_pressed("action"):
rotating = true
prev_mouse_pos = get_viewport().get_mouse_position()
if Input.is_action_just_released("action"):
rotating = false
object_acceleration = Vector2(
float(next_mouse_pos.x - prev_mouse_pos.x),
float(next_mouse_pos.y - prev_mouse_pos.y)
)
var object_rotation = object_acceleration
if rotating:
object_rotation = Vector2(
float(next_mouse_pos.x - prev_mouse_pos.x),
float(next_mouse_pos.y - prev_mouse_pos.y)
)
prev_mouse_pos = next_mouse_pos
else :
object_acceleration = object_acceleration.lerp(DEFAULT_OBJECT_ACCELERATION, 0.1)
%AnnouceObject.rotate(Vector3.UP, object_rotation.x * delta)
%AnnouceObject.rotate(Vector3.RIGHT, object_rotation.y * delta)
func set_announce_mutation(mutation := announce_mutation):
if is_node_ready() and mutation:
%AnnounceTitle.text = "NEW_MUTATION"
%AnnounceText.text = mutation.get_mutation_name()
%MutationIconTextureRect.texture = mutation.get_icon()
%ObjectVisualiser.info = mutation.card_info()
if not visible:
%AnimationPlayer.play("appear")
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
AudioManager.play_sfx("Reveal")
elif mutation == null and visible:
%AnimationPlayer.play_backwards("appear")
if not Engine.is_editor_hint():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
announce_mutation = mutation
func _on_ok_button_down():
announce_mutation = null

View File

@@ -0,0 +1 @@
uid://c0tyivmiouctw

View File

@@ -109,7 +109,7 @@ func calculate_plant_score(
return data.get_score(with_state)
func harvest():
for i in range(data.get_random_seed_income()):
for i in range(data.get_seed_number()):
produce_seed()
if data.get_state() == PlantData.State.MATURE:
@@ -136,7 +136,7 @@ func mature():
func die():
for m in data.mutations:
m._start_dead_effect(self)
for i in range(data.get_random_seed_income()):
for i in range(data.get_seed_number()):
produce_seed()
disappear()
@@ -200,10 +200,7 @@ func card_info() -> CardInfo:
LIFETIME_ICON
),
CardStatInfo.new(
"%d-%d" % [
data.get_seed_number(PlantData.State.MATURE) - data.get_seed_random_loose(),
data.get_seed_number(PlantData.State.MATURE)
],
str(data.get_seed_number()),
SEED_ICON
),
])

View File

@@ -116,11 +116,11 @@ func get_seed_random_loose():
func get_influence_radius():
return get_plant_info().get_influence_radius()
func get_random_seed_income():
return max(
get_seed_number() - randi_range(0, get_seed_random_loose()),
0
)
# func get_random_seed_income():
# return max(
# get_seed_number() - randi_range(0, get_seed_random_loose()),
# 0
# )
func get_lifetime_buff() -> int:
var buff = 0

View File

@@ -74,6 +74,23 @@ func get_level_for_rarity(rarity: int) -> int:
func get_rarity() -> int:
return get_base_rarity() + level - 1
func card_info() -> CardInfo:
var info = CardInfo.new(
get_mutation_name(),
tr("MUTATION")
)
info.important_stat_icon = get_icon()
var desc_section := CardSectionInfo.new(
tr("DESCRIPTION"),
get_mutation_description(),
)
desc_section.title_icon = InspectableEntity.DESC_ICON
info.sections.append(desc_section)
return info
func card_section() -> CardSectionInfo:
var section = CardSectionInfo.new(
get_mutation_name() + (" %d" % level if level > 1 else ""),

View File

@@ -1,3 +1,4 @@
@tool
extends PlantMutation
class_name AncientMutation

View File

@@ -41,7 +41,7 @@ static func generate_from_parent(plant_data : PlantData) -> Seed:
static func generate_random(rarity := 0) -> Seed:
var new_seed = Seed.new(
Random.generate_random_word(),
[generate_first_mutation(rarity)]
generate_first_mutations(rarity),
)
return new_seed
@@ -138,7 +138,10 @@ func get_particles() -> Array[EffectParticles.Parameters]:
return param
static func generate_first_mutation(rarity := 0) -> PlantMutation:
static func generate_first_mutations(rarity := 0) -> Array[PlantMutation]:
if rarity < 0:
return []
var possible_mutation : PlantMutation = GameInfo.game_data.progression_data.available_mutations.filter(
func (m : PlantMutation): return m.get_base_rarity() <= rarity
@@ -148,7 +151,7 @@ static func generate_first_mutation(rarity := 0) -> PlantMutation:
possible_mutation.level += level_to_add
return possible_mutation
return [possible_mutation]
static func mutate_mutations(mutations : Array[PlantMutation]) -> Array[PlantMutation]:
@@ -158,7 +161,8 @@ static func mutate_mutations(mutations : Array[PlantMutation]) -> Array[PlantMut
len(mutations) < GameInfo.game_data.current_run.plant_info.get_mutation_max_number()
):
mutation_possibility.append(AddMutation.new())
elif len(mutations) > 0:
if len(mutations) > 0:
mutation_possibility.append(UpgradeMutation.new())
var chosen_mutation_possibility = mutation_possibility.pick_random()

View File

@@ -64,7 +64,8 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.253273, 0)
shape = SubResource("CapsuleShape3D_eodxe")
[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1818490710]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7901894e-08, -0.25222805, 0.6383209)
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.0989037e-09, -0.25222805, 0.025139987)
shadow_enabled = true
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1210282091]

View File

@@ -1,55 +1,5 @@
[preset.0]
name="Web"
platform="Web"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=".export/web/index.html"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
variant/extensions_support=false
variant/thread_support=false
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
html/export_icon=true
html/custom_html_shell=""
html/head_include=""
html/canvas_resize_policy=2
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false
progressive_web_app/ensure_cross_origin_isolation_headers=true
progressive_web_app/offline_page=""
progressive_web_app/display=1
progressive_web_app/orientation=0
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color(0, 0, 0, 1)
threads/emscripten_pool_size=8
threads/godot_pool_size=4
[preset.1]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
@@ -72,7 +22,7 @@ encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
[preset.0.options]
custom_template/debug=""
custom_template/release=""
@@ -119,3 +69,50 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.1]
name="Linux"
platform="Linux"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=".export/steam/content_builder/content/linux/Seeding The Wasteland.x86_64"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\"
rm -rf \"{temp_dir}\""

View File

@@ -248,7 +248,7 @@ size = Vector2i(300, 300)
[node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=986671004]
unique_name_in_owner = true
transform = Transform3D(-0.4322992, 0.01924802, 0.90143085, -0.8508927, 0.32199714, -0.4149924, -0.29827252, -0.94641316, -0.1228672, 0, 0, 0)
transform = Transform3D(0.5251642, 0.51167643, -0.6798119, -0.8508927, 0.32199714, -0.4149924, 0.0065870024, 0.7963845, 0.6045711, 0, 0, 0)
[node name="Camera3D" type="Camera3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1788331074]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1)

View File

@@ -155,11 +155,11 @@ theme_override_fonts/normal_font = ExtResource("6_2wykm")
theme_override_fonts/bold_font = ExtResource("6_2wykm")
theme_override_fonts/bold_italics_font = ExtResource("6_2wykm")
theme_override_fonts/italics_font = ExtResource("6_2wykm")
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
theme_override_font_sizes/normal_font_size = 40
theme_override_font_sizes/bold_font_size = 40
theme_override_font_sizes/bold_italics_font_size = 40
theme_override_font_sizes/italics_font_size = 40
theme_override_font_sizes/mono_font_size = 40
bbcode_enabled = true
text = "Action en cours Action en cours Action en cours Action en cours Action en cours "
fit_content = true

View File

@@ -60,13 +60,6 @@ var success = false
func(i:Item): return i is Seed
) != -1)
),
Step.new(
"DROP_SEED_WITH_KEY",
(func ():
return (
Input.is_action_pressed("drop"))
)
),
Step.new(
"PLANT_SEED_IN_FERTILE_ZONE",
(func ():
@@ -89,13 +82,30 @@ var success = false
if e is Plant and e.harvested:
return true
return false)
),
Step.new(
"TAKE_HARVESTED_SEEDS",
(func ():
for s in player.data.inventory.seeds:
if s is Seed and len(s.plant_mutations) > 0:
display_mutations_tutorial(s.card_info())
return true
return false),
),
Step.new(
"DROP_SEED_WITH_KEY",
(func ():
return (
Input.is_action_pressed("drop"))
)
),
]
func _ready():
setup_gui()
show()
%PlantInfoTutorial.hide()
%MutationTutorial.hide()
func setup_gui():
for s in %Steps.get_children():
@@ -136,19 +146,36 @@ func finish_tutorial():
success = true
func display_plant_info_tutorial(with_card_info : CardInfo):
%PlantCard.info = with_card_info
%PlantInfoCard.info = with_card_info
AudioManager.play_sfx("Reveal")
%PlantCard.update()
%PlantInfoCard.update()
%PlantInfoTutorialAnimationPlayer.play("appear")
Pointer.action_disabled = true
func _on_ok_button_button_down():
func display_mutations_tutorial(with_card_info : CardInfo):
%MutationCard.info = with_card_info
AudioManager.play_sfx("Reveal")
%MutationCard.update()
%MutationTutorialAnimationPlayer.play("appear")
Pointer.action_disabled = true
func _on_plant_info_ok_button_button_down():
%PlantInfoTutorialAnimationPlayer.play_backwards("appear")
get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click
func():
Pointer.action_disabled = false
)
func _on_mutation_ok_button_button_down():
%MutationTutorialAnimationPlayer.play_backwards("appear")
get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click
func():
Pointer.action_disabled = false
)
class Step:
var text : String : get = get_text

View File

@@ -305,7 +305,7 @@ layout_mode = 2
theme_override_constants/separation = 30
theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5")
[node name="PlantCard" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1085885349 instance=ExtResource("6_vg3tr")]
[node name="PlantInfoCard" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1085885349 instance=ExtResource("6_vg3tr")]
unique_name_in_owner = true
custom_minimum_size = Vector2(350, 0)
layout_mode = 2
@@ -342,6 +342,7 @@ horizontal_alignment = 2
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=2062134463]
visible = false
layout_mode = 2
alignment = 1
@@ -361,7 +362,7 @@ scroll_active = false
horizontal_alignment = 2
vertical_alignment = 1
[node name="OkButton" type="Button" parent="PlantInfoTutorial/MarginContainer" unique_id=1684351093]
[node name="PlantInfoOkButton" type="Button" parent="PlantInfoTutorial/MarginContainer" unique_id=1684351093]
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("18_6k6bq")
@@ -371,4 +372,103 @@ text = "OK"
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_ebkn5")
[connection signal="button_down" from="PlantInfoTutorial/MarginContainer/OkButton" to="." method="_on_ok_button_button_down"]
[node name="MutationTutorial" type="Control" parent="." unique_id=722588851]
unique_name_in_owner = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Background" type="ColorRect" parent="MutationTutorial" unique_id=250614963]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.037180007, 0.020800002, 0.13, 1)
[node name="MarginContainer" type="VBoxContainer" parent="MutationTutorial" unique_id=1821562698]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 12
alignment = 1
[node name="Title" type="Label" parent="MutationTutorial/MarginContainer" unique_id=1928457691]
layout_mode = 2
text = "MUTATIONS"
label_settings = ExtResource("6_hgus1")
horizontal_alignment = 1
[node name="Subtitle" type="Label" parent="MutationTutorial/MarginContainer" unique_id=1467489572]
layout_mode = 2
text = "SEEDS_HAVE_A_CHANCE_TO_GAIN_MUTATIONS"
horizontal_alignment = 1
[node name="GridContainer" type="GridContainer" parent="MutationTutorial/MarginContainer" unique_id=386984353]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
columns = 3
[node name="VBoxContainer3" type="VBoxContainer" parent="MutationTutorial/MarginContainer/GridContainer" unique_id=2005513108]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=593977172]
layout_mode = 2
theme_override_constants/separation = 30
theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5")
[node name="MutationCard" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1165095240 instance=ExtResource("6_vg3tr")]
unique_name_in_owner = true
custom_minimum_size = Vector2(350, 0)
layout_mode = 2
info = SubResource("Resource_puixe")
[node name="VBoxContainer2" type="VBoxContainer" parent="MutationTutorial/MarginContainer/GridContainer" unique_id=494292951]
layout_mode = 2
theme_override_constants/separation = 8
[node name="HSeparator" type="HSeparator" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=331005698]
layout_mode = 2
theme_override_constants/separation = 120
theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5")
[node name="HBoxContainer2" type="HBoxContainer" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=781597357]
layout_mode = 2
alignment = 1
[node name="TextureRect" type="TextureRect" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=281613573]
layout_mode = 2
size_flags_vertical = 4
texture = ExtResource("17_58nqq")
stretch_mode = 5
[node name="Label2" type="RichTextLabel" parent="MutationTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=1347221574]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
bbcode_enabled = true
text = "PLANT_MUTATION_TEXT"
fit_content = true
scroll_active = false
horizontal_alignment = 2
vertical_alignment = 1
[node name="MutationOkButton" type="Button" parent="MutationTutorial/MarginContainer" unique_id=1316064682]
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("18_6k6bq")
text = "OK"
[node name="MutationTutorialAnimationPlayer" type="AnimationPlayer" parent="MutationTutorial" unique_id=127058676]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_ebkn5")
[connection signal="button_down" from="PlantInfoTutorial/MarginContainer/PlantInfoOkButton" to="." method="_on_plant_info_ok_button_button_down"]
[connection signal="button_down" from="MutationTutorial/MarginContainer/MutationOkButton" to="." method="_on_mutation_ok_button_button_down"]

View File

@@ -16,7 +16,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true
config/name="Seeding The Wasteland"
config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot."
config/version="beta-1.2"
config/version="beta-1.3"
run/main_scene="uid://c5bruelvqbm1k"
config/features=PackedStringArray("4.6", "Forward Plus")
config/icon="uid://df0y0s666ui4h"
@@ -45,6 +45,7 @@ directories/dch_directory={
"mysterious_demeter": "res://dialogs/characters/mysterious_demeter.dch"
}
directories/dtl_directory={
"cave": "res://dialogs/timelines/astra/cave.dtl",
"mercury_arrival": "res://dialogs/timelines/astra/mercury_arrival.dtl",
"mercury_departure": "res://dialogs/timelines/mercury/mercury_departure.dtl",
"tutorial/demeter_intro": "res://dialogs/timelines/tutorial/demeter_intro.dtl",
@@ -110,7 +111,7 @@ variables={
"whoareyou": "false",
"whynorth": "false"
}
translation/id_counter=228
translation/id_counter=236
translation/locales=[]
history/visited_event_history_enabled=true
audio/type_sound_bus="Sfx"
@@ -246,7 +247,7 @@ zoom_out={
[internationalization]
locale/translation_remaps={}
locale/translations=PackedStringArray("res://translation/game/gui.en.translation", "res://translation/game/gui.fr.translation", "res://translation/dialogs/dialogic_character_translations.en.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.fr.translation", "res://translation/dialogs/dialogic_mercury_arrival_translation.en.translation", "res://translation/dialogs/dialogic_mercury_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.en.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.fr.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.en.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_venus_departure_translation.en.translation", "res://translation/dialogs/dialogic_venus_departure_translation.fr.translation")
locale/translations=PackedStringArray("res://translation/game/gui.en.translation", "res://translation/game/gui.fr.translation", "res://translation/dialogs/dialogic_character_translations.en.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.en.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.en.translation", "res://translation/dialogs/dialogic_wake_up_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_intro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_presentation_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_post_tutorial_translation.fr.translation", "res://translation/dialogs/dialogic_character_translations.fr.translation", "res://translation/dialogs/dialogic_demeter_astra_failed_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_outro_translation.fr.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.en.translation", "res://translation/dialogs/dialogic_demeter_ship_failed_translation.fr.translation", "res://translation/dialogs/dialogic_mercury_arrival_translation.en.translation", "res://translation/dialogs/dialogic_mercury_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.en.translation", "res://translation/dialogs/dialogic_mercury_departure_translation.fr.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.en.translation", "res://translation/dialogs/dialogic_venus_arrival_translation.fr.translation", "res://translation/dialogs/dialogic_venus_departure_translation.en.translation", "res://translation/dialogs/dialogic_venus_departure_translation.fr.translation", "res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation")
locale/test="fr"
[rendering]

View File

@@ -3,7 +3,7 @@
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bqo4uknlbm8r1"
uid="uid://b83v0uxiukmbb"
path="res://.godot/imported/borea_base.blend-16b097cf97b3f00cfa1bc1f2c346e23b.scn"
[deps]
@@ -39,10 +39,10 @@ materials/extract_format=0
materials/extract_path=""
_subresources={
"materials": {
"Glass": {
"Default3D": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres",
"use_external/path": "uid://b5vlcdry8vtgi"
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
"use_external/path": "uid://dvvi1k5c5iowc"
},
"Material": {
"use_external/enabled": true,

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,10 @@
extends Node3D
const OUTRO_TIMELINE_PATH = "res://dialogs/timelines/tutorial/demeter_outro.dtl"
# Called when the node enters the scene tree for the first time.
func _ready():
%Credits.hide()
if not Engine.is_editor_hint():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
await %Phone.clicked
Dialogic.start(OUTRO_TIMELINE_PATH)
await Dialogic.timeline_ended
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
%Credits.show()
AudioManager.play_music("Demo_end", false, 5.0)
AudioManager.stop_all_ambiances()
func _on_ambiance_change_detector_body_entered(body: Node3D):
if body is Player3D:
AudioManager.stop_all_ambiances()
AudioManager.play_music("Demo_end", false, 5.0)
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass

View File

@@ -1 +1 @@
uid://btc447j47jbx0
uid://c37uqdnr2himm

Binary file not shown.

View File

@@ -0,0 +1,83 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://5uvl5axgq3sc"
path="res://.godot/imported/cave.blend-82b768166e23ecf41c7d4afccb695695.scn"
[deps]
source_file="res://stages/3d_scenes/cave/3d/cave.blend"
dest_files=["res://.godot/imported/cave.blend-82b768166e23ecf41c7d4afccb695695.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
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={
"materials": {
"Default3D": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
"use_external/path": "uid://dvvi1k5c5iowc"
},
"GlassMaterial": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres",
"use_external/path": "uid://b5vlcdry8vtgi"
},
"Material": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
"use_external/path": "uid://dvvi1k5c5iowc"
},
"Material.001": {
"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
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
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

Binary file not shown.

View File

@@ -0,0 +1,146 @@
[gd_scene format=3 uid="uid://d0fr68xaapsq7"]
[ext_resource type="Script" uid="uid://bj4d1x8n8ina" path="res://entities/interactable_3d/interactable_3d.gd" id="1_w6igl"]
[ext_resource type="Script" uid="uid://mn05jq4ekx62" path="res://stages/3d_scenes/cave/scripts/cave.gd" id="1_xlbt6"]
[ext_resource type="PackedScene" uid="uid://5uvl5axgq3sc" path="res://stages/3d_scenes/cave/3d/cave.blend" id="2_xlbt6"]
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_663fy"]
[ext_resource type="PackedScene" uid="uid://8rorj31s3irn" path="res://entities/interactable_3d/cristal/cristal.tscn" id="4_663fy"]
[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="6_rdddd"]
[sub_resource type="Environment" id="Environment_x7awc"]
background_mode = 2
sky_custom_fov = 61.7
ambient_light_source = 3
ambient_light_color = Color(1, 1, 1, 1)
ambient_light_sky_contribution = 0.18
ambient_light_energy = 2.62
reflected_light_source = 2
tonemap_mode = 2
tonemap_exposure = 0.7
tonemap_white = 1.84
glow_enabled = true
glow_intensity = 0.22
glow_bloom = 0.22
glow_hdr_threshold = 0.79
glow_hdr_scale = 0.0
glow_hdr_luminance_cap = 5.63
fog_mode = 1
fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1)
fog_light_energy = 1.48
fog_density = 0.0231
fog_aerial_perspective = 0.113
fog_sky_affect = 0.0
volumetric_fog_sky_affect = 0.0
adjustment_enabled = true
adjustment_saturation = 1.3
[sub_resource type="Animation" id="Animation_pxmsf"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite3D:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.99999994, 1, 0.99999994)]
}
[sub_resource type="Animation" id="Animation_u7lr8"]
resource_name = "hover"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite3D:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.46666667, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0.99999994, 1, 0.99999994), Vector3(1.2, 1.2, 1.2), Vector3(0.99999994, 1, 0.99999994)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_mmomx"]
_data = {
&"RESET": SubResource("Animation_pxmsf"),
&"hover": SubResource("Animation_u7lr8")
}
[sub_resource type="BoxShape3D" id="BoxShape3D_6rmeu"]
size = Vector3(2.2807465, 0.83758545, 2.7016602)
[node name="Cave" type="Node3D" unique_id=122920060]
script = ExtResource("1_xlbt6")
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1672352734]
environment = SubResource("Environment_x7awc")
[node name="Lights" type="Node3D" parent="." unique_id=1491734303]
[node name="OmniLight3D" type="OmniLight3D" parent="Lights" unique_id=2015091523]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.124447, 2.974639, 1.201046)
omni_range = 16.327286
[node name="CaveModel" parent="." unique_id=741350561 instance=ExtResource("2_xlbt6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.573945, 0, 1.5022337)
[node name="OmniLight3D" type="OmniLight3D" parent="CaveModel" unique_id=2145888223]
transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -188.65979, -23.91176, -55.256798)
light_color = Color(1, 0.6509804, 0.09019608, 1)
light_energy = 7.209
shadow_enabled = true
omni_range = 191.9335
[node name="OmniLight3D2" type="OmniLight3D" parent="CaveModel" unique_id=262552402]
transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -193.10031, 1.3168697, 78.69277)
light_color = Color(1, 0.6509804, 0.09019608, 1)
light_energy = 7.209
shadow_enabled = true
omni_range = 191.9335
[node name="OmniLight3D3" type="OmniLight3D" parent="CaveModel" unique_id=882541987]
transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -429.2623, -7.898775, 57.456047)
light_color = Color(1, 0.6509804, 0.09019608, 1)
light_energy = 7.209
shadow_enabled = true
omni_range = 191.9335
[node name="OmniLight3D4" type="OmniLight3D" parent="CaveModel" unique_id=477937802]
transform = Transform3D(0.99998826, 0, 0.0048519964, 0, 1, 0, -0.0048519964, 0, 0.99998826, -331.67422, 8.754509, -34.622234)
light_color = Color(1, 0.6509804, 0.09019608, 1)
light_energy = 7.209
shadow_enabled = true
omni_range = 191.9335
[node name="Cristal" parent="." unique_id=1403604311 instance=ExtResource("4_663fy")]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3711878, -0.010157108, 1.5553656)
[node name="Exit" type="Area3D" parent="." unique_id=1854281092 node_paths=PackedStringArray("hover_animation_player")]
unique_name_in_owner = true
transform = Transform3D(4.371139e-08, -1, -8.742278e-08, -1, -4.371139e-08, 0, -3.821371e-15, 8.742278e-08, -1, 9.429194, 1.3403461, 1.9387968)
script = ExtResource("1_w6igl")
hover_animation_player = NodePath("HoverAnimationPlayer")
metadata/_custom_type_script = "uid://bj4d1x8n8ina"
[node name="Sprite3D" type="Sprite3D" parent="Exit" unique_id=880911016]
transform = Transform3D(-4.3711385e-08, -1, -4.3711385e-08, 0, -4.371139e-08, 0.99999994, -0.99999994, 4.371139e-08, 1.9106853e-15, 0.1646713, -0.017980576, 0)
pixel_size = 0.005
texture = ExtResource("6_rdddd")
[node name="HoverAnimationPlayer" type="AnimationPlayer" parent="Exit" unique_id=1644992802]
libraries/ = SubResource("AnimationLibrary_mmomx")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Exit" unique_id=1639583333]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14810944, -0.081207275, 0.35961914)
shape = SubResource("BoxShape3D_6rmeu")
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_663fy")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 8.010997, 1.1516566, 1.5996395)
[connection signal="clicked" from="Exit" to="." method="_on_exit_clicked"]

View File

@@ -0,0 +1,20 @@
extends Node3D
class_name Cave
func _ready():
if not Engine.is_editor_hint():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
setup_room(10)
func setup_room(door_id : int):
var rng := RandomNumberGenerator.new()
rng.seed = door_id
%Cristal.broken.connect(
func ():
GameInfo.game_data.current_region_data.completed_doors.append(door_id)
);
func _on_exit_clicked():
SceneManager.change_to_scene(RegionScene.new(GameInfo.game_data.current_region_data))

View File

@@ -0,0 +1 @@
uid://mn05jq4ekx62

View File

@@ -163,6 +163,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.239, 0, 4.02)
[node name="MutationDiscoveryScreen" parent="." unique_id=1948337200 instance=ExtResource("15_q4ojn")]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 1.1896521, 0.015508115, 3.982)
mutations_unlocked = 0
[node name="ShipTutorial" parent="." unique_id=868547496 node_paths=PackedStringArray("player") instance=ExtResource("13_u7lr8")]
unique_name_in_owner = true

View File

@@ -34,6 +34,7 @@ font_size = 8
[node name="MutationDiscoveryScreen" type="Node3D" unique_id=1881622243]
script = ExtResource("1_cfhhl")
all_mutations = Array[ExtResource("2_dv1aj")]([SubResource("Resource_dv1aj"), SubResource("Resource_3q2hk"), SubResource("Resource_psve5"), null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null])
mutations_unlocked = null
[node name="Sprite3D" type="Sprite3D" parent="." unique_id=1624784968]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.011004657, 0, 0)

View File

@@ -4,7 +4,7 @@ extends Node3D
const MUTATION_DISCOVERY_ELEMENT_SCENE = preload("res://stages/3d_scenes/cockpit_scene/cockpit_elements/mutation_discovered_screen/mutation_discovery_element.tscn")
@export var all_mutations : Array[PlantMutation]
@export var available_mutations : Array[PlantMutation]
@export var mutations_unlocked : int
@export var planted_mutation_ids : Array[String]
@export_tool_button("Update", "Callable") var update_action = update
@@ -13,7 +13,7 @@ const MUTATION_DISCOVERY_ELEMENT_SCENE = preload("res://stages/3d_scenes/cockpit
func _ready():
if not Engine.is_editor_hint():
all_mutations = GameInfo.game_data.progression_data.all_mutations
available_mutations = GameInfo.game_data.progression_data.available_mutations
mutations_unlocked = GameInfo.game_data.progression_data.mutations_unlocked
planted_mutation_ids = GameInfo.game_data.progression_data.planted_mutation_ids
update()
@@ -23,8 +23,8 @@ func update():
c.queue_free()
for i in range(len(all_mutations)):
var el : MutationDiscoveryElement = MUTATION_DISCOVERY_ELEMENT_SCENE.instantiate() as MutationDiscoveryElement
if i < len(available_mutations):
el.mutation = available_mutations[i]
if i < mutations_unlocked:
el.mutation = all_mutations[i]
if el.mutation.get_mutation_id() in planted_mutation_ids:
el.state = MutationDiscoveryElement.State.DISCOVERED
else :

View File

@@ -18,10 +18,8 @@ func update_plant_info():
%GrowingLabel.text = "%d" % plant_info.get_growing_time()
%GrowingStat.modulate = Color.WHITE if plant_info.get_growing_time() == plant_info.DEFAULT_GROWING_TIME else CHANGED_COLOR
%SeedLabel.text = "%d-%d" % [
plant_info.get_seed_number() - plant_info.get_seed_random_loose(),
plant_info.get_seed_number()
]
%SeedLabel.text = str(plant_info.get_seed_number())
%SeedStat.modulate = Color.WHITE if (
plant_info.get_seed_number() == plant_info.DEFAULT_SEED_NUMBER
and plant_info.get_seed_random_loose() == plant_info.DEFAULT_SEED_RANDOM_LOOSE

View File

@@ -206,4 +206,3 @@ func update_dashboard():
func _on_orchid_saver_clicked():
GameInfo.game_data.give_up()

Binary file not shown.

View File

@@ -0,0 +1,73 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://bqo4uknlbm8r1"
path="res://.godot/imported/end_base.blend-fe62ec0b123eb800e23803303dde3051.scn"
[deps]
source_file="res://stages/3d_scenes/end_base/assets/3d/end_base.blend"
dest_files=["res://.godot/imported/end_base.blend-fe62ec0b123eb800e23803303dde3051.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
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={
"materials": {
"Glass": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/glass_3d.tres",
"use_external/path": "uid://b5vlcdry8vtgi"
},
"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
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
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

View File

@@ -0,0 +1,991 @@
[gd_scene format=3 uid="uid://b6kl2hc85a0mh"]
[ext_resource type="Script" uid="uid://btc447j47jbx0" path="res://stages/3d_scenes/end_base/scripts/borea_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="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="4_fevne"]
[ext_resource type="PackedScene" uid="uid://bqo4uknlbm8r1" path="res://stages/3d_scenes/end_base/assets/3d/end_base.blend" id="4_s7tqr"]
[ext_resource type="PackedScene" uid="uid://c5a32n6rjjlnt" path="res://gui/credits/credits.tscn" id="6_c8vcx"]
[ext_resource type="Material" uid="uid://cr7bp4fhh1ipr" path="res://entities/player_3d/resources/materials/post_process_quad.tres" id="7_s7tqr"]
[sub_resource type="Animation" id="Animation_xd71i"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D7:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D2:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D10:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D14:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("%Player3D/../Lights/LightLevel3/OmniLight3D3:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_fevne"]
resource_name = "blink"
length = 3.0
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D7:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.46666667, 1.37, 1.5866667, 2.2, 2.48, 2.77),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [true, false, true, false, true, false, true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("%Player3D/../Lights/LightLevel0/OmniLight3D2:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.38, 1.2833333, 1.5, 2.2, 2.48, 2.77),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [true, false, true, false, true, true, true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D10:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [true, false, true, false, true, false, true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("%Player3D/../Lights/LightLevel1/OmniLight3D14:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [true, false, true, false, true, true, true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("%Player3D/../Lights/LightLevel3/OmniLight3D3:visible")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0, 0.63, 1.5333333, 1.75, 2.2, 2.48, 2.77),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1),
"update": 1,
"values": [true, false, true, false, true, false, true]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_c8vcx"]
_data = {
&"RESET": SubResource("Animation_xd71i"),
&"blink": SubResource("Animation_fevne")
}
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2ei4e"]
shader = ExtResource("1_xd71i")
shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1)
shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1)
shader_parameter/star_hue_offset = 0.6
shader_parameter/star_intensity = 0.08
shader_parameter/layer_scale = 20.0
shader_parameter/layer_scale_step = 10.0
shader_parameter/layers_count = 3
[sub_resource type="Sky" id="Sky_xd71i"]
sky_material = SubResource("ShaderMaterial_2ei4e")
[sub_resource type="Environment" id="Environment_fevne"]
background_mode = 2
sky = SubResource("Sky_xd71i")
sky_custom_fov = 61.7
ambient_light_source = 3
ambient_light_color = Color(1, 1, 1, 1)
ambient_light_sky_contribution = 0.85
ambient_light_energy = 0.52
reflected_light_source = 2
tonemap_mode = 2
tonemap_exposure = 0.7
tonemap_white = 1.84
glow_enabled = true
glow_intensity = 0.22
glow_bloom = 0.22
glow_hdr_threshold = 0.79
glow_hdr_scale = 0.0
glow_hdr_luminance_cap = 5.63
fog_enabled = true
fog_mode = 1
fog_light_color = Color(0.13725491, 0.39215687, 0.6666667, 1)
fog_density = 0.1831
fog_aerial_perspective = 0.113
fog_sky_affect = 0.0
volumetric_fog_sky_affect = 0.0
adjustment_enabled = true
adjustment_saturation = 1.3
[sub_resource type="BoxShape3D" id="BoxShape3D_c8vcx"]
size = Vector3(0.001, 7.6933594, 7.697876)
[sub_resource type="Animation" id="Animation_s7tqr"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("TrailerCamera:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 60.366375, 0)]
}
[sub_resource type="Animation" id="Animation_2ei4e"]
resource_name = "trailer"
length = 10.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("TrailerCamera:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 9.933333),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [Vector3(0, 60.366375, 0), Vector3(0, 10, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_hlox4"]
_data = {
&"RESET": SubResource("Animation_s7tqr"),
&"trailer": SubResource("Animation_2ei4e")
}
[sub_resource type="QuadMesh" id="QuadMesh_2ei4e"]
size = Vector2(2, 2)
[node name="BoreaBase" type="Node3D" unique_id=442220603]
script = ExtResource("1_fevne")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1539431276]
transform = Transform3D(1, 0, 0, 0, 0.25881907, 0.9659258, 0, -0.9659258, 0.25881907, 30.708645, 59.967155, 32.405155)
light_color = Color(0.6660227, 0.6797195, 0.9820071, 1)
light_energy = 0.2
shadow_enabled = true
[node name="Lights" type="Node3D" parent="." unique_id=1071261896]
[node name="LightLevel0" type="Node3D" parent="Lights" unique_id=1673172585]
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=331040735]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=781678275]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1029811291]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=706813333]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=522933437]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1811482313]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=617635003]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=918304264]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=1597573435]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=116640999]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel0" unique_id=801358869]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="LightLevel1" type="Node3D" parent="Lights" unique_id=1922457496]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.234108, 0)
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=55476383]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=92670411]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=636878856]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1423170075]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=58992978]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=2076353163]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1322504637]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=69628955]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=861056154]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=918332677]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=271744912]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1456495033]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=1464495731]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel1" unique_id=512747242]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="LightLevel2" type="Node3D" parent="Lights" unique_id=1658395921]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 16.305164, 0)
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1782738053]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1044065491]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1280223269]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=443076410]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=795711828]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=39883193]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1022700169]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=552912438]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1298855751]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=111834629]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1375255226]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=18165508]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1731050516]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1704489957]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel2" unique_id=1994672189]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="LightLevel3" type="Node3D" parent="Lights" unique_id=593657748]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 24.213167, 0)
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1849026334]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=691708052]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1166186573]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=2008819922]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=588150842]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1080987600]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=580549053]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=639850990]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=559970503]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1743215246]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=814917578]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1601525784]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=730066980]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1530299322]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=1068729638]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel3" unique_id=958960524]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="LightLevel4" type="Node3D" parent="Lights" unique_id=142117256]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 31.95812, 0)
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1721481718]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.5544157, -2.1126924, 27.90219)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=631610076]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.250671, -2.1126924, 23.147612)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1226751360]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.520561, -2.1126924, -9.563883)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D5" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1200952030]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.694098, -2.1126924, -20.977478)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D6" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1061376340]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.2640495, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D7" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1457730086]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.133095, -2.1126924, -28.070211)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D8" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1189108084]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.688046, -2.1126924, -23.17867)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D9" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1446282714]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.514515, -2.1126924, -14.292371)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D10" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=572630565]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.797234, -2.1126924, 8.860925)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D11" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=452891791]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.40009, -2.1126924, 21.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D12" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1670406469]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.4000893, -2.1126924, 27.334354)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1477089662]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.523638, -2.1126924, 14.304096)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=1821591613]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=277413158]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=2012725183]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel4" unique_id=59140504]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="LightLevel5" type="Node3D" parent="Lights" unique_id=525951054]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 40.090714, 0)
[node name="OmniLight3D13" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=2058425414]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.556553, -5.066031, 2.7274294)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D14" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1964162867]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.475027, -5.066031, -2.8978524)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D15" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1968781717]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.343237, -5.066031, -3.1424296)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="OmniLight3D16" type="OmniLight3D" parent="Lights/LightLevel5" unique_id=1720654262]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.506277, -5.066031, 2.9720063)
light_color = Color(0.810676, 0.621579, 0.6067489, 1)
light_energy = 1.5
light_size = 0.2
shadow_enabled = true
omni_range = 11.280827
[node name="LightColumnLeft" type="Node3D" parent="Lights" unique_id=366580628]
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=33457178]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.076054, 47.19723, 0)
light_color = Color(0.99998575, 0.29117814, 0.45017415, 1)
light_energy = 2.285
shadow_enabled = true
omni_range = 23.647278
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=1523001666]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 29.529121, 0)
light_color = Color(0.99998575, 0.29117814, 0.45017415, 1)
light_energy = 2.285
shadow_enabled = true
omni_range = 55.975483
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightColumnLeft" unique_id=1636195463]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 10.504702, 0)
light_color = Color(0.99998575, 0.29117814, 0.45017415, 1)
light_energy = 2.285
shadow_enabled = true
omni_range = 55.975483
[node name="LightColumnRight" type="Node3D" parent="Lights" unique_id=736248586]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, 0)
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=291131726]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.076054, 47.19723, 0)
light_color = Color(0.99998575, 0.29117814, 0.45017415, 1)
light_energy = 2.285
shadow_enabled = true
omni_range = 23.647278
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=1200961344]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 29.529121, 0)
light_color = Color(0.99998575, 0.29117814, 0.45017415, 1)
light_energy = 2.285
shadow_enabled = true
omni_range = 55.975483
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/LightColumnRight" unique_id=652563138]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.213203, 10.504702, 0)
light_color = Color(0.99998575, 0.29117814, 0.45017415, 1)
light_energy = 2.285
shadow_enabled = true
omni_range = 55.975483
[node name="ServerRoom" type="Node3D" parent="Lights" unique_id=827961816]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.9412785, -8.026912, -119.36721)
[node name="OmniLight3D" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=1844581848]
light_color = Color(0.9334627, 0.52057, 0.67796034, 1)
shadow_enabled = true
omni_range = 26.349659
[node name="OmniLight3D2" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=2066101397]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 25.241997)
light_color = Color(0.9334627, 0.52057, 0.67796034, 1)
shadow_enabled = true
omni_range = 26.349659
[node name="OmniLight3D3" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=549929558]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 42.92135)
light_color = Color(0.9334627, 0.52057, 0.67796034, 1)
shadow_enabled = true
omni_range = 26.349659
[node name="OmniLight3D4" type="OmniLight3D" parent="Lights/ServerRoom" unique_id=1196915107]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 61.630135)
light_color = Color(0.9334627, 0.52057, 0.67796034, 1)
shadow_enabled = true
omni_range = 26.349659
[node name="SpotLight3D" type="SpotLight3D" parent="Lights/ServerRoom" unique_id=1984749666]
transform = Transform3D(1, 0, 0, 0, -0.037829712, 0.9992842, 0, -0.9992842, -0.037829712, 0, 47.72103, -28.07676)
light_color = Color(0.6902202, 0.87386894, 0.8121308, 1)
light_energy = 9.0
shadow_enabled = true
spot_range = 95.488
spot_attenuation = 0.4
spot_angle = 32.1892
[node name="AnimationPlayer" type="AnimationPlayer" parent="Lights" unique_id=1792239301]
root_node = NodePath("../../Player3D")
libraries/ = SubResource("AnimationLibrary_c8vcx")
autoplay = &"blink"
[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1121246225]
environment = SubResource("Environment_fevne")
[node name="AmbianceChangeDetector" type="Area3D" parent="." unique_id=1401161313]
transform = Transform3D(0.25881904, 0, 0.96592593, 0, 1, 0, -0.96592593, 0, 0.25881904, 2.7012572, -5.600957, -42.815655)
[node name="CollisionShape3D" type="CollisionShape3D" parent="AmbianceChangeDetector" unique_id=1969356725]
transform = Transform3D(0.9999994, 0, 0, 0, 1, 0, 0, 0, 0.9999994, -9.359516, 0.82910156, 2.9935746)
shape = SubResource("BoxShape3D_c8vcx")
[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.244379, 41.40791, 8.823577)
speed = 5.0
[node name="Phone" parent="." unique_id=429299908 instance=ExtResource("4_fevne")]
unique_name_in_owner = true
transform = Transform3D(-0.93482566, 0, 0.35510686, 0, 1, 0, -0.35510686, 0, -0.93482566, 3.7943206, -7.5537004, -130.16013)
[node name="borea_base" parent="." unique_id=1161090043 instance=ExtResource("4_s7tqr")]
[node name="Credits" parent="." unique_id=180964898 instance=ExtResource("6_c8vcx")]
unique_name_in_owner = true
[node name="TrailerCamera" type="Camera3D" parent="." unique_id=649852434]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, -4.3711392e-08, 1, 0, -1, -4.3711392e-08, 0, 60.366375, 0)
near = 0.003
[node name="AnimationPlayer" type="AnimationPlayer" parent="TrailerCamera" unique_id=1238675722]
root_node = NodePath("../..")
libraries/ = SubResource("AnimationLibrary_hlox4")
autoplay = &"trailer"
[node name="MeshInstance3D" type="MeshInstance3D" parent="TrailerCamera" unique_id=1018268636]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.263265e-08, 0, -0.7177747)
mesh = SubResource("QuadMesh_2ei4e")
surface_material_override/0 = ExtResource("7_s7tqr")
[connection signal="body_entered" from="AmbianceChangeDetector" to="." method="_on_ambiance_change_detector_body_entered"]

View File

@@ -0,0 +1,22 @@
extends Node3D
const OUTRO_TIMELINE_PATH = "res://dialogs/timelines/tutorial/demeter_outro.dtl"
# Called when the node enters the scene tree for the first time.
func _ready():
%Credits.hide()
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
await %Phone.clicked
Dialogic.start(OUTRO_TIMELINE_PATH)
await Dialogic.timeline_ended
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
%Credits.show()
AudioManager.play_music("Demo_end", false, 5.0)
AudioManager.stop_all_ambiances()
func _on_ambiance_change_detector_body_entered(body: Node3D):
if body is Player3D:
AudioManager.stop_all_ambiances()
AudioManager.play_music("Demo_end", false, 5.0)

View File

@@ -0,0 +1 @@
uid://btc447j47jbx0

View File

@@ -15,6 +15,8 @@ const DECONTAMINATION_NOISE_FREQUENCY := 0.008
const CHUNK_RANDOM_PADDING := 1
signal generated
@export var region_data : RegionData
@export var chunk_coord : Vector2i
@@ -95,6 +97,7 @@ func generate():
add_child.call_deferred(ground_layer)
add_child.call_deferred(decontamination_layer)
generated.emit()
is_generated = true
func calculate_all_tiles() -> Array[Vector2i]:

View File

@@ -0,0 +1,25 @@
extends RegionModifier
class_name CaveModifier
func get_modifier_name() -> String:
return tr("CRISTAL_CAVE")
func get_description() -> String:
return tr("CRISTAL_CAVE_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/cristal.svg")
func get_card_section_color() -> Color:
return Color("25c147")
func region_ready(region : Region) -> void:
var new_cave_door = generate_door(
tr("CRISTAL_CAVE"),
tr("CRISTAL_CAVE_DOOR_DESC_TEXT")
)
new_cave_door.to_scene = CaveScene.new(new_cave_door.door_id)
new_cave_door.available = region.data.completed_doors.find(new_cave_door.door_id) == -1
region.add_entity(new_cave_door)
region.random_move_object(new_cave_door,Region.DOORS_RANDOM_MOVEMENT)

View File

@@ -0,0 +1 @@
uid://d3g06x6sagcc5

View File

@@ -13,8 +13,8 @@ func get_icon() -> Texture:
func get_card_section_color() -> Color:
return Color("8b2dffff")
func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int:
return plant_seed_random_loose + 1
# func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int:
# return plant_seed_random_loose + 1
func modify_plant_seed_number(plant_seed_number : int) -> int:
return plant_seed_number - 1

View File

@@ -0,0 +1,17 @@
extends RegionModifier
class_name MagneticModifier
func get_modifier_name() -> String:
return tr("MAGNETIC")
func get_description() -> String:
return tr("MAGNETIC_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/magnet.svg")
func modify_objective(objective : int) -> int:
return roundi(float(objective) / 2)
func modify_charge(charge : int) -> int:
return roundi(float(charge) / 2)

View File

@@ -0,0 +1 @@
uid://3mu4qmgpyg6s

View File

@@ -12,9 +12,15 @@ func get_description() -> String:
func get_icon() -> Texture:
return preload("res://common/icons/help-hexagon.svg")
func modify_seed_rarity_pool(_seed_rarity_pool : Array[int]) -> Array[int]:
return [-1]
func modify_charge(charge : int) -> int:
return charge+10
func modify_mutation_probability(_plant_mutation_probability) -> float:
return 1.
func get_card_section_color() -> Color:
return Color("25c147")

View File

@@ -39,23 +39,19 @@ func generate():
generate_windy()
func generate_calm() -> void:
print("generate_calm")
cloud_value = rng.randf_range(0.1,0.4)
wind_force = rng.randf_range(0.,0.2)
func generate_rainy() -> void:
print("generate_rainy")
rain_value = rng.randf_range(0.3,1.)
cloud_value = rng.randf_range(0.5,0.9)
ambiance_name = "ExteriorRaining"
wind_force = rng.randf_range(0.,0.5)
func generate_foggy() -> void:
print("generate_foggy")
fog_value = rng.randf_range(0.5,1.)
ambiance_name = "ExteriorFoggy"
func generate_windy() -> void:
print("generate_windy")
cloud_value = rng.randf_range(0.2,0.5)
wind_force = rng.randf_range(0.8,1.)

View File

@@ -169,7 +169,7 @@ func random_move_object(
rng.randf_range(-random_movement,random_movement)
) + offset
dig_hole(object.position, 5)
dig_hole(object.global_position, 100)
func is_chunk_generated(coord : Vector2i):
return generated_chunks.find_custom(
@@ -259,17 +259,11 @@ func dig_rocks(tiles_coords : Array[Vector2i], save_tiles_diff := true, loot :=
chunk.rock_layer.remove_rocks([local_coord])
func dig_hole(game_pos: Vector2, size : int):
var hole_tiles : Array[Vector2i] = []
var tile_position := Vector2i(
roundi(game_pos.x/float(Region.TILE_SIZE)),
roundi(game_pos.y/float(Region.TILE_SIZE))
var hole_tiles : Array[Vector2i] = Math.get_tiles_in_circle(
game_pos,
size
)
for x in range(-size, size):
for y in range(-size, size):
var coord = Vector2i(x,y)
if coord.distance_to(Vector2.ZERO) < size:
hole_tiles.append(coord + tile_position)
dig_rocks(hole_tiles,false,false)
dig_rocks(hole_tiles,true,false)
func loot_talion(coord : Vector2i):
var new_seed = Seed.generate_random(data.seed_rarity_pool.pick_random())

View File

@@ -11,8 +11,6 @@ signal pass_day_started(region_data : RegionData)
signal pass_day_proceeded(region_data : RegionData)
signal pass_day_ended(region_data : RegionData)
const DEFAULT_START_CHARGE := 10
const DEFAULT_OBJECTIVE := 10
const MAX_RANDOM_SPAWN_DISTANCE = 3000
const START_ROCK_HOLE_RADIUS = 5
const PLAYER_ROCK_HOLE_RADIUS = 5

View File

@@ -6,10 +6,11 @@ const DEFAULT_DECONTAMINATION_THRESHOLD = 0.4
const DEFAULT_CRISTAL_THRESHOLD = 0.1
const DEFAULT_CHARGE = 8
const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3
const DEFAULT_SEED_RARITY_POOL: Array[int] = [0,0,0,0,0,0,0,1,1,1]
const DEFAULT_SEED_RARITY_POOL: Array[int] = [-1,-1,-1,-1,0,0,0,0,1,1]
@export var region_name : String
@export var objective : int
@export var charge : int
@export var region_seed : int
@export var modifiers : Array[RegionModifier]
@@ -45,15 +46,13 @@ func is_objective_disabled() -> bool:
var d = false
for m in modifiers:
print(m.modifier_name)
print(m.disable_objective())
if m.disable_objective():
d = true
return d
func get_charge() -> int:
var c = DEFAULT_CHARGE
var c = charge
for m in modifiers:
c = m.modify_charge(c)

View File

@@ -22,8 +22,8 @@ render_priority = 0
shader = ExtResource("1_2voo7")
shader_parameter/specular = 0.0
shader_parameter/roughness = 0.6
shader_parameter/radius = 8.0
shader_parameter/height = 3.81
shader_parameter/radius = 150.0
shader_parameter/height = 100.0
shader_parameter/gradient = ExtResource("2_t1vtm")
shader_parameter/random_fertility_texture = SubResource("NoiseTexture2D_8o8xi")
shader_parameter/fertility_gradient = SubResource("GradientTexture1D_neuam")

View File

@@ -0,0 +1,12 @@
keys,en,fr
Text/e5/text,I hope everything is going well for you so far. I'm calling because the next regions you're heading to contain unique rock formations: the [b]Caverns of Talion[/b].,"J'espère que tout se passe bien pour toi pour l'instant. Je t'appelle, car les prochaines régions vers lesquelles tu te diriges contiennent des formations rocheuses uniques : des [b]Cavernes de Talion[/b]."
Choice/e6/text,Talion hadn't disappeared?,"Le talion n'avait pas disparu ?"
Choice/e6/disabled_text,,
Text/e7/text,"Precisely, I'd like you to check for me if its reappearance on the surface also means its reappearance in the caverns.","Justement, j'aimerais que tu vérifies pour moi si sa réapparition à la surface signifie aussi sa réapparition dans les cavernes."
Choice/e8/text,How do you know?,"Comment tu le sait ?"
Choice/e8/disabled_text,,
Text/e9/text,"Ces cavernes étaient bien connu des humains. Certains y allaient pour étudier le Talion, d'autres pour explorer la grotte. Ces explorations étaient très risquées, mais apparement certains humains aimaient beaucoup risquer leur vie...","Ces cavernes étaient bien connues des humains. Certains y allaient pour étudier le Talion, d'autres pour explorer la grotte. Ces explorations étaient très risquées, mais apparemment certains humains aimaient beaucoup risquer leur vie..."
Choice/ea/text,What does that change for me?,"Qu'est-ce que ça change pour moi ?"
Choice/ea/disabled_text,,
Text/eb/text,"The crystals in these caverns are special; they don't produce life, but they release a powerful mutagenic energy into the air. This will surely help you grow more powerfull plants for the rest of your journey.","Les cristaux de ces grottes sont spéciaux, ils ne produisent pas de vie, mais libèrent dans l'air un puissant pouvoir mutagène. Celui-ci pourra sûrement t'aider à avoir des plantes plus puissantes pour le reste de ton voyage."
Text/ec/text,Use your detector to find the entrance to the cave; humans had installed an elevator there.,"Utilise ton détecteur pour trouver l'entrée de la grotte, les humains y avaient aménagé un ascenseur."
1 keys en fr
2 Text/e5/text I hope everything is going well for you so far. I'm calling because the next regions you're heading to contain unique rock formations: the [b]Caverns of Talion[/b]. J'espère que tout se passe bien pour toi pour l'instant. Je t'appelle, car les prochaines régions vers lesquelles tu te diriges contiennent des formations rocheuses uniques : des [b]Cavernes de Talion[/b].
3 Choice/e6/text Talion hadn't disappeared? Le talion n'avait pas disparu ?
4 Choice/e6/disabled_text
5 Text/e7/text Precisely, I'd like you to check for me if its reappearance on the surface also means its reappearance in the caverns. Justement, j'aimerais que tu vérifies pour moi si sa réapparition à la surface signifie aussi sa réapparition dans les cavernes.
6 Choice/e8/text How do you know? Comment tu le sait ?
7 Choice/e8/disabled_text
8 Text/e9/text Ces cavernes étaient bien connu des humains. Certains y allaient pour étudier le Talion, d'autres pour explorer la grotte. Ces explorations étaient très risquées, mais apparement certains humains aimaient beaucoup risquer leur vie... Ces cavernes étaient bien connues des humains. Certains y allaient pour étudier le Talion, d'autres pour explorer la grotte. Ces explorations étaient très risquées, mais apparemment certains humains aimaient beaucoup risquer leur vie...
9 Choice/ea/text What does that change for me? Qu'est-ce que ça change pour moi ?
10 Choice/ea/disabled_text
11 Text/eb/text The crystals in these caverns are special; they don't produce life, but they release a powerful mutagenic energy into the air. This will surely help you grow more powerfull plants for the rest of your journey. Les cristaux de ces grottes sont spéciaux, ils ne produisent pas de vie, mais libèrent dans l'air un puissant pouvoir mutagène. Celui-ci pourra sûrement t'aider à avoir des plantes plus puissantes pour le reste de ton voyage.
12 Text/ec/text Use your detector to find the entrance to the cave; humans had installed an elevator there. Utilise ton détecteur pour trouver l'entrée de la grotte, les humains y avaient aménagé un ascenseur.

View File

@@ -0,0 +1,19 @@
[remap]
importer="csv_translation"
type="Translation"
uid="uid://dif3sphy3ar03"
[deps]
files=["res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation"]
source_file="res://translation/dialogs/dialogic_cave_translation.csv"
dest_files=["res://translation/dialogs/dialogic_cave_translation.en.translation", "res://translation/dialogs/dialogic_cave_translation.fr.translation"]
[params]
compress=1
delimiter=0
unescape_keys=false
unescape_translations=true

View File

@@ -124,11 +124,15 @@ DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Pickaxe[/b],C
PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b]
GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b] (recharging will pass days),Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b] (se recharger fera passer les jours)
HARVEST_A_MATURE_PLANT,Harvest a [b]Mature Plant[/b] using your [b]Fork[/b],Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Fourche[/b]
PLANT_NAME_TEXT,"[b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile and mature","[b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile et mature"
TAKE_HARVESTED_SEEDS,Take the harvested seeds,Prenez les graines récoltées
PLANT_NAME_TEXT,"[b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile or mature","[b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile ou mature"
PLANT_STATS_TEXT,"[b]Plant stats[/b] Here you can see your plant's age, the day of maturation, the lifetime, and the seed number that the plant can produce","[b]Statistiques[/b] Ici, vous pouvez voir l'âge de votre plante, le jour de maturation, le temps de vie et le nombre de graine que la plante donne"
PLANT_MUTATION_TEXT,"[b]Mutations[/b] Each species has mutations that alter the plant's behavior. These mutations are transmissible to the plant's seeds, where they can change or evolve superior levels","[b]Mutations[/b] Chaque espèce possède des mutations qui modifient le comportement de la plante. Ces mutations se transmettent aux graines, et peuvent changer ou évoluer aux niveaux supérieurs"
PLANTS_INFO,"Plants info","Information des plantes"
OBTAIN_INFORMATION_ON_PLANTS_WHILE_HOVERING_PLANTS_BASE,"Obtain information on plants while hovering over the plant base","Obtenez des informations sur les plantes en survolant leur base"
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"
MUTATIONS,Mutations,Mutations
MUTATION,Mutation,Mutation
SEEDS_HAVE_A_CHANCE_TO_GAIN_MUTATIONS,"Seeds have a chance to gain mutations","Les graines ont une chance de gagner des mutations"
PLANT_SCORE_TEXT,"[b]Score[/b] By default, each plant get 1 score when mature","[b]Score[/b] Par défaut, chaque plante gagne 1 de score à la maturation"
%d_PLANT_POINT,%d Plant Point,%d Point de plante
%d_PLANT_POINTS,%d Plant Points,%d Points de plante
@@ -272,11 +276,14 @@ SANDY_MODIFIER_DESC_TEXT,Reduce plants influence radius,Réduit le rayon d'influ
RADIOACTIVE,Radioactive,Radioactif
RADIOACTIVE_MODIFIER_DESC_TEXT,Reduce the plant's base score by 1,Réduit le score de base des plantes de 1
CONTAMINATED,Contaminated,Contaminée
CONTAMINATED_MODIFIER_DESC_TEXT,Decrease all plants seeds production and increase the possible seed loss,Diminue la production de graine et augmente la perte possible de graine pour toutes les plantes
CONTAMINATED_MODIFIER_DESC_TEXT,Decrease all plants seeds production by one,Diminue la production de graine de 1
MAGNETIC,Magnetic,Magnétique
MAGNETIC_MODIFIER_DESC_TEXT,Divide the number of [b]Recharge[/b] and the [b]Plant Points[/b] needed by 2, Divise le nombre de [b]Recharge[/b] et le nombre de [b]Points de Plantes[/b] nécessaire par 2
STORM,Storm,Tempête
STORM_MODIFIER_DESC_TEXT,Increases a lot the [b]Plant Points[/b] needed,Augmente beaucoup le nombre de [b]Points de Plantes[/b] nécessaires
VENDING_MACHINES,Vending Machines,Distributeurs
VENDING_MACHINES_MODIFIER_DESC_TEXT,A room with old vending machine is in the area,Une pièce avec de vieux distributeurs se trouve dans la zone
CRISTAL_CAVE_MODIFIER_DESC_TEXT,An cave full of Talion can be found in the region,Une caverne remplie de Talion peut être trouvée dans cette région
RESONNANCE,Resonnance,Résonnance
RESONNANCE_MODIFIER_DESC_TEXT,Mutation level from [b]Talion Veins[/b] seeds is increased,Le niveau de mutation des graines issues de [b]Veine de Talion[/b] est augmenté
INSTABLE,Instable,Instable
@@ -287,6 +294,7 @@ ORBIT,Orbit,Orbite
RECHARGE_NUMBER,Recharge Number,Nombre de recharge
ORCHID_ENERGY,Orchid's energy,Énergie d'Orchid
NEW_TOOL,New tool,Nouvel Outil
NEW_MUTATION,New Mutation,Nouvelle Mutation
PILE,Pile,Pile,
PILE_DESC_TEXT,Give an extra energy cell,Donne une cellule d'énergie supplémentaire
SEED_CASE,Seed Case,Emplacement de graine
@@ -313,4 +321,6 @@ INSPECT,Inspect,Inspecter
VENDING_MACHINE,Vending Machine,Distributeur
VENDING_MACHINE_ROOM,Vending Machine Room,Local de Distributeur
VENDING_MACHINES_DOOR_DESC_TEXT,"An ancient room filled with old vending machines","Une pièce ancienne remplie de vieux distributeurs"
CRISTAL_CAVE,Crystal Cave,Caverne aux Cristaux
CRISTAL_CAVE_DOOR_DESC_TEXT,Leads to a deep cave with Talion crystals inside,Mène à une caverne profonde avec des cristaux de Talion à l'intérieur
THANK_YOU_FOR_YOUR_PURCHASE,Thank you for your purchase,Merci pour votre achat
1 keys en fr
124 PLANT_SEED_IN_FERTILE_ZONE Plant a [b]Seed[/b] in the [b]Fertile Zone[/b] Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b]
125 GAIN_FIRST_PLANT_POINT Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b] (recharging will pass days) Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b] (se recharger fera passer les jours)
126 HARVEST_A_MATURE_PLANT Harvest a [b]Mature Plant[/b] using your [b]Fork[/b] Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Fourche[/b]
127 PLANT_NAME_TEXT TAKE_HARVESTED_SEEDS [b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile and mature Take the harvested seeds [b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile et mature Prenez les graines récoltées
128 PLANT_NAME_TEXT [b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile or mature [b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile ou mature
129 PLANT_STATS_TEXT [b]Plant stats[/b] Here you can see your plant's age, the day of maturation, the lifetime, and the seed number that the plant can produce [b]Statistiques[/b] Ici, vous pouvez voir l'âge de votre plante, le jour de maturation, le temps de vie et le nombre de graine que la plante donne
PLANT_MUTATION_TEXT [b]Mutations[/b] Each species has mutations that alter the plant's behavior. These mutations are transmissible to the plant's seeds, where they can change or evolve superior levels [b]Mutations[/b] Chaque espèce possède des mutations qui modifient le comportement de la plante. Ces mutations se transmettent aux graines, et peuvent changer ou évoluer aux niveaux supérieurs
130 PLANTS_INFO Plants info Information des plantes
131 OBTAIN_INFORMATION_ON_PLANTS_WHILE_HOVERING_PLANTS_BASE Obtain information on plants while hovering over the plant base Obtenez des informations sur les plantes en survolant leur base
132 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
133 MUTATIONS Mutations Mutations
134 MUTATION Mutation Mutation
135 SEEDS_HAVE_A_CHANCE_TO_GAIN_MUTATIONS Seeds have a chance to gain mutations Les graines ont une chance de gagner des mutations
136 PLANT_SCORE_TEXT [b]Score[/b] By default, each plant get 1 score when mature [b]Score[/b] Par défaut, chaque plante gagne 1 de score à la maturation
137 %d_PLANT_POINT %d Plant Point %d Point de plante
138 %d_PLANT_POINTS %d Plant Points %d Points de plante
276 RADIOACTIVE Radioactive Radioactif
277 RADIOACTIVE_MODIFIER_DESC_TEXT Reduce the plant's base score by 1 Réduit le score de base des plantes de 1
278 CONTAMINATED Contaminated Contaminée
279 CONTAMINATED_MODIFIER_DESC_TEXT Decrease all plants seeds production and increase the possible seed loss Decrease all plants seeds production by one Diminue la production de graine et augmente la perte possible de graine pour toutes les plantes Diminue la production de graine de 1
280 MAGNETIC Magnetic Magnétique
281 MAGNETIC_MODIFIER_DESC_TEXT Divide the number of [b]Recharge[/b] and the [b]Plant Points[/b] needed by 2 Divise le nombre de [b]Recharge[/b] et le nombre de [b]Points de Plantes[/b] nécessaire par 2
282 STORM Storm Tempête
283 STORM_MODIFIER_DESC_TEXT Increases a lot the [b]Plant Points[/b] needed Augmente beaucoup le nombre de [b]Points de Plantes[/b] nécessaires
284 VENDING_MACHINES Vending Machines Distributeurs
285 VENDING_MACHINES_MODIFIER_DESC_TEXT A room with old vending machine is in the area Une pièce avec de vieux distributeurs se trouve dans la zone
286 CRISTAL_CAVE_MODIFIER_DESC_TEXT An cave full of Talion can be found in the region Une caverne remplie de Talion peut être trouvée dans cette région
287 RESONNANCE Resonnance Résonnance
288 RESONNANCE_MODIFIER_DESC_TEXT Mutation level from [b]Talion Veins[/b] seeds is increased Le niveau de mutation des graines issues de [b]Veine de Talion[/b] est augmenté
289 INSTABLE Instable Instable
294 RECHARGE_NUMBER Recharge Number Nombre de recharge
295 ORCHID_ENERGY Orchid's energy Énergie d'Orchid
296 NEW_TOOL New tool Nouvel Outil
297 NEW_MUTATION New Mutation Nouvelle Mutation
298 PILE Pile Pile
299 PILE_DESC_TEXT Give an extra energy cell Donne une cellule d'énergie supplémentaire
300 SEED_CASE Seed Case Emplacement de graine
321 VENDING_MACHINE Vending Machine Distributeur
322 VENDING_MACHINE_ROOM Vending Machine Room Local de Distributeur
323 VENDING_MACHINES_DOOR_DESC_TEXT An ancient room filled with old vending machines Une pièce ancienne remplie de vieux distributeurs
324 CRISTAL_CAVE Crystal Cave Caverne aux Cristaux
325 CRISTAL_CAVE_DOOR_DESC_TEXT Leads to a deep cave with Talion crystals inside Mène à une caverne profonde avec des cristaux de Talion à l'intérieur
326 THANK_YOU_FOR_YOUR_PURCHASE Thank you for your purchase Merci pour votre achat