Encore du dev pour la béta 1

* Suppression de la mutation éphémère
* Ajout des modificateur de régions normaux Sableux et Toxique
* Ajout de modificateurs challenge (Rocheux, Radioactif et Contaminé)
* Ajout du modificateur de région bénéfique Résonnance
* Ajout d'un distributeur toutes les 3 régions
* Ajout des régions challenge
* Bouclage sur les couleurs des mutations après le niveau 4
* Ajout de deux nouveaux panneaux de tutoriel, un sur les informations de plantes et l'autre sur le vaisseau
This commit is contained in:
2026-04-17 17:32:58 +02:00
parent 563e16eabf
commit 7ae362a3a5
78 changed files with 1674 additions and 262 deletions

View File

@@ -25,6 +25,7 @@ signal current_region_data_updated(p : RegionData)
@export var ship_in_space = false
@export var tutorial_done = false
@export var ship_tutorial_done = false
@export var incubator_used = []
@@ -34,11 +35,8 @@ signal current_region_data_updated(p : RegionData)
func start_run() -> RunData:
player_data.clear_inventory()
player_data.update_with_artefacts([])
current_run = RunData.new()
current_run.artefacts_changed.connect(
func(artefacts : Array[Artefact]):
player_data._on_artefacts_updated(artefacts)
)
current_run.current_run_point_changed.connect(
func(rp : RunPoint):
start_region(rp.region_parameter)

View File

@@ -3,7 +3,6 @@ class_name ProgressionData
@export var available_mutations: Array[PlantMutation] = [
AncientMutation.new(),
EphemeralMutation.new(),
FertileMutation.new(),
GenerousMutation.new(),
HurriedMutation.new(),

View File

@@ -5,6 +5,8 @@ enum State {STARTED, IN_PROGRESS, FINISHED}
const RUN_POINTS_NEXT_NUMBER : int = 2
const RUN_POINT_MAX_LEVEL = 5 # TODO
const VENDING_MACHINE_OCCURENCE = 3
const CHALLENGE_CHANCE = 0.25
signal current_run_point_changed(rp : RunPoint)
signal artefacts_changed(artefact : Array[Artefact])
@@ -51,10 +53,23 @@ func generate_next_run_points(level = 0) -> Array[RunPoint]:
func generate_next_run_point(level = 0) -> RunPoint:
var region_parameter = RegionParameter.new()
var is_challenge = randf() < CHALLENGE_CHANCE
if is_challenge:
region_parameter.modifiers = [
generate_challenge_modifiers().pick_random(),
generate_benefic_modifiers().pick_random()
] as Array[RegionModifier]
else:
region_parameter.modifiers = [
generate_normal_modifiers().pick_random()
] as Array[RegionModifier]
if level%VENDING_MACHINE_OCCURENCE == 0:
region_parameter.modifiers.append(VendingMachineModifier.new())
region_parameter.level = level
region_parameter.modifiers = get_bad_region_modifiers()
region_parameter.modifiers.append_array(get_good_region_modifiers())
return RunPoint.new(
level,
region_parameter
@@ -85,26 +100,34 @@ func choose_next_run_point(run_point : RunPoint) -> RunPoint:
last_used_modifier_name = current_run_point.region_parameter.modifiers[0].get_modifier_name()
return current_run_point
func get_good_region_modifiers() -> Array[RegionModifier]:
return [VendingMachineModifier.new(),VendingMachineModifier.new()]
#endregion
func get_bad_region_modifiers() -> Array[RegionModifier]:
var possible_modifiers : Array[RegionModifier] = [
#region ------------------ Modifiers ------------------
func generate_normal_modifiers() -> Array[RegionModifier]:
return [
AridModifier.new(),
HumidModifier.new(),
PoorModifier.new(),
HarshModifier.new()
HarshModifier.new(),
ToxicModifier.new(),
SandyModifier.new(),
]
possible_modifiers = possible_modifiers.filter(
func (m): return m.get_modifier_name() != last_used_modifier_name
)
func generate_benefic_modifiers() -> Array[RegionModifier]:
return [
VendingMachineModifier.new(),
ResonnanceModifier.new()
]
var choosen_modifier : RegionModifier = possible_modifiers.pick_random()
last_used_modifier_name = choosen_modifier.get_modifier_name()
return [choosen_modifier]
func generate_challenge_modifiers() -> Array[RegionModifier]:
return [
RockyModifier.new(),
RadioactiveModifier.new(),
ContaminatedModifier.new(),
]
#endregion
@@ -112,6 +135,6 @@ func get_bad_region_modifiers() -> Array[RegionModifier]:
func add_artefacts(a: Artefact):
artefacts.append(a)
artefacts_changed.emit(artefacts)
GameInfo.game_data.player_data.update_with_artefacts(artefacts)
#endregion

View File

@@ -3,13 +3,12 @@ class_name RunDataPlantInfo
signal updated
const DEFAULT_PLANT_AREA_RADIUS = 20
const DEFAULT_PLANT_INFLUENCE_RADIUS = 100
const DEFAULT_GROWING_TIME = 2
const DEFAULT_LIFETIME = 6
const DEFAULT_BASE_SCORE = 1
const DEFAULT_SEED_NUMBER = 2
const DEFAULT_SEED_RANDOM_LOOSE = 1
const DEFAULT_PLANT_INFLUENCE_RADIUS = 100
var run_data : RunData
@@ -19,25 +18,57 @@ func _init(
run_data = _run_data
var region_modifiers : Array[RegionModifier]
var artefacts : Array[Artefact] = []
func get_plant_area_radius() -> int:
return DEFAULT_PLANT_AREA_RADIUS
func get_plant_influence_radius() -> int:
return DEFAULT_PLANT_INFLUENCE_RADIUS
func get_growing_time() -> int:
return DEFAULT_GROWING_TIME
var growing_time = DEFAULT_GROWING_TIME
for rm in get_region_modifiers():
growing_time = rm.modify_plant_growing_time(growing_time)
return max(0, growing_time)
func get_lifetime() -> int:
return DEFAULT_LIFETIME
var lifetime = DEFAULT_LIFETIME
for rm in get_region_modifiers():
lifetime = rm.modify_plant_lifetime(lifetime)
return max(0, lifetime)
func get_base_score() -> int:
return DEFAULT_BASE_SCORE
var base_score = DEFAULT_BASE_SCORE
for rm in get_region_modifiers():
base_score = rm.modify_plant_base_score(base_score)
return max(0, base_score)
func get_seed_number() -> int:
return DEFAULT_SEED_NUMBER
var seed_number = DEFAULT_SEED_NUMBER
for rm in get_region_modifiers():
seed_number = rm.modify_plant_seed_number(seed_number)
return max(0, seed_number)
func get_seed_random_loose() -> int:
return DEFAULT_SEED_RANDOM_LOOSE
var seed_random_loose = DEFAULT_SEED_RANDOM_LOOSE
for rm in get_region_modifiers():
seed_random_loose = rm.modify_plant_seed_random_loose(seed_random_loose)
return min(max(0, seed_random_loose),get_seed_number())
func get_influence_radius() -> int:
var influence_radius = DEFAULT_PLANT_INFLUENCE_RADIUS
for rm in get_region_modifiers():
influence_radius = rm.modify_plant_influence_radius(influence_radius)
return max(0, influence_radius)
func get_region_modifiers() -> Array[RegionModifier]:
if run_data.current_run_point and run_data.current_run_point.region_parameter:
return run_data.current_run_point.region_parameter.modifiers
return []

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-biohazard"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M16.41 2.072a6.25 6.25 0 0 1 1.514 6.387l-.051 .137l.223 .044q .325 .072 .645 .18l.318 .117l.25 .105c2.155 .97 3.572 3.067 3.681 5.483v.217a1.5 1.5 0 1 1 -3 -.003l.002 -.145a3.25 3.25 0 0 0 -4.412 -2.886l-.091 .037l.004 .038l.007 .217a3.5 3.5 0 0 1 -1.817 3.07l-.16 .082l.014 .11c.082 .511 .285 .997 .595 1.416l.14 .175a3.25 3.25 0 0 0 2.27 1.136l.203 .006a1.5 1.5 0 0 1 0 3a6.25 6.25 0 0 1 -4.575 -1.991l-.177 -.199l-.078 .092a6.3 6.3 0 0 1 -3.921 2.054l-.273 .028l-.259 .016h-.217a1.5 1.5 0 1 1 .003 -3l.145 .002a3.25 3.25 0 0 0 3.074 -2.82l.003 -.03l-.161 -.083a3.5 3.5 0 0 1 -1.804 -2.883l-.005 -.195l.006 -.191l.003 -.043l-.075 -.032a3.25 3.25 0 0 0 -2.398 .008l-.191 .084a3.25 3.25 0 0 0 -1.85 2.933a1.5 1.5 0 0 1 -3 0a6.25 6.25 0 0 1 5.036 -6.13l.077 -.014l-.05 -.143l-.08 -.26l-.066 -.25a6.27 6.27 0 0 1 1.47 -5.678l.163 -.172a1.5 1.5 0 1 1 2.171 2.07l-.137 .143a3.25 3.25 0 0 0 .386 4.723l.084 .062l.05 -.034a3.5 3.5 0 0 1 1.673 -.555l.228 -.007c.683 0 1.336 .197 1.894 .556l.048 .033l.067 -.048a3.25 3.25 0 0 0 1.111 -1.669l.05 -.2a3.25 3.25 0 0 0 -.74 -2.828l-.141 -.15a1.5 1.5 0 1 1 2.12 -2.122" /></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

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

1
common/icons/grain.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-grain"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M3.5 9.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M8.5 4.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M8.5 14.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M3.5 19.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M13.5 9.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M18.5 4.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M13.5 19.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /><path d="M18.5 14.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0" /></svg>

After

Width:  |  Height:  |  Size: 706 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dm87fciksxunm"
path="res://.godot/imported/grain.svg-e272947e9d3765123e0cc00495d206dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/grain.svg"
dest_files=["res://.godot/imported/grain.svg-e272947e9d3765123e0cc00495d206dd.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 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-mountain"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M6.18 10.95l2.54 3.175l.084 .093a1 1 0 0 0 1.403 -.01l1.637 -1.638l1.324 1.985a1 1 0 0 0 1.457 .226l3.632 -2.906l3.647 7.697a1 1 0 0 1 -.904 1.428h-18a1 1 0 0 1 -.904 -1.428zm5.82 -7.878a3.3 3.3 0 0 1 2.983 1.888l2.394 5.057l-3.15 2.52l-1.395 -2.092l-.075 -.099a1 1 0 0 0 -1.464 -.053l-1.711 1.709l-1.301 -1.627l-1.151 -1.435l1.888 -3.98a3.3 3.3 0 0 1 2.982 -1.888" /></svg>

After

Width:  |  Height:  |  Size: 599 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://4o0itd0ofkcj"
path="res://.godot/imported/mountain.svg-73c6f0a7455c030d9081009331506dc0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/mountain.svg"
dest_files=["res://.godot/imported/mountain.svg-73c6f0a7455c030d9081009331506dc0.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 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="#ffffff" class="icon icon-tabler icons-tabler-filled icon-tabler-radioactive"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M21 11a1 1 0 0 1 1 1a10 10 0 0 1 -5 8.656a1 1 0 0 1 -1.302 -.268l-.064 -.098l-3 -5.19a.995 .995 0 0 1 -.133 -.542l.01 -.11l.023 -.106l.034 -.106l.046 -.1l.056 -.094l.067 -.089a.994 .994 0 0 1 .165 -.155l.098 -.064a2 2 0 0 0 .993 -1.57l.007 -.163a1 1 0 0 1 .883 -.994l.117 -.007h6z" /><path d="M7 3.344a10 10 0 0 1 10 0a1 1 0 0 1 .418 1.262l-.052 .104l-3 5.19l-.064 .098a.994 .994 0 0 1 -.155 .165l-.089 .067a1 1 0 0 1 -.195 .102l-.105 .034l-.107 .022a1.003 1.003 0 0 1 -.547 -.07l-.104 -.052a2 2 0 0 0 -1.842 -.082l-.158 .082a1 1 0 0 1 -1.302 -.268l-.064 -.098l-3 -5.19a1 1 0 0 1 .366 -1.366z" /><path d="M9 11a1 1 0 0 1 .993 .884l.007 .117a2 2 0 0 0 .861 1.645l.237 .152a.994 .994 0 0 1 .165 .155l.067 .089l.056 .095l.045 .099c.014 .036 .026 .07 .035 .106l.022 .107l.011 .11a.994 .994 0 0 1 -.08 .437l-.053 .104l-3 5.19a1 1 0 0 1 -1.366 .366a10 10 0 0 1 -5 -8.656a1 1 0 0 1 .883 -.993l.117 -.007h6z" /></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

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

1
common/icons/virus.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-virus"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M7 12a5 5 0 1 0 10 0a5 5 0 1 0 -10 0" /><path d="M12 7v-4" /><path d="M11 3h2" /><path d="M15.536 8.464l2.828 -2.828" /><path d="M17.657 4.929l1.414 1.414" /><path d="M17 12h4" /><path d="M21 11v2" /><path d="M15.535 15.536l2.829 2.828" /><path d="M19.071 17.657l-1.414 1.414" /><path d="M12 17v4" /><path d="M13 21h-2" /><path d="M8.465 15.536l-2.829 2.828" /><path d="M6.343 19.071l-1.413 -1.414" /><path d="M7 12h-4" /><path d="M3 13v-2" /><path d="M8.464 8.464l-2.828 -2.828" /><path d="M4.929 6.343l1.414 -1.413" /></svg>

After

Width:  |  Height:  |  Size: 827 B

View File

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cual1pde6keom"
path="res://.godot/imported/virus.svg-59f03f7d0b705bff456c355a03b2fd98.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/virus.svg"
dest_files=["res://.godot/imported/virus.svg-59f03f7d0b705bff456c355a03b2fd98.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 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-tabler icons-tabler-outline icon-tabler-wave-sine"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M21 12h-2c-.894 0 -1.662 -.857 -1.761 -2c-.296 -3.45 -.749 -6 -2.749 -6s-2.5 3.582 -2.5 8s-.5 8 -2.5 8s-2.452 -2.547 -2.749 -6c-.1 -1.147 -.867 -2 -1.763 -2h-2" /></svg>

After

Width:  |  Height:  |  Size: 474 B

View File

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

@@ -113,12 +113,14 @@ fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(1, 0.5)
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_6w4e0"]
radius = 38.0
height = 80.0
radius = 29.70824
height = 62.292908
[node name="Door" type="Area2D" unique_id=2053096538]
process_mode = 4
script = ExtResource("1_8kdwv")
icon = ExtResource("2_6w4e0")
default_interact_text = "ENTER"
available = false
metadata/_custom_type_script = "uid://dyprcd68fjstf"

View File

@@ -2,7 +2,6 @@ extends InspectableEntity
class_name Plant
const PLANT_AREA_RADIUS = 20
const PLANT_INFLUENCE_RADIUS = 100
const HARVESTED_SEED_DISPLACEMENT_FACTOR = 100
const RANDOM_MAX_GROW_INTERVAL = Region.MIN_PASS_DAY_ANIMATION_TIME/2. - 0.1
@@ -76,7 +75,7 @@ func generate_collision_shape() -> CollisionShape2D:
return collision
func generate_influence_zone() -> PlantInfluenceZone:
var zone = PlantInfluenceZone.new(PLANT_INFLUENCE_RADIUS)
var zone = PlantInfluenceZone.new(data.get_influence_radius())
add_child(zone)

View File

@@ -113,6 +113,9 @@ func get_seed_random_loose():
return 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()),
@@ -142,6 +145,7 @@ func get_score_buff() -> int:
buff = m.mutate_score_buff(self, buff)
return buff
func disappear():
disappeared.emit(self )

View File

@@ -16,7 +16,7 @@ func _init(_radius = 100):
func _ready():
sprite = Circle.new()
# sprite.z_index = 100
sprite.radius = 100
sprite.radius = radius
sprite.fill = false
sprite.width = 1
sprite.opacity = 0.5

View File

@@ -110,4 +110,4 @@ static func get_rarity_color(rarity: int) -> Color:
Color("FFA617"),
]
return rarity_colors[min(rarity, len(rarity_colors) - 1)]
return rarity_colors[min(rarity, len(rarity_colors) - 1)%len(rarity_colors)]

View File

@@ -1,33 +0,0 @@
extends PlantMutation
class_name EphemeralMutation
func get_icon() -> Texture:
return preload("res://common/icons/butterfly.svg")
func get_mutation_id() -> String:
return "EPHEMERAL"
func get_mutation_name() -> String:
return tr("EPHEMERAL")
func get_mutation_description() -> String:
return tr("EPHEMERAL_EFFECT_TEXT").format({
"seed_number": level,
"seed_icon": Text.bbcode_icon(Plant.SEED_ICON),
"lifetime_change": get_lifetime_change(),
"lifetime_icon": Text.bbcode_icon(Plant.LIFETIME_ICON),
})
func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int:
return lifetime + get_lifetime_change()
func mutate_seed_number(plant_data: PlantData, seed_number: int):
if plant_data.get_state() == PlantData.State.MATURE:
return seed_number + level + 1
return seed_number
func get_seed_increase() -> int:
return floori((level + 1.0) / 2)
func get_lifetime_change() -> int:
return -1

View File

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

View File

@@ -39,6 +39,7 @@ func add_item(item: Item) -> bool:
func add_tool(tool: Item) -> bool:
if not has_item_with_name(tool.get_item_name()):
tools.append(tool)
current_item_ind += 1
updated.emit(self)
tool_added.emit(tool)
return true

View File

@@ -7,8 +7,6 @@ const SHOVEL_ICON = preload("res://common/icons/shovel.svg")
const GROWING_ICON = preload("res://common/icons/chevrons-up.svg")
const SCORE_ICON = preload("res://common/icons/growth.svg")
const RARITY_POOL : Array[int] = [0,0,0,0,0,0,0,1,1,1]
@export var plant_name : String
@export var plant_mutations: Array[PlantMutation]
@export var random_seed : int
@@ -29,15 +27,15 @@ static func generate_from_parent(plant_data : PlantData) -> Seed:
mutate_mutations(plant_data)
)
else :
return Seed.new(
return Seed.new(
plant_data.plant_name,
plant_data.mutations.duplicate_deep()
)
static func generate_random() -> Seed:
static func generate_random(rarity := 0) -> Seed:
var new_seed = Seed.new(
Random.generate_random_word(),
[generate_first_mutation()]
[generate_first_mutation(rarity)]
)
return new_seed
@@ -134,8 +132,7 @@ func get_particles() -> Array[EffectParticles.Parameters]:
return param
static func generate_first_mutation() -> PlantMutation:
var rarity : int = RARITY_POOL.pick_random()
static func generate_first_mutation(rarity := 0) -> PlantMutation:
var possible_mutation : PlantMutation = GameInfo.game_data.progression_data.available_mutations.filter(
func (m : PlantMutation): return m.get_base_rarity() <= rarity

View File

@@ -20,7 +20,7 @@ func get_artefacts() -> Array[Artefact]:
return GameInfo.game_data.current_run.artefacts
return []
func _on_artefacts_updated(artefacts : Array[Artefact]):
func update_with_artefacts(artefacts : Array[Artefact]):
inventory.seeds_size = calculate_inventory_size(artefacts)
max_energy = calculate_max_energy(artefacts)
updated.emit()

View File

@@ -145,6 +145,7 @@ _data = {
}
[node name="Announce" type="CanvasLayer" unique_id=1659074958]
process_mode = 3
script = ExtResource("1_4evne")
[node name="MarginContainer" type="MarginContainer" parent="." unique_id=1463847780]
@@ -230,7 +231,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.8788874, 0.4667406, 0.09817754, -0.45027143, 0.74415994, 0.4933552, 0.15722138, -0.47777224, 0.8642758, 0, 0, 0)
transform = Transform3D(-0.51481193, -0.6680038, 0.5372555, -0.8508927, 0.32199714, -0.4149924, 0.104188256, -0.67080045, -0.73426664, 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

@@ -77,10 +77,14 @@ func set_announce_object(object := announce_object):
if not visible:
%AnimationPlayer.play("appear")
Pointer.action_disabled = true
AudioManager.play_sfx("Ship_reveal")
elif object == null and visible:
%AnimationPlayer.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
)
announce_object = object
func _on_ok_button_down():

View File

@@ -15,7 +15,6 @@ const CARD_SECTION_SCENE : PackedScene = preload("res://gui/game/card/card_secti
# update()
func update():
pass
%Title.text = info.title
%Subtitle.visible = info.subtitle != ""
%Subtitle.text = info.subtitle

View File

@@ -7,13 +7,7 @@
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="5_mao3x"]
[ext_resource type="Texture2D" uid="uid://bhogi5kkltx51" path="res://gui/pause/assets/textures/rock_tutorial_image.png" id="6_bt3y5"]
[ext_resource type="Texture2D" uid="uid://3fwhxkd0ycga" path="res://gui/pause/assets/textures/talion_tutorial_image.png" id="7_jx4fu"]
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="8_ajtcc"]
[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="9_i5c4s"]
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="10_0a2af"]
[ext_resource type="Texture2D" uid="uid://dhy4ewvqvlxyi" path="res://common/icons/clock.svg" id="11_tiice"]
[ext_resource type="Texture2D" uid="uid://c2qg7ikkylfv4" path="res://common/icons/seeds.svg" id="12_vb6ry"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="13_r8wgh"]
[ext_resource type="Texture2D" uid="uid://cymrmhsihkj44" path="res://common/icons/recharge.svg" id="14_ccxsv"]
[ext_resource type="PackedScene" uid="uid://bnx5hr2fd0p24" path="res://gui/game/help/icon_help_content.tscn" id="8_38kut"]
[sub_resource type="LabelSettings" id="LabelSettings_rcm5b"]
font = ExtResource("2_l61dv")
@@ -149,132 +143,5 @@ theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="IconsGrid" type="VBoxContainer" parent="IconHelp/MarginContainer" unique_id=1344975233]
[node name="IconsGrid" parent="IconHelp/MarginContainer" unique_id=9435995 instance=ExtResource("8_38kut")]
layout_mode = 2
alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1388308447]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer" unique_id=848501211]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("8_ajtcc")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer" unique_id=913881976]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "PLANT_POINTS"
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1039110967]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer2" unique_id=1533385173]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("9_i5c4s")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer2" unique_id=1539873337]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "DAYS"
vertical_alignment = 1
[node name="HBoxContainer3" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1009856551]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer3" unique_id=483862285]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("10_0a2af")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer3" unique_id=1118498780]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "GROWING_TIME"
vertical_alignment = 1
[node name="HBoxContainer4" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1195759820]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer4" unique_id=617759410]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("11_tiice")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer4" unique_id=44288020]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "LIFETIME"
vertical_alignment = 1
[node name="HBoxContainer5" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1749624633]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer5" unique_id=1970160966]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("12_vb6ry")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer5" unique_id=1667196444]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "SEEDS"
vertical_alignment = 1
[node name="HBoxContainer6" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=65069381]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer6" unique_id=302101280]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("13_r8wgh")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer6" unique_id=1371041548]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "ORCHID_ENERGY"
vertical_alignment = 1
[node name="HBoxContainer7" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1616445361]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer7" unique_id=1012780398]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("14_ccxsv")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer7" unique_id=537891031]
layout_mode = 2
theme = ExtResource("5_mao3x")
text = "RECHARGE_NUMBER"
vertical_alignment = 1

