5 Commits

Author SHA1 Message Date
22b753c6a9 Dev 0.1
* Structure de l'histoire principale
* Line sur le perso principal
* Agrandissement de la zone de détection des cellules
* Ajout du spray de Talion (+1 points de plante de base)
* Ajout de feedback sur l'usage des cellules d'énergie
2026-07-06 23:05:39 +02:00
d0446e8826 Ajout de tous les fichiers de dialogues 2026-07-06 18:01:02 +02:00
Altaezio
5d724e2c63 Sprite des cellules ne montrent plus un fond 2026-07-02 11:27:36 +02:00
Altaezio
45281057f2 drag from inventory + fixed some warnings + tractor beam effect on top of rocks 2026-07-02 11:04:01 +02:00
Altaezio
53e86be2ce Animation des cellules entre les jours corrigées 2026-07-02 10:41:04 +02:00
119 changed files with 1688 additions and 249 deletions

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://bu87qluncx6pd"
path="res://.godot/imported/aqua.mp3-0d6e6fca8525376ee9d208a606348ba9.mp3str"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/aqua.mp3"
dest_files=["res://.godot/imported/aqua.mp3-0d6e6fca8525376ee9d208a606348ba9.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://urh63a8tgsd0"
path="res://.godot/imported/astra.ogg-2a61314797c2f4f96a5fbfc70bd8543d.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/astra.ogg"
dest_files=["res://.godot/imported/astra.ogg-2a61314797c2f4f96a5fbfc70bd8543d.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bkf62homs848n"
path="res://.godot/imported/estia.ogg-5a67cadf4221800898513f5ad486335d.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/estia.ogg"
dest_files=["res://.godot/imported/estia.ogg-5a67cadf4221800898513f5ad486335d.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://dsqdt1ddvlyal"
path="res://.godot/imported/borea_lever.mp3-6c76a0e5e78025311230b59292d6bc98.mp3str"
[deps]
source_file="res://common/audio_manager/assets/sfx/borea_lever/borea_lever.mp3"
dest_files=["res://.godot/imported/borea_lever.mp3-6c76a0e5e78025311230b59292d6bc98.mp3str"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -12,7 +12,6 @@
[ext_resource type="AudioStream" uid="uid://dsphn6dbbd55a" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_1.ogg" id="6_6o1yh"] [ext_resource type="AudioStream" uid="uid://dsphn6dbbd55a" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_1.ogg" id="6_6o1yh"]
[ext_resource type="AudioStream" uid="uid://cwu71o0sl2vto" path="res://common/audio_manager/assets/ambiance/dialogues/ambiance_Demeter.ogg" id="6_8204s"] [ext_resource type="AudioStream" uid="uid://cwu71o0sl2vto" path="res://common/audio_manager/assets/ambiance/dialogues/ambiance_Demeter.ogg" id="6_8204s"]
[ext_resource type="AudioStream" uid="uid://klb32q3kjtkt" path="res://common/audio_manager/assets/ambiance/vending_room_base_relais/ambiance_vending_room_base_relais.ogg" id="7_ge2sc"] [ext_resource type="AudioStream" uid="uid://klb32q3kjtkt" path="res://common/audio_manager/assets/ambiance/vending_room_base_relais/ambiance_vending_room_base_relais.ogg" id="7_ge2sc"]
[ext_resource type="AudioStream" uid="uid://c8gbtdul2x8ws" path="res://common/audio_manager/assets/ambiance/borea/ambiance_borea.ogg" id="7_spekb"]
[ext_resource type="AudioStream" uid="uid://bpf6witukorka" path="res://common/audio_manager/assets/morceaux/menu/main_menu.ogg" id="7_tuvql"] [ext_resource type="AudioStream" uid="uid://bpf6witukorka" path="res://common/audio_manager/assets/morceaux/menu/main_menu.ogg" id="7_tuvql"]
[ext_resource type="AudioStream" uid="uid://bmwaw1yb8hucf" path="res://common/audio_manager/assets/ambiance/vaisseau/ship_music.ogg" id="8_tuvql"] [ext_resource type="AudioStream" uid="uid://bmwaw1yb8hucf" path="res://common/audio_manager/assets/ambiance/vaisseau/ship_music.ogg" id="8_tuvql"]
[ext_resource type="AudioStream" uid="uid://ccimypx71o4g6" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_2.ogg" id="10_tq535"] [ext_resource type="AudioStream" uid="uid://ccimypx71o4g6" path="res://common/audio_manager/assets/morceaux/niveau/forest_phase_2.ogg" id="10_tq535"]
@@ -42,8 +41,11 @@
[ext_resource type="AudioStream" uid="uid://dq5qwydrca3vy" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_5.wav" id="22_aedoe"] [ext_resource type="AudioStream" uid="uid://dq5qwydrca3vy" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_5.wav" id="22_aedoe"]
[ext_resource type="AudioStream" uid="uid://d1cpi438ep0ys" path="res://common/audio_manager/assets/sfx/announce/annnounce.wav" id="22_btfwx"] [ext_resource type="AudioStream" uid="uid://d1cpi438ep0ys" path="res://common/audio_manager/assets/sfx/announce/annnounce.wav" id="22_btfwx"]
[ext_resource type="AudioStream" uid="uid://ch8wnrckanydg" path="res://common/audio_manager/assets/morceaux/histoire/meeting_demeter.ogg" id="22_mrdk3"] [ext_resource type="AudioStream" uid="uid://ch8wnrckanydg" path="res://common/audio_manager/assets/morceaux/histoire/meeting_demeter.ogg" id="22_mrdk3"]
[ext_resource type="AudioStream" uid="uid://bu87qluncx6pd" path="res://common/audio_manager/assets/morceaux/histoire/aqua.mp3" id="22_uaco0"]
[ext_resource type="AudioStream" uid="uid://bnwtgp8t46xwc" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_6.wav" id="23_ge2sc"] [ext_resource type="AudioStream" uid="uid://bnwtgp8t46xwc" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_6.wav" id="23_ge2sc"]
[ext_resource type="AudioStream" uid="uid://bkf62homs848n" path="res://common/audio_manager/assets/morceaux/histoire/estia.ogg" id="24_eeq8n"]
[ext_resource type="AudioStream" uid="uid://bp3wsncvda5gl" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_7.wav" id="24_yr73o"] [ext_resource type="AudioStream" uid="uid://bp3wsncvda5gl" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_7.wav" id="24_yr73o"]
[ext_resource type="AudioStream" uid="uid://urh63a8tgsd0" path="res://common/audio_manager/assets/morceaux/histoire/astra.ogg" id="25_1r4ky"]
[ext_resource type="AudioStream" uid="uid://8juy5ev3rdfh" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_1.wav" id="29_ngi21"] [ext_resource type="AudioStream" uid="uid://8juy5ev3rdfh" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_1.wav" id="29_ngi21"]
[ext_resource type="AudioStream" uid="uid://su387eovtrsg" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_2.wav" id="30_xmumj"] [ext_resource type="AudioStream" uid="uid://su387eovtrsg" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_2.wav" id="30_xmumj"]
[ext_resource type="AudioStream" uid="uid://bp6mtpqjf4txo" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_3.wav" id="31_spekb"] [ext_resource type="AudioStream" uid="uid://bp6mtpqjf4txo" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_3.wav" id="31_spekb"]
@@ -167,19 +169,14 @@ unique_name_in_owner = true
stream = ExtResource("5_ipd1r") stream = ExtResource("5_ipd1r")
volume_db = -15.0 volume_db = -15.0
[node name="Astra" type="AudioStreamPlayer" parent="Ambiances" unique_id=1244577212]
unique_name_in_owner = true
stream = ExtResource("5_8204s")
volume_db = -5.0
[node name="Demeter" type="AudioStreamPlayer" parent="Ambiances" unique_id=351918026] [node name="Demeter" type="AudioStreamPlayer" parent="Ambiances" unique_id=351918026]
unique_name_in_owner = true unique_name_in_owner = true
stream = ExtResource("6_8204s") stream = ExtResource("6_8204s")
volume_db = -5.0 volume_db = -5.0
[node name="Borea" type="AudioStreamPlayer" parent="Ambiances" unique_id=1857904648] [node name="Astra" type="AudioStreamPlayer" parent="Ambiances" unique_id=1244577212]
unique_name_in_owner = true unique_name_in_owner = true
stream = ExtResource("7_spekb") stream = ExtResource("5_8204s")
volume_db = -5.0 volume_db = -5.0
[node name="Ship" type="AudioStreamPlayer" parent="Ambiances" unique_id=1564186965] [node name="Ship" type="AudioStreamPlayer" parent="Ambiances" unique_id=1564186965]
@@ -187,10 +184,6 @@ unique_name_in_owner = true
stream = ExtResource("8_tuvql") stream = ExtResource("8_tuvql")
volume_db = -5.0 volume_db = -5.0
[node name="Subterra" type="AudioStreamPlayer" parent="Ambiances" unique_id=2019011683]
unique_name_in_owner = true
stream = ExtResource("12_mrdk3")
[node name="Musics" type="Node" parent="." unique_id=1450527710] [node name="Musics" type="Node" parent="." unique_id=1450527710]
unique_name_in_owner = true unique_name_in_owner = true
@@ -247,10 +240,29 @@ stream = ExtResource("7_tuvql")
volume_db = -5.0 volume_db = -5.0
bus = &"Music" bus = &"Music"
[node name="Meeting_demeter" type="AudioStreamPlayer" parent="Musics" unique_id=1066359159] [node name="MeetingDemeter" type="AudioStreamPlayer" parent="Musics" unique_id=1066359159]
unique_name_in_owner = true unique_name_in_owner = true
stream = ExtResource("22_mrdk3") stream = ExtResource("22_mrdk3")
[node name="Aqua" type="AudioStreamPlayer" parent="Musics" unique_id=1941388305]
unique_name_in_owner = true
stream = ExtResource("22_uaco0")
volume_db = -5.0
[node name="Subterra" type="AudioStreamPlayer" parent="Musics" unique_id=2019011683]
unique_name_in_owner = true
stream = ExtResource("12_mrdk3")
[node name="Estia" type="AudioStreamPlayer" parent="Musics" unique_id=531815272]
unique_name_in_owner = true
stream = ExtResource("24_eeq8n")
volume_db = -5.0
[node name="AstraEnd" type="AudioStreamPlayer" parent="Musics" unique_id=818527318]
unique_name_in_owner = true
stream = ExtResource("25_1r4ky")
volume_db = -5.0
[node name="Sfx" type="Node" parent="." unique_id=2023641207] [node name="Sfx" type="Node" parent="." unique_id=2023641207]
unique_name_in_owner = true unique_name_in_owner = true

View File

@@ -58,9 +58,6 @@ func _on_change_scene(scene : Scene):
elif scene is GarageScene: elif scene is GarageScene:
stop_all_musics() stop_all_musics()
play_ambiance_alone("Astra", false) play_ambiance_alone("Astra", false)
elif scene is BoreaScene:
play_music_alone("Meeting_demeter")
stop_all_ambiances()
elif scene is VendingMachineScene: elif scene is VendingMachineScene:
stop_all_musics() stop_all_musics()
play_ambiance_alone("VendingRoom", false) play_ambiance_alone("VendingRoom", false)
@@ -70,6 +67,21 @@ func _on_change_scene(scene : Scene):
elif scene is CaveScene: elif scene is CaveScene:
stop_all_musics() stop_all_musics()
play_ambiance_alone("Cave", false) play_ambiance_alone("Cave", false)
elif scene is BoreaScene:
play_music_alone("MeetingDemeter", false, 0.)
stop_all_ambiances()
elif scene is AquaScene:
play_music_alone("Aqua")
stop_all_ambiances()
elif scene is SubterraScene:
play_music_alone("Subterra")
stop_all_ambiances()
elif scene is EstiaScene:
play_music_alone("Estia")
stop_all_ambiances()
elif scene is AstraEndScene:
play_music_alone("AstraEnd")
stop_all_ambiances()
# Fonction s'exécutant à chaque début de timeline # Fonction s'exécutant à chaque début de timeline
func _on_timeline_started(): func _on_timeline_started():
@@ -207,7 +219,7 @@ func change_ambiances_volume(db_change := 0., fade := DEFAULT_FADE_TIME):
# Joue un # Joue un
# - player_name : Nom de la Node dans la scène Godot à jouer # - player_name : Nom de la Node dans la scène Godot à jouer
func play_sfx(sfx_name : String, pitch = 1.): func play_sfx(sfx_name : String, _pitch = 1.):
var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer
if player: if player:
player.play() player.play()

View File

@@ -0,0 +1,71 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cbfoonpkmmva8"
path="res://.godot/imported/talion_spray.blend-3cc293a04161d1f6f5e9c094a05903f8.scn"
[deps]
source_file="res://common/game_data/scripts/artefacts/talion_spray/talion_spray.blend"
dest_files=["res://.godot/imported/talion_spray.blend-3cc293a04161d1f6f5e9c094a05903f8.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={
"materials": {
"Material": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
"use_external/path": "uid://dvvi1k5c5iowc"
}
}
}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/vertex_colors=1
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2
gltf/texture_map_mode=1

View File

@@ -0,0 +1,14 @@
extends Artefact
class_name TalionSprayArtifact
func get_artefact_name() -> String:
return "TALION_SPRAY"
func get_artefact_desc() -> String:
return "TALION_SPRAY_DESC_TEXT"
func get_3d_scene() -> PackedScene:
return preload("res://common/game_data/scripts/artefacts/talion_spray/talion_spray.blend")
func modify_plant_base_score(plant_base_score : int) -> int:
return plant_base_score + 1

View File

@@ -0,0 +1 @@
uid://2eo5lucwktg4

View File

@@ -27,3 +27,15 @@ func unlock_new_mutation() -> PlantMutation:
func get_available_mutations() -> Array[PlantMutation]: func get_available_mutations() -> Array[PlantMutation]:
return get_all_mutations() return get_all_mutations()
func set_best_run(v := best_run):
if best_run < 10 and v == 10:
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_HIT_10_INFINITE)
if best_run < 20 and v == 20:
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_HIT_20_INFINITE)
if best_run < 30 and v == 30:
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_HIT_30_INFINITE)
best_run = v

View File

@@ -3,7 +3,7 @@ extends Resource
class_name ProgressionData class_name ProgressionData
@export var run_number : int = 0 @export var run_number : int = 0
@export var best_run : int = 0 @export var best_run : int = 0 : set = set_best_run
@abstract func get_story_step() -> StoryStep @abstract func get_story_step() -> StoryStep
@@ -21,6 +21,9 @@ class_name ProgressionData
@abstract func unlock_new_mutation() -> PlantMutation @abstract func unlock_new_mutation() -> PlantMutation
func set_best_run(v := best_run):
best_run = v
func get_all_mutations() -> Array[PlantMutation]: func get_all_mutations() -> Array[PlantMutation]:
return [ return [
QualityMutation.new(), QualityMutation.new(),
@@ -52,14 +55,19 @@ func get_all_artifacts() -> Array[Artefact]:
StabilisatorArtefact.new(), StabilisatorArtefact.new(),
TalionOverloaderArtefact.new(), TalionOverloaderArtefact.new(),
TalionSoilArtifact.new(), TalionSoilArtifact.new(),
TalionSprayArtifact.new()
] ]
func get_all_story_steps() -> Array[StoryStep]: func get_all_story_steps() -> Array[StoryStep]:
return [ return [
TutorialStoryStep.new(), # TutorialStoryStep.new(),
StartStoryStep.new(), # StartStoryStep.new(),
MercuryStoryStep.new(), # MercuryStoryStep.new(),
BoreaStoryStep.new() BoreaStoryStep.new(),
AquaStoryStep.new(),
SubterraStoryStep.new(),
EstiaStoryStep.new(),
AstraStoryStep.new(),
] ]
func finish_run(run : RunData): func finish_run(run : RunData):

View File

@@ -29,7 +29,7 @@ func is_region_sequence_infinite() -> bool:
return false return false
func get_region_sequence_length() -> int: func get_region_sequence_length() -> int:
return 7 return 2 #TO CHANGE TO 7
func get_first_vending_machine_occurence(_level : int) -> int: func get_first_vending_machine_occurence(_level : int) -> int:
return 2 return 2

View File

@@ -10,16 +10,6 @@ func get_respawn_scene() -> Scene:
true true
) )
func get_objective_for_region(l : int) -> int:
match l:
0: return 0
1: return 8
_: return get_objective_for_region(l-1) + l * 5
func get_region_sequence_length() -> int:
return 8
func get_destination_text() -> String: func get_destination_text() -> String:
return tr("BOREA_BASE") return tr("BOREA_BASE")

View File

@@ -0,0 +1,22 @@
extends StoryStep
class_name AquaStoryStep
const AQUA_TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/2_aqua/1_aqua_travel_phone_call.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
"BOREA_BASE",
"004",
true
)
func get_destination_text() -> String:
return tr("AQUA_BASE")
func get_destination_scene() -> Scene:
return AquaScene.new()
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 5:
return AQUA_TRAVEL_PHONE_CALL_DIALOG_PATH
return ""

View File

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

View File

@@ -0,0 +1,22 @@
extends StoryStep
class_name SubterraStoryStep
const TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/3_subterra/1_subterra_travel_phone_call.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
"AQUA_BASE",
"005",
true
)
func get_destination_text() -> String:
return tr("SUBTERRA_BASE")
func get_destination_scene() -> Scene:
return SubterraScene.new()
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 5:
return TRAVEL_PHONE_CALL_DIALOG_PATH
return ""

View File

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

View File

@@ -0,0 +1,22 @@
extends StoryStep
class_name EstiaStoryStep
const TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/4_estia/1_estia_travel_phone_call.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
"SUBTERRA_BASE",
"006",
true
)
func get_destination_text() -> String:
return tr("SUBTERRA_BASE")
func get_destination_scene() -> Scene:
return EstiaScene.new()
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 5:
return TRAVEL_PHONE_CALL_DIALOG_PATH
return ""

View File

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

View File

@@ -0,0 +1,22 @@
extends StoryStep
class_name AstraStoryStep
const TRAVEL_PHONE_CALL_DIALOG_PATH = "res://dialogs/timelines/6_astra/1_astra_travel_phone_call.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
"ESTIA_BASE",
"007",
true
)
func get_destination_text() -> String:
return tr("ESTIA_BASE")
func get_destination_scene() -> Scene:
return AstraEndScene.new()
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 4:
return TRAVEL_PHONE_CALL_DIALOG_PATH
return ""

View File

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

View File

@@ -3,19 +3,20 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://sdrr43mek1cl" uid="uid://sdrr43mek1cl"
path="res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.ctex" path.s3tc="res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.s3tc.ctex"
metadata={ metadata={
"vram_texture": false "imported_formats": ["s3tc_bptc"],
"vram_texture": true
} }
[deps] [deps]
source_file="res://common/icons/globe.svg" source_file="res://common/icons/globe.svg"
dest_files=["res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.ctex"] dest_files=["res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.s3tc.ctex"]
[params] [params]
compress/mode=0 compress/mode=2
compress/high_quality=false compress/high_quality=false
compress/lossy_quality=0.7 compress/lossy_quality=0.7
compress/uastc_level=0 compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1 compress/hdr_compression=1
compress/normal_map=0 compress/normal_map=0
compress/channel_pack=0 compress/channel_pack=0
mipmaps/generate=false mipmaps/generate=true
mipmaps/limit=-1 mipmaps/limit=-1
roughness/mode=0 roughness/mode=0
roughness/src_normal="" roughness/src_normal=""
@@ -37,7 +38,7 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false process/hdr_as_srgb=false
process/hdr_clamp_exposure=false process/hdr_clamp_exposure=false
process/size_limit=0 process/size_limit=0
detect_3d/compress_to=1 detect_3d/compress_to=0
svg/scale=2.0 svg/scale=2.0
editor/scale_with_editor_scale=false editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false editor/convert_colors_with_editor_theme=false

View File

@@ -0,0 +1,11 @@
extends Scene
class_name AquaScene
func get_scene_id() -> String:
return "AQUA_BASE"
func get_scene_path() -> String:
return "res://stages/3d_scenes/aqua_base/aqua_base.tscn"
func is_mouse_captured() -> bool:
return true

View File

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

View File

@@ -0,0 +1,11 @@
extends Scene
class_name AstraEndScene
func get_scene_id() -> String:
return "ASTRA_BASE"
func get_scene_path() -> String:
return "res://stages/3d_scenes/astra_base/astra_end_base.tscn"
func is_mouse_captured() -> bool:
return true

View File

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

View File

@@ -1,3 +1,4 @@
@tool
extends Scene extends Scene
class_name CockpitScene class_name CockpitScene

View File

@@ -0,0 +1,11 @@
extends Scene
class_name EstiaScene
func get_scene_id() -> String:
return "ESTIA_BASE"
func get_scene_path() -> String:
return "res://stages/3d_scenes/estia_base/estia_base.tscn"
func is_mouse_captured() -> bool:
return true

View File

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

View File

@@ -0,0 +1,11 @@
extends Scene
class_name SubterraScene
func get_scene_id() -> String:
return "SUBTERRA_BASE"
func get_scene_path() -> String:
return "res://stages/3d_scenes/subterra_base/subterra_base.tscn"
func is_mouse_captured() -> bool:
return true

View File

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

View File

@@ -8,6 +8,13 @@ const ACH_UNLOCK_ALL_MUTATION="STW_UNLOCK_ALL_MUTATIONS"
const ACH_KICK_YOUR_OLD_BODY="STW_KICK_YOUR_OLD_BODY" const ACH_KICK_YOUR_OLD_BODY="STW_KICK_YOUR_OLD_BODY"
const ACH_MERCURY_BASE="STW_REACH_MERCURY_BASE" const ACH_MERCURY_BASE="STW_REACH_MERCURY_BASE"
const ACH_REACH_VENUS_BASE="STW_REACH_VENUS_BASE" const ACH_REACH_VENUS_BASE="STW_REACH_VENUS_BASE"
const ACH_STW_REACH_AQUA_BASE="STW_REACH_AQUA_BASE"
const ACH_STW_REACH_SUBTERRA_BASE="STW_REACH_SUBTERRA_BASE"
const ACH_STW_REACH_ESTIA_BASE="STW_REACH_ESTIA_BASE"
const ACH_STW_REPAIR_THE_PLANET="STW_REPAIR_THE_PLANET"
const ACH_STW_HIT_10_INFINITE="STW_HIT_10_INFINITE"
const ACH_STW_HIT_20_INFINITE="STW_HIT_20_INFINITE"
const ACH_STW_HIT_30_INFINITE="STW_HIT_30_INFINITE"
func unlock_achievement(achivement_name : String): func unlock_achievement(achivement_name : String):
if Steam.isSteamRunning(): if Steam.isSteamRunning():

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -1,13 +0,0 @@
demeter: Wait.[pause=0.3].[pause=0.3].[pause=0.5] You don't know what humans are ![pause=0.5] Of course,[pause=0.2] since your database was corrupted I had to erase most of it. #id:7f
demeter: Humans are living creatures that are.[pause=0.3].[pause=0.3].[pause=0.5] Different than plants.[pause=0.5] They are mostly thinking and moving like us.[pause=0.5] Somehow,[pause=0.2] they are very cute creatures,[pause=0.2] that only live for less than a century. #id:80
demeter: One human is relatively intelligent,[pause=0.2] but don't be fooled,[pause=0.2] together,[pause=0.2] they did great things.[pause=0.5] In fact,[pause=0.2] they created us. #id:81
demeter: A long time ago,[pause=0.2] they discovered this planet.[pause=0.5] It was very different,[pause=0.2] plants were thriving everywhere ![pause=0.5] But then.[pause=0.3].[pause=0.3].[pause=0.5] they.[pause=0.3].[pause=0.3].[pause=0.5] I.[pause=0.3].[pause=0.3].[pause=0.5] #id:82
- What ? #id:83
- Are you lagging? #id:84
- Take your time. #id:85
demeter: Humans had one major flaw.[pause=0.5] Together,[pause=0.2] they built great things,[pause=0.2] but sometimes great things had a bad impact on the environment and even themselves. #id:86
- Where are they now ? #id:87
demeter: I prefer not to talk about that for now.[pause=0.3].[pause=0.3].[pause=0.3] But don't worry,[pause=0.2] they can no longer harm this planet. #id:88
- What happened ? #id:89
demeter: Sorry my child,[pause=0.3] I'm not ready to talk about that for now.[pause=0.3].[pause=0.3].[pause=0.3] You'll have your answers when you meet me. #id:8a
demeter: Enough talking about the past, let's talk about your mission. #id:ac

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,7 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: This dialog is not written yet
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/closing_transmission.wav"
leave demeter [animation="Fade Out" length="1.0"]
[wait time="2.0"]
[end_timeline]

View File

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

View File

@@ -0,0 +1,252 @@
[gd_scene format=3 uid="uid://cypsoytvytdup"]
[ext_resource type="PackedScene" uid="uid://cah00gew65ire" path="res://entities/interactable_3d/3d_door/assets/3d/door.blend" id="1_7a6nb"]
[ext_resource type="Script" uid="uid://u6dj6ud4mvk7" path="res://entities/interactable_3d/3d_door/scripts/3d_door.gd" id="1_08fm6"]
[ext_resource type="PackedScene" uid="uid://cc7uo5xqcplu8" path="res://entities/interactable_3d/3d_door/assets/3d/door_closed.blend" id="2_xjn0l"]
[ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="5_3uc8q"]
[sub_resource type="Animation" id="Animation_08fm6"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("door: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("door_closed:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Icon:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Icon2:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/4/type = "value"
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/path = NodePath("Icon:scale")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1.5, 1.5, 1.5)]
}
tracks/5/type = "value"
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/path = NodePath("Icon2:scale")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(1.5, 1.5, 1.5)]
}
[sub_resource type="Animation" id="Animation_3uc8q"]
resource_name = "activated"
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("door: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("door_closed:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Icon:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Icon2:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_7o3sc"]
resource_name = "deactivated"
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("door:visible")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("door_closed:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("Icon2:visible")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
tracks/3/type = "value"
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/path = NodePath("Icon:visible")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_p35e2"]
resource_name = "hover"
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Icon:scale")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.46666667, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1.5, 1.5, 1.5), Vector3(2, 2, 2), Vector3(1.5, 1.5, 1.5)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Icon2:scale")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.46666667, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1.5, 1.5, 1.5), Vector3(2, 2, 2), Vector3(1.5, 1.5, 1.5)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_p35e2"]
_data = {
&"RESET": SubResource("Animation_08fm6"),
&"activated": SubResource("Animation_3uc8q"),
&"deactivated": SubResource("Animation_7o3sc"),
&"hover": SubResource("Animation_p35e2")
}
[sub_resource type="BoxShape3D" id="BoxShape3D_g4v7s"]
size = Vector3(1, 5.1875, 5.140625)
[node name="3dDoor" type="Area3D" unique_id=814731756 node_paths=PackedStringArray("hover_animation_player")]
script = ExtResource("1_08fm6")
interactable = false
hover_animation_player = NodePath("AnimationPlayer")
[node name="door" parent="." unique_id=48771245 instance=ExtResource("1_7a6nb")]
[node name="door_closed" parent="." unique_id=366011214 instance=ExtResource("2_xjn0l")]
visible = false
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=545958515]
libraries/ = SubResource("AnimationLibrary_p35e2")
[node name="Icon" type="Sprite3D" parent="." unique_id=368585741]
unique_name_in_owner = true
transform = Transform3D(-6.556708e-08, 0, -1.5, 0, 1.5, 0, 1.5, 0, -6.556708e-08, 0.1830883, -0.8157884, 0.62879825)
texture = ExtResource("5_3uc8q")
[node name="Icon2" type="Sprite3D" parent="." unique_id=286944398]
unique_name_in_owner = true
transform = Transform3D(-6.556708e-08, 0, -1.5, 0, 1.5, 0, 1.5, 0, -6.556708e-08, -0.15410006, -0.8157884, 0.62879825)
flip_h = true
texture = ExtResource("5_3uc8q")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1859296170]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0390625, -0.03125)
shape = SubResource("BoxShape3D_g4v7s")

