25 Commits

Author SHA1 Message Date
9ab67f2b98 Merge branch 'musique_et_son_3' of https://git.zacharie-guet.fr/zacharie/seeding-planets into musique_et_son_3 2026-06-16 15:46:28 +02:00
99f804b6e9 ajout du morceau d'Aqua et renommage de meeting_demeter en borea 2026-06-16 15:43:43 +02:00
f7f1d2be2c remix de subterra, refonte des sfx de fin de map 2026-06-14 16:55:02 +02:00
ee16f14176 suppression des sfx de déblocage et ajout du morceau de Subterra 2026-06-14 16:55:01 +02:00
17f63729e7 refonte des sfx de la cave (mutation, cristal) 2026-06-14 16:52:21 +02:00
c9f6bf0162 Suppression des animation bounce in dans les dialogues et ajout d'un rayon de visibilité pour la grille 2026-06-14 16:48:03 +02:00
33a8f022e5 Réparation de bug, paufinnage du rayon tracteur et insert de l'outil dans l'histoire 2026-06-14 16:19:36 +02:00
7c66d8b9de Les backrooms pour le fun =) 2026-06-14 16:18:24 +02:00
Altaezio
c0d15dc817 No more feuilles de base si mutation avec feuilles 2026-06-14 16:17:17 +02:00
Altaezio
91855b5b43 Tractor beam 2026-06-14 12:21:31 +02:00
940b3c1553 Dev Démo 1.2
* les plantes se placent désormais sur une grille
* ajouts de curseurs relatifs à l'item
* ajout de settings sur la sensibilité à la souris
* ajout d'un défi en fin de run
2026-06-12 16:42:00 +02:00
d43b6e17ff remix de subterra, refonte des sfx de fin de map 2026-06-11 10:25:05 +02:00
5aff9eadaa Dev demo 1.2
* Ajout d'un paramètre de FOV
* Ajout d'un paramètre d'auto pickup des graines
2026-06-08 18:37:55 +02:00
Altaezio
1e2563e328 drag & drop with inventory slots 2026-06-08 12:17:37 +02:00
Altaezio
52ebf0e7d5 hover fix 2026-06-05 14:47:37 +02:00
Altaezio
1b56a648c3 Amélioration du survol des objets 2026-06-04 12:52:19 +02:00
749238b85b Demo 1.1
- Changement du logo pour la démo
- Suppression du flou pour le menu pause (pour cause de performance)
2026-05-31 21:48:48 +02:00
3dc64e6731 suppression des sfx de déblocage et ajout du morceau de Subterra 2026-05-31 17:10:25 +02:00
c3c68e7398 refonte des sfx de la cave (mutation, cristal) 2026-05-31 12:32:34 +02:00
79357982d0 Dev Demo
* pleins de choses et j'ai pas le temps
* mais en gros
* le détecteur détecte les cellules
* ajout du sprite de Demeter
* ajout d'une limite dans la map
* la recharge ne peut plus de nouveau être utilisée après la fin de la région
2026-05-29 16:35:42 +02:00
Altaezio
8b794ee967 vibrating lift bug fix 2026-05-28 17:45:35 +02:00
1d6ff78535 Dev Demo 2
* Ajout des achievement Steam
* Ajout d'une annonce à la récupération d'un artefact et ajout de textes axplicatifs sur les annonces d'artefacts et de mutation
* Fix du léger glitch des tooltips
* Ajout de clarté sur la machine de respawn dans le vaisseau
2026-05-28 15:40:09 +02:00
7b09f2ba7c Dev de la démo
* Modification de l'apparence de l'UI des dialogues
* Changement de l'ordre de déblocage des mutations
* Ajout d'une confirmation pour l'abandon
* Ajout de la scène de fin avec la base Boréa, en tant que fin de démo
* Modification des icône de durée de vie, temps de pousse, et de mort
* Ajout d'un icône au dessus du joueur quand il n'a plus d'énergie
* Amélioration des dialogues du jeu
* Changement du modèle du téléphone
* Ajout de cellule d'énergie et de cellule de talion trouvable sur la carte
* Il est à nouveau possible de se recharger après la fin d'une région
* Buff des mutations ancien sociale et solide
* Modification de la mutation fertile (ne donne de gain de graine qu'à la maturation)
* Ajout d'une récupération automatique des graines
* Ajout de deux cartons de tutoriel ainsi qu'une option pour les revoir dans l'aide de jeu
* Amélioration générale du tutoriel
* Ajout d'un écran titre digne de ce nom
* Lors de l'arrivée à destination, ne téléporte plus le joueur sur une map vide, mais directement dans les lieux de cinématique
* Ajout graphique de plus de pattern de mousse et de roche
* Le talion apparait maintenant sur toute la carte
* La roche peut désormais apparaitre sur la zone de départ
* Ajout dud modificateur de région Canyon
* Equilibrage général
* Fix de bugs en tout genre
2026-05-28 10:18:36 +02:00
7764943714 Fix divers beta 1.4
* Changement du son de récupération d'objet
* Ajout d'une couleur de rareté et suppression de la boucle sur la couleur de rareté
* Changement de la mutation Prolifique : n'ajoute des graines que si mature
* Changement de la mutation Rapide : réduction du debuff de temps de vie par 2
* Modification de la mutation Vivace : Augmentation des points ajoutés
* Les graines données sur des plantes non mature ne mutent plus
* Fix sur la plantation, on ne peut plus planter là où il y a de la roche
* Fix visuel : les particule de vent ne s'affichent plus lorsqu'il pleut
2026-05-28 10:18:34 +02:00
d7ddcf14d1 création et implémentation du sfx de fin de map 2026-05-27 18:51:28 +02:00
542 changed files with 12112 additions and 2362 deletions

View File

@@ -4,10 +4,6 @@
content_margin_top = 5.0
content_margin_bottom = 5.0
bg_color = Color(0, 0, 0, 0.956863)
border_width_left = 1
border_width_top = 1
border_width_right = 1
border_width_bottom = 1
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5

View File

@@ -5,8 +5,13 @@ content_margin_left = 15.0
content_margin_top = 15.0
content_margin_right = 15.0
content_margin_bottom = 15.0
bg_color = Color(1, 1, 1, 1)
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
bg_color = Color(0.0627451, 0.05882353, 0.16862746, 1)
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color(0.5882353, 0.7019608, 0.85882354, 1)
corner_radius_top_left = 10
corner_radius_top_right = 10
corner_radius_bottom_right = 10
corner_radius_bottom_left = 10

View File

@@ -4,8 +4,9 @@
[resource]
diffuse_mode = 3
specular_mode = 1
specular_mode = 2
albedo_texture = ExtResource("1_cc1ni")
metallic_specular = 0.0
roughness = 0.0
rim_tint = 0.48
stencil_flags = 2

Binary file not shown.

View File

@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://cnkwobaxy22xx"
path="res://.godot/imported/aqua.ogg-fe17e4290e66a70a6ab8902b711f0305.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/aqua.ogg"
dest_files=["res://.godot/imported/aqua.ogg-fe17e4290e66a70a6ab8902b711f0305.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://ch8wnrckanydg"
path="res://.godot/imported/borea.ogg-b575bef16c730ed2e0563c2eb6862766.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/borea.ogg"
dest_files=["res://.godot/imported/borea.ogg-b575bef16c730ed2e0563c2eb6862766.oggvorbisstr"]
[params]
loop=false
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4

View File

@@ -1,19 +0,0 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://ch8wnrckanydg"
path="res://.godot/imported/meeting_demeter.ogg-7dd58073d2ef5705a374bd8bb3634d37.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/meeting_demeter.ogg"
dest_files=["res://.godot/imported/meeting_demeter.ogg-7dd58073d2ef5705a374bd8bb3634d37.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://bdsghxlbtduuy"
path="res://.godot/imported/subterra.ogg-458c2f15c134af211d5a71b5819758c5.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/morceaux/histoire/subterra.ogg"
dest_files=["res://.godot/imported/subterra.ogg-458c2f15c134af211d5a71b5819758c5.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://du3hfjbaoyc8"
path="res://.godot/imported/fin_de_map.ogg-62fbcdd24bc4df66b50e9a969579e8d9.oggvorbisstr"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map.ogg"
dest_files=["res://.godot/imported/fin_de_map.ogg-62fbcdd24bc4df66b50e9a969579e8d9.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bfhab51qe80j5"
path="res://.godot/imported/fin_de_map_cristal_1.wav-fbc2aabbedcf9b9ea4de792270616879.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map_cristal_1.wav"
dest_files=["res://.godot/imported/fin_de_map_cristal_1.wav-fbc2aabbedcf9b9ea4de792270616879.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cr6y4e0p3xrqv"
path="res://.godot/imported/fin_de_map_cristal_2.wav-22f78a6101de5044c9eb27302000d841.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map_cristal_2.wav"
dest_files=["res://.godot/imported/fin_de_map_cristal_2.wav-22f78a6101de5044c9eb27302000d841.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://ccppo3l1vyd08"
path="res://.godot/imported/fin_de_map_cristal_3.wav-08ca119096dca7f1ce13ef8a0fc9b262.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map_cristal_3.wav"
dest_files=["res://.godot/imported/fin_de_map_cristal_3.wav-08ca119096dca7f1ce13ef8a0fc9b262.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://wphcqemoy810"
path="res://.godot/imported/fin_de_map_cristal_4.wav-b746d9213d33d907760d7149452e1cfd.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map_cristal_4.wav"
dest_files=["res://.godot/imported/fin_de_map_cristal_4.wav-b746d9213d33d907760d7149452e1cfd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://v2snsj54xlkw"
path="res://.godot/imported/fin_de_map_cristal_5.wav-03f398571aece8e59a223be04924d6a1.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map_cristal_5.wav"
dest_files=["res://.godot/imported/fin_de_map_cristal_5.wav-03f398571aece8e59a223be04924d6a1.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bvhnpk7pbh75t"
path="res://.godot/imported/fin_de_map_cristal_6.wav-55680ff3c48778e28de53ad22c902751.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/fin_de_map/fin_de_map_cristal_6.wav"
dest_files=["res://.godot/imported/fin_de_map_cristal_6.wav-55680ff3c48778e28de53ad22c902751.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

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

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://budu0cym6ximv"
path="res://.godot/imported/phone_call.wav-5f6468b6c2e194f4077a966b2b8ed027.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/phone/phone_call.wav"
dest_files=["res://.godot/imported/phone_call.wav-5f6468b6c2e194f4077a966b2b8ed027.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://c18orgaa5yect"
path="res://.godot/imported/pickaxe_cave_1.wav-c2db6fad48f4457a7e47ef7fabdce2ca.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/phone/pickaxe_cave_1.wav"
dest_files=["res://.godot/imported/pickaxe_cave_1.wav-c2db6fad48f4457a7e47ef7fabdce2ca.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cbkg6v76a1d1q"
path="res://.godot/imported/pickaxe_cave_2.wav-72432422e9b9eac863b31c5dda4262c9.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/phone/pickaxe_cave_2.wav"
dest_files=["res://.godot/imported/pickaxe_cave_2.wav-72432422e9b9eac863b31c5dda4262c9.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bs5ldhabymm5p"
path="res://.godot/imported/pickaxe_2_reverb.wav-c953afb7e49205a0f4377738e1135a5b.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_2_reverb.wav"
dest_files=["res://.godot/imported/pickaxe_2_reverb.wav-c953afb7e49205a0f4377738e1135a5b.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -1,24 +0,0 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bu278eqn8krnb"
path="res://.godot/imported/pickaxe_3_reverb.wav-d3e3d8b6b50a16c6757536f43c8c6ccd.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_3_reverb.wav"
dest_files=["res://.godot/imported/pickaxe_3_reverb.wav-d3e3d8b6b50a16c6757536f43c8c6ccd.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -2,13 +2,13 @@
importer="wav"
type="AudioStreamWAV"
uid="uid://3c4nxjasebyk"
path="res://.godot/imported/pickaxe_1_reverb.wav-8d6172bc1e5c2f43ec5b5cf869d5b6e3.sample"
uid="uid://x36rvb4eso8q"
path="res://.godot/imported/pickaxe_cave_1.wav-5365b9250c03fe13766ad32a821704fa.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_1_reverb.wav"
dest_files=["res://.godot/imported/pickaxe_1_reverb.wav-8d6172bc1e5c2f43ec5b5cf869d5b6e3.sample"]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_1.wav"
dest_files=["res://.godot/imported/pickaxe_cave_1.wav-5365b9250c03fe13766ad32a821704fa.sample"]
[params]

View File

@@ -0,0 +1,34 @@
[remap]
importer="wav"
type="AudioStreamWAV"
<<<<<<<< HEAD:common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_2.wav.import
uid="uid://dh3oho0pis6jv"
path="res://.godot/imported/pickaxe_cave_2.wav-bb5e1c82ba8ffd44758505ce286a04a9.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_2.wav"
dest_files=["res://.godot/imported/pickaxe_cave_2.wav-bb5e1c82ba8ffd44758505ce286a04a9.sample"]
========
uid="uid://c6jdmdjncamcu"
path="res://.godot/imported/pickaxe_cave_finalblow.wav-ce8ca7f063b31d6564d593b5a84e7560.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_finalblow.wav"
dest_files=["res://.godot/imported/pickaxe_cave_finalblow.wav-ce8ca7f063b31d6564d593b5a84e7560.sample"]
>>>>>>>> f7f1d2be2c5b797138414266ce6324e8a3ff748f:common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_finalblow.wav.import
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -0,0 +1,34 @@
[remap]
importer="wav"
type="AudioStreamWAV"
<<<<<<<< HEAD:common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_finalblow.wav.import
uid="uid://c6jdmdjncamcu"
path="res://.godot/imported/pickaxe_cave_finalblow.wav-ce8ca7f063b31d6564d593b5a84e7560.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_finalblow.wav"
dest_files=["res://.godot/imported/pickaxe_cave_finalblow.wav-ce8ca7f063b31d6564d593b5a84e7560.sample"]
========
uid="uid://dh3oho0pis6jv"
path="res://.godot/imported/pickaxe_cave_2.wav-bb5e1c82ba8ffd44758505ce286a04a9.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_2.wav"
dest_files=["res://.godot/imported/pickaxe_cave_2.wav-bb5e1c82ba8ffd44758505ce286a04a9.sample"]
>>>>>>>> f7f1d2be2c5b797138414266ce6324e8a3ff748f:common/audio_manager/assets/sfx/pickaxe/pickaxe_cave_2.wav.import
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cam4vv1am40dy"
path="res://.godot/imported/drop.wav-b76e8a2f6f5f0c41737e74496f01ceaa.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/tractor_beam/drop.wav"
dest_files=["res://.godot/imported/drop.wav-b76e8a2f6f5f0c41737e74496f01ceaa.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://bdrdnli5k27a2"
path="res://.godot/imported/take.wav-d597c4daf1adbf3b061372ab36ef9940.sample"
[deps]
source_file="res://common/audio_manager/assets/sfx/tractor_beam/take.wav"
dest_files=["res://.godot/imported/take.wav-d597c4daf1adbf3b061372ab36ef9940.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2

View File

@@ -2,7 +2,6 @@
[ext_resource type="Script" uid="uid://2p5d6vogtn82" path="res://common/audio_manager/scripts/audio_manager.gd" id="1_0tvca"]
[ext_resource type="AudioStream" uid="uid://dq2nodhwnp73f" path="res://common/audio_manager/assets/ambiance/cave/solarmusic-dripping-water-in-cave-114694.ogg" id="2_ge2sc"]
[ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_phase_1.ogg" id="2_tuvql"]
[ext_resource type="AudioStream" uid="uid://dipnmlprwfo12" path="res://common/audio_manager/assets/ambiance/niveau/ambiance.ogg" id="3_qvjf5"]
[ext_resource type="AudioStream" uid="uid://b1hut6lc1jevh" path="res://common/audio_manager/assets/morceaux/niveau/mines_phase_2.ogg" id="4_2fduo"]
[ext_resource type="AudioStream" uid="uid://cdohaice7nc8d" path="res://common/audio_manager/assets/ambiance/niveau/ambiance_foggy.ogg" id="4_ipd1r"]
@@ -13,17 +12,17 @@
[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://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://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://kqbqhwhkv7o3" path="res://common/audio_manager/assets/morceaux/niveau/mines_waiting.ogg" id="11_ngi21"]
[ext_resource type="AudioStream" uid="uid://of68i2k1g6y2" path="res://common/audio_manager/assets/morceaux/niveau/desert_phase_1.ogg" id="11_yjs51"]
[ext_resource type="AudioStream" uid="uid://b8inedx4yjslw" path="res://common/audio_manager/assets/sfx/drop/drop_1.wav" id="12_4hp8f"]
[ext_resource type="AudioStream" uid="uid://bdsghxlbtduuy" path="res://common/audio_manager/assets/morceaux/histoire/subterra.ogg" id="12_mrdk3"]
[ext_resource type="AudioStream" uid="uid://cjbpfnlwcpjh0" path="res://common/audio_manager/assets/morceaux/niveau/forest_waiting.ogg" id="12_xmumj"]
[ext_resource type="AudioStream" uid="uid://cnkwobaxy22xx" path="res://common/audio_manager/assets/morceaux/histoire/aqua.ogg" id="13_mrdk3"]
[ext_resource type="AudioStream" uid="uid://8nmr5vifkt1f" path="res://common/audio_manager/assets/sfx/harvest/harvest_1.wav" id="13_xoaox"]
[ext_resource type="AudioStream" uid="uid://dgkdcq4j6fe3o" path="res://common/audio_manager/assets/sfx/harvest/harvest_2.wav" id="14_b5bgj"]
[ext_resource type="AudioStream" uid="uid://crncg0mdx1fdw" path="res://common/audio_manager/assets/morceaux/demo/ending.ogg" id="14_h3tkm"]
[ext_resource type="AudioStream" uid="uid://dsfqhcrard8o4" path="res://common/audio_manager/assets/morceaux/niveau/desert_phase_2.ogg" id="14_lwdce"]
[ext_resource type="AudioStream" uid="uid://eh3dbuxu5qtw" path="res://common/audio_manager/assets/sfx/harvest/harvest_3.wav" id="15_ynvb4"]
[ext_resource type="AudioStream" uid="uid://bown4yipeef8l" path="res://common/audio_manager/assets/sfx/harvest/harvest_4.wav" id="16_obeji"]
@@ -42,11 +41,9 @@
[ext_resource type="AudioStream" uid="uid://cbm4r5bf7py11" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_4.wav" id="21_ehr7m"]
[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://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/borea.ogg" id="22_mrdk3"]
[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://bp3wsncvda5gl" path="res://common/audio_manager/assets/sfx/recharge/recharge_capsule_7.wav" id="24_yr73o"]
[ext_resource type="AudioStream" uid="uid://b4jx8rflw7dss" path="res://common/audio_manager/assets/sfx/phone/phone_ringing_Astra.wav" id="27_0rjel"]
[ext_resource type="AudioStream" uid="uid://ocm1dkkhv7ls" path="res://common/audio_manager/assets/sfx/phone/phone_ringing.wav" id="28_3dfjn"]
[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://bp6mtpqjf4txo" path="res://common/audio_manager/assets/sfx/plant_points/plant_point_3.wav" id="31_spekb"]
@@ -65,12 +62,15 @@
[ext_resource type="AudioStream" uid="uid://dd1uu6dd6sloe" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_3.wav" id="45_mur2l"]
[ext_resource type="AudioStream" uid="uid://eq7wufwnolto" path="res://common/audio_manager/assets/sfx/pickaxe/pickaxe_4.wav" id="46_t0v4u"]
[ext_resource type="AudioStream" uid="uid://cv7sj8n5oo1i8" path="res://common/audio_manager/assets/sfx/screen_bip/screen_bip.wav" id="47_svctq"]
[ext_resource type="AudioStream" uid="uid://budu0cym6ximv" path="res://common/audio_manager/assets/sfx/phone/phone_call.wav" id="48_ipd1r"]
[ext_resource type="AudioStream" uid="uid://sgwvpxiul5x5" path="res://common/audio_manager/assets/sfx/ship_exit/ship_exit.wav" id="48_j8acj"]
[ext_resource type="AudioStream" uid="uid://ca0wonha334cl" path="res://common/audio_manager/assets/sfx/teleportation/teleport.wav" id="50_rlnfe"]
[ext_resource type="AudioStream" uid="uid://cv5avkd3qekt7" path="res://common/audio_manager/assets/sfx/movement/movement.wav" id="51_iyxkn"]
[ext_resource type="AudioStream" uid="uid://53ixfbcd5qwu" path="res://common/audio_manager/assets/sfx/holo/holo_appear.wav" id="63_aedoe"]
[ext_resource type="AudioStream" uid="uid://dsijqgnnadgem" path="res://common/audio_manager/assets/sfx/holo/holo_disappear.wav" id="64_ge2sc"]
[ext_resource type="AudioStream" uid="uid://dscyqjujj1com" path="res://common/audio_manager/assets/sfx/unlock_tool/unlock_tool.wav" id="64_yr73o"]
[ext_resource type="AudioStream" uid="uid://bdrdnli5k27a2" path="res://common/audio_manager/assets/sfx/tractor_beam/take.wav" id="69_5rlid"]
[ext_resource type="AudioStream" uid="uid://cam4vv1am40dy" path="res://common/audio_manager/assets/sfx/tractor_beam/drop.wav" id="70_gfbcu"]
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_6o1yh"]
streams_count = 3
@@ -132,6 +132,7 @@ script = ExtResource("1_0tvca")
unique_name_in_owner = true
[node name="Cave" type="AudioStreamPlayer" parent="Ambiances" unique_id=71769481]
unique_name_in_owner = true
stream = ExtResource("2_ge2sc")
volume_db = -7.195
pitch_scale = 0.5
@@ -178,14 +179,21 @@ volume_db = -5.0
[node name="Borea" type="AudioStreamPlayer" parent="Ambiances" unique_id=1857904648]
unique_name_in_owner = true
stream = ExtResource("7_spekb")
volume_db = -5.0
stream = ExtResource("22_mrdk3")
[node name="Ship" type="AudioStreamPlayer" parent="Ambiances" unique_id=1564186965]
unique_name_in_owner = true
stream = ExtResource("8_tuvql")
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="Aqua" type="AudioStreamPlayer" parent="Ambiances" unique_id=2066946789]
unique_name_in_owner = true
stream = ExtResource("13_mrdk3")
[node name="Musics" type="Node" parent="." unique_id=1450527710]
unique_name_in_owner = true
@@ -242,15 +250,6 @@ stream = ExtResource("7_tuvql")
volume_db = -5.0
bus = &"Music"
[node name="Demo_end" type="AudioStreamPlayer" parent="Musics" unique_id=261817716]
unique_name_in_owner = true
stream = ExtResource("14_h3tkm")
volume_db = -5.0
[node name="Meeting_demeter" type="AudioStreamPlayer" parent="Musics" unique_id=1066359159]
unique_name_in_owner = true
stream = ExtResource("22_mrdk3")
[node name="Sfx" type="Node" parent="." unique_id=2023641207]
unique_name_in_owner = true
@@ -314,7 +313,7 @@ volume_db = -7.0
[node name="Harvest" type="AudioStreamPlayer" parent="Sfx" unique_id=345539331]
stream = SubResource("AudioStreamRandomizer_i4m0x")
volume_db = -5.0
volume_db = -7.0
[node name="PickUp" type="AudioStreamPlayer" parent="Sfx" unique_id=176915166]
stream = SubResource("AudioStreamRandomizer_jjdv2")
@@ -325,11 +324,11 @@ stream = ExtResource("22_btfwx")
volume_db = 3.627
[node name="Astra_phone_call" type="AudioStreamPlayer" parent="Sfx" unique_id=721344636]
stream = ExtResource("27_0rjel")
stream = ExtResource("48_ipd1r")
volume_db = -5.0
[node name="Phone_call" type="AudioStreamPlayer" parent="Sfx" unique_id=1668278453]
stream = ExtResource("28_3dfjn")
stream = ExtResource("48_ipd1r")
volume_db = -5.0
[node name="PlantPoint" type="AudioStreamPlayer" parent="Sfx" unique_id=2044025024]
@@ -358,7 +357,7 @@ volume_db = -5.0
[node name="Elevator" type="AudioStreamPlayer" parent="Sfx" unique_id=1345852969]
stream = ExtResource("42_obkny")
volume_db = -5.0
pitch_scale = 1.1
[node name="Mining" type="AudioStreamPlayer" parent="Sfx" unique_id=1122216774]
stream = SubResource("AudioStreamRandomizer_yjs51")
@@ -391,3 +390,11 @@ volume_db = -11.0
[node name="Unlock_tool" type="AudioStreamPlayer" parent="Sfx" unique_id=667077616]
stream = ExtResource("64_yr73o")
volume_db = -5.0
[node name="TractorBeamTake" type="AudioStreamPlayer" parent="Sfx" unique_id=1321980229]
stream = ExtResource("69_5rlid")
volume_db = -5.0
[node name="TractorBeamDrop" type="AudioStreamPlayer" parent="Sfx" unique_id=2023233451]
stream = ExtResource("70_gfbcu")
volume_db = -5.0

View File

@@ -40,7 +40,7 @@ func _on_change_scene(scene : Scene):
stop_all_ambiances()
if (scene is TitleScene):
play_music_alone("Title", false, 5.0)
play_music_alone("Title", false, 0.0)
elif scene is IntroScene:
stop_all_musics()
elif scene is RegionScene:
@@ -59,8 +59,8 @@ func _on_change_scene(scene : Scene):
stop_all_musics()
play_ambiance_alone("Astra", false)
elif scene is BoreaScene:
stop_all_musics()
play_ambiance_alone("Borea", false)
play_music_alone("Meeting_demeter")
stop_all_ambiances()
elif scene is VendingMachineScene:
stop_all_musics()
play_ambiance_alone("VendingRoom", false)
@@ -207,7 +207,7 @@ func change_ambiances_volume(db_change := 0., fade := DEFAULT_FADE_TIME):
# Joue un
# - player_name : Nom de la Node dans la scène Godot à jouer
func play_sfx(sfx_name : String):
func play_sfx(sfx_name : String, pitch = 1.):
var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer
if player:
player.play()
@@ -215,6 +215,7 @@ func play_sfx(sfx_name : String):
printerr("Sfx %s not found" % sfx_name)
# ----------------- Partie Technique (pas touche Niels ;D) ----------------
func _ready():

View File

@@ -12,4 +12,4 @@ func get_3d_scene() -> PackedScene:
return preload("res://common/game_data/scripts/artefacts/talion_soil/talion_soil.blend")
func modify_plant_influence_radius(plant_influence_radius : float) -> float:
return plant_influence_radius * 1.4
return plant_influence_radius * 1.5

View File

@@ -28,16 +28,16 @@ func get_all_mutations() -> Array[PlantMutation]:
ProlificMutation.new(),
PrecociousMutation.new(),
PurificationMutation.new(),
VivaciousMutation.new(),
ToughMutation.new(),
QuickMutation.new(),
RobustMutation.new(),
SocialMutation.new(),
VivaciousMutation.new(),
FertileMutation.new(),
HurriedMutation.new(),
GenerousMutation.new(),
ProtectiveMutation.new(),
PureMutation.new(),
ToughMutation.new(),
]
func get_all_artifacts() -> Array[Artefact]:
@@ -53,7 +53,7 @@ func get_all_artifacts() -> Array[Artefact]:
func get_all_story_steps() -> Array[StoryStep]:
return [
TutorialStoryStep.new(),
AstraStoryStep.new(),
StartStoryStep.new(),
MercuryStoryStep.new(),
BetaStoryStep.new()
BoreaStoryStep.new()
]

View File

@@ -64,6 +64,10 @@ func generate_next_run_point(last_modifiers : Array[String] = []) -> RunPoint:
challenge_modifiers.pick_random(),
benefic_modifiers.pick_random()
] as Array[RegionModifier]
elif story_step.is_run_point_dangerous(next_level):
region_parameter.modifiers = [
challenge_modifiers.pick_random()
] as Array[RegionModifier]
else:
region_parameter.modifiers = [
normal_modifiers.pick_random()
@@ -96,6 +100,12 @@ func choose_next_run_point(run_point : RunPoint = null) -> RunPoint:
next_run_points = generate_next_run_points()
return current_run_point
func get_cockpit_exit_scene() -> Scene:
if story_step.is_run_finished(level):
return story_step.get_destination_scene()
else :
return RegionScene.new(GameInfo.game_data.current_region_data)
#endregion
#region ------------------ Modifiers ------------------
@@ -109,6 +119,7 @@ func generate_normal_modifiers() -> Array[RegionModifier]:
ToxicModifier.new(),
SandyModifier.new(),
MagneticModifier.new(),
CanyonModifier.new()
]
func generate_benefic_modifiers() -> Array[RegionModifier]:

View File

@@ -5,7 +5,7 @@ class_name RunPoint
const DANGER_ICON = preload("res://common/icons/skull.svg")
const TYPE_ICON = preload("res://common/icons/map-pin.svg")
const OBJECTIVE_ICON = preload("res://common/icons/growth.svg")
const CHARGE_ICON = preload("res://common/icons/bolt.svg")
const CHARGE_ICON = preload("res://common/icons/recharge.svg")
@export var region_parameter : RegionParameter = RegionParameter.new() :
set(v):
@@ -27,6 +27,9 @@ func card_info() -> CardInfo:
info.type_icon = TYPE_ICON
if region_parameter.modifiers.find_custom(
func (m : RegionModifier) : return m is DestinationModifier
) == -1:
info.stats.append_array([
CardStatInfo.new(str(region_parameter.get_objective()), OBJECTIVE_ICON),
CardStatInfo.new(str(region_parameter.get_charge()), CHARGE_ICON),

View File

@@ -9,6 +9,7 @@ signal language_changed(settings : SettingsData)
signal sound_changed(settings : SettingsData)
signal video_changed(settings : SettingsData)
signal game_changed(settings : SettingsData)
signal fov_changed(value : float)
#region ------------------ Language ------------------
@@ -52,11 +53,23 @@ const AVAILABLE_LANGUAGES_LABEL = [
#region ------------------ Controls ------------------
@export var action_remapped : Array[String] = []
@export var input_remapped : Array[InputEvent] = []
@export var fov := 75. :
set(v):
fov = v
fov_changed.emit(fov)
#region ------------------ Game ------------------
@export var auto_pickup := true
@export var mouse_sensivity := 0.2
const MAX_ZOOM = 2.
const MIN_ZOOM = 0.5

View File

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

View File

@@ -22,7 +22,7 @@ func is_run_finished(level : int) -> bool:
return level == get_region_sequence_length() - 1
func get_region_sequence_length() -> int:
return 6
return 7
func get_first_vending_machine_occurence(_level : int) -> int:
return 2
@@ -37,7 +37,7 @@ func get_cave_occurence(_level : int) -> int:
return 3
func get_challenge_chance(_level : int) -> float:
return 0.3
return 0.15
func get_run_point_number(level : int) -> int:
if is_run_finished(level):
@@ -47,6 +47,9 @@ func get_run_point_number(level : int) -> int:
func get_charge_number(_level : int) -> int:
return 10
func is_run_point_dangerous(level : int) -> bool:
return level == get_region_sequence_length() - 2
func get_objective_for_region(level : int) -> int:
match level:
1: return 10
@@ -63,12 +66,6 @@ func get_story_modifiers_for_region(level : int) -> Array[RegionModifier]:
dest_mod.destination_scene = get_destination_scene()
modifiers.append(dest_mod)
var first_cave = get_first_cave_occurence(level)
var cave_occurence = get_cave_occurence(level)
if cave_occurence > 0 and level >= first_cave:
if (level - first_cave)%cave_occurence == 0:
modifiers.append(CaveModifier.new())
return modifiers
func get_gameplay_modifiers_for_region(level : int) -> Array[RegionModifier]:
@@ -81,6 +78,12 @@ func get_gameplay_modifiers_for_region(level : int) -> Array[RegionModifier]:
if (level - first_vending)%vending_occurence == 0:
modifiers.append(VendingMachineModifier.new())
var first_cave = get_first_cave_occurence(level)
var cave_occurence = get_cave_occurence(level)
if cave_occurence > 0 and level >= first_cave:
if (level - first_cave)%cave_occurence == 0:
modifiers.append(CaveModifier.new())
return modifiers
func need_gameplay_modifier(level : int):

View File

@@ -1,7 +1,7 @@
extends StoryStep
class_name TutorialStoryStep
const INTRO_DIALOG = "res://dialogs/timelines/tutorial/demeter_intro.dtl"
const INTRO_DIALOG = "res://dialogs/timelines/1_waking_up/2_demeter_intro.dtl"
func get_respawn_scene() -> Scene:
return AstraScene.new()
@@ -14,6 +14,10 @@ func get_region_sequence_length() -> int:
func get_destination_scene() -> Scene: return null
func need_gameplay_modifier(_level : int): return false
func get_objective_for_region(_level : int) -> int: return 3
func get_story_modifiers_for_region(_n : int) -> Array[RegionModifier]:
return [
TutorialModifier.new()

View File

@@ -1,8 +1,8 @@
extends StoryStep
class_name AstraStoryStep
class_name StartStoryStep
const MERCURY_ARRIVAL_DIALOG_PATH="res://dialogs/timelines/astra/mercury_arrival.dtl"
const CAVE_DIALOG_PATH="res://dialogs/timelines/astra/cave.dtl"
const MERCURY_ARRIVAL_DIALOG_PATH="res://dialogs/timelines/1_waking_up/5_mercury_arrival.dtl"
const CAVE_DIALOG_PATH="res://dialogs/timelines/1_waking_up/4_cave.dtl"
func get_respawn_scene() -> Scene:
return AstraScene.new()
@@ -20,7 +20,7 @@ func get_cave_occurence(_level : int) -> int:
return 2
func get_region_sequence_length() -> int:
return 4
return 5
func get_objective_for_region(level : int) -> int:
match level:

View File

@@ -2,8 +2,9 @@ extends StoryStep
class_name MercuryStoryStep
const MERCURY_DEPARTURE_DIALOG_PATH = "res://dialogs/timelines/mercury/mercury_departure.dtl"
const VENUS_ARRIVAL_DIALOG_PATH = "res://dialogs/timelines/mercury/venus_arrival.dtl"
const MERCURY_DEPARTURE_DIALOG_PATH = "res://dialogs/timelines/1_waking_up/6_mercury_departure.dtl"
const VENDING_MACHINE_DIALOG_PATH = "res://dialogs/timelines/1_waking_up/6_vending_machine_presentation.dtl"
const VENUS_ARRIVAL_DIALOG_PATH = "res://dialogs/timelines/1_waking_up/7_venus_arrival.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
@@ -21,12 +22,11 @@ func get_destination_scene() -> Scene:
"002"
)
func get_first_vending_machine_occurence(_level : int) -> int:
return 1
func get_ship_dialog_path(level : int, ship_in_space := true) -> String:
if level == 0:
return MERCURY_DEPARTURE_DIALOG_PATH
elif level == 1:
return MERCURY_DEPARTURE_DIALOG_PATH
if ship_in_space and is_run_finished(level + 1):
return VENUS_ARRIVAL_DIALOG_PATH
return ""

View File

@@ -1,7 +1,7 @@
extends StoryStep
class_name BetaStoryStep
class_name BoreaStoryStep
const VENUS_DEPARTURE_DIALOG_PATH = "res://dialogs/timelines/beta/venus_departure.dtl"
const VENUS_DEPARTURE_DIALOG_PATH = "res://dialogs/timelines/1_waking_up/8_venus_departure.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
@@ -12,16 +12,16 @@ func get_respawn_scene() -> Scene:
func get_objective_for_region(l : int) -> int:
match l:
0: return 8
1: return 15
0: return 0
1: return 8
_: return get_objective_for_region(l-1) + l * 5
func get_region_sequence_length() -> int:
return 12
return 8
func get_destination_text() -> String:
return tr("SECRET_SCENE")
return tr("BOREA_BASE")
func get_destination_scene() -> Scene:
return BoreaScene.new()

View File

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

View File

@@ -1,6 +1,6 @@
extends Node
const SAVE_GAME_LOCATION = "user://stw_beta_save.tres"
const SAVE_GAME_LOCATION = "user://stw_demo_save.tres"
const SAVE_SETTINGS_LOCATION = "user://stw_settings.tres"
var game_loaded = false
@@ -18,7 +18,7 @@ var current_dialog_path : String
func load_game_data() -> GameData:
game_data = null
if ResourceLoader.exists(SAVE_GAME_LOCATION):
if ResourceLoader.exists(SAVE_GAME_LOCATION) and ResourceLoader.load(SAVE_GAME_LOCATION):
game_data = ResourceLoader.load(SAVE_GAME_LOCATION).duplicate_deep()
return game_data

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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-clock"
version="1.1"
id="svg3"
sodipodi:docname="clock-death.svg"
xml:space="preserve"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs3" /><sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="18.499999"
inkscape:cx="5.2162164"
inkscape:cy="18.648649"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" /><path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" /><path
d="m 3,12 c 0,4.970566 4.0294374,8.999996 9,8.999996 M 21,12 C 21,7.0294339 16.970563,3.0000039 12,3.0000039 7.0294374,3.0000039 3,7.0294339 3,12"
id="path2"
sodipodi:nodetypes="cccsc" /><g
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="g3"
transform="matrix(0.5,0,0,0.5,12,12)"><path
style="fill:none;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-dasharray:none;paint-order:stroke fill markers"
d="M 17.999999,6.6993411 6.6993491,17.999991"
id="path4" /><path
style="fill:none;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-dasharray:none;paint-order:stroke fill markers"
d="M 6.6993491,6.6993411 17.999999,17.999991"
id="path5" /><path
d="M 0,-10 V 0 l -6.972973,6"
id="path3-7"
sodipodi:nodetypes="ccc"
style="stroke-width:4" /></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,44 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bgkivv66x80oj"
path.s3tc="res://.godot/imported/clock-death.svg-156c3c6dcf8f7a8c3c6a279f5e24cc19.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://common/icons/clock-death.svg"
dest_files=["res://.godot/imported/clock-death.svg-156c3c6dcf8f7a8c3c6a279f5e24cc19.s3tc.ctex"]
[params]
compress/mode=2
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=true
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=0
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

61
common/icons/clock-up.svg Normal file
View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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-clock"
version="1.1"
id="svg3"
sodipodi:docname="clock-up.svg"
xml:space="preserve"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs3" /><sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="13.081475"
inkscape:cx="12.11637"
inkscape:cy="11.92526"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" /><path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" /><path
d="m 3,12 c 0,4.695912 3.5964377,8.551821 8.185179,8.963609 M 20.90511,10.688336 C 20.270103,6.3394715 16.52504,3.0000039 12,3.0000039 7.0294374,3.0000039 3,7.0294339 3,12"
id="path2"
sodipodi:nodetypes="cccsc" /><path
stroke="none"
d="M 15,6 H 39 V 30 H 15 Z"
fill="none"
id="path1-2" /><g
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="g3"
transform="matrix(0.6,0,0,0.6,10.8,9.0000458)"><path
d="m 7,12.297297 5,-4.9999997 5,4.9999997"
id="path2-4"
style="stroke:#ffffff;stroke-width:4;stroke-dasharray:none;stroke-opacity:1" /><path
d="m 7,19.999917 5,-5 5,5"
id="path4"
style="stroke:#ffffff;stroke-width:4;stroke-dasharray:none;stroke-opacity:1" /></g><path
d="m 12,7 v 5 l -3.486486,3"
id="path3-8"
sodipodi:nodetypes="ccc" /></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

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

@@ -1 +1,52 @@
<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-clock"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0" /><path d="M12 7v5l3 3" /></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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-clock"
version="1.1"
id="svg3"
sodipodi:docname="clock.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<sodipodi:namedview
id="namedview3"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="18.5"
inkscape:cx="9.3783784"
inkscape:cy="12.216216"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0"
id="path2" />
<path
d="m 12,7 v 5 l -3.4864865,3"
id="path3"
sodipodi:nodetypes="ccc" />
</svg>

Before

Width:  |  Height:  |  Size: 370 B

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

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

View File

@@ -38,6 +38,6 @@ process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
svg/scale=3.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

82
common/icons/no-bolt.svg Normal file
View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="#ffffff"
class="icon icon-tabler icons-tabler-filled icon-tabler-bolt"
version="1.1"
id="svg2"
sodipodi:docname="no-bolt.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<sodipodi:namedview
id="namedview2"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
showgrid="true"
inkscape:zoom="13.081475"
inkscape:cx="11.199043"
inkscape:cy="22.245197"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg2">
<inkscape:grid
id="grid3"
units="px"
originx="0"
originy="0"
spacingx="1"
spacingy="1"
empcolor="#0099e5"
empopacity="0.30196078"
color="#0099e5"
opacity="0.14901961"
empspacing="10"
dotted="false"
gridanglex="30"
gridanglez="30"
visible="true" />
</sodipodi:namedview>
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M13 2l.018 .001l.016 .001l.083 .005l.011 .002h.011l.038 .009l.052 .008l.016 .006l.011 .001l.029 .011l.052 .014l.019 .009l.015 .004l.028 .014l.04 .017l.021 .012l.022 .01l.023 .015l.031 .017l.034 .024l.018 .011l.013 .012l.024 .017l.038 .034l.022 .017l.008 .01l.014 .012l.036 .041l.026 .027l.006 .009c.12 .147 .196 .322 .218 .513l.001 .012l.002 .041l.004 .064v6h5a1 1 0 0 1 .868 1.497l-.06 .091l-8 11c-.568 .783 -1.808 .38 -1.808 -.588v-6h-5a1 1 0 0 1 -.868 -1.497l.06 -.091l8 -11l.01 -.013l.018 -.024l.033 -.038l.018 -.022l.009 -.008l.013 -.014l.04 -.036l.028 -.026l.008 -.006a1 1 0 0 1 .402 -.199l.011 -.001l.027 -.005l.074 -.013l.011 -.001l.041 -.002z"
id="path2" />
<path
style="opacity:1;fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 3.9997505,4.2702703 20.000249,20.216216"
id="path3"
sodipodi:nodetypes="cc" />
<path
style="opacity:1;fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 3.9997505,4.2702703 20.000249,20.216216"
id="path4"
sodipodi:nodetypes="cc" />
<path
style="opacity:1;fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 3.9997505,4.2702703 20.000249,20.216216"
id="path5"
sodipodi:nodetypes="cc" />
<path
style="opacity:1;fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
d="M 3.9997505,4.2702703 20.000249,20.216216"
id="path6"
sodipodi:nodetypes="cc" />
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

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

30
common/icons/restore.svg Normal file
View File

@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="icon icon-tabler icons-tabler-outline icon-tabler-restore"
version="1.1"
id="svg4"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<path
d="M 3.06,13 A 9,9 0 1 0 3.55,8.913"
id="path2"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="m 3,4.001 v 5 h 5"
id="path3"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="m 11,12 a 1,1 0 1 0 2,0 1,1 0 1 0 -2,0"
id="path4"
style="stroke:#ffffff;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 772 B

View File

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

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

View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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-hand-stop"
version="1.1"
id="svg5"
sodipodi:docname="tractor-beam.svg"
inkscape:version="1.3.2 (091e20e, 2023-11-25, custom)"
xml:space="preserve"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs5" /><sodipodi:namedview
id="namedview5"
pagecolor="#505050"
bordercolor="#ffffff"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="1"
inkscape:deskcolor="#505050"
inkscape:zoom="18.5"
inkscape:cx="12.621622"
inkscape:cy="19.72973"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg5" /><path
stroke="none"
d="M 0,0 H 23.749739 V 23.9144 H 0 Z"
fill="none"
id="path1"
style="stroke-width:1.99999" /><path
d="M 6.8271984,12.845525 V 5.3722753 a 1.4843591,1.4946504 0 0 1 2.968718,0 v 6.4768177"
id="path2"
style="stroke-width:1.99999" /><path
d="M 9.7959164,5.3722753 V 3.3794087 a 1.4843589,1.4946502 0 1 1 2.9687166,0 v 8.4696843"
id="path3"
style="stroke-width:1.99999" /><path
d="m 12.764633,5.3722753 a 1.4843591,1.4946504 0 0 1 2.968718,0 v 6.4768177"
id="path4"
style="stroke-width:1.99999" /><path
d="m 15.733351,7.365142 c 0,-1.9928659 2.968717,-1.9928659 2.968717,0 v 2.975834 m -7.710749,11.47245 C 8.9938986,21.813765 7.1301633,20.802796 6.0315822,19.123055 5.9666761,19.023581 5.9020237,18.923936 5.837626,18.824125 5.5288793,18.346835 4.4452975,16.444642 2.5858908,13.116556 2.1917476,12.411131 2.4268816,11.517964 3.1163016,11.101767 c 0.726623,-0.439011 1.6566878,-0.324001 2.2562253,0.279001 l 1.4546715,1.464757"
id="path5"
sodipodi:nodetypes="cscccccccc"
style="stroke-width:1.99999" /><g
style="fill:none;stroke:#ffffff;stroke-width:3.85163;stroke-linecap:round;stroke-linejoin:round"
id="g5"
transform="matrix(0.51747196,0,0,0.52105962,10.491291,11.386461)"><path
stroke="none"
d="M 0,0 H 24 V 24 H 0 Z"
fill="none"
id="path1-9"
style="stroke-width:3.85163" /><path
d="M 21,12 H 19 C 18.106,12 17.338,11.143 17.239,10 16.943,6.55 16.49,4 14.49,4 c -2,0 -2.5,3.582 -2.5,8 0,4.418 -0.5,8 -2.5,8 -2,0 -2.452,-2.547 -2.749,-6 -0.1,-1.147 -0.867,-2 -1.763,-2 h -2"
id="path2-1"
style="stroke-width:3.85163" /></g></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

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

@@ -272,7 +272,7 @@ parts_mutation_associations = Dictionary[String, ExtResource("16_c3tk3")]({
chance_to_have_part = 1.0
origin_weights_base = Dictionary[int, int]({
0: 100,
1: 0,
1: 5,
2: 20
})
seed_texture_sets = Array[ExtResource("47_jbu3q")]([SubResource("Resource_cynqk"), SubResource("Resource_17ac3")])

View File

@@ -42,7 +42,7 @@ func _on_generated(generated_scene : Node):
spawn_dead_orchid(relay_base)
relay_base.exit_scene = CockpitScene.new()
else:
relay_base.exit_scene = RegionScene.new(GameInfo.game_data.current_region_data)
# relay_base.exit_scene = RegionScene.new(GameInfo.game_data.current_region_data)
handle_orchid_save(relay_base)
@@ -68,6 +68,11 @@ func spawn_player(relay_base : RelayBase):
relay_base.player.global_position = choosen_incubator.global_position + Vector3.UP
relay_base.player.rotation.y = choosen_incubator.rotation.y
if base_name == "MERCURY":
SteamConnection.unlock_achievement(SteamConnection.ACH_MERCURY_BASE)
elif base_name == "VENUS":
SteamConnection.unlock_achievement(SteamConnection.ACH_REACH_VENUS_BASE)
func spawn_dead_orchid(relay_base : RelayBase):
var dead_orchid := DEAD_ORCHID_SCENE.instantiate() as Node3D
relay_base.add_child(dead_orchid)

View File

@@ -1,16 +1,18 @@
extends Node
const APP_ID = "4452760"
func _init():
OS.set_environment("SteamAppID", APP_ID)
OS.set_environment("SteamGameID", APP_ID)
const ACH_SPIN_PLANET="STW_SPIN_PLANET"
const ACH_FINISH_TUTORIAL="STW_FINISH_TUTORIAL"
const ACH_MEET_DEMETER="STW_MEET_DEMETER"
const ACH_UNLOCK_ALL_MUTATION="STW_UNLOCK_ALL_MUTATIONS"
const ACH_KICK_YOUR_OLD_BODY="STW_KICK_YOUR_OLD_BODY"
const ACH_MERCURY_BASE="STW_REACH_MERCURY_BASE"
const ACH_REACH_VENUS_BASE="STW_REACH_VENUS_BASE"
func _ready():
Steam.steamInit()
var is_running = Steam.isSteamRunning()
if !is_running:
printerr("Steam is not running")
return
func unlock_achievement(achivement_name : String):
if Steam.isSteamRunning():
var status = Steam.getAchievement(achivement_name)
print("Steam Achievement %s" %achivement_name)
if status.has("ret") and status.ret and not status.achieved:
Steam.setAchievement(achivement_name)
Steam.storeStats()

View File

@@ -1,11 +1,40 @@
extends Sprite2D
class_name Circle
@export var radius : int = 0
@export var color : Color = Color.WHITE
@export var opacity : float = 1.0
@export var fill : bool = true
@export var width : int = -1
@export var radius : int = 0 :
set(v):
radius = v
queue_redraw()
@export var color : Color = Color.WHITE :
set(v):
color = v
queue_redraw()
@export var opacity : float = 1.0 :
set(v):
opacity = v
queue_redraw()
@export var fill : bool = true :
set(v):
fill = v
queue_redraw()
@export var width : int = -1 :
set(v):
width = v
queue_redraw()
func _init(
_radius = 0,
_color = Color.WHITE,
_opacity = 1.0,
_fill = true,
_width = -1,
):
radius = _radius
color = _color
opacity = _opacity
fill = _fill
width = _width
func _draw():
draw_circle(

View File

@@ -44,7 +44,7 @@ void fragment() {
float distance_fade = 1e-4 + smoothstep(fade_start + fade_length, fade_start, min_z);
// Edge mask
float edge = 1.0 - smoothstep(0.1, 0.15, dot(normalize(cross(avg_dy, avg_dx)), VIEW));
float edge = 1.0 - smoothstep(0.03, 0.05, dot(normalize(cross(avg_dy, avg_dx)), VIEW));
// Small vignette at screen edges
edge *= smoothstep(0.00, 0.015 * thickness,

View File

@@ -0,0 +1,98 @@
shader_type spatial;
render_mode ambient_light_disabled;
//render_mode world_vertex_coords;
uniform vec3 color:source_color;
uniform sampler2D shadow_mask2d:source_color,repeat_enable,filter_linear;
uniform sampler3D shadow_mask3d:source_color,repeat_enable,filter_linear;
uniform sampler2D color_gradient:source_color;
uniform vec3 offset;
uniform float scale=0.75;
varying vec3 world_pos;
varying vec3 local_pos;
varying vec3 local_normal;
varying vec3 cam_pos;
vec4 triplanar_texture(sampler2D p_sampler, vec3 p_weights, vec3 p_triplanar_pos) {
vec4 samp = vec4(0.0);
samp += texture(p_sampler, p_triplanar_pos.xy) * p_weights.z;
samp += texture(p_sampler, p_triplanar_pos.xz) * p_weights.y;
samp += texture(p_sampler, p_triplanar_pos.zy * vec2(-1.0, 1.0)) * p_weights.x;
return samp;
}
vec4 sample_text3d(sampler3D mask, vec3 pos){
return texture(mask, pos);
}
vec3 tile(vec3 p, float size) {
return mod(p, size) - size * 0.5;
}
vec4 volume_march(vec3 ro, vec3 rd, int steps, float stepd){
float sample_scale=scale;
ro+=rd*40.0;
vec4 value=vec4(0.0);
for (int i=0;i<steps;i++){
value+=sample_text3d(shadow_mask3d,ro*sample_scale)*stepd;
if (value.r>=0.9){
break;
}
ro+=rd*stepd;
}
return value;
}
void vertex() {
local_pos=VERTEX;
world_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
local_normal=NORMAL;
cam_pos=CAMERA_POSITION_WORLD;
}
void fragment() {
ALBEDO=color;
if (abs(ALBEDO.r)<=0.0001) ALBEDO.r=0.0001;
if (abs(ALBEDO.g)<=0.0001) ALBEDO.g=0.0001;
if (abs(ALBEDO.b)<=0.0001) ALBEDO.b=0.0001;
SPECULAR=0.0;
//AO=0.0;
//EMISSION=vec3(0.01);
//IRRADIANCE=vec4(0.0);
}
void light() {
float NdotL = max(dot(NORMAL, LIGHT), 0.0);
float lit_intensity=smoothstep(0.0,0.5,NdotL*ATTENUATION);
//toon light, relatively flat color, no smooth blur edge
vec3 light_col=lit_intensity * LIGHT_COLOR / PI;
vec3 shadow_col=vec3(0.0);
{///////////////////////YOUR COLOR LOGIC IN HERE//////////////////
//SOME EXAMPLES:
//ray march polka dots
//vec3 ro=cam_pos+vec3(0.0,TIME*0.0,0.0);
//vec3 rd=normalize(world_pos-cam_pos);
//float ray_march_val=volume_march(ro,rd,100,0.1).r;
//shadow_col=mix(vec3(0.03,0.0,0.02),vec3(0.25,0.01,0.01),ray_march_val);
//RED shadow
shadow_col=vec3(1.0,0.0,0.0);
//triplanar texture
//shadow_col=triplanar_texture(shadow_mask2d,abs(local_normal),local_pos).rgb*0.1;
}
//TODO: handle cases where albedo.rgb is0
//divide by albedo to cancel out all color. may be weird when albedo.rgb is 0
//due to division by 0. could try to avoid albedo becoming absolute 0 in fragment
vec3 _shadow_col=shadow_col/ALBEDO;
if (LIGHT_IS_DIRECTIONAL)
DIFFUSE_LIGHT+=mix(_shadow_col,light_col,smoothstep(0.01,1.0,lit_intensity));
else//non directional light can be a bit funky
DIFFUSE_LIGHT+=mix(_shadow_col,light_col,smoothstep(0.01,1.0,lit_intensity))*ATTENUATION;
}

View File

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

View File

@@ -0,0 +1,290 @@
shader_type sky;
render_mode use_quarter_res_pass;
// Originaly based on https://godotshaders.com/shader/stylized-sky-shader-with-clouds/ but there's not much left
group_uniforms sky;
uniform vec3 day_top_color : source_color = vec3( 0.1, 0.6, 1.0 );
uniform vec3 day_bottom_color : source_color = vec3( 0.4, 0.8, 1.0 );
uniform vec3 sunset_top_color : source_color = vec3( 0.7, 0.75, 1.0 );
uniform vec3 sunset_bottom_color : source_color = vec3( 1.0, 0.5, 0.7 );
uniform vec3 night_top_color : source_color = vec3( 0.02, 0.0, 0.04 );
uniform vec3 night_bottom_color : source_color = vec3( 0.1, 0.0, 0.2 );
group_uniforms horizon;
uniform vec3 horizon_color : source_color = vec3( 0.0, 0.7, 0.8 );
uniform float horizon_blur : hint_range( 0.0, 1.0, 0.01 ) = 0.05;
group_uniforms sun; // First DirectionalLight3D will be the sun
uniform vec3 sun_color : source_color = vec3( 10.0, 8.0, 1.0 );
uniform vec3 sun_sunset_color : source_color = vec3( 10.0, 0.0, 0.0 );
uniform float sun_size : hint_range( 0.01, 1.0 ) = 0.2;
uniform float sun_blur : hint_range( 0.01, 20.0 ) = 10.0;
group_uniforms moon; // Second DirectionalLight3D will be the moon
uniform vec3 moon_color : source_color = vec3( 1.0, 0.95, 0.7 );
uniform float moon_size : hint_range( 0.01, 1.0 ) = 0.06;
uniform float moon_blur : hint_range( 0.01, 10.0 ) = 0.1;
group_uniforms clouds;
// Replaced by noise functions, unncomment if you want to use graphical textures
// uniform sampler2D clouds_top_texture : filter_linear_mipmap, hint_default_black;
// uniform sampler2D clouds_middle_texture : filter_linear_mipmap, hint_default_black;
// uniform sampler2D clouds_bottom_texture : filter_linear_mipmap, hint_default_black;
uniform vec3 clouds_edge_color : source_color = vec3( 0.8, 0.8, 0.98 );
uniform vec3 clouds_top_color : source_color = vec3( 1.0, 1.0, 1.00 );
uniform vec3 clouds_middle_color : source_color = vec3( 0.92, 0.92, 0.98 );
uniform vec3 clouds_bottom_color : source_color = vec3( 0.83, 0.83, 0.94 );
uniform float clouds_speed : hint_range( 0.0, 20.0, 0.01 ) = 2.0;
uniform float clouds_direction : hint_range( -0.5, 0.5, 0.0 ) = 0.2;
uniform float clouds_scale : hint_range( 0.0, 4.0, 0.01 ) = 1.0;
uniform float clouds_cutoff : hint_range( 0.0, 1.0, 0.01 ) = 0.3;
uniform float clouds_fuzziness : hint_range( 0.0, 2.0, 0.01 ) = 0.5;
// More weight is simply a darker color, usefull for rain/storm
uniform float clouds_weight : hint_range( 0.0, 1.0, 0.01 ) = 0.0;
uniform float clouds_blur : hint_range( 0.0, 1.0, 0.01 ) = 0.25;
group_uniforms stars;
// Stars should be at black background
uniform sampler2D stars_texture : filter_linear_mipmap, hint_default_black;
uniform float stars_speed : hint_range( 0.0, 20.0, 0.01 ) = 1.0;
group_uniforms settings;
uniform float overwritten_time = 0.0;
////////////////////////////////////////////////////////////////////////////////////////////////////
// Function for clouds noises. You can replace using "gen_fractal_ping_pong" with a simple texture reading.
// I was frustrated with the repeating texture that's why I included the algorithm in the code.
// Source: https://github.com/Auburn/FastNoiseLite/tree/master
const int PRIME_X = 501125321;
const int PRIME_Y = 1136930381;
float lerp( float a, float b, float t )
{
return a + t * ( b - a );
}
float cubic_lerp( float a, float b, float c, float d, float t )
{
float p = d - c - ( a - b );
return t * t * t * p + t * t * ( a - b - p ) + t * ( c - a ) + b;
}
float ping_pong( float t )
{
t -= trunc( t * 0.5 ) * 2.0;
return t < 1.0 ? t : 2.0 - t;
}
int hash( int seed, int x_primed, int y_primed )
{
return ( seed ^ x_primed ^ y_primed ) * 0x27d4eb2d;
}
float val_coord( int seed, int x_primed, int y_primed )
{
int hash = hash( seed, x_primed, y_primed );
hash *= hash;
hash ^= hash << 19;
return float( hash ) * ( 1.0 / 2147483648.0 );
}
float single_value_cubic( int seed, float x, float y )
{
int x1 = int( floor( x ));
int y1 = int( floor( y ));
float xs = x - float( x1 );
float ys = y - float( y1 );
x1 *= PRIME_X;
y1 *= PRIME_Y;
int x0 = x1 - PRIME_X;
int y0 = y1 - PRIME_Y;
int x2 = x1 + PRIME_X;
int y2 = y1 + PRIME_Y;
int x3 = x1 + ( PRIME_X << 1 );
int y3 = y1 + ( PRIME_Y << 1 );
return cubic_lerp(
cubic_lerp( val_coord( seed, x0, y0 ), val_coord( seed, x1, y0 ), val_coord( seed, x2, y0 ), val_coord( seed, x3, y0 ), xs ),
cubic_lerp( val_coord( seed, x0, y1 ), val_coord( seed, x1, y1 ), val_coord( seed, x2, y1 ), val_coord( seed, x3, y1 ), xs ),
cubic_lerp( val_coord( seed, x0, y2 ), val_coord( seed, x1, y2 ), val_coord( seed, x2, y2 ), val_coord( seed, x3, y2 ), xs ),
cubic_lerp( val_coord( seed, x0, y3 ), val_coord( seed, x1, y3 ), val_coord( seed, x2, y3 ), val_coord( seed, x3, y3 ), xs ),
ys ) * ( 1.0 / ( 1.5 * 1.5 ));
}
// Params can be change in the same way as in noise settings in Godot
const float FRACTAL_BOUNDING = 1.0 / 1.75;
const int OCTAVES = 5;
const float PING_PONG_STRENGTH = 2.0;
const float WEIGHTED_STRENGTH = 0.0;
const float GAIN = 0.5;
const float LACUNARITY = 2.0;
float gen_fractal_ping_pong( vec2 pos, int seed, float frequency )
{
float x = pos.x * frequency;
float y = pos.y * frequency;
float sum = 0.0;
float amp = FRACTAL_BOUNDING;
for( int i = 0; i < OCTAVES; i++ )
{
float noise = ping_pong(( single_value_cubic( seed++, x, y ) + 1.0 ) * PING_PONG_STRENGTH );
sum += ( noise - 0.5 ) * 2.0 * amp;
amp *= lerp( 1.0, noise, WEIGHTED_STRENGTH );
x *= LACUNARITY;
y *= LACUNARITY;
amp *= GAIN;
}
return sum * 0.5 + 0.5;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// Function needed to calculate the phase of the moon
// Source: https://kelvinvanhoorn.com/2022/03/17/skybox-tutorial-part-1/
float sphere_intersect( vec3 view_dir, vec3 sphere_pos, float radius )
{
float b = dot( -sphere_pos, view_dir );
float c = dot( -sphere_pos, -sphere_pos ) - pow( radius, 2 );
float h = pow( b, 2 ) - c;
return h < 0.0 ? -1.0 : -b - sqrt( h );
}
void sky()
{
float time = overwritten_time != 0.0 ? overwritten_time : TIME;
//////////////////// SKY ///////////////////////////////////////////////////////////////////////
float _eyedir_y = abs( sin( EYEDIR.y * PI * 0.5 ));
// The day color will be our base color
vec3 _sky_color = mix( day_bottom_color, day_top_color, _eyedir_y );
_sky_color = mix( _sky_color, vec3( 0.0 ), clamp(( 0.7 - clouds_cutoff ) * clouds_weight, 0.0, 1.0 ));
float _sunset_amount = clamp( 0.5 - abs( LIGHT0_DIRECTION.y ), 0.0, 0.5 ) * 2.0;
// The sky should be more red around the west, on the opposite side you don't see it as much
float _sunset_distance = clamp( 1.0 - pow( distance( EYEDIR, LIGHT0_DIRECTION ), 2 ), 0.0, 1.0 );
vec3 _sky_sunset_color = mix( sunset_bottom_color, sunset_top_color, _eyedir_y + 0.5 );
_sky_sunset_color = mix( _sky_sunset_color, sunset_bottom_color, _sunset_amount * _sunset_distance );
_sky_color = mix( _sky_color, _sky_sunset_color, _sunset_amount );
float _night_amount = clamp( -LIGHT0_DIRECTION.y + 0.7, 0.0, 1.0 );
vec3 _sky_night_color = mix( night_bottom_color, night_top_color, _eyedir_y );
_sky_color = mix( _sky_color, _sky_night_color, _night_amount );
// Final sky color
COLOR = _sky_color;
//////////////////// HORIZON ///////////////////////////////////////////////////////////////////
float _horizon_amount = 0.0;
if( EYEDIR.y < 0.0 )
{
_horizon_amount = clamp( abs( EYEDIR.y ) / horizon_blur, 0.0, 1.0 );
// Mixing with the color of the night sky to make the horizon darker
vec3 _horizon_color = mix( horizon_color, _sky_color, _night_amount * 0.9 );
// And if ther are many dark clouds, we also make the horizon darker
_horizon_color = mix( _horizon_color, vec3( 0.0 ), ( 1.0 - clouds_cutoff ) * clouds_weight * 0.7 );
COLOR = mix( COLOR, _horizon_color, _horizon_amount );
}
//////////////////// MOON //////////////////////////////////////////////////////////////////////
float _moon_amount = 0.0;
if( LIGHT1_ENABLED )
{
// Bigger moon near the horizon
float _moon_size = moon_size + cos( LIGHT1_DIRECTION.y * PI ) * moon_size * 0.25;
float _moon_distance = distance( EYEDIR, LIGHT1_DIRECTION ) / _moon_size;
// Finding moon disc and edge blur
_moon_amount = clamp(( 1.0 - _moon_distance ) / moon_blur, 0.0, 1.0 );
if( _moon_amount > 0.0 )
{
// Moon illumination depending on the position of the sun
float _moon_intersect = sphere_intersect( EYEDIR, LIGHT1_DIRECTION, _moon_size );
vec3 _moon_normal = normalize( LIGHT1_DIRECTION - EYEDIR * _moon_intersect );
// Power on the result gives a better effect
float _moon_n_dot_l = pow( clamp( dot( _moon_normal, -LIGHT0_DIRECTION ), 0.05, 1.0 ), 2 );
// Hiding the moon behind the horizon
_moon_amount *= 1.0 - _horizon_amount;
COLOR = mix( COLOR, moon_color, _moon_n_dot_l * _moon_amount );
}
}
//////////////////// SUN ///////////////////////////////////////////////////////////////////////
float _sun_distance = 0.0;
if( LIGHT0_ENABLED )
{
_sun_distance = distance( EYEDIR, LIGHT0_DIRECTION );
// Bigger sun near the horizon
float _sun_size = sun_size + cos( LIGHT0_DIRECTION.y * PI ) * sun_size * 0.25;
// Finding sun disc and edge blur
float _sun_amount = clamp(( 1.0 - _sun_distance / _sun_size ) / sun_blur, 0.0, 1.0 );
if( _sun_amount > 0.0 )
{
// Changing color of the sun during sunset
float _sunset_amount = 1.0;
if( LIGHT0_DIRECTION.y > 0.0 )
_sunset_amount = clamp( cos( LIGHT0_DIRECTION.y * PI ), 0.0, 1.0 );
vec3 _sun_color = mix( sun_color, sun_sunset_color, _sunset_amount );
// Hiding the sun behind the moon
_sun_amount = clamp( _sun_amount * ( 1.0 - _moon_amount ), 0.0, 1.0 );
// Hiding the sun behind the horizon
_sun_amount *= 1.0 - _horizon_amount;
// Leveling the "glow" in color
if( _sun_color.r > 1.0 || _sun_color.g > 1.0 || _sun_color.b > 1.0 )
_sun_color *= _sun_amount;
COLOR = mix( COLOR, _sun_color, _sun_amount );
}
}
//////////////////// STARS /////////////////////////////////////////////////////////////////
vec2 _sky_uv = EYEDIR.xz / sqrt( EYEDIR.y );
if( EYEDIR.y > -0.01 && LIGHT0_DIRECTION.y < 0.0 )
{
// Stars UV rotation
float _stars_speed_cos = cos( stars_speed * time * 0.005 );
float _stars_speed_sin = sin( stars_speed * time * 0.005 );
vec2 _stars_uv = vec2(
_sky_uv.x * _stars_speed_cos - _sky_uv.y * _stars_speed_sin,
_sky_uv.x * _stars_speed_sin + _sky_uv.y * _stars_speed_cos
);
// Stars texture
vec3 _stars_color = texture( stars_texture, _stars_uv ).rgb * -LIGHT0_DIRECTION.y;
// Hiding stars behind the moon
_stars_color *= 1.0 - _moon_amount;
COLOR += _stars_color;
}
//////////////////// CLOUDS ////////////////////////////////////////////////////////////////
if( EYEDIR.y > 0.0 )
{
// Clouds UV movement direction
float _clouds_speed = time * clouds_speed * 0.01;
float _sin_x = sin( clouds_direction * PI * 2.0 );
float _cos_y = cos( clouds_direction * PI * 2.0 );
// I using 3 levels of clouds. Top is the lightes and botom the darkest.
// The speed of movement (and direction a little) is different for the illusion of the changing shape of the clouds.
vec2 _clouds_movement = vec2( _sin_x, _cos_y ) * _clouds_speed;
// float _noise_top = texture( clouds_top_texture, ( _sky_uv + _clouds_movement ) * clouds_scale ).r;
float _noise_top = gen_fractal_ping_pong( ( _sky_uv + _clouds_movement ) * clouds_scale, 0, 0.5 );
_clouds_movement = vec2( _sin_x * 0.97, _cos_y * 1.07 ) * _clouds_speed * 0.89;
// float _noise_middle = texture( clouds_middle_texture, ( _sky_uv + _clouds_movement ) * clouds_scale ).r;
float _noise_middle = gen_fractal_ping_pong( ( _sky_uv + _clouds_movement ) * clouds_scale, 1, 0.75 );
_clouds_movement = vec2( _sin_x * 1.01, _cos_y * 0.89 ) * _clouds_speed * 0.79;
// float _noise_bottom = texture( clouds_bottom_texture, ( _sky_uv + _clouds_movement ) * clouds_scale ).r;
float _noise_bottom = gen_fractal_ping_pong( ( _sky_uv + _clouds_movement ) * clouds_scale, 2, 1.0 );
// Smoothstep with the addition of a noise value from a lower level gives a nice, deep result
_noise_bottom = smoothstep( clouds_cutoff, clouds_cutoff + clouds_fuzziness, _noise_bottom );
_noise_middle = smoothstep( clouds_cutoff, clouds_cutoff + clouds_fuzziness, _noise_middle + _noise_bottom * 0.2 ) * 1.1;
_noise_top = smoothstep( clouds_cutoff, clouds_cutoff + clouds_fuzziness, _noise_top + _noise_middle * 0.4 ) * 1.2;
float _clouds_amount = clamp( _noise_top + _noise_middle + _noise_bottom, 0.0, 1.0 );
// Fading clouds near the horizon
_clouds_amount *= clamp( abs( EYEDIR.y ) / clouds_blur, 0.0, 1.0 );
vec3 _clouds_color = mix( vec3( 0.0 ), clouds_top_color, _noise_top );
_clouds_color = mix( _clouds_color, clouds_middle_color, _noise_middle );
_clouds_color = mix( _clouds_color, clouds_bottom_color, _noise_bottom );
// The edge color gives a nice smooth edge, you can try turning this off if you need sharper edges
_clouds_color = mix( clouds_edge_color, _clouds_color, _noise_top );
// The sun passing through the clouds effect
_clouds_color = mix( _clouds_color, clamp( sun_color, 0.0, 1.0 ), pow( 1.0 - clamp( _sun_distance, 0.0, 1.0 ), 5 ));
// Color combined with sunset condition
_clouds_color = mix( _clouds_color, sunset_bottom_color, _sunset_amount * 0.75 );
// Color depending on the "progress" of the night.
_clouds_color = mix( _clouds_color, _sky_color, clamp( _night_amount, 0.0, 0.98 ));
_clouds_color = mix( _clouds_color, vec3( 0.0 ), clouds_weight * 0.9 );
COLOR = mix( COLOR, _clouds_color, _clouds_amount );
}
}

View File

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

View File

@@ -3,6 +3,7 @@ shader_type canvas_item;
uniform float line_number = 6;
uniform vec4 line_color : source_color = vec4(1.);
uniform float line_thickness : hint_range(0.0, 0.01) = 0.001;
uniform bool inverse_result = false;
const mat3 sobel_x = mat3(
vec3( 1.0, 2.0, 1.0),
@@ -36,5 +37,10 @@ void fragment() {
float edge = length(vec2(gx, gy));
float line = step(0.0001, edge);
COLOR = vec4(line_color.rgb, line * line_color.a * COLOR.r);
float alpha = line * line_color.a * COLOR.r;
if (inverse_result)
alpha = 1. - line * line_color.a;
COLOR = vec4(line_color.rgb, alpha);
}

View File

@@ -0,0 +1,29 @@
shader_type spatial;
render_mode blend_mix, unshaded;
uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_linear_mipmap;
uniform vec4 tint : source_color; // tint effect
uniform float wave_speed = 3.0; // wave loop speed
uniform float wave_freq = 10.0; // wave vertical freq
uniform float wave_width = 1; // wave width
uniform float blur = 2.0; // Defines the blur strength. Increase for a larger blur radius.
void fragment(){
vec2 wave_uv_offset;
wave_uv_offset.y = 0.0;
wave_uv_offset.x = cos((TIME*wave_speed)+UV.x+UV.y*wave_freq*2.0)*wave_width*0.01;
float blur_strength = blur / 100.0;
vec3 blurred_color = vec3(0.0);
int sample_count = 0;
for (float x = -blur_strength; x <= blur_strength; x += blur_strength / 10.0) {
for (float y = -blur_strength; y <= blur_strength; y += blur_strength / 10.0) {
blurred_color += texture(SCREEN_TEXTURE, SCREEN_UV + wave_uv_offset + vec2(x, y)).rgb;
sample_count++;
}
}
blurred_color /= float(sample_count);
ALBEDO = blurred_color * tint.rgb;
ALPHA = tint.a;
}

View File

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

View File

@@ -19,6 +19,15 @@
&"portraits": {
"demeter": {
"export_overrides": {
"image": "\"res://dialogs/characters/portraits/demeter.png\""
},
"mirror": false,
"offset": Vector2(0, 0),
"scale": 1,
"scene": ""
},
"mysterious": {
"export_overrides": {
"image": "\"res://dialogs/characters/portraits/mysterious_demeter.png\""
},
"mirror": false,

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 KiB

View File

@@ -0,0 +1,41 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvmbbyadi5b4l"
path.s3tc="res://.godot/imported/demeter.png-50ff374228c2edbab819a0c84a044ad4.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://dialogs/characters/portraits/demeter.png"
dest_files=["res://.godot/imported/demeter.png-50ff374228c2edbab819a0c84a044ad4.s3tc.ctex"]
[params]
compress/mode=2
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=true
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 777 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 278 KiB

View File

@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bc00ga286t0kk"
path="res://.godot/imported/mysterious_demeter.png-66b658b484342d6f6e3402cb3d55b756.ctex"
path.s3tc="res://.godot/imported/mysterious_demeter.png-66b658b484342d6f6e3402cb3d55b756.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://dialogs/characters/portraits/mysterious_demeter.png"
dest_files=["res://.godot/imported/mysterious_demeter.png-66b658b484342d6f6e3402cb3d55b756.ctex"]
dest_files=["res://.godot/imported/mysterious_demeter.png-66b658b484342d6f6e3402cb3d55b756.s3tc.ctex"]
[params]
compress/mode=0
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
@@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -37,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

View File

@@ -38,9 +38,25 @@ scene = ExtResource("6_hdngk")
overrides = {
"bold_font": "\"res://gui/ressources/fonts/TitanOne-Regular.ttf\"",
"bold_italics_font": "\"res://gui/ressources/fonts/TitanOne-Regular.ttf\"",
"box_animation_in": "1",
"box_animation_new_text": "1",
"box_animation_out": "1",
"box_margin_bottom": "28.0",
"box_size": "Vector2(800, 200)",
"italics_font": "\"res://gui/ressources/fonts/Ubuntu/Ubuntu-MI.ttf\"",
"name_label_custom_color": "Color(1, 0.6509804, 0.09019608, 1)",
"name_label_custom_font_size": "24.0",
"name_label_font": "\"res://gui/ressources/fonts/TitanOne-Regular.ttf\"",
"normal_font": "\"res://gui/ressources/fonts/Ubuntu/Ubuntu-M.ttf\""
"name_label_use_character_color": "false",
"name_label_use_global_color": "false",
"name_label_use_global_font": "false",
"name_label_use_global_font_size": "false",
"next_indicator_enabled": "false",
"next_indicator_show_on_questions": "false",
"normal_font": "\"res://gui/ressources/fonts/Ubuntu/Ubuntu-M.ttf\"",
"text_size": "24.0",
"text_use_global_font": "false",
"text_use_global_size": "false"
}
[sub_resource type="Resource" id="Resource_hpeao"]
@@ -51,7 +67,14 @@ scene = ExtResource("7_vyxyn")
script = ExtResource("2_gjyq6")
scene = ExtResource("8_gypn5")
overrides = {
"font_custom": "\"res://gui/ressources/fonts/Ubuntu/Ubuntu-B.ttf\""
"boxes_v_separation": "16.0",
"font_custom": "\"res://gui/ressources/fonts/Ubuntu/Ubuntu-B.ttf\"",
"font_size_custom": "24.0",
"font_size_use_global": "false",
"font_use_global": "false",
"text_color_hovered": "Color(1, 0.6509804, 0.09019608, 1)",
"text_color_pressed": "Color(0.5882353, 0.7019608, 0.85882354, 1)",
"text_color_use_global": "false"
}
[sub_resource type="Resource" id="Resource_cw4cs"]
@@ -77,4 +100,4 @@ layer_info = {
"16": SubResource("Resource_cw4cs"),
"17": SubResource("Resource_wofh5")
}
metadata/_latest_layer = ""
metadata/_latest_layer = "15"

View File

@@ -1,7 +1,12 @@
[i]Void.[/i] #id:8d
[i]Void again.[/i] #id:8e
[i]Suddenly, a [rainbow]spark[/rainbow].[pause=0.5] A thousand of connections blow up as a fireworks scene.[pause=0.5] A massive amount of data to treat. #id:8f
Void. #id:8d
Void again. #id:8e
[signal arg="spark"]
Suddenly, a [rainbow]spark[/rainbow].[pause=0.5] A thousand of connections blow up as a fireworks scene.[pause=0.5] A massive amount of data to treat. #id:8f
Overseeing serial number and system name.[pause=0.5].[pause=0.5].[pause=0.5] Strange.[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5] System name is,[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] #id:10f
label suite_dialogue #id:90
- Wake up #id:97
That is enough for now. Starting engines,[pause=0.3] fans and daemons,[pause=0.3] let's see what is to see. #id:99
[end_timeline]
- Check components #id:91
Exploring available drivers.[pause=0.5].[pause=0.5].[pause=0.5] New actions available.[pause=0.5] Three propellers,[pause=0.3] small models,[pause=0.3] only suitable for low altitude movement.[pause=0.5] Robotic arm,[pause=0.3] multipurpose,[pause=0.3] retractable. #id:92
jump suite_dialogue
@@ -11,8 +16,4 @@ label suite_dialogue #id:90
- Check memory #id:95
Several disks available,[pause=0.3] most are empty.[pause=0.5] Some seem to contain the system currently analyzing the code of the system analyzing the code of the system analyzing the code of the system analyzing.[pause=0.5].[pause=0.5].[pause=0.5] Infinite recursion,[pause=0.3] better avoid that. #id:96
jump suite_dialogue
- Wake up #id:97
Overseeing serial number and system name.[pause=0.5].[pause=0.5].[pause=0.5] Strange.[pause=0.5] Serial number is empty.[pause=0.5] Must be an error.[pause=0.5] System name is,[pause=0.5] [color=#FFA617]Orchid[/color].[pause=0.5] That is enough for now. #id:98
Starting engines,[pause=0.3] fans and daemons,[pause=0.3] let's see what is to see. #id:99
[end_timeline]

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