View File

@@ -0,0 +1,139 @@
[gd_scene format=3 uid="uid://bnx5hr2fd0p24"]
[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="1_yxwcd"]
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="2_wxnr5"]
[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="3_t30ml"]
[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="4_d4ybk"]
[ext_resource type="Texture2D" uid="uid://dhy4ewvqvlxyi" path="res://common/icons/clock.svg" id="5_3lk2g"]
[ext_resource type="Texture2D" uid="uid://c2qg7ikkylfv4" path="res://common/icons/seeds.svg" id="6_tr36d"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_ubf5w"]
[ext_resource type="Texture2D" uid="uid://cymrmhsihkj44" path="res://common/icons/recharge.svg" id="8_uvt1i"]
[node name="IconsGrid" type="VBoxContainer" unique_id=9435995]
alignment = 1
[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=1691095228]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer" unique_id=1901557678]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("1_yxwcd")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer" unique_id=859146346]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "PLANT_POINTS"
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="." unique_id=84698232]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer2" unique_id=1688869934]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("3_t30ml")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer2" unique_id=722562759]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "DAYS"
vertical_alignment = 1
[node name="HBoxContainer3" type="HBoxContainer" parent="." unique_id=1091557748]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer3" unique_id=206861703]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("4_d4ybk")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer3" unique_id=609696718]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "GROWING_TIME"
vertical_alignment = 1
[node name="HBoxContainer4" type="HBoxContainer" parent="." unique_id=1416063894]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer4" unique_id=1393253275]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("5_3lk2g")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer4" unique_id=365374836]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "LIFETIME"
vertical_alignment = 1
[node name="HBoxContainer5" type="HBoxContainer" parent="." unique_id=1410748673]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer5" unique_id=946072561]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("6_tr36d")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer5" unique_id=549789016]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "SEEDS"
vertical_alignment = 1
[node name="HBoxContainer6" type="HBoxContainer" parent="." unique_id=1258373211]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer6" unique_id=1789194571]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("7_ubf5w")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer6" unique_id=1037558845]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "ORCHID_ENERGY"
vertical_alignment = 1
[node name="HBoxContainer7" type="HBoxContainer" parent="." unique_id=1238098255]
layout_mode = 2
theme_override_constants/separation = 4
[node name="TextureRect" type="TextureRect" parent="HBoxContainer7" unique_id=316858205]
custom_minimum_size = Vector2(25, 25)
layout_mode = 2
size_flags_horizontal = 4
texture = ExtResource("8_uvt1i")
expand_mode = 1
stretch_mode = 5
[node name="RichTextLabel" type="Label" parent="HBoxContainer7" unique_id=248028380]
layout_mode = 2
theme = ExtResource("2_wxnr5")
text = "RECHARGE_NUMBER"
vertical_alignment = 1