Binary file not shown.

View File

@@ -4,18 +4,20 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://cah00gew65ire" uid="uid://cah00gew65ire"
path="res://.godot/imported/door.blend-c87f276c56915caea51fe7d3dbe0db91.scn" path="res://.godot/imported/door.blend-eece18402c8800106d851ddc37f797c8.scn"
[deps] [deps]
source_file="res://stages/3d_scenes/common/assets/3d/door.blend" source_file="res://entities/interactable_3d/3d_door/assets/3d/door.blend"
dest_files=["res://.godot/imported/door.blend-c87f276c56915caea51fe7d3dbe0db91.scn"] dest_files=["res://.godot/imported/door.blend-eece18402c8800106d851ddc37f797c8.scn"]
[params] [params]
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -52,7 +54,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true blender/nodes/cameras=true
blender/nodes/custom_properties=true blender/nodes/custom_properties=true
blender/nodes/modifiers=1 blender/nodes/modifiers=1
blender/meshes/colors=false blender/meshes/vertex_colors=2
blender/meshes/uvs=true blender/meshes/uvs=true
blender/meshes/normals=true blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false blender/meshes/export_geometry_nodes_instances=false
@@ -66,3 +68,4 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=2 gltf/naming_version=2
gltf/texture_map_mode=0

