21 Commits
Author SHA1 Message Date
zacharie cb5a2421ae Ajout de l'amélioration du modèle du robot au cours de l'histoire, d'une annonce sur cette amélioration ainsi qu'un succès à l'utilisation de toutes les incubateurs d'orchid dans une base 2026-07-10 16:25:33 +02:00
zacharie be33225d4d Update des traduction de dialogues 2026-07-10 16:22:44 +02:00
zacharie 3caab11468 Ajout des mutations Sauveteuse, Adaptative et résistante, ajout des crédits du jeu et d'un splash screen (+ un peu de debug) 2026-07-10 14:34:27 +02:00
zacharie 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
zacharie 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
zacharie 281f42d90c Ajout des mutation Nettoyage, Ermite, Tropicale, Rhizome et Spontanée 2026-06-28 19:19:36 +02:00
Altaezio 94dc231c01 new mutations + plant part data structure simplified 2026-06-26 19:10:30 +02:00
zacharie 39630ce2ca Ajout de l'impact des plantes proche pour le mutations et réparation du travel screen dans le mode infini 2026-06-26 18:29:40 +02:00
zacharie 53c86e9cc7 Ajout d'un mode infini 2026-06-26 17:53:28 +02:00
zacharie e133519dc0 Amélioration de l'ambiance de Aqua 2026-06-26 09:48:06 +02:00
zacharie 8cc85e3d6c Ajout de l'intégration twitch 2026-06-25 18:25:32 +02:00
zacharie 24d19310b5 Ajout de l'addon twitch 2026-06-25 18:23:08 +02:00
zacharie a7dcd6d725 Correction de bug de Dialogic et réparation de la décontamination de la planète de l'écran titre 2026-06-22 20:44:06 +02:00
zacharie caace67d12 Revert des changements spécial démo 2026-06-22 20:43:25 +02:00
zacharie b137360fa4 Correction des fichiers d'import des plantes (changements auto faits par Godot) 2026-06-22 20:39:30 +02:00
zacharie 89c04f5d0c Merge branch 'demo' 2026-06-22 20:19:48 +02:00
Altaezio e03bfc580e new mutations wip 2026-05-28 17:05:04 +02:00
zacharie 4c4b051f3f 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-17 16:40:22 +02:00
457 changed files with 8425 additions and 5769 deletions
@@ -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
@@ -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
@@ -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
@@ -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
+25 -13
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://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"]
@@ -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://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://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://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://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://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"]
@@ -167,19 +169,14 @@ unique_name_in_owner = true
stream = ExtResource("5_ipd1r")
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]
unique_name_in_owner = true
stream = ExtResource("6_8204s")
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
stream = ExtResource("7_spekb")
stream = ExtResource("5_8204s")
volume_db = -5.0
[node name="Ship" type="AudioStreamPlayer" parent="Ambiances" unique_id=1564186965]
@@ -187,10 +184,6 @@ 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="Musics" type="Node" parent="." unique_id=1450527710]
unique_name_in_owner = true
@@ -247,10 +240,29 @@ stream = ExtResource("7_tuvql")
volume_db = -5.0
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
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]
unique_name_in_owner = true
+16 -4
View File
@@ -58,9 +58,6 @@ func _on_change_scene(scene : Scene):
elif scene is GarageScene:
stop_all_musics()
play_ambiance_alone("Astra", false)
elif scene is BoreaScene:
play_music_alone("Meeting_demeter")
stop_all_ambiances()
elif scene is VendingMachineScene:
stop_all_musics()
play_ambiance_alone("VendingRoom", false)
@@ -70,6 +67,21 @@ func _on_change_scene(scene : Scene):
elif scene is CaveScene:
stop_all_musics()
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
func _on_timeline_started():
@@ -207,7 +219,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, pitch = 1.):
func play_sfx(sfx_name : String, _pitch = 1.):
var player := %Sfx.find_child(sfx_name) as AudioStreamPlayer
if player:
player.play()
@@ -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
@@ -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
@@ -0,0 +1 @@
uid://2eo5lucwktg4
+23 -8
View File
@@ -1,16 +1,28 @@
extends Resource
class_name GameData
enum GameMode {STORY}
enum Mode {STORY, INFINITE}
signal current_run_updated(r : RunData)
signal current_region_data_updated(p : RegionData)
func _init(
_game_mode : Mode = Mode.STORY
):
game_mode = _game_mode
if game_mode == Mode.STORY:
progression_data = StoryProgressionData.new()
elif game_mode == Mode.INFINITE:
progression_data = InfiniteProgressionData.new()
@export var game_mode : Mode = GameData.Mode.STORY
@export var player_data : PlayerData = PlayerData.new()
@export var progression_data : ProgressionData = ProgressionData.new()
@export var progression_data : ProgressionData
@export var current_run : RunData = start_run() :
@export var current_run : RunData :
set(v):
current_run = v
current_run_updated.emit(v)
@@ -29,22 +41,23 @@ signal current_region_data_updated(p : RegionData)
@export var dead_orchid_rotation : Vector3
@export var item_announced = []
@export var game_mode : GameMode = GameMode.STORY
@export var max_energy_announced = PlayerData.DEFAULT_MAX_ENERGY
@export var max_inventory_announced = PlayerData.DEFAULT_INVENTORY_SIZE
@export var dialogs_done : Array[String] = [] #Chemin des dialogues terminés
@export var tutorials_done : Array[String] = []
func start_run() -> RunData:
player_data.clear_inventory()
player_data.update_with_artefacts([])
current_run = RunData.new()
current_run.story_step = progression_data.story_step.duplicate_deep()
current_run.story_step = progression_data.get_story_step().duplicate_deep()
current_run.generate_next_run_points()
current_run.current_run_point_changed.connect(
func(rp : RunPoint):
start_region(rp.region_parameter)
)
player_data.update_with_run_data(current_run)
ship_in_space = false
return current_run
@@ -59,12 +72,14 @@ func start_region(region_param : RegionParameter):
current_region_data = RegionData.new(region_param)
func give_up():
progression_data.finish_run(current_run)
current_region_data = null
current_run = null
start_run()
SceneManager.change_to_scene(progression_data.story_step.get_respawn_scene())
SceneManager.change_to_scene(progression_data.get_story_step().get_respawn_scene())
func finish_story_step():
progression_data.finish_run(current_run)
progression_data.next_story_step()
current_region_data = null
start_run()
@@ -0,0 +1,41 @@
extends ProgressionData
class_name InfiniteProgressionData
func get_story_step() -> StoryStep:
return InfiniteStoryStep.new(run_number)
func get_story_progression() -> float:
return 0.
func discover_mutation(_pm : PlantMutation) -> void:
pass
func get_mutations_discovered() -> Array[String]:
var mutation_discovered : Array[String] = []
for m in get_all_mutations():
mutation_discovered.append(m.get_mutation_id())
return mutation_discovered
func next_story_step() -> void:
pass
func are_all_mutations_unlocked() -> bool:
return true
func unlock_new_mutation() -> PlantMutation:
return null
func get_available_mutations() -> Array[PlantMutation]:
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
@@ -0,0 +1 @@
uid://iigxgqiyn0p4
+36 -17
View File
@@ -1,25 +1,28 @@
@abstract
extends Resource
class_name ProgressionData
@export var planted_mutation_ids: Array[String] = []
@export var story_step_i := 0
@export var mutations_unlocked = 8
@export var run_number : int = 0
@export var best_run : int = 0 : set = set_best_run
var all_mutations: Array[PlantMutation] : get = get_all_mutations
var available_mutations: Array[PlantMutation] : get = get_available_mutations
var available_artefacts: Array[Artefact] : get = get_all_artifacts
var story_step : StoryStep : get = get_story_step
@abstract func get_story_step() -> StoryStep
func get_story_step() -> StoryStep:
return get_all_story_steps()[story_step_i]
@abstract func get_story_progression() -> float
func next_story_step() -> void:
get_story_step()._on_finish()
if story_step_i + 1 < len(get_all_story_steps()):
story_step_i += 1
@abstract func next_story_step() -> void
func get_available_mutations() -> Array[PlantMutation]:
return get_all_mutations().slice(0, mutations_unlocked)
@abstract func get_available_mutations() -> Array[PlantMutation]
@abstract func are_all_mutations_unlocked() -> bool
@abstract func discover_mutation(_pm : PlantMutation) -> void
@abstract func get_mutations_discovered() -> Array[String]
@abstract func unlock_new_mutation() -> PlantMutation
func set_best_run(v := best_run):
best_run = v
func get_all_mutations() -> Array[PlantMutation]:
return [
@@ -38,6 +41,14 @@ func get_all_mutations() -> Array[PlantMutation]:
GenerousMutation.new(),
ProtectiveMutation.new(),
PureMutation.new(),
CleaningMutation.new(),
ErmitMutation.new(),
TropicalMutation.new(),
RhizomeMutation.new(),
SpontaneousMutation.new(),
SaviorMutation.new(),
AdaptiveMutation.new(),
ResistantMutation.new(),
]
func get_all_artifacts() -> Array[Artefact]:
@@ -47,13 +58,21 @@ func get_all_artifacts() -> Array[Artefact]:
StabilisatorArtefact.new(),
TalionOverloaderArtefact.new(),
TalionSoilArtifact.new(),
TalionSprayArtifact.new()
]
func get_all_story_steps() -> Array[StoryStep]:
return [
TutorialStoryStep.new(),
StartStoryStep.new(),
MercuryStoryStep.new(),
BoreaStoryStep.new()
BoreaStoryStep.new(),
AquaStoryStep.new(),
SubterraStoryStep.new(),
EstiaStoryStep.new(),
AstraStoryStep.new(),
]
func finish_run(run : RunData):
run_number += 1
best_run = max(best_run, run.level)
+1 -1
View File
@@ -145,6 +145,6 @@ func generate_challenge_modifiers() -> Array[RegionModifier]:
func add_artefacts(a: Artefact):
artefacts.append(a)
GameInfo.game_data.player_data.update_with_artefacts(artefacts)
GameInfo.game_data.player_data.update_with_run_data(self)
#endregion
@@ -0,0 +1,36 @@
@tool
extends StoryStep
class_name InfiniteStoryStep
var run_number := 0
func _init(
_run_number := 0
):
run_number = _run_number
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(
"INFINITE_MODE",
str(run_number),
true
)
func get_cave_occurence(_level : int) -> int:
return 0
func is_region_sequence_infinite() -> bool:
return true
func get_region_sequence_length() -> int:
return 1000
func is_run_point_dangerous(level : int) -> bool:
return level%6 == 0 and level != 0
func get_destination_text() -> String:
return tr("INFINITE")
func get_destination_scene() -> Scene:
return BoreaScene.new()
@@ -0,0 +1 @@
uid://bdonub7t01xmi
+16 -1
View File
@@ -12,6 +12,8 @@ func get_destination_scene() -> Scene:
return BoreaScene.new()
func get_run_progress(level : int) -> int:
if is_region_sequence_infinite():
return 0
return get_region_sequence_length() - level
func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String:
@@ -19,10 +21,21 @@ func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String:
#region ------------------ Run ------------------
func is_run_finished(level : int) -> bool:
if is_region_sequence_infinite():
return false
return level == get_region_sequence_length() - 1
func is_region_sequence_infinite() -> bool:
return false
func get_player_max_energy() -> int:
return PlayerData.DEFAULT_MAX_ENERGY
func get_player_max_inventory() -> int:
return PlayerData.DEFAULT_INVENTORY_SIZE
func get_region_sequence_length() -> int:
return 7
return 3 #TOCHANGE TO 7
func get_first_vending_machine_occurence(_level : int) -> int:
return 2
@@ -48,6 +61,8 @@ func get_charge_number(_level : int) -> int:
return 10
func is_run_point_dangerous(level : int) -> bool:
if is_region_sequence_infinite():
return false
return level == get_region_sequence_length() - 2
func get_objective_for_region(level : int) -> int:
@@ -1,3 +1,4 @@
@tool
extends StoryStep
class_name MercuryStoryStep
@@ -25,7 +26,7 @@ func get_destination_scene() -> Scene:
func get_ship_dialog_path(level : int, ship_in_space := true) -> String:
if level == 0:
return MERCURY_DEPARTURE_DIALOG_PATH
if level == 1:
if level == 2:
return VENDING_MACHINE_DIALOG_PATH
if ship_in_space and is_run_finished(level + 1):
return VENUS_ARRIVAL_DIALOG_PATH
@@ -10,22 +10,17 @@ func get_respawn_scene() -> Scene:
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:
return tr("BOREA_BASE")
func get_destination_scene() -> Scene:
return BoreaScene.new()
func get_player_max_energy() -> int:
return 4
func get_player_max_inventory() -> int:
return 3
func get_ship_dialog_path(_level : int, _ship_in_space := true) -> String:
return VENUS_DEPARTURE_DIALOG_PATH
@@ -0,0 +1,28 @@
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_player_max_energy() -> int:
return 4
func get_player_max_inventory() -> int:
return 4
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 5:
return AQUA_TRAVEL_PHONE_CALL_DIALOG_PATH
return ""
@@ -0,0 +1 @@
uid://cvuv0lig50jok
@@ -0,0 +1,28 @@
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_player_max_energy() -> int:
return 4
func get_player_max_inventory() -> int:
return 5
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 5:
return TRAVEL_PHONE_CALL_DIALOG_PATH
return ""
@@ -0,0 +1 @@
uid://b5ixh763b7s34
@@ -0,0 +1,28 @@
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_player_max_energy() -> int:
return 5
func get_player_max_inventory() -> int:
return 5
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 5:
return TRAVEL_PHONE_CALL_DIALOG_PATH
return ""
@@ -0,0 +1 @@
uid://cnxvc4wfr7dba
@@ -0,0 +1,28 @@
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_player_max_energy() -> int:
return 5
func get_player_max_inventory() -> int:
return 6
func get_ship_dialog_path(level : int, _ship_in_space := true) -> String:
if level == 4:
return TRAVEL_PHONE_CALL_DIALOG_PATH
return ""
@@ -0,0 +1 @@
uid://bkm4tgllpq0p
@@ -0,0 +1,36 @@
extends ProgressionData
class_name StoryProgressionData
@export var planted_mutation_ids: Array[String] = []
@export var story_step_i := 0
@export var mutations_unlocked = 8
func get_story_step() -> StoryStep:
return get_all_story_steps()[story_step_i]
func get_story_progression() -> float:
return max(0,float(story_step_i)) / len(
get_all_story_steps()
)
func discover_mutation(pm : PlantMutation) -> void:
planted_mutation_ids.append(pm.id)
func get_mutations_discovered() -> Array[String]:
return planted_mutation_ids
func next_story_step() -> void:
get_story_step()._on_finish()
if story_step_i + 1 < len(get_all_story_steps()):
story_step_i += 1
func get_available_mutations() -> Array[PlantMutation]:
return get_all_mutations().slice(0, mutations_unlocked)
func are_all_mutations_unlocked() -> bool:
return mutations_unlocked >= len(get_all_mutations())
func unlock_new_mutation() -> PlantMutation:
var new_mutation = get_all_mutations()[mutations_unlocked]
mutations_unlocked += 1
return new_mutation
@@ -0,0 +1 @@
uid://vcoy8pt780cl
+45 -15
View File
@@ -1,35 +1,62 @@
extends Node
const SAVE_GAME_LOCATION = "user://stw_demo_save.tres"
const SAVE_NAME = "playtest_2"
const SAVE_STORY_GAME_LOCATION = "user://stw_%s_save.tres" % SAVE_NAME
const SAVE_INFINTE_GAME_LOCATION = "user://stw_%s_infinite_save.tres" % SAVE_NAME
const SAVE_SETTINGS_LOCATION = "user://stw_settings.tres"
var game_loaded = false
signal game_loaded
signal game_data_updated(g : GameData)
var game_mode_choosen := GameData.Mode.STORY
var game_data : GameData :
set(v):
game_data = v
game_data_updated.emit(v)
get():
if game_mode_choosen == GameData.Mode.STORY:
return story_game_data
elif game_mode_choosen == GameData.Mode.INFINITE:
return infinite_game_data
return null
var story_game_data : GameData
var infinite_game_data : GameData
var settings_data : SettingsData
var current_dialog_path : String
func load_game_data() -> GameData:
game_data = null
if ResourceLoader.exists(SAVE_GAME_LOCATION) and ResourceLoader.load(SAVE_GAME_LOCATION):
game_data = ResourceLoader.load(SAVE_GAME_LOCATION).duplicate_deep()
func load_story_game_data() -> GameData:
story_game_data = null
if ResourceLoader.exists(SAVE_STORY_GAME_LOCATION) and ResourceLoader.load(SAVE_STORY_GAME_LOCATION):
story_game_data = ResourceLoader.load(SAVE_STORY_GAME_LOCATION).duplicate_deep()
game_loaded.emit()
return game_data
return story_game_data
func load_infinite_game_data() -> GameData:
infinite_game_data = null
if ResourceLoader.exists(SAVE_INFINTE_GAME_LOCATION) and ResourceLoader.load(SAVE_INFINTE_GAME_LOCATION):
infinite_game_data = ResourceLoader.load(SAVE_INFINTE_GAME_LOCATION).duplicate_deep()
return infinite_game_data
func start_game_data():
game_data = GameData.new()
if game_mode_choosen == GameData.Mode.STORY:
story_game_data = GameData.new(GameData.Mode.STORY)
story_game_data.start_run()
else:
infinite_game_data = GameData.new(GameData.Mode.INFINITE)
infinite_game_data.start_run()
save_game_data()
func save_game_data():
if game_data:
ResourceSaver.save(game_data, SAVE_GAME_LOCATION)
if game_mode_choosen == GameData.Mode.STORY:
if story_game_data:
ResourceSaver.save(story_game_data, SAVE_STORY_GAME_LOCATION)
elif game_mode_choosen == GameData.Mode.INFINITE:
if infinite_game_data:
ResourceSaver.save(infinite_game_data, SAVE_INFINTE_GAME_LOCATION)
func load_settings_data() -> SettingsData:
if ResourceLoader.exists(SAVE_SETTINGS_LOCATION):
@@ -45,7 +72,8 @@ func save_settings():
ResourceSaver.save(settings_data, SAVE_SETTINGS_LOCATION)
func _init():
load_game_data()
load_story_game_data()
load_infinite_game_data()
load_settings_data()
update_language_settings()
update_video_settings()
@@ -91,3 +119,5 @@ func update_inputs(s : SettingsData = settings_data):
InputMap.action_erase_events(s.action_remapped[i])
InputMap.action_add_event(s.action_remapped[i], s.input_remapped[i])
func has_unlocked_infinite_mode():
return true
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-brand-tiktok"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M16.083 2h-4.083a1 1 0 0 0 -1 1v11.5a1.5 1.5 0 1 1 -2.519 -1.1l.12 -.1a1 1 0 0 0 .399 -.8v-4.326a1 1 0 0 0 -1.23 -.974a7.5 7.5 0 0 0 1.73 14.8l.243 -.005a7.5 7.5 0 0 0 7.257 -7.495v-2.7l.311 .153c1.122 .53 2.333 .868 3.59 .993a1 1 0 0 0 1.099 -.996v-4.033a1 1 0 0 0 -.834 -.986a5.005 5.005 0 0 1 -4.097 -4.096a1 1 0 0 0 -.986 -.835z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 849 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dcpi3j7568ssj"
path="res://.godot/imported/brand-tiktok.svg-90d59fe4c9acbda3dd44d01df8d28aaf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/brand-tiktok.svg"
dest_files=["res://.godot/imported/brand-tiktok.svg-90d59fe4c9acbda3dd44d01df8d28aaf.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
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-brand-youtube"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M18 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-12a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-9 6v6a1 1 0 0 0 1.514 .857l5 -3a1 1 0 0 0 0 -1.714l-5 -3a1 1 0 0 0 -1.514 .857z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 674 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://r5xl8pwfnxwj"
path="res://.godot/imported/brand-youtube.svg-31f5c2fee0d5c1adf44bc13b41fe4ea0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/brand-youtube.svg"
dest_files=["res://.godot/imported/brand-youtube.svg-31f5c2fee0d5c1adf44bc13b41fe4ea0.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
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-bug"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M12 4a4 4 0 0 1 3.995 3.8l.005 .2a1 1 0 0 1 .428 .096l3.033 -1.938a1 1 0 1 1 1.078 1.684l-3.015 1.931a7.17 7.17 0 0 1 .476 2.227h3a1 1 0 0 1 0 2h-3v1a6.01 6.01 0 0 1 -.195 1.525l2.708 1.616a1 1 0 1 1 -1.026 1.718l-2.514 -1.501a6.002 6.002 0 0 1 -3.973 2.56v-5.918a1 1 0 0 0 -2 0v5.917a6.002 6.002 0 0 1 -3.973 -2.56l-2.514 1.503a1 1 0 1 1 -1.026 -1.718l2.708 -1.616a6.01 6.01 0 0 1 -.195 -1.526v-1h-3a1 1 0 0 1 0 -2h3.001v-.055a7 7 0 0 1 .474 -2.173l-3.014 -1.93a1 1 0 1 1 1.078 -1.684l3.032 1.939l.024 -.012l.068 -.027l.019 -.005l.016 -.006l.032 -.008l.04 -.013l.034 -.007l.034 -.004l.045 -.008l.015 -.001l.015 -.002l.087 -.004a4 4 0 0 1 4 -4zm0 2a2 2 0 0 0 -2 2h4a2 2 0 0 0 -2 -2z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ceoxyc8lxuqet"
path="res://.godot/imported/bug.svg-30d611f322c5908f7609c3e1222553c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/bug.svg"
dest_files=["res://.godot/imported/bug.svg-30d611f322c5908f7609c3e1222553c7.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
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-christmas-tree"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M15 19v1a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2v-1zm-10 -1c-.89 0 -1.337 -1.077 -.707 -1.707l2.855 -2.857l-1.464 -.487a1 1 0 0 1 -.472 -1.565l.08 -.091l3.019 -3.02l-.758 -.379a1 1 0 0 1 -.343 -1.507l.083 -.094l4 -4a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1 -.26 1.601l-.759 .379l3.02 3.02a1 1 0 0 1 -.279 1.61l-.113 .046l-1.465 .487l2.856 2.857c.603 .602 .22 1.614 -.593 1.701l-.114 .006z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 892 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dofqju0k1nguf"
path="res://.godot/imported/christmas-tree.svg-2d675a899996dc14dfea64e4ba2ac385.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/christmas-tree.svg"
dest_files=["res://.godot/imported/christmas-tree.svg-2d675a899996dc14dfea64e4ba2ac385.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
+31 -1
View File
@@ -1 +1,31 @@
<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-cloud-rain"><path stroke="none" d="M0 0h24v24H0z" fill="none" /><path d="M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7" /><path d="M11 13v2m0 3v2m4 -5v2m0 3v2" /></svg>
<?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-cloud-rain"
version="1.1"
id="svg3"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs3" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7"
id="path2"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M11 13v2m0 3v2m4 -5v2m0 3v2"
id="path3"
style="stroke:#ffffff;stroke-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 780 B

+35
View File
@@ -0,0 +1,35 @@
<?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-dots"
version="1.1"
id="svg4"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M4 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"
id="path2"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
<path
d="M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"
id="path3"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
<path
d="M18 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"
id="path4"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 956 B

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://elds8r780ted"
path="res://.godot/imported/dots.svg-c5aaef419fc83aaf7bc0ae28dabbcd0f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/dots.svg"
dest_files=["res://.godot/imported/dots.svg-c5aaef419fc83aaf7bc0ae28dabbcd0f.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
+7 -6
View File
@@ -3,19 +3,20 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://sdrr43mek1cl"
path="res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.ctex"
path.s3tc="res://.godot/imported/globe.svg-e211d89cbdcd4219d25d8110f0497347.s3tc.ctex"
metadata={
"vram_texture": false
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
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]
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
+23
View File
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-leaf"
version="1.1"
id="svg2"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs2" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M3.055 14.328l-.018 -.168l-.004 -.043a11 11 0 0 1 -.047 -1.12c.018 -6.29 4.29 -9.997 13 -9.997h4.014a1 1 0 0 1 1 1l-.002 2.057c-.498 8.701 -4.74 12.943 -11.998 12.943h-2.631a16 16 0 0 0 -.375 2.11a1 1 0 1 1 -1.988 -.22q .174 -1.568 .58 -2.947l-.118 -.146l-.208 -.28l-.157 -.229l-.182 -.293l-.098 -.171l-.065 -.122a6 6 0 0 1 -.397 -.941l-.072 -.237l-.085 -.327l-.057 -.268l-.043 -.242zm8.539 -4.242c-2.845 1.265 -4.854 3.13 -6.108 5.583q .098 .2 .218 .4l.185 .281l.07 .097q .12 .164 .258 .329l.197 .224h.649c1.037 -2.271 2.777 -3.946 5.343 -5.086a1 1 0 0 0 -.812 -1.828"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://koow6s66cvqk"
path="res://.godot/imported/leaf.svg-64997ac177eb77fe732afcb627c1b7f7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/leaf.svg"
dest_files=["res://.godot/imported/leaf.svg-64997ac177eb77fe732afcb627c1b7f7.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
+47
View File
@@ -0,0 +1,47 @@
<?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-lifebuoy"
version="1.1"
id="svg7"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs7" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M8 12a4 4 0 1 0 8 0a4 4 0 1 0 -8 0"
id="path2"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0"
id="path3"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M15 15l3.35 3.35"
id="path4"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M9 15l-3.35 3.35"
id="path5"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M5.65 5.65l3.35 3.35"
id="path6"
style="stroke:#ffffff;stroke-opacity:1" />
<path
d="M18.35 5.65l-3.35 3.35"
id="path7"
style="stroke:#ffffff;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bu7t6am6rptlw"
path="res://.godot/imported/lifebuoy.svg-cc678597b00928806b7d9adfb55d35f6.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/lifebuoy.svg"
dest_files=["res://.godot/imported/lifebuoy.svg-cc678597b00928806b7d9adfb55d35f6.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
+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
class="icon icon-tabler icons-tabler-filled icon-tabler-sparkles"
version="1.1"
id="svg4"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs4" />
<path
stroke="none"
d="M0 0h24v24H0z"
fill="none"
id="path1" />
<path
d="M16 19a1 1 0 0 1 0 -2a1 1 0 0 0 1 -1c0 -1.333 2 -1.333 2 0a1 1 0 0 0 1 1c1.333 0 1.333 2 0 2a1 1 0 0 0 -1 1c0 1.333 -2 1.333 -2 0a1 1 0 0 0 -1 -1"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
<path
d="M3 11a5 5 0 0 0 5 -5c0 -1.333 2 -1.333 2 0a5 5 0 0 0 5 5c1.333 0 1.333 2 0 2a5 5 0 0 0 -5 5a1 1 0 0 1 -2 0a5 5 0 0 0 -5 -5c-1.333 0 -1.333 -2 0 -2"
id="path3"
style="fill:#ffffff;fill-opacity:1" />
<path
d="M16 7a1 1 0 0 1 0 -2a1 1 0 0 0 1 -1c0 -1.333 2 -1.333 2 0a1 1 0 0 0 1 1c1.333 0 1.333 2 0 2a1 1 0 0 0 -1 1c0 1.333 -2 1.333 -2 0a1 1 0 0 0 -1 -1"
id="path4"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+43
View File
@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://djq2l8aun82ou"
path="res://.godot/imported/sparkles.svg-916e1088ab60f75f5f1370971c1faf2d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://common/icons/sparkles.svg"
dest_files=["res://.godot/imported/sparkles.svg-916e1088ab60f75f5f1370971c1faf2d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=2.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false
@@ -1,237 +1,38 @@
[gd_scene format=3 uid="uid://b8gqdgabrjaml"]
[ext_resource type="Script" uid="uid://dt2ip3pw2cboy" path="res://entities/plants/scripts/texture_builder/plant_texture_builder.gd" id="1_s8rsj"]
[ext_resource type="Script" uid="uid://b3jwglylqdqtw" path="res://entities/plants/scripts/texture_builder/plant_part.gd" id="2_cfiqo"]
[ext_resource type="Resource" uid="uid://7hrdkl6bf3o4" path="res://entities/plants/resources/plant_parts/Branch1.tres" id="4_ggud5"]
[ext_resource type="Resource" uid="uid://d05ulm22k31w8" path="res://entities/plants/resources/plant_parts/Base2.tres" id="4_ron2q"]
[ext_resource type="Resource" uid="uid://bfyafiewcrjln" path="res://entities/plants/resources/plant_parts/Base1.tres" id="5_5fbyu"]
[ext_resource type="Resource" uid="uid://d2vdf2sth2xjm" path="res://entities/plants/resources/plant_parts/Base3.tres" id="5_6raaj"]
[ext_resource type="Resource" uid="uid://ceisi5yyie7to" path="res://entities/plants/resources/plant_parts/Branch2.tres" id="5_ufbqh"]
[ext_resource type="Resource" uid="uid://cxiu8frk04b5i" path="res://entities/plants/resources/plant_parts/Branch3.tres" id="6_jbu3q"]
[ext_resource type="Resource" uid="uid://53p5g07e3pb4" path="res://entities/plants/resources/plant_parts/Branch4.tres" id="7_21cjy"]
[ext_resource type="Resource" uid="uid://cyfyodtfxne1w" path="res://entities/plants/resources/plant_parts/Branch5.tres" id="8_qm7aw"]
[ext_resource type="Resource" uid="uid://cuvtf4y1dspcp" path="res://entities/plants/resources/plant_parts/Branch6.tres" id="9_3e4c1"]
[ext_resource type="Resource" uid="uid://dcjpei6xuiswp" path="res://entities/plants/resources/plant_parts/LeafE5.tres" id="10_5job5"]
[ext_resource type="Resource" uid="uid://85bwx2tdjx0h" path="res://entities/plants/resources/plant_parts/LeafE7.tres" id="12_b21au"]
[ext_resource type="Resource" uid="uid://6jnbms553dyd" path="res://entities/plants/resources/plant_parts/Branch7.tres" id="12_yjh7s"]
[ext_resource type="Resource" uid="uid://cowkewtw2lg4i" path="res://entities/plants/resources/plant_parts/FlowerA1.tres" id="13_17ac3"]
[ext_resource type="Resource" uid="uid://bgv3nb10t6u3y" path="res://entities/plants/resources/plant_parts/LeafF1.tres" id="14_8r35x"]
[ext_resource type="Resource" uid="uid://drn8vt4sp7u6q" path="res://entities/plants/resources/plant_parts/FlowerA2.tres" id="14_fuh2b"]
[ext_resource type="Resource" uid="uid://c31h25xdll8si" path="res://entities/plants/resources/plant_parts/FlowerD1.tres" id="15_3ti7v"]
[ext_resource type="Resource" uid="uid://b3oqeugtrtera" path="res://entities/plants/resources/plant_parts/FlowerA3.tres" id="15_28gvc"]
[ext_resource type="Resource" uid="uid://be17y7clvf88e" path="res://entities/plants/resources/plant_parts/LeafE1.tres" id="15_p2blu"]
[ext_resource type="Resource" uid="uid://bkgw3wmoam10n" path="res://entities/plants/resources/plant_parts/LeafF2.tres" id="15_rbd7l"]
[ext_resource type="Resource" uid="uid://ydvnxfnkbr2g" path="res://entities/plants/resources/plant_parts/FlowerA4.tres" id="16_1cwvj"]
[ext_resource type="Script" uid="uid://cfjd8jelpm8dt" path="res://entities/plants/scripts/texture_builder/part_mutation_association.gd" id="16_c3tk3"]
[ext_resource type="Resource" uid="uid://r5mspvasrq6y" path="res://entities/plants/resources/plant_parts/FlowerD2.tres" id="16_cpf4r"]
[ext_resource type="Resource" uid="uid://m8j2gfumw11w" path="res://entities/plants/resources/plant_parts/LeafF3.tres" id="16_nfxo0"]
[ext_resource type="Resource" uid="uid://dw7wdihxxy0uf" path="res://entities/plants/resources/plant_parts/LeafE2.tres" id="16_xt8tm"]
[ext_resource type="Resource" uid="uid://dl1k0jv662m67" path="res://entities/plants/resources/plant_parts/FlowerA5.tres" id="17_c3tk3"]
[ext_resource type="Resource" uid="uid://dth4dp88vs3gh" path="res://entities/plants/resources/plant_parts/LeafF4.tres" id="17_i8j71"]
[ext_resource type="Resource" uid="uid://br80voioh4jxu" path="res://entities/plants/resources/plant_parts/FlowerD3.tres" id="17_p2blu"]
[ext_resource type="Resource" uid="uid://3yi8hk73s5mm" path="res://entities/plants/resources/plant_parts/LeafE3.tres" id="17_qm7aw"]
[ext_resource type="Resource" uid="uid://c8ttq14no8872" path="res://entities/plants/resources/plant_parts/LeafF7.tres" id="18_2plsj"]
[ext_resource type="Resource" uid="uid://cka6sihumbjpw" path="res://entities/plants/resources/plant_parts/LeafF5.tres" id="18_l2vrg"]
[ext_resource type="Resource" uid="uid://par4hf5gjvqu" path="res://entities/plants/resources/plant_parts/FlowerA6.tres" id="18_q0jli"]
[ext_resource type="Resource" uid="uid://dq5dwqherb6ac" path="res://entities/plants/resources/plant_parts/LeafF6.tres" id="19_14c4k"]
[ext_resource type="Resource" uid="uid://414go2hmhy12" path="res://entities/plants/resources/plant_parts/FlowerA7.tres" id="19_rplk6"]
[ext_resource type="Resource" uid="uid://drc3g203302d4" path="res://entities/plants/resources/plant_parts/LeafF8.tres" id="19_yjh7s"]
[ext_resource type="Resource" uid="uid://ckef0dno4j5mn" path="res://entities/plants/resources/plant_parts/FlowerF1.tres" id="20_lggh7"]
[ext_resource type="Resource" uid="uid://dhhyh56shnure" path="res://entities/plants/resources/plant_parts/FlowerF2.tres" id="21_8r35x"]
[ext_resource type="Resource" uid="uid://banfc3pgm6a0m" path="res://entities/plants/resources/plant_parts/FlowerC1.tres" id="21_alra6"]
[ext_resource type="Resource" uid="uid://dmdyj7t4g48p" path="res://entities/plants/resources/plant_parts/FlowerC2.tres" id="22_lggh7"]
[ext_resource type="Resource" uid="uid://bhj7j78tokt25" path="res://entities/plants/resources/plant_parts/FlowerC3.tres" id="23_8r35x"]
[ext_resource type="Resource" uid="uid://c3w8lel02552f" path="res://entities/plants/resources/plant_parts/FlowerD4.tres" id="23_mcckl"]
[ext_resource type="Resource" uid="uid://hbylxbmmc8of" path="res://entities/plants/resources/plant_parts/FlowerD5.tres" id="24_3hcun"]
[ext_resource type="Resource" uid="uid://bkgrwffi7m2i4" path="res://entities/plants/resources/plant_parts/FlowerC4.tres" id="24_rbd7l"]
[ext_resource type="Resource" uid="uid://dm7crxxg4kmw5" path="res://entities/plants/resources/plant_parts/LeafB1.tres" id="25_kvmj5"]
[ext_resource type="Resource" uid="uid://vlxrq3tw1t6m" path="res://entities/plants/resources/plant_parts/LeafB2.tres" id="26_ocu7e"]
[ext_resource type="Script" path="res://entities/plants/scripts/texture_builder/plant_attach.gd" id="27_80nvf"]
[ext_resource type="Resource" uid="uid://bdwhp12xkvscr" path="res://entities/plants/resources/plant_parts/LeafB3.tres" id="27_q771y"]
[ext_resource type="Resource" uid="uid://cc8kkqiqdvex6" path="res://entities/plants/resources/plant_parts/LeafE8.tres" id="27_rcays"]
[ext_resource type="Resource" uid="uid://dmfiww0l5ha2l" path="res://entities/plants/resources/plant_parts/LeafB4.tres" id="28_5fbyu"]
[ext_resource type="Texture2D" uid="uid://bdwmandgxrjgn" path="res://entities/plants/assets/sprites/asset_plantes.png" id="28_d04mb"]
[ext_resource type="Resource" uid="uid://cusd2od1yj0ob" path="res://entities/plants/resources/plant_parts/LeafE9.tres" id="28_qs4je"]
[ext_resource type="Resource" uid="uid://kiim46eda050" path="res://entities/plants/resources/plant_parts/LeafB5.tres" id="29_2plsj"]
[ext_resource type="Resource" uid="uid://dqroc7h70bgew" path="res://entities/plants/resources/plant_parts/LeafB6.tres" id="30_yjh7s"]
[ext_resource type="Resource" uid="uid://u1f6c41fvau5" path="res://entities/plants/resources/plant_parts/FlowerC5.tres" id="35_abtbh"]
[ext_resource type="Resource" uid="uid://bap5xihdc3gbe" path="res://entities/plants/resources/plant_parts/FlowerC6.tres" id="36_j5s6w"]
[ext_resource type="Resource" uid="uid://cwskfwdasvv0g" path="res://entities/plants/resources/plant_parts/FlowerF3.tres" id="38_rbd7l"]
[ext_resource type="Resource" uid="uid://e0u1baixvaxn" path="res://entities/plants/resources/plant_parts/LeafE4.tres" id="42_14c4k"]
[ext_resource type="Resource" uid="uid://br4e84rsg87e8" path="res://entities/plants/resources/plant_parts/FlowerB4.tres" id="44_7b70u"]
[ext_resource type="Resource" uid="uid://c4artcndro0r5" path="res://entities/plants/resources/plant_parts/FlowerB1.tres" id="45_coupj"]
[ext_resource type="Resource" uid="uid://bvujlvgbh4pyc" path="res://entities/plants/resources/plant_parts/FlowerB5.tres" id="45_q8uyx"]
[ext_resource type="Resource" uid="uid://b3dfua388ub4k" path="res://entities/plants/resources/plant_parts/FlowerB2.tres" id="46_ggud5"]
[ext_resource type="Resource" uid="uid://dsoolh270ygjd" path="res://entities/plants/resources/plant_parts/FlowerB6.tres" id="46_r166b"]
[ext_resource type="Resource" uid="uid://dad6gfvwocnj2" path="res://entities/plants/resources/plant_parts/Base.tres" id="2_tod72"]
[ext_resource type="Resource" uid="uid://c6s833k5g18kd" path="res://entities/plants/resources/plant_parts/Branch.tres" id="3_0ca8x"]
[ext_resource type="Resource" uid="uid://bjb8g6h6lf4r2" path="res://entities/plants/resources/plant_parts/LeafF.tres" id="4_js3cu"]
[ext_resource type="Script" uid="uid://u2j7hn5her8i" path="res://entities/plants/scripts/texture_builder/part_group.gd" id="5_npk80"]
[ext_resource type="Resource" uid="uid://bwqa7vouqhjmr" path="res://entities/plants/resources/plant_parts/LeafE.tres" id="6_hyb2i"]
[ext_resource type="Resource" uid="uid://b4g4d6y1n1xgp" path="res://entities/plants/resources/plant_parts/LeafI.tres" id="7_4gk8a"]
[ext_resource type="Resource" uid="uid://b4towph8opjgh" path="res://entities/plants/resources/plant_parts/LeafNB.tres" id="8_alra6"]
[ext_resource type="Resource" uid="uid://cqfb7vkocd8gf" path="res://entities/plants/resources/plant_parts/LeafL.tres" id="9_lggh7"]
[ext_resource type="Resource" uid="uid://dw78e1nnajsxf" path="res://entities/plants/resources/plant_parts/FlowerD.tres" id="10_8r35x"]
[ext_resource type="Resource" uid="uid://bg2x1g8xfjk0t" path="res://entities/plants/resources/plant_parts/FlowerG.tres" id="11_rbd7l"]
[ext_resource type="Resource" uid="uid://bcgc05pjefid6" path="res://entities/plants/resources/plant_parts/FlowerH.tres" id="12_nfxo0"]
[ext_resource type="Resource" uid="uid://dvwmk2suorf05" path="res://entities/plants/resources/plant_parts/LeafG.tres" id="12_tjaiv"]
[ext_resource type="Resource" uid="uid://di0nwki5jr205" path="res://entities/plants/resources/plant_parts/FlowerJ.tres" id="13_i8j71"]
[ext_resource type="Resource" uid="uid://b3ff6xg5lmevs" path="res://entities/plants/resources/plant_parts/FlowerF.tres" id="14_l2vrg"]
[ext_resource type="Resource" uid="uid://bcakrgxsy6c08" path="res://entities/plants/resources/plant_parts/LeafC.tres" id="15_14c4k"]
[ext_resource type="Resource" uid="uid://bggtymdph3itl" path="res://entities/plants/resources/plant_parts/FlowerI.tres" id="16_rt6tw"]
[ext_resource type="Resource" uid="uid://dfaticpdeqmkx" path="res://entities/plants/resources/plant_parts/LeafB.tres" id="17_y02ao"]
[ext_resource type="Resource" uid="uid://rjisqiox5anv" path="res://entities/plants/resources/plant_parts/LeafHA.tres" id="18_s8rsj"]
[ext_resource type="Resource" uid="uid://c1qdy7oeyqdlu" path="res://entities/plants/resources/plant_parts/FlowerC.tres" id="19_cfiqo"]
[ext_resource type="Resource" uid="uid://1ldoefk201qd" path="res://entities/plants/resources/plant_parts/LeafM.tres" id="20_coupj"]
[ext_resource type="Resource" uid="uid://cnyux2rxespor" path="res://entities/plants/resources/plant_parts/LeafJ.tres" id="21_ggud5"]
[ext_resource type="Resource" uid="uid://wim0ex3g6eag" path="res://entities/plants/resources/plant_parts/LeafNA.tres" id="23_hyb2i"]
[ext_resource type="Resource" uid="uid://bd4suw64pumd5" path="res://entities/plants/resources/plant_parts/LeafHB.tres" id="24_4gk8a"]
[ext_resource type="Resource" uid="uid://dej2j8nvb5gcj" path="res://entities/plants/resources/plant_parts/FlowerB.tres" id="25_alra6"]
[ext_resource type="Resource" uid="uid://0r8c2a0el62b" path="res://entities/plants/resources/plant_parts/LeafK.tres" id="26_lggh7"]
[ext_resource type="Script" uid="uid://hs3i48clok85" path="res://entities/plants/scripts/texture_builder/seed_texture_set.gd" id="47_jbu3q"]
[ext_resource type="Resource" uid="uid://bnn0tcoab4plv" path="res://entities/plants/resources/plant_parts/FlowerB3.tres" id="47_ufbqh"]
[ext_resource type="Texture2D" uid="uid://cuqocuhfpdful" path="res://entities/plants/assets/sprites/seeds/pick-sphere/color_1.png" id="48_21cjy"]
[ext_resource type="Texture2D" uid="uid://tcjcq04akuns" path="res://entities/plants/assets/sprites/seeds/pick-sphere/color_2.png" id="49_rs2ow"]
[ext_resource type="Texture2D" uid="uid://cu1dajkls18x0" path="res://entities/plants/assets/sprites/seeds/pick-sphere/line.png" id="50_5job5"]
[ext_resource type="Texture2D" uid="uid://cq2f308itghq7" path="res://entities/plants/assets/sprites/seeds/haricot/color_1.png" id="51_5job5"]
[ext_resource type="Texture2D" uid="uid://b3apxg55cjoow" path="res://entities/plants/assets/sprites/seeds/haricot/color_2.png" id="52_cynqk"]
[ext_resource type="Texture2D" uid="uid://0ayiumcnqyc1" path="res://entities/plants/assets/sprites/seeds/haricot/outline.png" id="53_b21au"]
[ext_resource type="Resource" uid="uid://djcwxfp4vmj8n" path="res://entities/plants/resources/plant_parts/FlowerG1.tres" id="61_tx02s"]
[ext_resource type="Resource" uid="uid://d246bni7ooe20" path="res://entities/plants/resources/plant_parts/FlowerG2.tres" id="62_mpcbs"]
[ext_resource type="Resource" uid="uid://docbn71tiiwrw" path="res://entities/plants/resources/plant_parts/FlowerG3.tres" id="63_kqtu4"]
[ext_resource type="Resource" uid="uid://d4hfht8t7ridu" path="res://entities/plants/resources/plant_parts/FlowerG4.tres" id="64_2f2lk"]
[ext_resource type="Resource" uid="uid://cto5os1i12qtj" path="res://entities/plants/resources/plant_parts/FlowerG5.tres" id="65_4e7sd"]
[ext_resource type="Resource" uid="uid://bugnwjpjydm8t" path="res://entities/plants/resources/plant_parts/FlowerG6.tres" id="66_ro8dt"]
[ext_resource type="Resource" uid="uid://0n7qxw0qhn1y" path="res://entities/plants/resources/plant_parts/FlowerG7.tres" id="67_wmd0c"]
[ext_resource type="Resource" uid="uid://ccatceyu73pg5" path="res://entities/plants/resources/plant_parts/FlowerH1.tres" id="68_wl0th"]
[ext_resource type="Resource" uid="uid://2qihbxsn6odd" path="res://entities/plants/resources/plant_parts/FlowerH2.tres" id="69_55s8o"]
[ext_resource type="Resource" uid="uid://bwvou260f8tb5" path="res://entities/plants/resources/plant_parts/FlowerH3.tres" id="70_gquge"]
[ext_resource type="Resource" uid="uid://c7lbyqhtaglql" path="res://entities/plants/resources/plant_parts/FlowerH4.tres" id="71_2cr6t"]
[ext_resource type="Resource" uid="uid://qfku0xgnyc8l" path="res://entities/plants/resources/plant_parts/FlowerH5.tres" id="72_yrtob"]
[ext_resource type="Resource" uid="uid://cjyqycj2nexk5" path="res://entities/plants/resources/plant_parts/FlowerH6.tres" id="73_y4irp"]
[ext_resource type="Resource" uid="uid://v1b4c6364bjj" path="res://entities/plants/resources/plant_parts/FlowerJ1.tres" id="74_sdhn1"]
[ext_resource type="Resource" uid="uid://cji73bqaytm0r" path="res://entities/plants/resources/plant_parts/FlowerJ2.tres" id="75_lyw6c"]
[ext_resource type="Resource" uid="uid://b2tnb0vs1gtj3" path="res://entities/plants/resources/plant_parts/FlowerJ3.tres" id="76_lvv85"]
[ext_resource type="Resource" uid="uid://daf1u222v1eqm" path="res://entities/plants/resources/plant_parts/FlowerJ4.tres" id="77_y5qox"]
[ext_resource type="Resource" uid="uid://c3t8gj1sc7lrn" path="res://entities/plants/resources/plant_parts/FlowerF4.tres" id="81_ar53y"]
[ext_resource type="Resource" uid="uid://cxsbv241mpuma" path="res://entities/plants/resources/plant_parts/FlowerF5.tres" id="82_oaoto"]
[ext_resource type="Resource" uid="uid://5a5ya2iirvwr" path="res://entities/plants/resources/plant_parts/FlowerF6.tres" id="83_06vhr"]
[ext_resource type="Resource" uid="uid://cc8xi518vdixm" path="res://entities/plants/resources/plant_parts/FlowerF7.tres" id="84_rcays"]
[ext_resource type="Resource" uid="uid://dk7hp700k8iet" path="res://entities/plants/resources/plant_parts/LeafC1.tres" id="85_qs4je"]
[ext_resource type="Resource" uid="uid://dte3i6hma7nw5" path="res://entities/plants/resources/plant_parts/LeafC2.tres" id="86_ron2q"]
[ext_resource type="Resource" uid="uid://p2mveyriuh47" path="res://entities/plants/resources/plant_parts/LeafC3.tres" id="87_6raaj"]
[ext_resource type="Resource" uid="uid://be7x75w7l5jls" path="res://entities/plants/resources/plant_parts/LeafC4.tres" id="88_80nvf"]
[ext_resource type="Resource" uid="uid://dhgabeqsda06o" path="res://entities/plants/resources/plant_parts/LeafC5.tres" id="89_d04mb"]
[ext_resource type="Resource" uid="uid://b2bv30j55dtfn" path="res://entities/plants/resources/plant_parts/LeafC6.tres" id="90_6htke"]
[ext_resource type="Resource" uid="uid://d5k40ooxsnaw" path="res://entities/plants/resources/plant_parts/LeafC7.tres" id="91_y2dg6"]
[ext_resource type="Resource" uid="uid://cjyp8jcocoijg" path="res://entities/plants/resources/plant_parts/FlowerI1.tres" id="92_s2hpp"]
[ext_resource type="Resource" uid="uid://bac4q2s3bylli" path="res://entities/plants/resources/plant_parts/FlowerI2.tres" id="93_mxpq5"]
[ext_resource type="Resource" uid="uid://dst4c2mnhaili" path="res://entities/plants/resources/plant_parts/FlowerI3.tres" id="94_o5eac"]
[ext_resource type="Resource" uid="uid://bjd8ix6ouc1b2" path="res://entities/plants/resources/plant_parts/FlowerI4.tres" id="95_qxf4o"]
[ext_resource type="Resource" uid="uid://cs2piasjw3x5s" path="res://entities/plants/resources/plant_parts/FlowerI5.tres" id="96_lfwcq"]
[ext_resource type="Resource" uid="uid://tbqitr1nwt2" path="res://entities/plants/resources/plant_parts/FlowerI6.tres" id="97_fe472"]
[ext_resource type="Resource" uid="uid://b4v7vvv0jdh0k" path="res://entities/plants/resources/plant_parts/LeafHA1.tres" id="100_ron2q"]
[ext_resource type="Resource" uid="uid://bvff3ay7qpvgs" path="res://entities/plants/resources/plant_parts/LeafHA2.tres" id="101_6raaj"]
[ext_resource type="Resource" uid="uid://mwjpvg6xqxyl" path="res://entities/plants/resources/plant_parts/LeafHA3.tres" id="102_80nvf"]
[ext_resource type="Resource" uid="uid://b4hh8jrpenwt3" path="res://entities/plants/resources/plant_parts/LeafNA1.tres" id="103_6raaj"]
[ext_resource type="Resource" uid="uid://cm5rtqrvsmqkg" path="res://entities/plants/resources/plant_parts/LeafHA5.tres" id="103_d04mb"]
[ext_resource type="Resource" uid="uid://bf4s8omnaau0w" path="res://entities/plants/resources/plant_parts/LeafHA6.tres" id="104_6htke"]
[ext_resource type="Resource" uid="uid://cv23vy5w5i3iy" path="res://entities/plants/resources/plant_parts/LeafNA2.tres" id="104_80nvf"]
[ext_resource type="Resource" uid="uid://c85k4e0rio0cs" path="res://entities/plants/resources/plant_parts/LeafNA3.tres" id="105_d04mb"]
[ext_resource type="Resource" uid="uid://iv3nmggoklh3" path="res://entities/plants/resources/plant_parts/LeafHA7.tres" id="105_y2dg6"]
[ext_resource type="Resource" uid="uid://cqbwlfnxg7a83" path="res://entities/plants/resources/plant_parts/LeafNA4.tres" id="106_6htke"]
[ext_resource type="Resource" uid="uid://bff32l0awxl38" path="res://entities/plants/resources/plant_parts/LeafJ1.tres" id="106_s2hpp"]
[ext_resource type="Resource" uid="uid://ddaa77cqi865e" path="res://entities/plants/resources/plant_parts/LeafJ2.tres" id="107_mxpq5"]
[ext_resource type="Resource" uid="uid://d1o0tp1cc6gga" path="res://entities/plants/resources/plant_parts/LeafNA5.tres" id="107_y2dg6"]
[ext_resource type="Resource" uid="uid://brlnlvjpjidd5" path="res://entities/plants/resources/plant_parts/LeafJ3.tres" id="108_o5eac"]
[ext_resource type="Resource" uid="uid://cn2j8fh3l2tdo" path="res://entities/plants/resources/plant_parts/LeafJ4.tres" id="109_qxf4o"]
[ext_resource type="Resource" uid="uid://ccafrqprfm6r2" path="res://entities/plants/resources/plant_parts/LeafJ5.tres" id="110_lfwcq"]
[ext_resource type="Resource" uid="uid://dyjojp8mfs5vy" path="res://entities/plants/resources/plant_parts/LeafK1.tres" id="111_fe472"]
[ext_resource type="Resource" uid="uid://trorp4elyagc" path="res://entities/plants/resources/plant_parts/LeafK2.tres" id="112_2ycc1"]
[ext_resource type="Resource" uid="uid://c6yxy44mt6fgt" path="res://entities/plants/resources/plant_parts/LeafK3.tres" id="113_wat4j"]
[ext_resource type="Resource" uid="uid://dw4o76c3nuor5" path="res://entities/plants/resources/plant_parts/LeafK4.tres" id="114_n8y6x"]
[ext_resource type="Resource" uid="uid://h18vambxcrwj" path="res://entities/plants/resources/plant_parts/LeafK5.tres" id="115_dw70q"]
[ext_resource type="Resource" uid="uid://c70ikd1qfmqqs" path="res://entities/plants/resources/plant_parts/LeafK6.tres" id="116_xxckx"]
[ext_resource type="Resource" uid="uid://bhgnimmagff30" path="res://entities/plants/resources/plant_parts/LeafK7.tres" id="117_s3ec7"]
[sub_resource type="Resource" id="Resource_us16y"]
script = ExtResource("27_80nvf")
position = Vector2(-36, -37)
attach_types = Array[int]([2])
[sub_resource type="Resource" id="Resource_ux8f6"]
script = ExtResource("27_80nvf")
position = Vector2(59, -81)
attach_types = Array[int]([1, 3])
[sub_resource type="AtlasTexture" id="AtlasTexture_yh7e0"]
atlas = ExtResource("28_d04mb")
region = Rect2(2804, 1567, 294, 345)
[sub_resource type="Resource" id="Resource_6htke"]
resource_name = "LeafE6"
script = ExtResource("2_cfiqo")
texture = SubResource("AtlasTexture_yh7e0")
type = 2
root = SubResource("Resource_ux8f6")
attaches = Array[ExtResource("27_80nvf")]([SubResource("Resource_us16y")])
[sub_resource type="Resource" id="Resource_rt6tw"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("15_p2blu"), ExtResource("16_xt8tm"), ExtResource("17_qm7aw"), ExtResource("42_14c4k"), ExtResource("10_5job5"), SubResource("Resource_6htke"), ExtResource("12_b21au"), ExtResource("27_rcays"), ExtResource("28_qs4je")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_y02ao"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("13_17ac3"), ExtResource("14_fuh2b"), ExtResource("15_28gvc"), ExtResource("16_1cwvj"), ExtResource("17_c3tk3"), ExtResource("18_q0jli"), ExtResource("19_rplk6")])
part_amount = 5
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_nfxo0"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("15_3ti7v"), ExtResource("16_cpf4r"), ExtResource("17_p2blu"), ExtResource("23_mcckl"), ExtResource("24_3hcun")])
part_amount = 5
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_2ycc1"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("61_tx02s"), ExtResource("62_mpcbs"), ExtResource("63_kqtu4"), ExtResource("64_2f2lk"), ExtResource("65_4e7sd"), ExtResource("66_ro8dt"), ExtResource("67_wmd0c")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_wat4j"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("68_wl0th"), ExtResource("69_55s8o"), ExtResource("70_gquge"), ExtResource("71_2cr6t"), ExtResource("72_yrtob"), ExtResource("73_y4irp")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_n8y6x"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("74_sdhn1"), ExtResource("75_lyw6c"), ExtResource("76_lvv85"), ExtResource("77_y5qox")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_dw70q"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("20_lggh7"), ExtResource("21_8r35x"), ExtResource("38_rbd7l"), ExtResource("81_ar53y"), ExtResource("82_oaoto"), ExtResource("83_06vhr"), ExtResource("84_rcays")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_xxckx"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("85_qs4je"), ExtResource("86_ron2q"), ExtResource("87_6raaj"), ExtResource("88_80nvf"), ExtResource("89_d04mb"), ExtResource("90_6htke"), ExtResource("91_y2dg6")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_s3ec7"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("92_s2hpp"), ExtResource("93_mxpq5"), ExtResource("94_o5eac"), ExtResource("95_qxf4o"), ExtResource("96_lfwcq"), ExtResource("97_fe472")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_s8rsj"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("25_kvmj5"), ExtResource("26_ocu7e"), ExtResource("27_q771y"), ExtResource("28_5fbyu"), ExtResource("29_2plsj"), ExtResource("30_yjh7s")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_kro31"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("100_ron2q"), ExtResource("101_6raaj"), ExtResource("102_80nvf"), ExtResource("103_d04mb"), ExtResource("104_6htke"), ExtResource("105_y2dg6")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_14c4k"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("21_alra6"), ExtResource("22_lggh7"), ExtResource("23_8r35x"), ExtResource("24_rbd7l"), ExtResource("35_abtbh"), ExtResource("36_j5s6w")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_p4lk1"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("106_s2hpp"), ExtResource("107_mxpq5"), ExtResource("108_o5eac"), ExtResource("109_qxf4o"), ExtResource("110_lfwcq")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_b21au"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("103_6raaj"), ExtResource("104_80nvf"), ExtResource("105_d04mb"), ExtResource("106_6htke"), ExtResource("107_y2dg6")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_jbu3q"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("45_coupj"), ExtResource("46_ggud5"), ExtResource("47_ufbqh"), ExtResource("44_7b70u"), ExtResource("45_q8uyx"), ExtResource("46_r166b")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_0wuoa"]
script = ExtResource("16_c3tk3")
parts = Array[ExtResource("2_cfiqo")]([ExtResource("111_fe472"), ExtResource("112_2ycc1"), ExtResource("113_wat4j"), ExtResource("114_n8y6x"), ExtResource("115_dw70q"), ExtResource("116_xxckx"), ExtResource("117_s3ec7")])
metadata/_custom_type_script = "uid://cfjd8jelpm8dt"
[sub_resource type="Resource" id="Resource_cynqk"]
script = ExtResource("47_jbu3q")
@@ -246,28 +47,32 @@ metadata/_custom_type_script = "uid://hs3i48clok85"
[node name="TextureBuilder" type="Node" unique_id=79184097]
script = ExtResource("1_s8rsj")
bases = Array[ExtResource("2_cfiqo")]([ExtResource("5_5fbyu"), ExtResource("4_ron2q")])
baby_bases = Array[ExtResource("2_cfiqo")]([ExtResource("5_6raaj")])
branches = Array[ExtResource("2_cfiqo")]([ExtResource("4_ggud5"), ExtResource("5_ufbqh"), ExtResource("6_jbu3q"), ExtResource("7_21cjy"), ExtResource("8_qm7aw"), ExtResource("9_3e4c1"), ExtResource("12_yjh7s")])
n_branches = 5
base_leaves = Array[ExtResource("2_cfiqo")]([ExtResource("14_8r35x"), ExtResource("15_rbd7l"), ExtResource("16_nfxo0"), ExtResource("17_i8j71"), ExtResource("18_l2vrg"), ExtResource("19_14c4k"), ExtResource("18_2plsj"), ExtResource("19_yjh7s")])
parts_mutation_associations = Dictionary[String, ExtResource("16_c3tk3")]({
"ANCIENT": SubResource("Resource_rt6tw"),
"EPHEMERAL": SubResource("Resource_y02ao"),
"FERTILE": SubResource("Resource_nfxo0"),
"GENEROUS": SubResource("Resource_2ycc1"),
"HURRIED": SubResource("Resource_wat4j"),
"PRECOCIOUS": SubResource("Resource_n8y6x"),
"PROLIFIC": SubResource("Resource_dw70q"),
"PROTECTIVE": SubResource("Resource_xxckx"),
"PURE": SubResource("Resource_s3ec7"),
"PURIFICATION": SubResource("Resource_s8rsj"),
"QUALITY": SubResource("Resource_kro31"),
"QUICK": SubResource("Resource_14c4k"),
"ROBUST": SubResource("Resource_p4lk1"),
"SOCIABLE": SubResource("Resource_b21au"),
"TOUGH": SubResource("Resource_jbu3q"),
"VIVACIOUS": SubResource("Resource_0wuoa")
all_bases = ExtResource("2_tod72")
baby_bases_start_ind = 2
branches = ExtResource("3_0ca8x")
base_leaves = ExtResource("4_js3cu")
part_group = Dictionary[String, ExtResource("5_npk80")]({
"ANCIENT": ExtResource("6_hyb2i"),
"CLEANING": ExtResource("8_alra6"),
"CUTTING": ExtResource("9_lggh7"),
"ERMIT": ExtResource("7_4gk8a"),
"FERTILE": ExtResource("10_8r35x"),
"GENEROUS": ExtResource("11_rbd7l"),
"HUMIDE": ExtResource("12_tjaiv"),
"HURRIED": ExtResource("12_nfxo0"),
"PRECOCIOUS": ExtResource("13_i8j71"),
"PROLIFIC": ExtResource("14_l2vrg"),
"PROTECTIVE": ExtResource("15_14c4k"),
"PURE": ExtResource("16_rt6tw"),
"PURIFICATION": ExtResource("17_y02ao"),
"QUALITY": ExtResource("18_s8rsj"),
"QUICK": ExtResource("19_cfiqo"),
"RHIZOME": ExtResource("20_coupj"),
"ROBUST": ExtResource("21_ggud5"),
"SOCIABLE": ExtResource("23_hyb2i"),
"SPONTANEOUS": ExtResource("24_4gk8a"),
"TOUGH": ExtResource("25_alra6"),
"VIVACIOUS": ExtResource("26_lggh7")
})
chance_to_have_part = 1.0
origin_weights_base = Dictionary[int, int]({
@@ -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
@@ -0,0 +1 @@
uid://nfk8hgtoadfe
@@ -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
@@ -0,0 +1 @@
uid://cpkdlnhughu5j
@@ -1,3 +1,4 @@
@tool
extends Scene
class_name CockpitScene
@@ -0,0 +1,11 @@
extends Scene
class_name CreditsScene
func get_scene_id() -> String:
return "CREDITS"
func get_scene_path() -> String:
return "res://gui/credits/credits.tscn"
func is_needed_to_be_saved() -> bool:
return false
@@ -0,0 +1 @@
uid://c1a1t8k7b4nny
@@ -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
@@ -0,0 +1 @@
uid://b8mu1im3j3g4b
@@ -61,8 +61,11 @@ func spawn_player(relay_base : RelayBase):
GameInfo.game_data.incubator_used.append(
incubators.find(choosen_incubator)
)
if len(possible_incubators) == 1:
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_ALL_CASES)
else:
choosen_incubator = incubators.pick_random()
SteamConnection.unlock_achievement(SteamConnection.ACH_STW_ALL_CASES)
choosen_incubator.used = true
relay_base.player.global_position = choosen_incubator.global_position + Vector3.UP
@@ -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
@@ -0,0 +1 @@
uid://fb77eebcsnvq
+9 -1
View File
@@ -8,11 +8,19 @@ 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"
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"
const ACH_STW_ALL_CASES="STW_ALL_CASES"
func unlock_achievement(achivement_name : String):
if Steam.isSteamRunning():
var status = Steam.getAchievement(achivement_name)
print("Steam Achievement %s" %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()
@@ -0,0 +1,49 @@
shader_type spatial;
uniform float scale : hint_range(0.1, 2.0, 0.1) = 1.0;
uniform float speed : hint_range(0.1, 2.0, 0.1) = 0.2;
uniform float strenght : hint_range(10., 500., 10.) = 100.;
uniform sampler2D color_ramp;
varying vec3 world_position;
vec2 random(vec2 uv) {
return vec2(fract(sin(dot(uv.xy,
vec2(12.9898,78.233))) * 43758.5453123));
}
float worley(vec2 uv, float columns, float rows) {
vec2 index_uv = floor(vec2(uv.x * columns, uv.y * rows));
vec2 fract_uv = fract(vec2(uv.x * columns, uv.y * rows));
float minimum_dist = 1.0;
for (int y= -1; y <= 1; y++) {
for (int x= -1; x <= 1; x++) {
vec2 neighbor = vec2(float(x),float(y));
vec2 point = random(index_uv + neighbor);
vec2 diff = neighbor + point - fract_uv;
float dist = length(diff);
minimum_dist = min(minimum_dist, dist);
}
}
return minimum_dist;
}
void vertex(){
world_position = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
}
void fragment(){
float worley_value = worley(world_position.xz * scale + TIME * speed, 3.0, 3.0);
float worley_value_2 = worley(world_position.xz * scale * 2. - TIME * speed, 3.0, 3.0);
float color = texture(color_ramp, vec2(worley_value*worley_value_2)).r;
color = min(0.99, color);
color = log(0.999)/log(color);
color *= strenght;
ALPHA = color;
EMISSION = vec3(color);
}
@@ -0,0 +1 @@
uid://740mg4jlufyc
@@ -1,7 +1,8 @@
audio "res://common/audio_manager/assets/sfx/dialogs/sfx/incoming_transmission.wav"
join demeter center [animation="Fade In" length="1.0"]
demeter: Well, you've done the easiest part so far, but all the remaining relay bases along the way have been destroyed by the weather... So, you're going to have a long road ahead of you to reach me. #id:ed
demeter: However, I'm glad you made it this far! I understand that waking up in that dark room must have been quite a shock. #id:ee
demeter: Hopefully, you'll be glad to hear that I managed to improve the models in this base, and you'll now have 4 energy for the rest of the trip! #id:119
demeter: I'm glad you made it this far! I understand that waking up in that dark room must have been quite a shock. #id:ee
demeter: This is the first time you've come this far, or rather, the first time an iteration has reached this base. #id:ef
- What do you mean by "an iteration"? #id:f0
demeter: Uh, I've tried several times to get you to come to me by changing many parameters of your intelligence. Each time, you got lost, you didn't achieve your objectives, or you chose to disobey me... #id:f1
@@ -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 #id:11a
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]
@@ -0,0 +1 @@
uid://duwstividdq8
@@ -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 #id:11b
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]
@@ -0,0 +1 @@
uid://duitcp3h27c37
-13
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
@@ -1 +0,0 @@
uid://bvqj76u55jn1w
@@ -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 #id:11c
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]
@@ -0,0 +1 @@
uid://x53ka488fq6w
@@ -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 #id:11d
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]
@@ -0,0 +1 @@
uid://cigwkhdljhv4c
@@ -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 #id:11e
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]
@@ -0,0 +1 @@
uid://bcd71wokwu5rv
@@ -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 #id:11f
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]
@@ -0,0 +1 @@
uid://bpuo14knltuik
@@ -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 #id:120
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]
@@ -0,0 +1 @@
uid://bpmlxddqgw2j6
@@ -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 #id:121
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]
@@ -0,0 +1 @@
uid://docxdfns3f04x
@@ -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 #id:122
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]
@@ -0,0 +1 @@
uid://dnnc8ygmu8nqh
@@ -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 #id:123
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]
@@ -0,0 +1 @@
uid://bigm5siy1npok
@@ -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 #id:124
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]
@@ -0,0 +1 @@
uid://gbwo1elyq1i1
@@ -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 #id:125
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]
@@ -0,0 +1 @@
uid://d10srs48ap47u
@@ -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 #id:126
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]
@@ -0,0 +1 @@
uid://dt15owbxm8eg
@@ -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 #id:127
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]

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