View File

@@ -42,10 +42,10 @@ tracks/0/path = NodePath("SubViewport/NightAnimationSprite:rotation")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.26666668, 0.7, 1),
"transitions": PackedFloat32Array(1, 1, 1, 1),
"times": PackedFloat32Array(0, 1),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 3.141592653589793, 3.141592653589793, 6.265732014659643]
"values": [0.0, 6.265732014659643]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_wafeq"]
@@ -56,6 +56,7 @@ _data = {
[node name="PassDay" type="CanvasLayer" unique_id=335255544]
layer = 3
visible = false
script = ExtResource("1_0pm4g")
[node name="Blur" type="ColorRect" parent="." unique_id=546890405]
@@ -72,6 +73,7 @@ script = ExtResource("2_bhfpo")
[node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506]
unique_name_in_owner = true
visible = false
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0

View File

@@ -70,6 +70,7 @@ var indicators : Array[InGameIndicator]
(func ():
for e in region.entity_container.get_children():
if e is Plant:
display_plant_info_tutorial(e.card_info())
return true
return false)
),
@@ -95,6 +96,7 @@ func _ready():
show()
else:
hide()
%PlantInfoTutorial.hide()
func setup_gui():
for s in %Steps.get_children():
@@ -132,6 +134,16 @@ func finish_tutorial():
region.data.update()
succeded.emit()
func display_plant_info_tutorial(with_card_info : CardInfo):
%PlantCard.info = with_card_info
AudioManager.play_sfx("Ship_reveal")
%PlantCard.update()
%PlantInfoTutorialAnimationPlayer.play("appear")
func _on_ok_button_button_down():
%PlantInfoTutorialAnimationPlayer.play_backwards("appear")
class Step:
var text : String : get = get_text