View File

@@ -0,0 +1,71 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cc7uo5xqcplu8"
path="res://.godot/imported/door_closed.blend-507164d9450864a513b7fc7bb246c74c.scn"
[deps]
source_file="res://entities/interactable_3d/3d_door/assets/3d/door_closed.blend"
dest_files=["res://.godot/imported/door_closed.blend-507164d9450864a513b7fc7bb246c74c.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={
"materials": {
"Default3D": {
"use_external/enabled": true,
"use_external/fallback_path": "res://common/assets/materials/default_3d.tres",
"use_external/path": "uid://dvvi1k5c5iowc"
}
}
}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/vertex_colors=1
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2
gltf/texture_map_mode=1

View File

@@ -0,0 +1,21 @@
@tool
extends Interactable3D
class_name Door3d
@export var to_scene : Scene : set = set_to_scene
func _ready():
set_to_scene()
interactable = interactable
func set_to_scene(v : Scene = to_scene):
to_scene = v
if is_node_ready() and to_scene:
%Icon.texture = to_scene.get_scene_icon()
%Icon2.texture = to_scene.get_scene_icon()
func click():
if interactable:
clicked.emit()
if to_scene:
SceneManager.change_to_scene(to_scene)

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cf554gg3t0miv"
path="res://.godot/imported/energy_cell_off - SAVE.png-1628a904600f784017aee64f240ea4ec.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/interactables/energy_cell/assets/sprites/energy_cell_off - SAVE.png"
dest_files=["res://.godot/imported/energy_cell_off - SAVE.png-1628a904600f784017aee64f240ea4ec.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.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -3,6 +3,7 @@
[ext_resource type="Script" uid="uid://b25sqd4v2i3v2" path="res://entities/interactables/energy_cell/scripts/energy_cell.gd" id="1_nheea"] [ext_resource type="Script" uid="uid://b25sqd4v2i3v2" path="res://entities/interactables/energy_cell/scripts/energy_cell.gd" id="1_nheea"]
[ext_resource type="Texture2D" uid="uid://ds65vxsiitxit" path="res://entities/interactables/energy_cell/assets/sprites/energy_cell_on.png" id="2_fnyaf"] [ext_resource type="Texture2D" uid="uid://ds65vxsiitxit" path="res://entities/interactables/energy_cell/assets/sprites/energy_cell_on.png" id="2_fnyaf"]
[ext_resource type="Texture2D" uid="uid://dh6jdqoy2xu65" path="res://entities/interactables/energy_cell/assets/sprites/energy_cell_off.png" id="3_t6ydv"] [ext_resource type="Texture2D" uid="uid://dh6jdqoy2xu65" path="res://entities/interactables/energy_cell/assets/sprites/energy_cell_off.png" id="3_t6ydv"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="4_fnyaf"]
[sub_resource type="CircleShape2D" id="CircleShape2D_ylpt4"] [sub_resource type="CircleShape2D" id="CircleShape2D_ylpt4"]
radius = 39.115215 radius = 39.115215
@@ -100,3 +101,10 @@ shape = SubResource("CircleShape2D_ylpt4")
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1320210428] [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1320210428]
unique_name_in_owner = true unique_name_in_owner = true
libraries/ = SubResource("AnimationLibrary_d2c63") libraries/ = SubResource("AnimationLibrary_d2c63")
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1285579466]
[node name="EnergyParticle" type="Sprite2D" parent="CanvasLayer" unique_id=786670396]
unique_name_in_owner = true
position = Vector2(100, 100)
texture = ExtResource("4_fnyaf")

View File

@@ -1,4 +1,3 @@
@tool
extends Interactable extends Interactable
class_name EnergyCell class_name EnergyCell
@@ -8,6 +7,7 @@ const GIVEN_ENERGY = 1
func _ready(): func _ready():
set_used() set_used()
%EnergyParticle.visible = false
func set_used(v = used): func set_used(v = used):
used = v used = v
@@ -18,6 +18,11 @@ func set_used(v = used):
%SpriteOff.visible = used %SpriteOff.visible = used
%SpriteOn.visible = not used %SpriteOn.visible = not used
func pointer_text() -> String:
if used:
return tr("%s_USED") % tr(default_info_title)
return default_info_title
func can_interact(p : Player) -> bool: func can_interact(p : Player) -> bool:
return p.data.energy < p.data.max_energy return p.data.energy < p.data.max_energy
@@ -26,13 +31,30 @@ func interact(p : Player) -> bool:
used = true used = true
available = false available = false
await spawn_energy_particle()
p.data.energy += GIVEN_ENERGY p.data.energy += GIVEN_ENERGY
interacted.emit(p) interacted.emit(p)
region.data.used_objects.append(name) region.data.used_objects.append(name)
AudioManager.play_sfx("Recharge1")
return true return true
return false return false
func spawn_energy_particle():
var screen_size = get_viewport().get_visible_rect().size
%EnergyParticle.visible = true
%EnergyParticle.position = (
(global_position - region.camera.global_position) * get_viewport().get_camera_2d().zoom
+ ((screen_size) / 2)
)
var tween = create_tween()
tween.set_trans(Tween.TransitionType.TRANS_SPRING)
tween.tween_property(%EnergyParticle,"position",Vector2(100,100),1.)
await tween.finished
AudioManager.play_sfx("Recharge1")
%EnergyParticle.visible = false