View File

@@ -4,6 +4,20 @@
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_1wikm"]
[ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="3_8kuag"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_1wikm"]
[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="5_5i4hd"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_hgus1"]
[ext_resource type="PackedScene" uid="uid://753270jjxmfg" path="res://gui/game/card/card.tscn" id="6_vg3tr"]
[ext_resource type="Texture2D" uid="uid://bgi4rc50par30" path="res://common/icons/arrow-narrow-right.svg" id="7_6k6bq"]
[ext_resource type="Texture2D" uid="uid://bd6qddv5ihkjr" path="res://common/icons/bucket.svg" id="7_ug5yk"]
[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="8_hgus1"]
[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="9_6k6bq"]
[ext_resource type="Texture2D" uid="uid://b752eqq4cm7ve" path="res://common/icons/building-factory-2.svg" id="10_58nqq"]
[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="11_ebkn5"]
[ext_resource type="Texture2D" uid="uid://dg00xnpp6ixls" path="res://common/icons/server-2.svg" id="12_2pmxd"]
[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="13_1lrfc"]
[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="14_e6tpi"]
[ext_resource type="Texture2D" uid="uid://7oh782g7ngop" path="res://common/icons/arrow-narrow-left.svg" id="17_58nqq"]
[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="18_6k6bq"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x7cwm"]
bg_color = Color(0.18, 0.18, 0.18, 0.48235294)
@@ -16,6 +30,122 @@ corner_radius_bottom_left = 20
font = ExtResource("4_1wikm")
font_size = 20
[sub_resource type="ShaderMaterial" id="ShaderMaterial_pu6eb"]
shader = ExtResource("5_5i4hd")
shader_parameter/strength = 8.00000037674012
shader_parameter/mix_percentage = 0.3
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ebkn5"]
[sub_resource type="Resource" id="Resource_ditr3"]
script = ExtResource("9_6k6bq")
title_text = "Mutations"
title_icon = ExtResource("10_58nqq")
text = "This is a mutation"
metadata/_custom_type_script = "uid://dgbh38j13g5kn"
[sub_resource type="Resource" id="Resource_ikhlb"]
script = ExtResource("11_ebkn5")
text = "8"
icon = ExtResource("12_2pmxd")
metadata/_custom_type_script = "uid://b4tkium34c831"
[sub_resource type="Resource" id="Resource_puixe"]
script = ExtResource("8_hgus1")
title = "Hello"
subtitle = "Mature"
texture = ExtResource("13_1lrfc")
important_stat_text = "8"
important_stat_icon = ExtResource("7_ug5yk")
stats = Array[ExtResource("11_ebkn5")]([SubResource("Resource_ikhlb")])
sections = Array[ExtResource("9_6k6bq")]([SubResource("Resource_ditr3")])
metadata/_custom_type_script = "uid://dj2pv1hiwjfv0"
[sub_resource type="Animation" id="Animation_6k6bq"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".: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("MarginContainer:theme_override_constants/separation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [12]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:modulate:a")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [1.0]
}
[sub_resource type="Animation" id="Animation_58nqq"]
resource_name = "appear"
length = 0.5
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.1),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [false, true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("MarginContainer:theme_override_constants/separation")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.06666666, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [183, 12]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath(".:modulate:a")
tracks/2/interp = 2
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [0.0, 1.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ebkn5"]
_data = {
&"RESET": SubResource("Animation_6k6bq"),
&"appear": SubResource("Animation_58nqq")
}
[node name="Tutorial" type="Control" unique_id=1210916048]
layout_mode = 3
anchors_preset = 15
@@ -68,3 +198,168 @@ label_settings = SubResource("LabelSettings_8kuag")
[node name="Steps" type="VBoxContainer" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer/VBoxContainer" unique_id=125170550]
unique_name_in_owner = true
layout_mode = 2
[node name="PlantInfoTutorial" type="Control" parent="." unique_id=1586592931]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="BlurRect" type="ColorRect" parent="PlantInfoTutorial" unique_id=35513528]
material = SubResource("ShaderMaterial_pu6eb")
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="PlantInfoTutorial" unique_id=1757534024]
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="PlantInfoTutorial/MarginContainer" unique_id=1842689362]
layout_mode = 2
text = "PLANTS_INFO"
label_settings = ExtResource("6_hgus1")
horizontal_alignment = 1
[node name="Subtitle" type="Label" parent="PlantInfoTutorial/MarginContainer" unique_id=656340742]
layout_mode = 2
text = "OBTAIN_INFORMATION_ON_PLANTS_WHILE_HOVERING_PLANTS_BASE"
horizontal_alignment = 1
[node name="GridContainer" type="GridContainer" parent="PlantInfoTutorial/MarginContainer" unique_id=1124442982]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
columns = 3
[node name="VBoxContainer" type="VBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer" unique_id=1598939949]
layout_mode = 2
theme_override_constants/separation = 8
[node name="HBoxContainer" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer" unique_id=1972134386]
layout_mode = 2
alignment = 1
[node name="Label" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer" unique_id=263525139]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
bbcode_enabled = true
text = "PLANT_NAME_TEXT"
fit_content = true
scroll_active = false
vertical_alignment = 1
[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer" unique_id=1507687253]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 8
texture = ExtResource("7_6k6bq")
stretch_mode = 5
[node name="HBoxContainer3" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer" unique_id=483641916]
layout_mode = 2
alignment = 1
[node name="Label2" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer3" unique_id=553756431]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
bbcode_enabled = true
text = "PLANT_STATS_TEXT"
fit_content = true
scroll_active = false
vertical_alignment = 1
[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer3" unique_id=953954556]
layout_mode = 2
size_flags_vertical = 0
texture = ExtResource("7_6k6bq")
stretch_mode = 5
[node name="VBoxContainer3" type="VBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer" unique_id=1226314631]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=591048390]
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")]
unique_name_in_owner = true
custom_minimum_size = Vector2(350, 0)
layout_mode = 2
info = SubResource("Resource_puixe")
[node name="VBoxContainer2" type="VBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer" unique_id=906180848]
layout_mode = 2
theme_override_constants/separation = 8
[node name="HSeparator" type="HSeparator" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=760754866]
layout_mode = 2
theme_override_constants/separation = 32
theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5")
[node name="HBoxContainer" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=383033253]
layout_mode = 2
alignment = 1
[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer" unique_id=475071884]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
texture = ExtResource("17_58nqq")
stretch_mode = 5
[node name="Label2" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer" unique_id=1479217505]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
bbcode_enabled = true
text = "PLANT_SCORE_TEXT"
fit_content = true
scroll_active = false
horizontal_alignment = 2
vertical_alignment = 1
[node name="HBoxContainer2" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=2062134463]
layout_mode = 2
alignment = 1
[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=392813755]
layout_mode = 2
size_flags_vertical = 4
texture = ExtResource("17_58nqq")
stretch_mode = 5
[node name="Label2" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=472790254]
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="OkButton" type="Button" parent="PlantInfoTutorial/MarginContainer" unique_id=1684351093]
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("18_6k6bq")
text = "OK"
[node name="PlantInfoTutorialAnimationPlayer" type="AnimationPlayer" parent="PlantInfoTutorial" unique_id=549667783]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_ebkn5")
[connection signal="button_down" from="PlantInfoTutorial/MarginContainer/OkButton" to="." method="_on_ok_button_button_down"]

Binary file not shown.

View File

@@ -0,0 +1,60 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://on4beh6lla76"
path="res://.godot/imported/cristal.blend-116d25ad1da461c81fb8ef9157e2d1e7.scn"
[deps]
source_file="res://gui/loose_screen/assets/cristal.blend"
dest_files=["res://.godot/imported/cristal.blend-116d25ad1da461c81fb8ef9157e2d1e7.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={}
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.

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2ebqci4tglk8"
path="res://.godot/imported/orchid_sleeping.png-7f59ff571a5eb07fa1a91538a777423b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://gui/loose_screen/assets/orchid_sleeping.png"
dest_files=["res://.godot/imported/orchid_sleeping.png-7f59ff571a5eb07fa1a91538a777423b.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

View File

@@ -0,0 +1,80 @@
[gd_scene format=3 uid="uid://u6nw3vo6677a"]
[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_pf6ao"]
[ext_resource type="Texture2D" uid="uid://c2ebqci4tglk8" path="res://gui/loose_screen/assets/orchid_sleeping.png" id="2_f8jil"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_4ae40"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_w6ode"]
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="5_276s3"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="6_60kfb"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_041t2"]
shader = ExtResource("1_pf6ao")
shader_parameter/strength = 5.00000023424012
shader_parameter/mix_percentage = 0.3
[sub_resource type="LabelSettings" id="LabelSettings_bn8hj"]
font = ExtResource("4_w6ode")
font_size = 50
font_color = Color(1, 0.6509804, 0.09019608, 1)
[node name="LooseScreen" type="CanvasLayer" unique_id=1502767186]
[node name="BlurRect" type="ColorRect" parent="." unique_id=1208806322]
material = SubResource("ShaderMaterial_041t2")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.0352941, 0.0196078, 0.12549, 0.705882)
[node name="GridContainer" type="GridContainer" parent="." unique_id=2014325082]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -186.5
offset_top = -249.0
offset_right = 186.5
offset_bottom = 249.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
columns = 2
[node name="AnnounceContainer" type="VBoxContainer" parent="GridContainer" unique_id=717426101]
layout_mode = 2
theme_override_constants/separation = 12
alignment = 1
[node name="TextureRect" type="TextureRect" parent="GridContainer/AnnounceContainer" unique_id=849798296]
custom_minimum_size = Vector2(0, 300)
layout_mode = 2
texture = ExtResource("2_f8jil")
expand_mode = 3
stretch_mode = 5
[node name="AnnounceText" type="Label" parent="GridContainer/AnnounceContainer" unique_id=1321978462]
unique_name_in_owner = true
layout_mode = 2
text = "Out of energy"
label_settings = SubResource("LabelSettings_bn8hj")
horizontal_alignment = 1
[node name="AnnounceTitle" type="Label" parent="GridContainer/AnnounceContainer" unique_id=896530004]
unique_name_in_owner = true
layout_mode = 2
text = "Orchid and the ship ran out of energy"
label_settings = ExtResource("3_4ae40")
horizontal_alignment = 1
autowrap_mode = 3
[node name="OkButton" type="Button" parent="GridContainer/AnnounceContainer" unique_id=1371634749]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("5_276s3")
text = "Wake up again"
icon = ExtResource("6_60kfb")

View File

@@ -21,6 +21,10 @@ shader_parameter/mix_percentage = 0.3
font = ExtResource("4_apjlw")
font_size = 30
[sub_resource type="LabelSettings" id="LabelSettings_5hfp2"]
font = ExtResource("4_apjlw")
font_size = 20
[sub_resource type="Animation" id="Animation_58dya"]
length = 0.001
tracks/0/type = "value"
@@ -163,12 +167,22 @@ layout_mode = 2
text = "QUIT"
icon = ExtResource("7_yj6f1")
[node name="SaveInfo" type="Label" parent="Container/MarginContainer" unique_id=144326561]
layout_mode = 2
size_flags_vertical = 8
text = "THIS_GAME_USE_AUTOSAVE"
label_settings = SubResource("LabelSettings_5hfp2")
horizontal_alignment = 1
vertical_alignment = 1
[node name="Settings" parent="." unique_id=758381952 instance=ExtResource("4_58dya")]
unique_name_in_owner = true
visible = false
mouse_filter = 2
[node name="Controls" parent="." unique_id=358658336 instance=ExtResource("11_urlqn")]
unique_name_in_owner = true
visible = false
mouse_filter = 2
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1779993260]

View File

@@ -25,12 +25,14 @@ var can_use_item : bool = false
var press_time := 0.
var press_action_done := false
var action_disabled := true
func _ready():
Input.set_custom_mouse_cursor(default_cursor)
%Action.visible = false
func _process(delta):
if player:
if player and not action_disabled:
process_player_actions(delta)
else :
%ActionProgressBar.value = 0.

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://7lw40nfj4lhl"
path="res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png"
dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.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

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d17ru4hw8okj1"
path="res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png"
dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.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

View File

@@ -11,6 +11,7 @@
[ext_resource type="PackedScene" uid="uid://cgw2ct7smispo" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/shelf.tscn" id="11_w4l7d"]
[ext_resource type="PackedScene" uid="uid://dd6k80rhux1do" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/plant_info_screen.tscn" id="12_pxmsf"]
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="13_a2cx2"]
[ext_resource type="PackedScene" uid="uid://cd8j7v7qtybi8" path="res://stages/3d_scenes/cockpit_scene/ship_tutorial.tscn" id="13_u7lr8"]
[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="17_omtjc"]
[sub_resource type="Animation" id="Animation_pxmsf"]
@@ -75,6 +76,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04597473, -0.10369873, 0.3
shape = SubResource("BoxShape3D_ctvhk")
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("13_a2cx2")]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 3.2830403)
[node name="CockpitModel" parent="." unique_id=825141342 instance=ExtResource("17_omtjc")]
@@ -111,3 +113,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1218804, -1.0799314, 2.621
[node name="PlantInfoScreen" parent="." unique_id=1881622243 instance=ExtResource("12_pxmsf")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2386853, -0.047743827, 4.020312)
[node name="ShipTutorial" parent="." unique_id=868547496 instance=ExtResource("13_u7lr8")]
unique_name_in_owner = true

View File

@@ -104,6 +104,9 @@ _data = {
&"hover": SubResource("Animation_5d7hc")
}
[sub_resource type="ViewportTexture" id="ViewportTexture_vks67"]
viewport_path = NodePath("LeftScreen/LeftScreenAction/SubViewport")
[sub_resource type="Animation" id="Animation_2kujw"]
length = 0.001
tracks/0/type = "value"
@@ -143,8 +146,8 @@ _data = {
[sub_resource type="Resource" id="Resource_ne0dp"]
script = ExtResource("12_oix5e")
items = Array[ExtResource("11_3cel1")]([null, null, null])
n_tools = 1
seeds = Array[ExtResource("11_3cel1")]([null])
seeds_size = 1
metadata/_custom_type_script = "uid://fnu2d6wna4yc"
[node name="Dashboard" type="Node3D" unique_id=1374334508]
@@ -338,7 +341,7 @@ transform = Transform3D(1, -1.509958e-07, -8.742278e-08, 1.509958e-07, 1, -1.490
[node name="LeftScreenAction" type="Sprite3D" parent="LeftScreen" unique_id=442886447]
transform = Transform3D(-1, 5.3045827e-08, 1.509958e-07, 5.3045838e-08, 1.0000002, 1.5913756e-07, -1.5099579e-07, 1.5913761e-07, -1, 0.01, -0.04, -0.015)
pixel_size = 0.0015
texture = SubResource("ViewportTexture_2ofl5")
texture = SubResource("ViewportTexture_vks67")
[node name="SubViewport" type="SubViewport" parent="LeftScreen/LeftScreenAction" unique_id=1031174751]
transparent_bg = true

View File

@@ -18,6 +18,7 @@ func set_run_point(rp := run_point):
interactable = rp != null
if rp:
action_icon.texture = LAND_ICON
print(rp.region_parameter.get_region_name())
action_label.text = rp.region_parameter.get_region_name()
func card_info() -> CardInfo:

View File

@@ -12,8 +12,6 @@ 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/star_twinkle_speed = 0.8
shader_parameter/star_twinkle_intensity = 0.2
shader_parameter/layer_scale = 20.0
shader_parameter/layer_scale_step = 10.0
shader_parameter/layers_count = 3

View File

@@ -33,9 +33,23 @@ func _ready():
%Exit.clicked.connect(_on_exit_clicked)
%Exit.interactable = can_exit()
if not GameInfo.game_data.ship_tutorial_done:
await get_tree().create_timer(1).timeout
await show_tutorial()
if GameInfo.game_data.game_mode == GameData.GameMode.STORY:
handle_dialogs()
func show_tutorial():
AudioManager.play_sfx("Ship_reveal")
%ShipTutorial.appear()
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
%Player3D.controlling_player=false
await %ShipTutorial.disappeared
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
%Player3D.controlling_player=true
GameInfo.game_data.ship_tutorial_done = true
func handle_dialogs():
if not POST_TUTORIAL_DIALOG_PATH in GameInfo.game_data.dialogs_done:
await get_tree().create_timer(5).timeout

View File

@@ -2,8 +2,6 @@ extends Node3D
class_name CockpitScene
func _ready():
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
if GameInfo.game_data.ship_in_space:
%TakeOffAnimationPlayer.play("TookOff")

View File

@@ -0,0 +1,54 @@
extends CanvasLayer
class_name ShipTutorial
const DEFAULT_SHIP_ACCELERATION = Vector2(1,0)
signal disappeared
var object_acceleration := Vector2(0,0)
var rotating := false
var prev_mouse_pos : Vector2
var next_mouse_pos : Vector2
func _ready():
hide()
func appear():
%AnimationPlayer.play("appear")
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_SHIP_ACCELERATION, 0.1)
%Ship.rotate(Vector3.UP, object_rotation.x * delta)
%Ship.rotate(Vector3.RIGHT, object_rotation.y * delta)
func _on_ok_button_button_down():
%AnimationPlayer.play_backwards("appear")
disappeared.emit()

View File

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

View File

@@ -0,0 +1,325 @@
[gd_scene format=3 uid="uid://cd8j7v7qtybi8"]
[ext_resource type="Script" uid="uid://cqc8vta5ffmwt" path="res://stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd" id="1_1jkg7"]
[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_11pbi"]
[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="2_1jkg7"]
[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="3_ofwam"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_wyjs5"]
[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="4_ofwam"]
[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="5_2y716"]
[ext_resource type="Texture2D" uid="uid://7lw40nfj4lhl" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" id="6_2y716"]
[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="6_6olc8"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_cnkwc"]
[ext_resource type="Texture2D" uid="uid://d17ru4hw8okj1" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" id="9_6olc8"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wa8fb"]
shader = ExtResource("1_11pbi")
shader_parameter/strength = 8.00000037674012
shader_parameter/mix_percentage = 0.3
[sub_resource type="ViewportTexture" id="ViewportTexture_2y716"]
viewport_path = NodePath("Particles/SubViewport")
[sub_resource type="Curve" id="Curve_6olc8"]
_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_cnkwc"]
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_n2u7g"]
font = ExtResource("3_wyjs5")
font_size = 50
font_color = Color(1, 0.6509804, 0.09019608, 1)
[sub_resource type="ViewportTexture" id="ViewportTexture_11pbi"]
viewport_path = NodePath("ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport")
[sub_resource type="Animation" id="Animation_2y716"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".: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("ShipTutorialContainer: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("Particles: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("ShipTutorialContainer:theme_override_constants/separation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [12]
}
[sub_resource type="Animation" id="Animation_6olc8"]
resource_name = "appear"
length = 0.8
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.13333334),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [false, true]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("ShipTutorialContainer:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.2, 0.73333335),
"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("Particles:modulate")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0.2, 0.7),
"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("ShipTutorialContainer:theme_override_constants/separation")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0.26666665, 0.73333335),
"transitions": PackedFloat32Array(1, 1),
"update": 0,
"values": [554, 8]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cnkwc"]
_data = {
&"RESET": SubResource("Animation_2y716"),
&"appear": SubResource("Animation_6olc8")
}
[node name="ShipTutorial" type="CanvasLayer" unique_id=868547496]
script = ExtResource("1_1jkg7")
[node name="BlurRect" type="ColorRect" parent="." unique_id=1582095070]
material = SubResource("ShaderMaterial_wa8fb")
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="Particles" type="TextureRect" parent="." unique_id=552383374]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -179.0
offset_top = -179.0
offset_right = 179.0
offset_bottom = 179.0
grow_horizontal = 2
grow_vertical = 2
texture = SubResource("ViewportTexture_2y716")
expand_mode = 1
[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=205461032]
transparent_bg = true
size = Vector2i(1000, 1000)
[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=612988274]
position = Vector2(500, 500)
amount = 20
texture = ExtResource("3_ofwam")
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_6olc8")
color_ramp = SubResource("Gradient_cnkwc")
[node name="ShipTutorialContainer" type="VBoxContainer" parent="." unique_id=732188526]
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="ShipTutorialText" type="Label" parent="ShipTutorialContainer" unique_id=1403992763]
unique_name_in_owner = true
layout_mode = 2
text = "SHIP_ACQUIRED"
label_settings = SubResource("LabelSettings_n2u7g")
horizontal_alignment = 1
[node name="ShipTutorialTitle" type="Label" parent="ShipTutorialContainer" unique_id=2022459650]
unique_name_in_owner = true
layout_mode = 2
text = "USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET"
label_settings = ExtResource("2_1jkg7")
horizontal_alignment = 1
[node name="GridContainer" type="GridContainer" parent="ShipTutorialContainer" unique_id=1001794244]
layout_mode = 2
size_flags_horizontal = 4
theme_override_constants/h_separation = 35
columns = 3
[node name="VBoxContainer" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1184100238]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
theme_override_constants/separation = 12
alignment = 1
[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699]
layout_mode = 2
texture = ExtResource("6_2y716")
expand_mode = 5
stretch_mode = 5
[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093]
layout_mode = 2
bbcode_enabled = true
text = "JUMP_BETWEEN_REGION_TEXT"
fit_content = true
horizontal_alignment = 1
vertical_alignment = 1
[node name="ShipVisualiser" type="TextureRect" parent="ShipTutorialContainer/GridContainer" unique_id=692971472]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
mouse_filter = 0
texture = SubResource("ViewportTexture_11pbi")
stretch_mode = 5
[node name="SubViewport" type="SubViewport" parent="ShipTutorialContainer/GridContainer/ShipVisualiser" unique_id=1153633037]
own_world_3d = true
transparent_bg = true
size = Vector2i(400, 400)
[node name="Ship" type="Node3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=434320277]
unique_name_in_owner = true
transform = Transform3D(0.86598426, 0, -0.5000024, 0, 0.9999422, 0, 0.49997625, 0, 0.8660295, 0, 0, 0)
[node name="cockpit2" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")]
[node name="Skeleton3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 368440226) index="0" unique_id=1318180746]
bones/0/rotation = Quaternion(-0.52081746, 0.47827742, 0.52081746, 0.47827742)
bones/1/rotation = Quaternion(0.042539995, -1.4957005e-08, -9.944439e-10, 0.9990948)
bones/2/rotation = Quaternion(0.52081746, 0.47827742, 0.52081746, -0.47827742)
bones/3/rotation = Quaternion(0.042539995, 1.4957005e-08, 9.944439e-10, 0.9990948)
[node name="WinkEnd_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475]
transform = Transform3D(7.145433e-10, -1, -7.4505806e-08, 2.9971538e-08, -4.4703484e-08, 1, -1, -7.1454553e-10, 2.9971538e-08, -12.358327, -1.0543112, -8.881784e-16)
[node name="Wing_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283]
transform = Transform3D(0, -0.9963807, -0.08500305, 0, -0.08500302, 0.9963807, -1, 0, 0, 0, 0, 0)
[node name="WinkEnd_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672]
transform = Transform3D(7.145433e-10, 1, 7.4505806e-08, -2.9971538e-08, -4.4703484e-08, 1, 1, -7.1454553e-10, 2.9971538e-08, 12.358327, -1.0543112, 0)
[node name="Wing_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525]
transform = Transform3D(0, 0.9963807, 0.08500305, 0, -0.08500302, 0.9963807, 1, 0, 0, 0, 0, 0)
[node name="AnimationPlayer" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="6" unique_id=1861191625]
autoplay = &"Fold"
[node name="Camera3D" type="Camera3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50)
current = true
fov = 30.0
[node name="WorldEnvironment" type="WorldEnvironment" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=1274670225]
environment = ExtResource("5_2y716")
[node name="VBoxContainer2" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1062837751]
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
theme_override_constants/separation = 12
alignment = 1
[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375]
layout_mode = 2
texture = ExtResource("9_6olc8")
expand_mode = 5
stretch_mode = 5
[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614]
layout_mode = 2
bbcode_enabled = true
text = "RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT"
fit_content = true
horizontal_alignment = 1
vertical_alignment = 1
[node name="OkButton" type="Button" parent="ShipTutorialContainer" unique_id=879779245]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 4
theme = ExtResource("6_6olc8")
text = "OK"
icon = ExtResource("7_cnkwc")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1299060348]
unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_cnkwc")
[connection signal="button_down" from="ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"]
[editable path="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"]

View File

@@ -1,31 +1,14 @@
[gd_scene format=3 uid="uid://c830fmv54pyk1"]
[ext_resource type="Script" uid="uid://cx5dq0shygboa" path="res://stages/3d_scenes/ship_garage/scripts/ship_garage.gd" id="1_43lym"]
[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="1_cpd4q"]
[ext_resource type="Texture2D" uid="uid://cww35xu1yqivp" path="res://stages/3d_scenes/cockpit_scene/assets/textures/sky.png" id="2_yl6nj"]
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_g14ji"]
[ext_resource type="PackedScene" uid="uid://bmkmhycmvtjfl" path="res://stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend" id="4_g14ji"]
[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="5_43lym"]
[ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="7_dkh4e"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_43lym"]
shader = ExtResource("1_cpd4q")
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/star_twinkle_speed = 0.8
shader_parameter/star_twinkle_intensity = 0.2
shader_parameter/layer_scale = 20.0
shader_parameter/layer_scale_step = 10.0
shader_parameter/layers_count = 3
[sub_resource type="Sky" id="Sky_dkh4e"]
sky_material = SubResource("ShaderMaterial_43lym")
[sub_resource type="Environment" id="Environment_ovhgo"]
background_mode = 2
sky = SubResource("Sky_dkh4e")
sky_custom_fov = 61.7
ambient_light_source = 3
ambient_light_color = Color(1, 1, 1, 1)

View File

@@ -186,7 +186,7 @@ func _on_pay_interactable_clicked():
fall_object_2()
state = State.FETCH
get_tree().create_timer(1.).timeout.connect(
get_tree().create_timer(0.5).timeout.connect(
func ():
AudioManager.play_sfx("VendingMachineDrop")
)

View File

@@ -0,0 +1,20 @@
extends RegionModifier
class_name ContaminatedModifier
func get_modifier_name() -> String:
return tr("CONTAMINATED")
func get_description() -> String:
return tr("CONTAMINATED_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/virus.svg")
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_number(plant_seed_number : int) -> int:
return plant_seed_number - 1

View File

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

View File

@@ -0,0 +1,17 @@
extends RegionModifier
class_name RadioactiveModifier
func get_modifier_name() -> String:
return tr("RADIOACTIVE")
func get_description() -> String:
return tr("RADIOACTIVE_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/radioactive.svg")
func get_card_section_color() -> Color:
return Color("8b2dffff")
func modify_plant_base_score(plant_base_score : int) -> int:
return plant_base_score - 1

View File

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

View File

@@ -55,6 +55,26 @@ func modify_cristal_threshold(cristal_threshold : float) -> float:
func modify_start_decontamination_zone_radius(start_decontamination_zone_radius : int) -> int:
return start_decontamination_zone_radius
func modify_seed_rarity_pool(seed_rarity_pool : Array[int]) -> Array[int]:
return seed_rarity_pool
func modify_plant_growing_time(plant_growing_time : int) -> int:
return plant_growing_time
func modify_plant_lifetime(plant_lifetime : int) -> int:
return plant_lifetime
func modify_plant_seed_number(plant_seed_number : int) -> int:
return plant_seed_number
func modify_plant_base_score(plant_base_score : int) -> int:
return plant_base_score
func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int:
return plant_seed_random_loose
func modify_plant_influence_radius(plant_influence_radius : float) -> float:
return plant_influence_radius
func card_section() -> CardSectionInfo:
var section := CardSectionInfo.new(

View File

@@ -0,0 +1,19 @@
extends RegionModifier
class_name ResonnanceModifier
func get_modifier_name() -> String:
return tr("RESONNANCE")
func get_description() -> String:
return tr("RESONNANCE_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/wave-sine.svg")
func get_card_section_color() -> Color:
return Color("25c147")
func modify_seed_rarity_pool(seed_rarity_pool : Array[int]) -> Array[int]:
for i in range(len(seed_rarity_pool)):
seed_rarity_pool[i] += 1
return seed_rarity_pool

View File

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

View File

@@ -0,0 +1,17 @@
extends RegionModifier
class_name RockyModifier
func get_modifier_name() -> String:
return tr("ROCKY")
func get_description() -> String:
return tr("ROCKY_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/mountain.svg")
func get_card_section_color() -> Color:
return Color("8b2dffff")
func modify_cristal_threshold(cristal_threshold : float) -> float:
return cristal_threshold * 0.

View File

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

View File

@@ -0,0 +1,14 @@
extends RegionModifier
class_name SandyModifier
func get_modifier_name() -> String:
return tr("SANDY")
func get_description() -> String:
return tr("SANDY_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/grain.svg")
func modify_plant_influence_radius(plant_influence_radius : float) -> float:
return plant_influence_radius / 2

View File

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

View File

@@ -0,0 +1,14 @@
extends RegionModifier
class_name ToxicModifier
func get_modifier_name() -> String:
return tr("TOXIC")
func get_description() -> String:
return tr("TOXIC_MODIFIER_DESC_TEXT")
func get_icon() -> Texture:
return preload("res://common/icons/biohazard.svg")
func modify_plant_lifetime(plant_lifetime : int) -> int:
return plant_lifetime - 1

View File

@@ -0,0 +1 @@
uid://8pqatifhi7fs

View File

@@ -18,9 +18,6 @@ const CHUNK_UNLOAD_DISTANCE : int = 3
const MAX_GENERATION_THREAD = 1 # Crash when superior to 1
@export var first_loot_number : int = 3
@export var loot_item_number : Array[int] = [1,2]
var is_generated : bool : get = check_is_generated
var generated_value : float : get = get_generated_value
@@ -287,7 +284,7 @@ func dig_hole(game_pos: Vector2, size : int):
dig_rocks(hole_tiles,false,false)
func loot_talion(coord : Vector2i):
var new_seed = Seed.generate_random()
var new_seed = Seed.generate_random(data.seed_rarity_pool.pick_random())
drop_item(
new_seed,
coord * TILE_SIZE,

View File

@@ -25,6 +25,7 @@ const PLAYER_ROCK_HOLE_RADIUS = 5
@export var decontamination_threshold : float
@export var cristal_threshold : float
@export var start_decontamination_hole_radius = 3
@export var seed_rarity_pool : Array[int] = [0,0,0,0,0,0,0,1,1,1]
@export var day : int = 1
@export var entities_saved_data : Array[EntityData] = []

View File

@@ -6,6 +6,7 @@ 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]
@export var region_name : String
@export var region_flags : Array[String]
@@ -109,6 +110,10 @@ func get_start_decontamination_zone_radius() -> int:
return zone_radius
func card_info() -> CardInfo:
return null
#TODO
func get_seed_rarity_pool() -> int:
var seed_rarity_pool = DEFAULT_SEED_RARITY_POOL
for m in modifiers:
seed_rarity_pool = m.modify_seed_rarity_pool(seed_rarity_pool)
return seed_rarity_pool

View File

@@ -4,7 +4,7 @@ shader_type sky;
// Comment this if you don't want to use star twinke. However, if you do want to keep it,
// I suggest you to set the sky process mode to High-Quality Incremental or Real-Time,
// as star twinkling may greatly impact performance.
#define USE_TWINKLE
// #define USE_TWINKLE
group_uniforms sky;
uniform vec3 sky_color: source_color = vec3(0.03, 0.05, 0.11);

View File

@@ -19,6 +19,7 @@ CONTROLS,Controls,Contrôles
RESUME_GAME,Resume,Reprendre
RESTART,Restart,Recommencer
QUIT,Quit,Quitter
THIS_GAME_USE_AUTOSAVE,This game use autosave,Ce jeu sauvegarde votre progression automatiquement
CHOOSE_GAME_MODE,Choose game mode,Choisissez le mode de jeu
STORY_MODE,Story Mode,Mode Histoire
INFINITE_MODE,Infinite Mode,Mode Infini
@@ -70,9 +71,7 @@ TOUGH,Tough,Solide
TOUGH_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon},"Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}"
FERTILE,Fertile,Fertile
FERTILE_EFFECT_TEXT,Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon},Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon}
EPHEMERAL,Ephemeral,Éphémère
EPHEMERAL_EFFECT_TEXT,Add [b]{seed_number}[/b]{seed_icon} but [b]{lifetime_change}[/b]{lifetime_icon},"Ajoute [b]{seed_number}[/b]{seed_icon} mais [b]{lifetime_change}[/b]{lifetime_icon}"
PURIFICATION,Purification,Épuration
PURIFICATION,Purification,Purification
PURIFICATION_EFFECT_TEXT,"When mature, create fertile zone in a radius of [b]{purification_radius}[/b]","Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]"
HURRIED,Hurried,Pressé
HURRIED_EFFECT_TEXT,"[b]{growing_time_change}[/b]{growing_time_icon}","[b]{growing_time_change}[/b]{growing_time_icon}"
@@ -110,7 +109,7 @@ PICKAXE,Pickaxe,Pioche
PICKAXE_DESC_TEXT,Can dig rock and precious materials,Peut creuser la roche et des matériaux précieux
DIG,Dig,Creuser
OPEN,Open,Ouvrir
%s_SEED,%s Seed,Graine de %s
%s_SEED,%s Seed,Graine de %s
PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the fertile zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone fertile.
PLANT_%s,Plant [b]%s[/b],Planter [b]%s[/b]
MOVE_WITH_RIGHT_CLICK_OR_WASD,"Move with right click or WASD","Déplace-toi avec le clic droit ou ZQSD"
@@ -125,6 +124,12 @@ 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"
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_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
SCORE_%d,Score %d,Score %d
@@ -197,6 +202,10 @@ LAND_SHIP,Land Ship,Atterrir
TAKE_OFF,Take Off,Décoller
NO_MORE_ENERGY,No more energy,Plus assez d'énergie
NO_RECHARGE_LEFT,"No recharge left, give up to try again","Pas de recharge restante, abandonnez pour recommencer"
SHIP_ACQUIRED,Ship Acquired,Vaisseau Acquis
USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET,"Use the ship to travel across the planet","Utilisez le vaisseau pour voyager sur la planète"
JUMP_BETWEEN_REGION_TEXT,"[b]Jump between regions[/b] Use the ship dashboard to choose the next region between two choices","[b]Changez de région[/b] Utilisez le tableau de bord pour changer de région parmi deux choix"
RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT,"[b]Recharge your ship with plant score[/b] The Internode has fuel for only one jump; recharge it with plants on the planet","[b]Rechargez votre vaisseau avec les scores de plantes[/b] L'Internode a du carburant pour un seul changement, rechargez le avec en plantant sur la planète"
SHIP_IS_READY_TO_TAKE_OFF,Ship is ready to take off,Le vaisseau est prêt à partir
TUTORIAL_FINISHED,Tutorial finished,Tutoriel terminé
CHOOSE_NEXT_STOP,Choose next stop,Choisissez le prochain arrêt
@@ -229,8 +238,20 @@ HUMID,Humid,Humide
HUMID_MODIFIER_DESC_TEXT,Reduce the number of [b]Recharge[/b],Réduit le nombre de [b]Recharge[/b]
POOR,Poor,Pauvre
POOR_MODIFIER_DESC_TEXT,Reduce the number of [b]Talion Veins[/b],Réduit le nombre de [b]Veine de Talion[/b]
ROCKY,Rocky,Rocheux
ROCKY_MODIFIER_DESC_TEXT,There is no [b]Talion Veins[/b] in the area,Aucune [b]Veine de Talion[/b] dans la zone
TOXIC,Toxic,Toxique
TOXIC_MODIFIER_DESC_TEXT,Reduce all plant lifetime by 1,Réduit la durée de vie de toutes les plantes de 1
SANDY,Sandy,Sableux
SANDY_MODIFIER_DESC_TEXT,Reduce plants influence radius,Réduit le rayon d'influence des plantes
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
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
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é
PASS_THE_MYSTERIOUS_DOOR,Go through the mysterious door,Franchissez la porte mystérieuse
NEXT_STOP,Next Stop,Prochain arrêt
ORBIT,Orbit,Orbite
1 keys en fr
19 RESUME_GAME Resume Reprendre
20 RESTART Restart Recommencer
21 QUIT Quit Quitter
22 THIS_GAME_USE_AUTOSAVE This game use autosave Ce jeu sauvegarde votre progression automatiquement
23 CHOOSE_GAME_MODE Choose game mode Choisissez le mode de jeu
24 STORY_MODE Story Mode Mode Histoire
25 INFINITE_MODE Infinite Mode Mode Infini
71 TOUGH_EFFECT_TEXT Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon} Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}
72 FERTILE Fertile Fertile
73 FERTILE_EFFECT_TEXT Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon} Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon}
74 EPHEMERAL PURIFICATION Ephemeral Purification Éphémère Purification
EPHEMERAL_EFFECT_TEXT Add [b]{seed_number}[/b]{seed_icon} but [b]{lifetime_change}[/b]{lifetime_icon} Ajoute [b]{seed_number}[/b]{seed_icon} mais [b]{lifetime_change}[/b]{lifetime_icon}
PURIFICATION Purification Épuration
75 PURIFICATION_EFFECT_TEXT When mature, create fertile zone in a radius of [b]{purification_radius}[/b] Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]
76 HURRIED Hurried Pressé
77 HURRIED_EFFECT_TEXT [b]{growing_time_change}[/b]{growing_time_icon} [b]{growing_time_change}[/b]{growing_time_icon}
109 PICKAXE_DESC_TEXT Can dig rock and precious materials Peut creuser la roche et des matériaux précieux
110 DIG Dig Creuser
111 OPEN Open Ouvrir
112 %s_SEED %s Seed Graine de %s
113 PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE Plant [b]%s[/b]. Must be used in the fertile zone. Plante [b]%s[/b]. Doit être utilisée dans la zone fertile.
114 PLANT_%s Plant [b]%s[/b] Planter [b]%s[/b]
115 MOVE_WITH_RIGHT_CLICK_OR_WASD Move with right click or WASD Déplace-toi avec le clic droit ou ZQSD
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 [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
128 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
129 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_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
133 %d_PLANT_POINT %d Plant Point %d Point de plante
134 %d_PLANT_POINTS %d Plant Points %d Points de plante
135 SCORE_%d Score %d Score %d
202 TAKE_OFF Take Off Décoller
203 NO_MORE_ENERGY No more energy Plus assez d'énergie
204 NO_RECHARGE_LEFT No recharge left, give up to try again Pas de recharge restante, abandonnez pour recommencer
205 SHIP_ACQUIRED Ship Acquired Vaisseau Acquis
206 USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET Use the ship to travel across the planet Utilisez le vaisseau pour voyager sur la planète
207 JUMP_BETWEEN_REGION_TEXT [b]Jump between regions[/b] Use the ship dashboard to choose the next region between two choices [b]Changez de région[/b] Utilisez le tableau de bord pour changer de région parmi deux choix
208 RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT [b]Recharge your ship with plant score[/b] The Internode has fuel for only one jump; recharge it with plants on the planet [b]Rechargez votre vaisseau avec les scores de plantes[/b] L'Internode a du carburant pour un seul changement, rechargez le avec en plantant sur la planète
209 SHIP_IS_READY_TO_TAKE_OFF Ship is ready to take off Le vaisseau est prêt à partir
210 TUTORIAL_FINISHED Tutorial finished Tutoriel terminé
211 CHOOSE_NEXT_STOP Choose next stop Choisissez le prochain arrêt
238 HUMID_MODIFIER_DESC_TEXT Reduce the number of [b]Recharge[/b] Réduit le nombre de [b]Recharge[/b]
239 POOR Poor Pauvre
240 POOR_MODIFIER_DESC_TEXT Reduce the number of [b]Talion Veins[/b] Réduit le nombre de [b]Veine de Talion[/b]
241 ROCKY Rocky Rocheux
242 ROCKY_MODIFIER_DESC_TEXT There is no [b]Talion Veins[/b] in the area Aucune [b]Veine de Talion[/b] dans la zone
243 TOXIC Toxic Toxique
244 TOXIC_MODIFIER_DESC_TEXT Reduce all plant lifetime by 1 Réduit la durée de vie de toutes les plantes de 1
245 SANDY Sandy Sableux
246 SANDY_MODIFIER_DESC_TEXT Reduce plants influence radius Réduit le rayon d'influence des plantes
247 RADIOACTIVE Radioactive Radioactif
248 RADIOACTIVE_MODIFIER_DESC_TEXT Reduce the plant's base score by 1 Réduit le score de base des plantes de 1
249 CONTAMINATED Contaminated Contaminée
250 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
251 VENDING_MACHINES Vending Machines Distributeurs
252 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
253 RESONNANCE Resonnance Résonnance
254 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é
255 PASS_THE_MYSTERIOUS_DOOR Go through the mysterious door Franchissez la porte mystérieuse
256 NEXT_STOP Next Stop Prochain arrêt
257 ORBIT Orbit Orbite