View File

@@ -131,7 +131,6 @@ libraries/ = SubResource("AnimationLibrary_ng3e4")
autoplay = &"default" autoplay = &"default"
[node name="TractorBeam" type="CPUParticles2D" parent="." unique_id=382704689] [node name="TractorBeam" type="CPUParticles2D" parent="." unique_id=382704689]
z_index = -1
position = Vector2(83, 0) position = Vector2(83, 0)
scale = Vector2(0.7, 0.7) scale = Vector2(0.7, 0.7)
emitting = false emitting = false

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8jej5dv8qy13"
path="res://.godot/imported/talion_cell_off - SAVE.png-ab748f617cf76620f977b70e834f8ac8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/interactables/talion_cell/assets/sprites/talion_cell_off - SAVE.png"
dest_files=["res://.godot/imported/talion_cell_off - SAVE.png-ab748f617cf76620f977b70e834f8ac8.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.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -18,6 +18,11 @@ func set_used(v = used):
%SpriteOff.visible = used %SpriteOff.visible = used
%SpriteOn.visible = not used %SpriteOn.visible = not used
func pointer_text() -> String:
if used:
return tr("%s_USED") % tr(default_info_title)
return default_info_title
func interact(p : Player) -> bool: func interact(p : Player) -> bool:
if not used and region: if not used and region:
used = true used = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwjixsd8nssnl"
path="res://.godot/imported/robot_big_line.png-5ca66c48d2c95407c22b892fe8eab474.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://entities/player/assets/sprites/robot_big_line.png"
dest_files=["res://.godot/imported/robot_big_line.png-5ca66c48d2c95407c22b892fe8eab474.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: 312 KiB

View File

@@ -15,9 +15,9 @@ const DOOR_ICON = preload("res://common/icons/logout.svg")
const PLANT_ICON = preload("res://common/icons/seedling.svg") const PLANT_ICON = preload("res://common/icons/seedling.svg")
const SOUND_SOURCE : AudioStreamMP3 = preload("res://common/audio_manager/assets/sfx/signal/signal.mp3") const SOUND_SOURCE : AudioStreamMP3 = preload("res://common/audio_manager/assets/sfx/signal/signal.mp3")
const SOUND_BASE_PITCH = 1. const SOUND_BASE_PITCH = 1.
const SOUND_NIVEL_LEVEL = 6 const SOUND_NIVEL_LEVEL = 8
const CELL_DETECTION_MAX_DISTANCE = 2000. const CELL_DETECTION_MAX_DISTANCE = 3000.
const CELL_DETECTION_COLOR : Color = Color("#ff006e") const CELL_DETECTION_COLOR : Color = Color("#ff006e")
const CELL_DETECTION_MAX_PITCH = 1.5 const CELL_DETECTION_MAX_PITCH = 1.5

View File

@@ -3,7 +3,7 @@
[ext_resource type="Script" uid="uid://das7twcy5153p" path="res://entities/player/scripts/player.gd" id="1_abrql"] [ext_resource type="Script" uid="uid://das7twcy5153p" path="res://entities/player/scripts/player.gd" id="1_abrql"]
[ext_resource type="Texture2D" uid="uid://dompaj451gklw" path="res://entities/player/assets/sprites/movement_particles.png" id="2_bls4j"] [ext_resource type="Texture2D" uid="uid://dompaj451gklw" path="res://entities/player/assets/sprites/movement_particles.png" id="2_bls4j"]
[ext_resource type="Texture2D" uid="uid://ys5fis3gsnoy" path="res://entities/player/assets/sprites/shadow.png" id="2_fkugw"] [ext_resource type="Texture2D" uid="uid://ys5fis3gsnoy" path="res://entities/player/assets/sprites/shadow.png" id="2_fkugw"]
[ext_resource type="Texture2D" uid="uid://c7ff87jniga5m" path="res://entities/player/assets/sprites/robot.png" id="4_bls4j"] [ext_resource type="Texture2D" uid="uid://cwjixsd8nssnl" path="res://entities/player/assets/sprites/robot_big_line.png" id="3_26q78"]
[ext_resource type="Texture2D" uid="uid://drgl0d51d4cf7" path="res://entities/player/assets/sprites/radial-gradient.png" id="5_8fjmc"] [ext_resource type="Texture2D" uid="uid://drgl0d51d4cf7" path="res://entities/player/assets/sprites/radial-gradient.png" id="5_8fjmc"]
[ext_resource type="Script" uid="uid://b1mmtgmi5oq86" path="res://entities/player/scripts/player_sprite.gd" id="5_fkugw"] [ext_resource type="Script" uid="uid://b1mmtgmi5oq86" path="res://entities/player/scripts/player_sprite.gd" id="5_fkugw"]
[ext_resource type="Texture2D" uid="uid://51255tpyl6vj" path="res://common/icons/no-bolt.svg" id="7_26q78"] [ext_resource type="Texture2D" uid="uid://51255tpyl6vj" path="res://common/icons/no-bolt.svg" id="7_26q78"]
@@ -27,101 +27,101 @@ fill = 1
fill_from = Vector2(0.5, 0.5) fill_from = Vector2(0.5, 0.5)
fill_to = Vector2(0.5, 0) fill_to = Vector2(0.5, 0)
[sub_resource type="AtlasTexture" id="AtlasTexture_fkugw"]
atlas = ExtResource("4_bls4j")
region = Rect2(3048, 0, 762, 1080)
[sub_resource type="AtlasTexture" id="AtlasTexture_8fjmc"]
atlas = ExtResource("4_bls4j")
region = Rect2(3810, 0, 762, 1080)
[sub_resource type="AtlasTexture" id="AtlasTexture_qiwj3"]
atlas = ExtResource("4_bls4j")
region = Rect2(2286, 0, 762, 1080)
[sub_resource type="AtlasTexture" id="AtlasTexture_26q78"]
atlas = ExtResource("4_bls4j")
region = Rect2(0, 0, 762, 1080)
[sub_resource type="AtlasTexture" id="AtlasTexture_bectd"] [sub_resource type="AtlasTexture" id="AtlasTexture_bectd"]
atlas = ExtResource("4_bls4j") atlas = ExtResource("3_26q78")
region = Rect2(5334, 0, 762, 1080) region = Rect2(1388, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_wvtmh"] [sub_resource type="AtlasTexture" id="AtlasTexture_wvtmh"]
atlas = ExtResource("4_bls4j") atlas = ExtResource("3_26q78")
region = Rect2(762, 0, 762, 1080) region = Rect2(1735, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_7thud"] [sub_resource type="AtlasTexture" id="AtlasTexture_7thud"]
atlas = ExtResource("4_bls4j") atlas = ExtResource("3_26q78")
region = Rect2(4572, 0, 762, 1080) region = Rect2(1041, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1qjk"] [sub_resource type="AtlasTexture" id="AtlasTexture_a1qjk"]
atlas = ExtResource("4_bls4j") atlas = ExtResource("3_26q78")
region = Rect2(1524, 0, 762, 1080) region = Rect2(0, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_j3ovn"]
atlas = ExtResource("3_26q78")
region = Rect2(2429, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_afbqv"]
atlas = ExtResource("3_26q78")
region = Rect2(347, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_gx6sm"]
atlas = ExtResource("3_26q78")
region = Rect2(2082, 0, 347, 347)
[sub_resource type="AtlasTexture" id="AtlasTexture_yqrof"]
atlas = ExtResource("3_26q78")
region = Rect2(694, 0, 347, 347)
[sub_resource type="SpriteFrames" id="SpriteFrames_a1qjk"] [sub_resource type="SpriteFrames" id="SpriteFrames_a1qjk"]
animations = [{ animations = [{
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_fkugw")
}],
"loop": true,
"name": &"back",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8fjmc")
}],
"loop": true,
"name": &"back_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_qiwj3")
}],
"loop": true,
"name": &"back_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_26q78")
}],
"loop": true,
"name": &"front",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_bectd") "texture": SubResource("AtlasTexture_bectd")
}], }],
"loop": true, "loop": 1,
"name": &"front_left", "name": &"back",
"speed": 5.0 "speed": 5.0
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_wvtmh") "texture": SubResource("AtlasTexture_wvtmh")
}], }],
"loop": true, "loop": 1,
"name": &"front_right", "name": &"back_left",
"speed": 5.0 "speed": 5.0
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_7thud") "texture": SubResource("AtlasTexture_7thud")
}], }],
"loop": true, "loop": 1,
"name": &"left", "name": &"back_right",
"speed": 5.0 "speed": 5.0
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_a1qjk") "texture": SubResource("AtlasTexture_a1qjk")
}], }],
"loop": true, "loop": 1,
"name": &"front",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_j3ovn")
}],
"loop": 1,
"name": &"front_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_afbqv")
}],
"loop": 1,
"name": &"front_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_gx6sm")
}],
"loop": 1,
"name": &"left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yqrof")
}],
"loop": 1,
"name": &"right", "name": &"right",
"speed": 5.0 "speed": 5.0
}] }]
@@ -130,7 +130,7 @@ animations = [{
blend_mode = 1 blend_mode = 1
[sub_resource type="Curve" id="Curve_fkugw"] [sub_resource type="Curve" id="Curve_fkugw"]
_data = [Vector2(0, 0.14473677), 0.0, 0.0, 0, 0, Vector2(0.972549, 0.2654798), 0.0, 0.0, 0, 0] _data = [Vector2(0.006711416, 0.21238941), 0.0, 0.0, 0, 0, Vector2(1, 0.5083333), 0.0, 0.0, 0, 0]
point_count = 2 point_count = 2
[sub_resource type="Gradient" id="Gradient_bls4j"] [sub_resource type="Gradient" id="Gradient_bls4j"]
@@ -142,7 +142,7 @@ length = 0.001
tracks/0/type = "bezier" tracks/0/type = "bezier"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath(".:position:y") tracks/0/path = NodePath(".:offset:y")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
@@ -157,12 +157,12 @@ loop_mode = 1
tracks/0/type = "bezier" tracks/0/type = "bezier"
tracks/0/imported = false tracks/0/imported = false
tracks/0/enabled = true tracks/0/enabled = true
tracks/0/path = NodePath(".:position:y") tracks/0/path = NodePath(".:offset:y")
tracks/0/interp = 1 tracks/0/interp = 1
tracks/0/loop_wrap = true tracks/0/loop_wrap = true
tracks/0/keys = { tracks/0/keys = {
"handle_modes": PackedInt32Array(2, 2), "handle_modes": PackedInt32Array(2, 2),
"points": PackedFloat32Array(-1097.2793, 0, 0, 0, -139.75659, -1097.2793, 0, -112.66321, 0, 0), "points": PackedFloat32Array(0, -0.24854341, 55.161533, 0.2, -44.387848, 0, -0.23333335, -52.649887, 0, 0),
"times": PackedFloat32Array(0, 1) "times": PackedFloat32Array(0, 1)
} }
@@ -314,13 +314,13 @@ texture = SubResource("GradientTexture2D_26q78")
[node name="PlayerSprite" type="AnimatedSprite2D" parent="." unique_id=638545037] [node name="PlayerSprite" type="AnimatedSprite2D" parent="." unique_id=638545037]
unique_name_in_owner = true unique_name_in_owner = true
position = Vector2(0.99999994, -17) position = Vector2(0.99999994, -17)
scale = Vector2(0.0656168, 0.065616846) scale = Vector2(0.221, 0.221)
sprite_frames = SubResource("SpriteFrames_a1qjk") sprite_frames = SubResource("SpriteFrames_a1qjk")
animation = &"front_left" animation = &"left"
frame_progress = 0.15805355 frame_progress = 0.2383069
offset = Vector2(0, -370) offset = Vector2(0, -150)
script = ExtResource("5_fkugw") script = ExtResource("5_fkugw")
wanted_orientation = 2 wanted_orientation = 7
[node name="Light" type="Sprite2D" parent="PlayerSprite" unique_id=1768327734] [node name="Light" type="Sprite2D" parent="PlayerSprite" unique_id=1768327734]
modulate = Color(0.70603025, 0.5959886, 0.33971557, 0.09019608) modulate = Color(0.70603025, 0.5959886, 0.33971557, 0.09019608)
@@ -331,8 +331,7 @@ texture = ExtResource("5_8fjmc")
[node name="CPUParticles2D" type="CPUParticles2D" parent="PlayerSprite" unique_id=1489736082] [node name="CPUParticles2D" type="CPUParticles2D" parent="PlayerSprite" unique_id=1489736082]
z_index = -1 z_index = -1
position = Vector2(-15.239999, -60.95996) position = Vector2(-4.5248866, -46.816402)
scale = Vector2(3.4752407, 3.4752383)
amount = 3 amount = 3
texture = ExtResource("2_bls4j") texture = ExtResource("2_bls4j")
lifetime = 0.4 lifetime = 0.4
@@ -343,8 +342,8 @@ color_ramp = SubResource("Gradient_bls4j")
[node name="NoEnergyLeftIcon" type="Sprite2D" parent="PlayerSprite" unique_id=1059424679] [node name="NoEnergyLeftIcon" type="Sprite2D" parent="PlayerSprite" unique_id=1059424679]
unique_name_in_owner = true unique_name_in_owner = true
modulate = Color(1, 0, 0.43137255, 1) modulate = Color(1, 0, 0.43137255, 1)
position = Vector2(-15.239998, 0) position = Vector2(-4.5248866, -377.13315)
scale = Vector2(10.16, 10.16) scale = Vector2(3, 3)
texture = ExtResource("7_26q78") texture = ExtResource("7_26q78")
[node name="AnimationPlayer" type="AnimationPlayer" parent="PlayerSprite/NoEnergyLeftIcon" unique_id=390014722] [node name="AnimationPlayer" type="AnimationPlayer" parent="PlayerSprite/NoEnergyLeftIcon" unique_id=390014722]

View File

@@ -124,6 +124,7 @@ horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
[node name="CPUParticles3D" type="CPUParticles3D" parent="." unique_id=1470634574] [node name="CPUParticles3D" type="CPUParticles3D" parent="." unique_id=1470634574]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.66324395, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.66324395, 0)
amount = 5 amount = 5
mesh = SubResource("PlaneMesh_0oeag") mesh = SubResource("PlaneMesh_0oeag")

View File

@@ -7,6 +7,7 @@ const POINTER_ACTION_TEXTURE = preload("res://common/icons/hand-finger.svg")
@export var pointer_texture_rect : TextureRect @export var pointer_texture_rect : TextureRect
@export var speed := 4.0 @export var speed := 4.0
@export var gravity_factor = 1.
const MOUSE_SENSIVITY = 0.002 const MOUSE_SENSIVITY = 0.002
const RAY_LENGTH = 10. const RAY_LENGTH = 10.
const PUSH_FORCE = 0.6 const PUSH_FORCE = 0.6
@@ -85,9 +86,11 @@ func _physics_process(delta):
else : else :
velocity = Vector3.ZERO velocity = Vector3.ZERO
%CPUParticles3D.emitting = is_on_floor()
# Add the gravity. # Add the gravity.
if not is_on_floor(): if not is_on_floor():
velocity += get_gravity() * delta velocity += get_gravity() * gravity_factor * delta
move_and_slide() move_and_slide()
for i in get_slide_collision_count(): for i in get_slide_collision_count():

View File

@@ -4,14 +4,17 @@ class_name Battery3d
const MAX_BATTERY_GAUGE_SPRITE_SCALE = 2.525 const MAX_BATTERY_GAUGE_SPRITE_SCALE = 2.525
@export var powered : bool = true : set = set_powered @export var powered: bool = true
func _ready(): func _ready():
set_powered() set_powered()
func set_powered(_powered : bool = powered): func set_powered(_powered: bool = powered, with_animation: bool = true):
var old_powered = powered var old_powered = powered
powered = _powered powered = _powered
if is_node_ready() and old_powered != powered: if is_node_ready() and old_powered != powered:
var tween : Tween = get_tree().create_tween() if with_animation:
tween.tween_property(%NonPoweredBatteryGauge, "scale:y", 0. if powered else MAX_BATTERY_GAUGE_SPRITE_SCALE, 0.3) var tween: Tween = get_tree().create_tween()
tween.tween_property(%NonPoweredBatteryGauge, "scale:y", 0. if powered else MAX_BATTERY_GAUGE_SPRITE_SCALE, 0.3)
else:
%NonPoweredBatteryGauge.scale.y = 0. if powered else MAX_BATTERY_GAUGE_SPRITE_SCALE

View File

@@ -13,7 +13,7 @@ var max_energy := 0
func update( func update(
_energy : int, _energy : int,
_max_energy : int, _max_energy : int,
_with_animation := true, with_animation := true,
): ):
var changed = (energy != _energy or max_energy != _max_energy) var changed = (energy != _energy or max_energy != _max_energy)
if changed: if changed:
@@ -23,7 +23,7 @@ func update(
# if with_animation: # if with_animation:
# %EnergyAnimationPlayer.bounce() # %EnergyAnimationPlayer.bounce()
%EnergyInfo3d.energy = energy %EnergyInfo3d.set_energy(energy, with_animation)
%EnergyInfo3d.max_energy = max_energy %EnergyInfo3d.max_energy = max_energy
%EnergyCount.text = energy_count_text %EnergyCount.text = energy_count_text
%EnergyCount.modulate = Color.WHITE if energy > 0 else Color.RED %EnergyCount.modulate = Color.WHITE if energy > 0 else Color.RED

View File

@@ -2,15 +2,15 @@
extends Node3D extends Node3D
const BATTERY_SCENE = preload("res://gui/game/energy_info/battery_3d.tscn") const BATTERY_SCENE = preload("res://gui/game/energy_info/battery_3d.tscn")
const BATTERY_SHIFT = Vector3(0,0,-1) const BATTERY_SHIFT = Vector3(0, 0, -1)
@export var max_energy : int = 0 : set = set_max_energy @export var max_energy: int = 0: set = set_max_energy
@export var energy : int = 0 : set = set_energy @export var energy: int = 0
func _ready(): func _ready():
set_max_energy() set_max_energy()
func set_max_energy(_max_energy : int = max_energy): func set_max_energy(_max_energy: int = max_energy):
max_energy = _max_energy max_energy = _max_energy
if is_node_ready() and max_energy != len(%Batteries.get_children()): if is_node_ready() and max_energy != len(%Batteries.get_children()):
for c in %Batteries.get_children(): for c in %Batteries.get_children():
@@ -24,7 +24,7 @@ func set_max_energy(_max_energy : int = max_energy):
await get_tree().create_timer(0.1).timeout await get_tree().create_timer(0.1).timeout
set_energy() set_energy()
func set_energy(_energy : int = energy): func set_energy(_energy: int = energy, with_animation: bool = true):
energy = _energy energy = _energy
if is_node_ready(): if is_node_ready():
var energy_count = 0 var energy_count = 0
@@ -32,5 +32,5 @@ func set_energy(_energy : int = energy):
if not battery.is_node_ready(): if not battery.is_node_ready():
await battery.ready await battery.ready
if battery is Battery3d: if battery is Battery3d:
battery.powered = energy_count < energy battery.set_powered(energy_count < energy, with_animation)
energy_count += 1 energy_count += 1

View File

@@ -95,7 +95,7 @@ func score_update(with_animation = true):
func state_update(region_data : RegionData): func state_update(region_data : RegionData):
if region_data.state == RegionData.State.SUCCEEDED: if region_data.state == RegionData.State.SUCCEEDED:
objective_text = "COLLECT_YOUR_SEEDS_AND_TAKE_OFF" objective_text = "COLLECT_YOUR_SEEDS_AND_TAKE_OFF"
if GameInfo.game_data.current_run.get_st is TutorialStoryStep: if GameInfo.game_data.current_run.story_step is TutorialStoryStep:
objective_text = "PASS_THE_MYSTERIOUS_DOOR" objective_text = "PASS_THE_MYSTERIOUS_DOOR"
elif region_data.state == RegionData.State.FAILED: elif region_data.state == RegionData.State.FAILED:
objective_text = "NO_RECHARGE_LEFT" objective_text = "NO_RECHARGE_LEFT"

View File

@@ -149,10 +149,10 @@ func process_player_actions(delta: float):
%ActionProgressBar.value = 0. %ActionProgressBar.value = 0.
if Input.is_action_just_pressed("action"): if Input.is_action_just_pressed("action"):
if inspected is InventoryGuiItemMouseDetector: if can_use_item and not current_selected_item.is_action_need_press_time() and current_selected_item.deactivate_interactable():
GameInfo.game_data.player_data.inventory.set_current_item(inspected.index)
elif can_use_item and not current_selected_item.is_action_need_press_time() and current_selected_item.deactivate_interactable():
player.try_use_item(current_selected_item, player.get_global_mouse_position()) player.try_use_item(current_selected_item, player.get_global_mouse_position())
elif inspected is InventoryGuiItemMouseDetector:
GameInfo.game_data.player_data.inventory.set_current_item(inspected.index)
elif can_interact: elif can_interact:
var interactable = inspected as Interactable var interactable = inspected as Interactable
player.try_interact(interactable) player.try_interact(interactable)
@@ -261,7 +261,7 @@ func update_inspector(current_inspected):
func update_cursor(): func update_cursor():
var cursor := default_cursor var cursor := default_cursor
var hotspot : = Vector2(0.,0.) var hotspot := Vector2(0., 0.)
if not Pause.pause and player and not action_disabled: if not Pause.pause and player and not action_disabled:
if current_selected_item and current_selected_item.get_pointer(): if current_selected_item and current_selected_item.get_pointer():
cursor = current_selected_item.get_pointer() cursor = current_selected_item.get_pointer()
@@ -270,10 +270,10 @@ func update_cursor():
cursor = current_selected_item.get_clicked_pointer() cursor = current_selected_item.get_clicked_pointer()
if current_selected_item.is_pointer_center(): if current_selected_item.is_pointer_center():
hotspot = Vector2(cursor.get_width()/2., cursor.get_height()/2.) hotspot = Vector2(cursor.get_width() / 2., cursor.get_height() / 2.)
elif can_interact: elif can_interact:
cursor = action_cursor cursor = action_cursor
Input.set_custom_mouse_cursor(cursor,0,hotspot) Input.set_custom_mouse_cursor(cursor, Input.CURSOR_ARROW, hotspot)
func stop_inspect(node: Node): func stop_inspect(node: Node):
if not dragging_inspected: if not dragging_inspected:
@@ -294,6 +294,9 @@ func start_dragging():
inspected_inventory_slot = inspected inspected_inventory_slot = inspected
inspected = dropped_item_object inspected = dropped_item_object
player.region.save() player.region.save()
else:
dragging_inspected = false
GameInfo.game_data.player_data.inventory.set_current_item(inspected.index)
else: else:
dragging_inspected = false dragging_inspected = false
if dragging_inspected: if dragging_inspected:
@@ -306,10 +309,10 @@ func stop_dragging():
dragging_inspected = false dragging_inspected = false
if inspected is ItemObject: if inspected is ItemObject:
inspected.object_sprite.tractor_beam.emitting = false inspected.object_sprite.tractor_beam.emitting = false
if ( if inspected_inventory_slot is InventoryGuiItemMouseDetector:
inspected_inventory_slot is InventoryGuiItemMouseDetector if GameInfo.game_data.player_data.inventory.add_item_at(inspected.item, inspected_inventory_slot.index):
and GameInfo.game_data.player_data.inventory.add_item_at(inspected.item, inspected_inventory_slot.index) all_inspected.clear()
): inspected.queue_free()
all_inspected.clear() inspect(inspected_inventory_slot)
inspected.queue_free() else:
inspected = null stop_inspect(inspected)

View File

@@ -16,7 +16,7 @@ compatibility/default_parent_skeleton_in_mesh_instance_3d=true
config/name="Seeding The Wasteland" config/name="Seeding The Wasteland"
config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot." config/description="Seeding planets is a survival, managment and cosy game in which you play a little gardener robot."
config/version="beta-2.0" config/version="0.1"
run/main_scene="uid://c5bruelvqbm1k" run/main_scene="uid://c5bruelvqbm1k"
config/features=PackedStringArray("4.7", "Forward Plus") config/features=PackedStringArray("4.7", "Forward Plus")
config/icon="uid://df0y0s666ui4h" config/icon="uid://df0y0s666ui4h"
@@ -47,9 +47,22 @@ directories/dch_directory={
"mysterious_demeter": "res://dialogs/characters/mysterious_demeter.dch" "mysterious_demeter": "res://dialogs/characters/mysterious_demeter.dch"
} }
directories/dtl_directory={ directories/dtl_directory={
"1_aqua_travel_phone_call": "res://dialogs/timelines/2_aqua/1_aqua_travel_phone_call.dtl",
"1_astra_travel_phone_call": "res://dialogs/timelines/6_astra/1_astra_travel_phone_call.dtl",
"1_estia_travel_phone_call": "res://dialogs/timelines/4_estia/1_estia_travel_phone_call.dtl",
"1_subterra_travel_phone_call": "res://dialogs/timelines/3_subterra/1_subterra_travel_phone_call.dtl",
"2_aqua_arrival": "res://dialogs/timelines/2_aqua/2_aqua_arrival.dtl",
"2_astra_top": "res://dialogs/timelines/6_astra/2_astra_top.dtl",
"2_estia_arrival": "res://dialogs/timelines/4_estia/2_estia_arrival.dtl",
"2_subterra_arrival": "res://dialogs/timelines/3_subterra/2_subterra_arrival.dtl",
"3_astra_end": "res://dialogs/timelines/6_astra/3_astra_end.dtl",
"5_subterra/1_subterra_travel_phone_call": "res://dialogs/timelines/5_subterra/1_subterra_travel_phone_call.dtl",
"5_subterra/2_subterra_arrival": "res://dialogs/timelines/5_subterra/2_subterra_arrival.dtl",
"6_vending_machine_presentation": "res://dialogs/timelines/1_waking_up/6_vending_machine_presentation.dtl", "6_vending_machine_presentation": "res://dialogs/timelines/1_waking_up/6_vending_machine_presentation.dtl",
"8_venus_departure": "res://dialogs/timelines/1_waking_up/8_venus_departure.dtl", "8_venus_departure": "res://dialogs/timelines/1_waking_up/8_venus_departure.dtl",
"9_borea": "res://dialogs/timelines/1_waking_up/9_borea.dtl", "91_borea_comms_up": "res://dialogs/timelines/1_waking_up/91_borea_comms_up.dtl",
"91_borea_later": "res://dialogs/timelines/1_waking_up/92_borea_later.dtl",
"9_borea_arrival": "res://dialogs/timelines/1_waking_up/9_borea_arrival.dtl",
"cave": "res://dialogs/timelines/1_waking_up/4_cave.dtl", "cave": "res://dialogs/timelines/1_waking_up/4_cave.dtl",
"mercury_arrival": "res://dialogs/timelines/1_waking_up/5_mercury_arrival.dtl", "mercury_arrival": "res://dialogs/timelines/1_waking_up/5_mercury_arrival.dtl",
"mercury_departure": "res://dialogs/timelines/1_waking_up/6_mercury_departure.dtl", "mercury_departure": "res://dialogs/timelines/1_waking_up/6_mercury_departure.dtl",
@@ -259,7 +272,7 @@ environment/defaults/default_clear_color=Color(0.0617213, 0.0605653, 0.169189, 1
[steam] [steam]
initialization/app_id=4452760 initialization/app_id=4444510
initialization/initialize_on_startup=true initialization/initialize_on_startup=true
initialization/embed_callbacks=true initialization/embed_callbacks=true
multiplayer_peer/max_channels=4 multiplayer_peer/max_channels=4

Some files were not shown because too many files have changed in this diff Show More