diff --git a/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll new file mode 100644 index 0000000..0812259 Binary files /dev/null and b/addons/godotsteam/win64/~libgodotsteam.windows.template_debug.x86_64.dll differ diff --git a/common/game_data/scripts/game_data.gd b/common/game_data/scripts/game_data.gd index e90884e..83726de 100644 --- a/common/game_data/scripts/game_data.gd +++ b/common/game_data/scripts/game_data.gd @@ -25,6 +25,7 @@ signal current_region_data_updated(p : RegionData) @export var ship_in_space = false @export var tutorial_done = false +@export var ship_tutorial_done = false @export var incubator_used = [] @@ -34,11 +35,8 @@ signal current_region_data_updated(p : RegionData) func start_run() -> RunData: player_data.clear_inventory() + player_data.update_with_artefacts([]) current_run = RunData.new() - current_run.artefacts_changed.connect( - func(artefacts : Array[Artefact]): - player_data._on_artefacts_updated(artefacts) - ) current_run.current_run_point_changed.connect( func(rp : RunPoint): start_region(rp.region_parameter) diff --git a/common/game_data/scripts/progression_data.gd b/common/game_data/scripts/progression_data.gd index 7221757..5a0cc58 100644 --- a/common/game_data/scripts/progression_data.gd +++ b/common/game_data/scripts/progression_data.gd @@ -3,7 +3,6 @@ class_name ProgressionData @export var available_mutations: Array[PlantMutation] = [ AncientMutation.new(), - EphemeralMutation.new(), FertileMutation.new(), GenerousMutation.new(), HurriedMutation.new(), diff --git a/common/game_data/scripts/run/run_data.gd b/common/game_data/scripts/run/run_data.gd index 1ed92fa..e0ef7c5 100644 --- a/common/game_data/scripts/run/run_data.gd +++ b/common/game_data/scripts/run/run_data.gd @@ -5,6 +5,8 @@ enum State {STARTED, IN_PROGRESS, FINISHED} const RUN_POINTS_NEXT_NUMBER : int = 2 const RUN_POINT_MAX_LEVEL = 5 # TODO +const VENDING_MACHINE_OCCURENCE = 3 +const CHALLENGE_CHANCE = 0.25 signal current_run_point_changed(rp : RunPoint) signal artefacts_changed(artefact : Array[Artefact]) @@ -51,10 +53,23 @@ func generate_next_run_points(level = 0) -> Array[RunPoint]: func generate_next_run_point(level = 0) -> RunPoint: var region_parameter = RegionParameter.new() + + var is_challenge = randf() < CHALLENGE_CHANCE + if is_challenge: + region_parameter.modifiers = [ + generate_challenge_modifiers().pick_random(), + generate_benefic_modifiers().pick_random() + ] as Array[RegionModifier] + else: + region_parameter.modifiers = [ + generate_normal_modifiers().pick_random() + ] as Array[RegionModifier] + + if level%VENDING_MACHINE_OCCURENCE == 0: + region_parameter.modifiers.append(VendingMachineModifier.new()) + region_parameter.level = level - region_parameter.modifiers = get_bad_region_modifiers() - region_parameter.modifiers.append_array(get_good_region_modifiers()) - + return RunPoint.new( level, region_parameter @@ -85,26 +100,34 @@ func choose_next_run_point(run_point : RunPoint) -> RunPoint: last_used_modifier_name = current_run_point.region_parameter.modifiers[0].get_modifier_name() return current_run_point -func get_good_region_modifiers() -> Array[RegionModifier]: - return [VendingMachineModifier.new(),VendingMachineModifier.new()] +#endregion -func get_bad_region_modifiers() -> Array[RegionModifier]: - var possible_modifiers : Array[RegionModifier] = [ +#region ------------------ Modifiers ------------------ + +func generate_normal_modifiers() -> Array[RegionModifier]: + return [ AridModifier.new(), HumidModifier.new(), PoorModifier.new(), - HarshModifier.new() + HarshModifier.new(), + ToxicModifier.new(), + SandyModifier.new(), + ] - possible_modifiers = possible_modifiers.filter( - func (m): return m.get_modifier_name() != last_used_modifier_name - ) +func generate_benefic_modifiers() -> Array[RegionModifier]: + return [ + VendingMachineModifier.new(), + ResonnanceModifier.new() + ] - var choosen_modifier : RegionModifier = possible_modifiers.pick_random() - last_used_modifier_name = choosen_modifier.get_modifier_name() - - return [choosen_modifier] +func generate_challenge_modifiers() -> Array[RegionModifier]: + return [ + RockyModifier.new(), + RadioactiveModifier.new(), + ContaminatedModifier.new(), + ] #endregion @@ -112,6 +135,6 @@ func get_bad_region_modifiers() -> Array[RegionModifier]: func add_artefacts(a: Artefact): artefacts.append(a) - artefacts_changed.emit(artefacts) + GameInfo.game_data.player_data.update_with_artefacts(artefacts) #endregion diff --git a/common/game_data/scripts/run/run_data_plant_info.gd b/common/game_data/scripts/run/run_data_plant_info.gd index 0a9bdc3..d8f1e16 100644 --- a/common/game_data/scripts/run/run_data_plant_info.gd +++ b/common/game_data/scripts/run/run_data_plant_info.gd @@ -3,13 +3,12 @@ class_name RunDataPlantInfo signal updated -const DEFAULT_PLANT_AREA_RADIUS = 20 -const DEFAULT_PLANT_INFLUENCE_RADIUS = 100 const DEFAULT_GROWING_TIME = 2 const DEFAULT_LIFETIME = 6 const DEFAULT_BASE_SCORE = 1 const DEFAULT_SEED_NUMBER = 2 const DEFAULT_SEED_RANDOM_LOOSE = 1 +const DEFAULT_PLANT_INFLUENCE_RADIUS = 100 var run_data : RunData @@ -19,25 +18,57 @@ func _init( run_data = _run_data var region_modifiers : Array[RegionModifier] -var artefacts : Array[Artefact] = [] - -func get_plant_area_radius() -> int: - return DEFAULT_PLANT_AREA_RADIUS - -func get_plant_influence_radius() -> int: - return DEFAULT_PLANT_INFLUENCE_RADIUS func get_growing_time() -> int: - return DEFAULT_GROWING_TIME + var growing_time = DEFAULT_GROWING_TIME + + for rm in get_region_modifiers(): + growing_time = rm.modify_plant_growing_time(growing_time) + + return max(0, growing_time) func get_lifetime() -> int: - return DEFAULT_LIFETIME + var lifetime = DEFAULT_LIFETIME + + for rm in get_region_modifiers(): + lifetime = rm.modify_plant_lifetime(lifetime) + + return max(0, lifetime) func get_base_score() -> int: - return DEFAULT_BASE_SCORE + var base_score = DEFAULT_BASE_SCORE + + for rm in get_region_modifiers(): + base_score = rm.modify_plant_base_score(base_score) + + return max(0, base_score) func get_seed_number() -> int: - return DEFAULT_SEED_NUMBER + var seed_number = DEFAULT_SEED_NUMBER + + for rm in get_region_modifiers(): + seed_number = rm.modify_plant_seed_number(seed_number) + + return max(0, seed_number) func get_seed_random_loose() -> int: - return DEFAULT_SEED_RANDOM_LOOSE + var seed_random_loose = DEFAULT_SEED_RANDOM_LOOSE + + for rm in get_region_modifiers(): + seed_random_loose = rm.modify_plant_seed_random_loose(seed_random_loose) + + return min(max(0, seed_random_loose),get_seed_number()) + +func get_influence_radius() -> int: + var influence_radius = DEFAULT_PLANT_INFLUENCE_RADIUS + + for rm in get_region_modifiers(): + influence_radius = rm.modify_plant_influence_radius(influence_radius) + + return max(0, influence_radius) + + +func get_region_modifiers() -> Array[RegionModifier]: + if run_data.current_run_point and run_data.current_run_point.region_parameter: + return run_data.current_run_point.region_parameter.modifiers + return [] \ No newline at end of file diff --git a/common/icons/biohazard.svg b/common/icons/biohazard.svg new file mode 100644 index 0000000..e545146 --- /dev/null +++ b/common/icons/biohazard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/biohazard.svg.import b/common/icons/biohazard.svg.import new file mode 100644 index 0000000..8301d74 --- /dev/null +++ b/common/icons/biohazard.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://caljk5xauct42" +path="res://.godot/imported/biohazard.svg-6ba6923078e547162e6b4b8cb587956e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/biohazard.svg" +dest_files=["res://.godot/imported/biohazard.svg-6ba6923078e547162e6b4b8cb587956e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/icons/grain.svg b/common/icons/grain.svg new file mode 100644 index 0000000..ba087c4 --- /dev/null +++ b/common/icons/grain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/grain.svg.import b/common/icons/grain.svg.import new file mode 100644 index 0000000..5a9f52d --- /dev/null +++ b/common/icons/grain.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dm87fciksxunm" +path="res://.godot/imported/grain.svg-e272947e9d3765123e0cc00495d206dd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/grain.svg" +dest_files=["res://.godot/imported/grain.svg-e272947e9d3765123e0cc00495d206dd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/icons/mountain.svg b/common/icons/mountain.svg new file mode 100644 index 0000000..aba3a6e --- /dev/null +++ b/common/icons/mountain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/mountain.svg.import b/common/icons/mountain.svg.import new file mode 100644 index 0000000..3f58c47 --- /dev/null +++ b/common/icons/mountain.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4o0itd0ofkcj" +path="res://.godot/imported/mountain.svg-73c6f0a7455c030d9081009331506dc0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/mountain.svg" +dest_files=["res://.godot/imported/mountain.svg-73c6f0a7455c030d9081009331506dc0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/icons/radioactive.svg b/common/icons/radioactive.svg new file mode 100644 index 0000000..9214c16 --- /dev/null +++ b/common/icons/radioactive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/radioactive.svg.import b/common/icons/radioactive.svg.import new file mode 100644 index 0000000..3419a52 --- /dev/null +++ b/common/icons/radioactive.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://baughrx6x5sx2" +path="res://.godot/imported/radioactive.svg-826ebf1689bc47cf482da642b68adf02.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/radioactive.svg" +dest_files=["res://.godot/imported/radioactive.svg-826ebf1689bc47cf482da642b68adf02.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/icons/virus.svg b/common/icons/virus.svg new file mode 100644 index 0000000..8b0b8e8 --- /dev/null +++ b/common/icons/virus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/virus.svg.import b/common/icons/virus.svg.import new file mode 100644 index 0000000..6ca0553 --- /dev/null +++ b/common/icons/virus.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cual1pde6keom" +path="res://.godot/imported/virus.svg-59f03f7d0b705bff456c355a03b2fd98.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/virus.svg" +dest_files=["res://.godot/imported/virus.svg-59f03f7d0b705bff456c355a03b2fd98.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/common/icons/wave-sine.svg b/common/icons/wave-sine.svg new file mode 100644 index 0000000..97bad01 --- /dev/null +++ b/common/icons/wave-sine.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/icons/wave-sine.svg.import b/common/icons/wave-sine.svg.import new file mode 100644 index 0000000..6cf9c64 --- /dev/null +++ b/common/icons/wave-sine.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c15ith3niu7sa" +path="res://.godot/imported/wave-sine.svg-af18e7f57640d33da7bef035e7276303.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://common/icons/wave-sine.svg" +dest_files=["res://.godot/imported/wave-sine.svg-af18e7f57640d33da7bef035e7276303.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=2.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/entities/interactables/door/door.tscn b/entities/interactables/door/door.tscn index 241bfd1..d6abcc3 100644 --- a/entities/interactables/door/door.tscn +++ b/entities/interactables/door/door.tscn @@ -113,12 +113,14 @@ fill_from = Vector2(0.5, 0.5) fill_to = Vector2(1, 0.5) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_6w4e0"] -radius = 38.0 -height = 80.0 +radius = 29.70824 +height = 62.292908 [node name="Door" type="Area2D" unique_id=2053096538] +process_mode = 4 script = ExtResource("1_8kdwv") icon = ExtResource("2_6w4e0") +default_interact_text = "ENTER" available = false metadata/_custom_type_script = "uid://dyprcd68fjstf" diff --git a/entities/plants/scripts/plant.gd b/entities/plants/scripts/plant.gd index ff19c2b..45459d1 100644 --- a/entities/plants/scripts/plant.gd +++ b/entities/plants/scripts/plant.gd @@ -2,7 +2,6 @@ extends InspectableEntity class_name Plant const PLANT_AREA_RADIUS = 20 -const PLANT_INFLUENCE_RADIUS = 100 const HARVESTED_SEED_DISPLACEMENT_FACTOR = 100 const RANDOM_MAX_GROW_INTERVAL = Region.MIN_PASS_DAY_ANIMATION_TIME/2. - 0.1 @@ -76,7 +75,7 @@ func generate_collision_shape() -> CollisionShape2D: return collision func generate_influence_zone() -> PlantInfluenceZone: - var zone = PlantInfluenceZone.new(PLANT_INFLUENCE_RADIUS) + var zone = PlantInfluenceZone.new(data.get_influence_radius()) add_child(zone) diff --git a/entities/plants/scripts/plant_data.gd b/entities/plants/scripts/plant_data.gd index 8f4d7ae..a0f07a0 100644 --- a/entities/plants/scripts/plant_data.gd +++ b/entities/plants/scripts/plant_data.gd @@ -113,6 +113,9 @@ func get_seed_random_loose(): return seed_random_loose +func get_influence_radius(): + return get_plant_info().get_influence_radius() + func get_random_seed_income(): return max( get_seed_number() - randi_range(0, get_seed_random_loose()), @@ -142,6 +145,7 @@ func get_score_buff() -> int: buff = m.mutate_score_buff(self, buff) return buff + func disappear(): disappeared.emit(self ) diff --git a/entities/plants/scripts/plant_influence_zone.gd b/entities/plants/scripts/plant_influence_zone.gd index c6f870f..a9959c5 100644 --- a/entities/plants/scripts/plant_influence_zone.gd +++ b/entities/plants/scripts/plant_influence_zone.gd @@ -16,7 +16,7 @@ func _init(_radius = 100): func _ready(): sprite = Circle.new() # sprite.z_index = 100 - sprite.radius = 100 + sprite.radius = radius sprite.fill = false sprite.width = 1 sprite.opacity = 0.5 diff --git a/entities/plants/scripts/plant_mutation.gd b/entities/plants/scripts/plant_mutation.gd index 1848f7d..7f51577 100644 --- a/entities/plants/scripts/plant_mutation.gd +++ b/entities/plants/scripts/plant_mutation.gd @@ -110,4 +110,4 @@ static func get_rarity_color(rarity: int) -> Color: Color("FFA617"), ] - return rarity_colors[min(rarity, len(rarity_colors) - 1)] \ No newline at end of file + return rarity_colors[min(rarity, len(rarity_colors) - 1)%len(rarity_colors)] \ No newline at end of file diff --git a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd b/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd deleted file mode 100644 index 6236d91..0000000 --- a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd +++ /dev/null @@ -1,33 +0,0 @@ -extends PlantMutation -class_name EphemeralMutation - -func get_icon() -> Texture: - return preload("res://common/icons/butterfly.svg") - -func get_mutation_id() -> String: - return "EPHEMERAL" - -func get_mutation_name() -> String: - return tr("EPHEMERAL") - -func get_mutation_description() -> String: - return tr("EPHEMERAL_EFFECT_TEXT").format({ - "seed_number": level, - "seed_icon": Text.bbcode_icon(Plant.SEED_ICON), - "lifetime_change": get_lifetime_change(), - "lifetime_icon": Text.bbcode_icon(Plant.LIFETIME_ICON), - }) - -func mutate_lifetime(_plant_data: PlantData, lifetime: int) -> int: - return lifetime + get_lifetime_change() - -func mutate_seed_number(plant_data: PlantData, seed_number: int): - if plant_data.get_state() == PlantData.State.MATURE: - return seed_number + level + 1 - return seed_number - -func get_seed_increase() -> int: - return floori((level + 1.0) / 2) - -func get_lifetime_change() -> int: - return -1 diff --git a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd.uid b/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd.uid deleted file mode 100644 index b44f704..0000000 --- a/entities/plants/scripts/plant_mutation/ephemeral_mutation.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bmo42h1p554nv diff --git a/entities/player/inventory/scripts/inventory.gd b/entities/player/inventory/scripts/inventory.gd index 39051e1..8c1f058 100644 --- a/entities/player/inventory/scripts/inventory.gd +++ b/entities/player/inventory/scripts/inventory.gd @@ -39,6 +39,7 @@ func add_item(item: Item) -> bool: func add_tool(tool: Item) -> bool: if not has_item_with_name(tool.get_item_name()): tools.append(tool) + current_item_ind += 1 updated.emit(self) tool_added.emit(tool) return true diff --git a/entities/player/inventory/scripts/items/seed.gd b/entities/player/inventory/scripts/items/seed.gd index 598a34c..3644bd7 100644 --- a/entities/player/inventory/scripts/items/seed.gd +++ b/entities/player/inventory/scripts/items/seed.gd @@ -7,8 +7,6 @@ const SHOVEL_ICON = preload("res://common/icons/shovel.svg") const GROWING_ICON = preload("res://common/icons/chevrons-up.svg") const SCORE_ICON = preload("res://common/icons/growth.svg") -const RARITY_POOL : Array[int] = [0,0,0,0,0,0,0,1,1,1] - @export var plant_name : String @export var plant_mutations: Array[PlantMutation] @export var random_seed : int @@ -29,15 +27,15 @@ static func generate_from_parent(plant_data : PlantData) -> Seed: mutate_mutations(plant_data) ) else : - return Seed.new( + return Seed.new( plant_data.plant_name, plant_data.mutations.duplicate_deep() ) -static func generate_random() -> Seed: +static func generate_random(rarity := 0) -> Seed: var new_seed = Seed.new( Random.generate_random_word(), - [generate_first_mutation()] + [generate_first_mutation(rarity)] ) return new_seed @@ -134,8 +132,7 @@ func get_particles() -> Array[EffectParticles.Parameters]: return param -static func generate_first_mutation() -> PlantMutation: - var rarity : int = RARITY_POOL.pick_random() +static func generate_first_mutation(rarity := 0) -> PlantMutation: var possible_mutation : PlantMutation = GameInfo.game_data.progression_data.available_mutations.filter( func (m : PlantMutation): return m.get_base_rarity() <= rarity diff --git a/entities/player/scripts/player_data.gd b/entities/player/scripts/player_data.gd index 64a0fbc..c0e3420 100644 --- a/entities/player/scripts/player_data.gd +++ b/entities/player/scripts/player_data.gd @@ -20,7 +20,7 @@ func get_artefacts() -> Array[Artefact]: return GameInfo.game_data.current_run.artefacts return [] -func _on_artefacts_updated(artefacts : Array[Artefact]): +func update_with_artefacts(artefacts : Array[Artefact]): inventory.seeds_size = calculate_inventory_size(artefacts) max_energy = calculate_max_energy(artefacts) updated.emit() diff --git a/gui/game/announce/announce.tscn b/gui/game/announce/announce.tscn index 773dde4..e31e97c 100644 --- a/gui/game/announce/announce.tscn +++ b/gui/game/announce/announce.tscn @@ -145,6 +145,7 @@ _data = { } [node name="Announce" type="CanvasLayer" unique_id=1659074958] +process_mode = 3 script = ExtResource("1_4evne") [node name="MarginContainer" type="MarginContainer" parent="." unique_id=1463847780] @@ -230,7 +231,7 @@ size = Vector2i(300, 300) [node name="AnnouceObject" type="Node3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=986671004] unique_name_in_owner = true -transform = Transform3D(0.8788874, 0.4667406, 0.09817754, -0.45027143, 0.74415994, 0.4933552, 0.15722138, -0.47777224, 0.8642758, 0, 0, 0) +transform = Transform3D(-0.51481193, -0.6680038, 0.5372555, -0.8508927, 0.32199714, -0.4149924, 0.104188256, -0.67080045, -0.73426664, 0, 0, 0) [node name="Camera3D" type="Camera3D" parent="AnnounceContainer/ObjectVisualiser/SubViewport" unique_id=1788331074] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1) diff --git a/gui/game/announce/scripts/announce.gd b/gui/game/announce/scripts/announce.gd index c8655d5..01664fe 100644 --- a/gui/game/announce/scripts/announce.gd +++ b/gui/game/announce/scripts/announce.gd @@ -77,10 +77,14 @@ func set_announce_object(object := announce_object): if not visible: %AnimationPlayer.play("appear") + Pointer.action_disabled = true AudioManager.play_sfx("Ship_reveal") elif object == null and visible: %AnimationPlayer.play_backwards("appear") - + get_tree().create_timer(0.2).timeout.connect( # Put a delay to not interfere with the ok button click + func(): + Pointer.action_disabled = false + ) announce_object = object func _on_ok_button_down(): diff --git a/gui/game/card/scripts/card.gd b/gui/game/card/scripts/card.gd index 1fcb173..226b02f 100644 --- a/gui/game/card/scripts/card.gd +++ b/gui/game/card/scripts/card.gd @@ -15,7 +15,6 @@ const CARD_SECTION_SCENE : PackedScene = preload("res://gui/game/card/card_secti # update() func update(): - pass %Title.text = info.title %Subtitle.visible = info.subtitle != "" %Subtitle.text = info.subtitle diff --git a/gui/game/help/help.tscn b/gui/game/help/help.tscn index a5fdba7..88a349d 100644 --- a/gui/game/help/help.tscn +++ b/gui/game/help/help.tscn @@ -7,13 +7,7 @@ [ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="5_mao3x"] [ext_resource type="Texture2D" uid="uid://bhogi5kkltx51" path="res://gui/pause/assets/textures/rock_tutorial_image.png" id="6_bt3y5"] [ext_resource type="Texture2D" uid="uid://3fwhxkd0ycga" path="res://gui/pause/assets/textures/talion_tutorial_image.png" id="7_jx4fu"] -[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="8_ajtcc"] -[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="9_i5c4s"] -[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="10_0a2af"] -[ext_resource type="Texture2D" uid="uid://dhy4ewvqvlxyi" path="res://common/icons/clock.svg" id="11_tiice"] -[ext_resource type="Texture2D" uid="uid://c2qg7ikkylfv4" path="res://common/icons/seeds.svg" id="12_vb6ry"] -[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="13_r8wgh"] -[ext_resource type="Texture2D" uid="uid://cymrmhsihkj44" path="res://common/icons/recharge.svg" id="14_ccxsv"] +[ext_resource type="PackedScene" uid="uid://bnx5hr2fd0p24" path="res://gui/game/help/icon_help_content.tscn" id="8_38kut"] [sub_resource type="LabelSettings" id="LabelSettings_rcm5b"] font = ExtResource("2_l61dv") @@ -149,132 +143,5 @@ theme_override_constants/margin_top = 8 theme_override_constants/margin_right = 8 theme_override_constants/margin_bottom = 8 -[node name="IconsGrid" type="VBoxContainer" parent="IconHelp/MarginContainer" unique_id=1344975233] +[node name="IconsGrid" parent="IconHelp/MarginContainer" unique_id=9435995 instance=ExtResource("8_38kut")] layout_mode = 2 -alignment = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1388308447] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer" unique_id=848501211] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("8_ajtcc") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer" unique_id=913881976] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "PLANT_POINTS" -vertical_alignment = 1 - -[node name="HBoxContainer2" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1039110967] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer2" unique_id=1533385173] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("9_i5c4s") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer2" unique_id=1539873337] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "DAYS" -vertical_alignment = 1 - -[node name="HBoxContainer3" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1009856551] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer3" unique_id=483862285] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("10_0a2af") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer3" unique_id=1118498780] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "GROWING_TIME" -vertical_alignment = 1 - -[node name="HBoxContainer4" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1195759820] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer4" unique_id=617759410] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("11_tiice") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer4" unique_id=44288020] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "LIFETIME" -vertical_alignment = 1 - -[node name="HBoxContainer5" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1749624633] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer5" unique_id=1970160966] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("12_vb6ry") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer5" unique_id=1667196444] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "SEEDS" -vertical_alignment = 1 - -[node name="HBoxContainer6" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=65069381] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer6" unique_id=302101280] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("13_r8wgh") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer6" unique_id=1371041548] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "ORCHID_ENERGY" -vertical_alignment = 1 - -[node name="HBoxContainer7" type="HBoxContainer" parent="IconHelp/MarginContainer/IconsGrid" unique_id=1616445361] -layout_mode = 2 -theme_override_constants/separation = 4 - -[node name="TextureRect" type="TextureRect" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer7" unique_id=1012780398] -custom_minimum_size = Vector2(25, 25) -layout_mode = 2 -size_flags_horizontal = 4 -texture = ExtResource("14_ccxsv") -expand_mode = 1 -stretch_mode = 5 - -[node name="RichTextLabel" type="Label" parent="IconHelp/MarginContainer/IconsGrid/HBoxContainer7" unique_id=537891031] -layout_mode = 2 -theme = ExtResource("5_mao3x") -text = "RECHARGE_NUMBER" -vertical_alignment = 1 diff --git a/gui/game/help/icon_help_content.tscn b/gui/game/help/icon_help_content.tscn new file mode 100644 index 0000000..9158866 --- /dev/null +++ b/gui/game/help/icon_help_content.tscn @@ -0,0 +1,139 @@ +[gd_scene format=3 uid="uid://bnx5hr2fd0p24"] + +[ext_resource type="Texture2D" uid="uid://bt3g5bmar0icf" path="res://common/icons/growth.svg" id="1_yxwcd"] +[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="2_wxnr5"] +[ext_resource type="Texture2D" uid="uid://d3ksdxepcjoot" path="res://common/icons/calendar-week.svg" id="3_t30ml"] +[ext_resource type="Texture2D" uid="uid://cgmxjom200bej" path="res://common/icons/chevrons-up.svg" id="4_d4ybk"] +[ext_resource type="Texture2D" uid="uid://dhy4ewvqvlxyi" path="res://common/icons/clock.svg" id="5_3lk2g"] +[ext_resource type="Texture2D" uid="uid://c2qg7ikkylfv4" path="res://common/icons/seeds.svg" id="6_tr36d"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_ubf5w"] +[ext_resource type="Texture2D" uid="uid://cymrmhsihkj44" path="res://common/icons/recharge.svg" id="8_uvt1i"] + +[node name="IconsGrid" type="VBoxContainer" unique_id=9435995] +alignment = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="." unique_id=1691095228] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer" unique_id=1901557678] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("1_yxwcd") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer" unique_id=859146346] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "PLANT_POINTS" +vertical_alignment = 1 + +[node name="HBoxContainer2" type="HBoxContainer" parent="." unique_id=84698232] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer2" unique_id=1688869934] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("3_t30ml") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer2" unique_id=722562759] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "DAYS" +vertical_alignment = 1 + +[node name="HBoxContainer3" type="HBoxContainer" parent="." unique_id=1091557748] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer3" unique_id=206861703] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("4_d4ybk") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer3" unique_id=609696718] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "GROWING_TIME" +vertical_alignment = 1 + +[node name="HBoxContainer4" type="HBoxContainer" parent="." unique_id=1416063894] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer4" unique_id=1393253275] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("5_3lk2g") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer4" unique_id=365374836] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "LIFETIME" +vertical_alignment = 1 + +[node name="HBoxContainer5" type="HBoxContainer" parent="." unique_id=1410748673] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer5" unique_id=946072561] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("6_tr36d") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer5" unique_id=549789016] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "SEEDS" +vertical_alignment = 1 + +[node name="HBoxContainer6" type="HBoxContainer" parent="." unique_id=1258373211] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer6" unique_id=1789194571] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("7_ubf5w") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer6" unique_id=1037558845] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "ORCHID_ENERGY" +vertical_alignment = 1 + +[node name="HBoxContainer7" type="HBoxContainer" parent="." unique_id=1238098255] +layout_mode = 2 +theme_override_constants/separation = 4 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer7" unique_id=316858205] +custom_minimum_size = Vector2(25, 25) +layout_mode = 2 +size_flags_horizontal = 4 +texture = ExtResource("8_uvt1i") +expand_mode = 1 +stretch_mode = 5 + +[node name="RichTextLabel" type="Label" parent="HBoxContainer7" unique_id=248028380] +layout_mode = 2 +theme = ExtResource("2_wxnr5") +text = "RECHARGE_NUMBER" +vertical_alignment = 1 diff --git a/gui/game/pass_day/pass_day.tscn b/gui/game/pass_day/pass_day.tscn index 5a251fe..e696c51 100644 --- a/gui/game/pass_day/pass_day.tscn +++ b/gui/game/pass_day/pass_day.tscn @@ -42,10 +42,10 @@ tracks/0/path = NodePath("SubViewport/NightAnimationSprite:rotation") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.26666668, 0.7, 1), -"transitions": PackedFloat32Array(1, 1, 1, 1), +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [0.0, 3.141592653589793, 3.141592653589793, 6.265732014659643] +"values": [0.0, 6.265732014659643] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_wafeq"] @@ -56,6 +56,7 @@ _data = { [node name="PassDay" type="CanvasLayer" unique_id=335255544] layer = 3 +visible = false script = ExtResource("1_0pm4g") [node name="Blur" type="ColorRect" parent="." unique_id=546890405] @@ -72,6 +73,7 @@ script = ExtResource("2_bhfpo") [node name="PassDayInfo" type="VBoxContainer" parent="." unique_id=833110506] unique_name_in_owner = true +visible = false anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 diff --git a/gui/game/tutorial/scripts/tutorial.gd b/gui/game/tutorial/scripts/tutorial.gd index c040c0d..dc12359 100644 --- a/gui/game/tutorial/scripts/tutorial.gd +++ b/gui/game/tutorial/scripts/tutorial.gd @@ -70,6 +70,7 @@ var indicators : Array[InGameIndicator] (func (): for e in region.entity_container.get_children(): if e is Plant: + display_plant_info_tutorial(e.card_info()) return true return false) ), @@ -95,6 +96,7 @@ func _ready(): show() else: hide() + %PlantInfoTutorial.hide() func setup_gui(): for s in %Steps.get_children(): @@ -132,6 +134,16 @@ func finish_tutorial(): region.data.update() succeded.emit() +func display_plant_info_tutorial(with_card_info : CardInfo): + %PlantCard.info = with_card_info + AudioManager.play_sfx("Ship_reveal") + %PlantCard.update() + %PlantInfoTutorialAnimationPlayer.play("appear") + +func _on_ok_button_button_down(): + %PlantInfoTutorialAnimationPlayer.play_backwards("appear") + + class Step: var text : String : get = get_text diff --git a/gui/game/tutorial/tutorial.tscn b/gui/game/tutorial/tutorial.tscn index a38640f..5d7402c 100644 --- a/gui/game/tutorial/tutorial.tscn +++ b/gui/game/tutorial/tutorial.tscn @@ -4,6 +4,20 @@ [ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="2_1wikm"] [ext_resource type="Texture2D" uid="uid://1ynlp05wj0hm" path="res://common/icons/rocket.svg" id="3_8kuag"] [ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_1wikm"] +[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="5_5i4hd"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="6_hgus1"] +[ext_resource type="PackedScene" uid="uid://753270jjxmfg" path="res://gui/game/card/card.tscn" id="6_vg3tr"] +[ext_resource type="Texture2D" uid="uid://bgi4rc50par30" path="res://common/icons/arrow-narrow-right.svg" id="7_6k6bq"] +[ext_resource type="Texture2D" uid="uid://bd6qddv5ihkjr" path="res://common/icons/bucket.svg" id="7_ug5yk"] +[ext_resource type="Script" uid="uid://dj2pv1hiwjfv0" path="res://gui/game/card/scripts/card_info.gd" id="8_hgus1"] +[ext_resource type="Script" uid="uid://dgbh38j13g5kn" path="res://gui/game/card/scripts/card_section_info.gd" id="9_6k6bq"] +[ext_resource type="Texture2D" uid="uid://b752eqq4cm7ve" path="res://common/icons/building-factory-2.svg" id="10_58nqq"] +[ext_resource type="Script" uid="uid://b4tkium34c831" path="res://gui/game/card/scripts/card_stat_info.gd" id="11_ebkn5"] +[ext_resource type="Texture2D" uid="uid://dg00xnpp6ixls" path="res://common/icons/server-2.svg" id="12_2pmxd"] +[ext_resource type="Texture2D" uid="uid://baaujfw8piywi" path="res://common/icons/dna.svg" id="13_1lrfc"] +[ext_resource type="Texture2D" uid="uid://bsvxhafoxwmw0" path="res://common/icons/cube-3d-sphere.svg" id="14_e6tpi"] +[ext_resource type="Texture2D" uid="uid://7oh782g7ngop" path="res://common/icons/arrow-narrow-left.svg" id="17_58nqq"] +[ext_resource type="Theme" uid="uid://5au2k3vf2po3" path="res://gui/ressources/menu.tres" id="18_6k6bq"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x7cwm"] bg_color = Color(0.18, 0.18, 0.18, 0.48235294) @@ -16,6 +30,122 @@ corner_radius_bottom_left = 20 font = ExtResource("4_1wikm") font_size = 20 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_pu6eb"] +shader = ExtResource("5_5i4hd") +shader_parameter/strength = 8.00000037674012 +shader_parameter/mix_percentage = 0.3 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ebkn5"] + +[sub_resource type="Resource" id="Resource_ditr3"] +script = ExtResource("9_6k6bq") +title_text = "Mutations" +title_icon = ExtResource("10_58nqq") +text = "This is a mutation" +metadata/_custom_type_script = "uid://dgbh38j13g5kn" + +[sub_resource type="Resource" id="Resource_ikhlb"] +script = ExtResource("11_ebkn5") +text = "8" +icon = ExtResource("12_2pmxd") +metadata/_custom_type_script = "uid://b4tkium34c831" + +[sub_resource type="Resource" id="Resource_puixe"] +script = ExtResource("8_hgus1") +title = "Hello" +subtitle = "Mature" +texture = ExtResource("13_1lrfc") +important_stat_text = "8" +important_stat_icon = ExtResource("7_ug5yk") +stats = Array[ExtResource("11_ebkn5")]([SubResource("Resource_ikhlb")]) +sections = Array[ExtResource("9_6k6bq")]([SubResource("Resource_ditr3")]) +metadata/_custom_type_script = "uid://dj2pv1hiwjfv0" + +[sub_resource type="Animation" id="Animation_6k6bq"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MarginContainer:theme_override_constants/separation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [12] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:modulate:a") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [1.0] +} + +[sub_resource type="Animation" id="Animation_58nqq"] +resource_name = "appear" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("MarginContainer:theme_override_constants/separation") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.06666666, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [183, 12] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:modulate:a") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ebkn5"] +_data = { +&"RESET": SubResource("Animation_6k6bq"), +&"appear": SubResource("Animation_58nqq") +} + [node name="Tutorial" type="Control" unique_id=1210916048] layout_mode = 3 anchors_preset = 15 @@ -68,3 +198,168 @@ label_settings = SubResource("LabelSettings_8kuag") [node name="Steps" type="VBoxContainer" parent="MarginContainer/TutorialStepsPanelContainer/MarginContainer/VBoxContainer" unique_id=125170550] unique_name_in_owner = true layout_mode = 2 + +[node name="PlantInfoTutorial" type="Control" parent="." unique_id=1586592931] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BlurRect" type="ColorRect" parent="PlantInfoTutorial" unique_id=35513528] +material = SubResource("ShaderMaterial_pu6eb") +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.037180007, 0.020800002, 0.13, 1) + +[node name="MarginContainer" type="VBoxContainer" parent="PlantInfoTutorial" unique_id=1757534024] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="Title" type="Label" parent="PlantInfoTutorial/MarginContainer" unique_id=1842689362] +layout_mode = 2 +text = "PLANTS_INFO" +label_settings = ExtResource("6_hgus1") +horizontal_alignment = 1 + +[node name="Subtitle" type="Label" parent="PlantInfoTutorial/MarginContainer" unique_id=656340742] +layout_mode = 2 +text = "OBTAIN_INFORMATION_ON_PLANTS_WHILE_HOVERING_PLANTS_BASE" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="PlantInfoTutorial/MarginContainer" unique_id=1124442982] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +columns = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer" unique_id=1598939949] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="HBoxContainer" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer" unique_id=1972134386] +layout_mode = 2 +alignment = 1 + +[node name="Label" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer" unique_id=263525139] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +bbcode_enabled = true +text = "PLANT_NAME_TEXT" +fit_content = true +scroll_active = false +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer" unique_id=1507687253] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 8 +texture = ExtResource("7_6k6bq") +stretch_mode = 5 + +[node name="HBoxContainer3" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer" unique_id=483641916] +layout_mode = 2 +alignment = 1 + +[node name="Label2" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer3" unique_id=553756431] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +bbcode_enabled = true +text = "PLANT_STATS_TEXT" +fit_content = true +scroll_active = false +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer/HBoxContainer3" unique_id=953954556] +layout_mode = 2 +size_flags_vertical = 0 +texture = ExtResource("7_6k6bq") +stretch_mode = 5 + +[node name="VBoxContainer3" type="VBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer" unique_id=1226314631] +layout_mode = 2 + +[node name="HSeparator" type="HSeparator" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=591048390] +layout_mode = 2 +theme_override_constants/separation = 30 +theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5") + +[node name="PlantCard" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer3" unique_id=1085885349 instance=ExtResource("6_vg3tr")] +unique_name_in_owner = true +custom_minimum_size = Vector2(350, 0) +layout_mode = 2 +info = SubResource("Resource_puixe") + +[node name="VBoxContainer2" type="VBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer" unique_id=906180848] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="HSeparator" type="HSeparator" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=760754866] +layout_mode = 2 +theme_override_constants/separation = 32 +theme_override_styles/separator = SubResource("StyleBoxEmpty_ebkn5") + +[node name="HBoxContainer" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=383033253] +layout_mode = 2 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer" unique_id=475071884] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource("17_58nqq") +stretch_mode = 5 + +[node name="Label2" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer" unique_id=1479217505] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +bbcode_enabled = true +text = "PLANT_SCORE_TEXT" +fit_content = true +scroll_active = false +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="HBoxContainer2" type="HBoxContainer" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2" unique_id=2062134463] +layout_mode = 2 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=392813755] +layout_mode = 2 +size_flags_vertical = 4 +texture = ExtResource("17_58nqq") +stretch_mode = 5 + +[node name="Label2" type="RichTextLabel" parent="PlantInfoTutorial/MarginContainer/GridContainer/VBoxContainer2/HBoxContainer2" unique_id=472790254] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +bbcode_enabled = true +text = "PLANT_MUTATION_TEXT" +fit_content = true +scroll_active = false +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="OkButton" type="Button" parent="PlantInfoTutorial/MarginContainer" unique_id=1684351093] +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("18_6k6bq") +text = "OK" + +[node name="PlantInfoTutorialAnimationPlayer" type="AnimationPlayer" parent="PlantInfoTutorial" unique_id=549667783] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_ebkn5") + +[connection signal="button_down" from="PlantInfoTutorial/MarginContainer/OkButton" to="." method="_on_ok_button_button_down"] diff --git a/gui/loose_screen/assets/cristal.blend b/gui/loose_screen/assets/cristal.blend new file mode 100644 index 0000000..c55d230 Binary files /dev/null and b/gui/loose_screen/assets/cristal.blend differ diff --git a/gui/loose_screen/assets/cristal.blend.import b/gui/loose_screen/assets/cristal.blend.import new file mode 100644 index 0000000..12b75e7 --- /dev/null +++ b/gui/loose_screen/assets/cristal.blend.import @@ -0,0 +1,60 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://on4beh6lla76" +path="res://.godot/imported/cristal.blend-116d25ad1da461c81fb8ef9157e2d1e7.scn" + +[deps] + +source_file="res://gui/loose_screen/assets/cristal.blend" +dest_files=["res://.godot/imported/cristal.blend-116d25ad1da461c81fb8ef9157e2d1e7.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/root_script=null +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" +_subresources={} +blender/nodes/visible=0 +blender/nodes/active_collection_only=false +blender/nodes/punctual_lights=true +blender/nodes/cameras=true +blender/nodes/custom_properties=true +blender/nodes/modifiers=1 +blender/meshes/colors=false +blender/meshes/uvs=true +blender/meshes/normals=true +blender/meshes/export_geometry_nodes_instances=false +blender/meshes/gpu_instances=false +blender/meshes/tangents=true +blender/meshes/skins=2 +blender/meshes/export_bones_deforming_mesh_only=false +blender/materials/unpack_enabled=true +blender/materials/export_materials=1 +blender/animation/limit_playback=true +blender/animation/always_sample=true +blender/animation/group_tracks=true +gltf/naming_version=2 diff --git a/gui/loose_screen/assets/cristal.blend1 b/gui/loose_screen/assets/cristal.blend1 new file mode 100644 index 0000000..7ebac4a Binary files /dev/null and b/gui/loose_screen/assets/cristal.blend1 differ diff --git a/gui/loose_screen/assets/orchid_sleeping.png b/gui/loose_screen/assets/orchid_sleeping.png new file mode 100644 index 0000000..6451cc2 Binary files /dev/null and b/gui/loose_screen/assets/orchid_sleeping.png differ diff --git a/gui/loose_screen/assets/orchid_sleeping.png.import b/gui/loose_screen/assets/orchid_sleeping.png.import new file mode 100644 index 0000000..8fde304 --- /dev/null +++ b/gui/loose_screen/assets/orchid_sleeping.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c2ebqci4tglk8" +path="res://.godot/imported/orchid_sleeping.png-7f59ff571a5eb07fa1a91538a777423b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://gui/loose_screen/assets/orchid_sleeping.png" +dest_files=["res://.godot/imported/orchid_sleeping.png-7f59ff571a5eb07fa1a91538a777423b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/gui/loose_screen/loose_screen.tscn b/gui/loose_screen/loose_screen.tscn new file mode 100644 index 0000000..78ca5ea --- /dev/null +++ b/gui/loose_screen/loose_screen.tscn @@ -0,0 +1,80 @@ +[gd_scene format=3 uid="uid://u6nw3vo6677a"] + +[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_pf6ao"] +[ext_resource type="Texture2D" uid="uid://c2ebqci4tglk8" path="res://gui/loose_screen/assets/orchid_sleeping.png" id="2_f8jil"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="3_4ae40"] +[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="4_w6ode"] +[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="5_276s3"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="6_60kfb"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_041t2"] +shader = ExtResource("1_pf6ao") +shader_parameter/strength = 5.00000023424012 +shader_parameter/mix_percentage = 0.3 + +[sub_resource type="LabelSettings" id="LabelSettings_bn8hj"] +font = ExtResource("4_w6ode") +font_size = 50 +font_color = Color(1, 0.6509804, 0.09019608, 1) + +[node name="LooseScreen" type="CanvasLayer" unique_id=1502767186] + +[node name="BlurRect" type="ColorRect" parent="." unique_id=1208806322] +material = SubResource("ShaderMaterial_041t2") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.0352941, 0.0196078, 0.12549, 0.705882) + +[node name="GridContainer" type="GridContainer" parent="." unique_id=2014325082] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -186.5 +offset_top = -249.0 +offset_right = 186.5 +offset_bottom = 249.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +columns = 2 + +[node name="AnnounceContainer" type="VBoxContainer" parent="GridContainer" unique_id=717426101] +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="GridContainer/AnnounceContainer" unique_id=849798296] +custom_minimum_size = Vector2(0, 300) +layout_mode = 2 +texture = ExtResource("2_f8jil") +expand_mode = 3 +stretch_mode = 5 + +[node name="AnnounceText" type="Label" parent="GridContainer/AnnounceContainer" unique_id=1321978462] +unique_name_in_owner = true +layout_mode = 2 +text = "Out of energy" +label_settings = SubResource("LabelSettings_bn8hj") +horizontal_alignment = 1 + +[node name="AnnounceTitle" type="Label" parent="GridContainer/AnnounceContainer" unique_id=896530004] +unique_name_in_owner = true +layout_mode = 2 +text = "Orchid and the ship ran out of energy" +label_settings = ExtResource("3_4ae40") +horizontal_alignment = 1 +autowrap_mode = 3 + +[node name="OkButton" type="Button" parent="GridContainer/AnnounceContainer" unique_id=1371634749] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("5_276s3") +text = "Wake up again" +icon = ExtResource("6_60kfb") diff --git a/gui/pause/pause.tscn b/gui/pause/pause.tscn index f409f99..0949554 100644 --- a/gui/pause/pause.tscn +++ b/gui/pause/pause.tscn @@ -21,6 +21,10 @@ shader_parameter/mix_percentage = 0.3 font = ExtResource("4_apjlw") font_size = 30 +[sub_resource type="LabelSettings" id="LabelSettings_5hfp2"] +font = ExtResource("4_apjlw") +font_size = 20 + [sub_resource type="Animation" id="Animation_58dya"] length = 0.001 tracks/0/type = "value" @@ -163,12 +167,22 @@ layout_mode = 2 text = "QUIT" icon = ExtResource("7_yj6f1") +[node name="SaveInfo" type="Label" parent="Container/MarginContainer" unique_id=144326561] +layout_mode = 2 +size_flags_vertical = 8 +text = "THIS_GAME_USE_AUTOSAVE" +label_settings = SubResource("LabelSettings_5hfp2") +horizontal_alignment = 1 +vertical_alignment = 1 + [node name="Settings" parent="." unique_id=758381952 instance=ExtResource("4_58dya")] unique_name_in_owner = true +visible = false mouse_filter = 2 [node name="Controls" parent="." unique_id=358658336 instance=ExtResource("11_urlqn")] unique_name_in_owner = true +visible = false mouse_filter = 2 [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1779993260] diff --git a/gui/pointer/scripts/pointer.gd b/gui/pointer/scripts/pointer.gd index b3e525b..e692ace 100644 --- a/gui/pointer/scripts/pointer.gd +++ b/gui/pointer/scripts/pointer.gd @@ -25,12 +25,14 @@ var can_use_item : bool = false var press_time := 0. var press_action_done := false +var action_disabled := true + func _ready(): Input.set_custom_mouse_cursor(default_cursor) %Action.visible = false func _process(delta): - if player: + if player and not action_disabled: process_player_actions(delta) else : %ActionProgressBar.value = 0. diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png new file mode 100644 index 0000000..0a6198b Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import new file mode 100644 index 0000000..4ac6faf --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://7lw40nfj4lhl" +path="res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" +dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 112838.png-64ef83d52ce9df1c5c41e85939ab8a4a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png new file mode 100644 index 0000000..0529192 Binary files /dev/null and b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png differ diff --git a/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import new file mode 100644 index 0000000..d12279f --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d17ru4hw8okj1" +path="res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" +dest_files=["res://.godot/imported/Capture d'écran 2026-04-17 113002.png-0eb5866e63755f5d73921a67745288a0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/stages/3d_scenes/cockpit_scene/cockpit.tscn b/stages/3d_scenes/cockpit_scene/cockpit.tscn index be3ae10..3f52723 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit.tscn @@ -11,6 +11,7 @@ [ext_resource type="PackedScene" uid="uid://cgw2ct7smispo" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/shelf.tscn" id="11_w4l7d"] [ext_resource type="PackedScene" uid="uid://dd6k80rhux1do" path="res://stages/3d_scenes/cockpit_scene/cockpit_elements/plant_info_screen.tscn" id="12_pxmsf"] [ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="13_a2cx2"] +[ext_resource type="PackedScene" uid="uid://cd8j7v7qtybi8" path="res://stages/3d_scenes/cockpit_scene/ship_tutorial.tscn" id="13_u7lr8"] [ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="17_omtjc"] [sub_resource type="Animation" id="Animation_pxmsf"] @@ -75,6 +76,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04597473, -0.10369873, 0.3 shape = SubResource("BoxShape3D_ctvhk") [node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("13_a2cx2")] +unique_name_in_owner = true transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 3.2830403) [node name="CockpitModel" parent="." unique_id=825141342 instance=ExtResource("17_omtjc")] @@ -111,3 +113,6 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.1218804, -1.0799314, 2.621 [node name="PlantInfoScreen" parent="." unique_id=1881622243 instance=ExtResource("12_pxmsf")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.2386853, -0.047743827, 4.020312) + +[node name="ShipTutorial" parent="." unique_id=868547496 instance=ExtResource("13_u7lr8")] +unique_name_in_owner = true diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn b/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn index 9ec8700..676c868 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/dashboard.tscn @@ -104,6 +104,9 @@ _data = { &"hover": SubResource("Animation_5d7hc") } +[sub_resource type="ViewportTexture" id="ViewportTexture_vks67"] +viewport_path = NodePath("LeftScreen/LeftScreenAction/SubViewport") + [sub_resource type="Animation" id="Animation_2kujw"] length = 0.001 tracks/0/type = "value" @@ -143,8 +146,8 @@ _data = { [sub_resource type="Resource" id="Resource_ne0dp"] script = ExtResource("12_oix5e") -items = Array[ExtResource("11_3cel1")]([null, null, null]) -n_tools = 1 +seeds = Array[ExtResource("11_3cel1")]([null]) +seeds_size = 1 metadata/_custom_type_script = "uid://fnu2d6wna4yc" [node name="Dashboard" type="Node3D" unique_id=1374334508] @@ -338,7 +341,7 @@ transform = Transform3D(1, -1.509958e-07, -8.742278e-08, 1.509958e-07, 1, -1.490 [node name="LeftScreenAction" type="Sprite3D" parent="LeftScreen" unique_id=442886447] transform = Transform3D(-1, 5.3045827e-08, 1.509958e-07, 5.3045838e-08, 1.0000002, 1.5913756e-07, -1.5099579e-07, 1.5913761e-07, -1, 0.01, -0.04, -0.015) pixel_size = 0.0015 -texture = SubResource("ViewportTexture_2ofl5") +texture = SubResource("ViewportTexture_vks67") [node name="SubViewport" type="SubViewport" parent="LeftScreen/LeftScreenAction" unique_id=1031174751] transparent_bg = true diff --git a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_run_point_screen.gd b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_run_point_screen.gd index 0ed2466..3d0b724 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_run_point_screen.gd +++ b/stages/3d_scenes/cockpit_scene/cockpit_elements/scripts/dashboard_run_point_screen.gd @@ -18,6 +18,7 @@ func set_run_point(rp := run_point): interactable = rp != null if rp: action_icon.texture = LAND_ICON + print(rp.region_parameter.get_region_name()) action_label.text = rp.region_parameter.get_region_name() func card_info() -> CardInfo: diff --git a/stages/3d_scenes/cockpit_scene/cockpit_scene.tscn b/stages/3d_scenes/cockpit_scene/cockpit_scene.tscn index 0ed903c..5b2866d 100644 --- a/stages/3d_scenes/cockpit_scene/cockpit_scene.tscn +++ b/stages/3d_scenes/cockpit_scene/cockpit_scene.tscn @@ -12,8 +12,6 @@ shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1) shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1) shader_parameter/star_hue_offset = 0.6 shader_parameter/star_intensity = 0.08 -shader_parameter/star_twinkle_speed = 0.8 -shader_parameter/star_twinkle_intensity = 0.2 shader_parameter/layer_scale = 20.0 shader_parameter/layer_scale_step = 10.0 shader_parameter/layers_count = 3 diff --git a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd index 7f04178..54f332c 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/cockpit.gd @@ -33,9 +33,23 @@ func _ready(): %Exit.clicked.connect(_on_exit_clicked) %Exit.interactable = can_exit() + if not GameInfo.game_data.ship_tutorial_done: + await get_tree().create_timer(1).timeout + await show_tutorial() + if GameInfo.game_data.game_mode == GameData.GameMode.STORY: handle_dialogs() +func show_tutorial(): + AudioManager.play_sfx("Ship_reveal") + %ShipTutorial.appear() + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + %Player3D.controlling_player=false + await %ShipTutorial.disappeared + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + %Player3D.controlling_player=true + GameInfo.game_data.ship_tutorial_done = true + func handle_dialogs(): if not POST_TUTORIAL_DIALOG_PATH in GameInfo.game_data.dialogs_done: await get_tree().create_timer(5).timeout diff --git a/stages/3d_scenes/cockpit_scene/scripts/cockpit_scene.gd b/stages/3d_scenes/cockpit_scene/scripts/cockpit_scene.gd index 0a9cc7d..d6b7d63 100644 --- a/stages/3d_scenes/cockpit_scene/scripts/cockpit_scene.gd +++ b/stages/3d_scenes/cockpit_scene/scripts/cockpit_scene.gd @@ -2,8 +2,6 @@ extends Node3D class_name CockpitScene func _ready(): - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - if GameInfo.game_data.ship_in_space: %TakeOffAnimationPlayer.play("TookOff") diff --git a/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd new file mode 100644 index 0000000..2424ff1 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd @@ -0,0 +1,54 @@ +extends CanvasLayer +class_name ShipTutorial + +const DEFAULT_SHIP_ACCELERATION = Vector2(1,0) + +signal disappeared + +var object_acceleration := Vector2(0,0) + +var rotating := false + +var prev_mouse_pos : Vector2 +var next_mouse_pos : Vector2 + +func _ready(): + hide() + +func appear(): + %AnimationPlayer.play("appear") + +func _process(delta): + update_rotation(delta) + +func update_rotation(delta): + if visible: + next_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_pressed("action"): + rotating = true + prev_mouse_pos = get_viewport().get_mouse_position() + if Input.is_action_just_released("action"): + rotating = false + object_acceleration = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + + var object_rotation = object_acceleration + + if rotating: + object_rotation = Vector2( + float(next_mouse_pos.x - prev_mouse_pos.x), + float(next_mouse_pos.y - prev_mouse_pos.y) + ) + prev_mouse_pos = next_mouse_pos + else : + object_acceleration = object_acceleration.lerp(DEFAULT_SHIP_ACCELERATION, 0.1) + + %Ship.rotate(Vector3.UP, object_rotation.x * delta) + %Ship.rotate(Vector3.RIGHT, object_rotation.y * delta) + + +func _on_ok_button_button_down(): + %AnimationPlayer.play_backwards("appear") + disappeared.emit() diff --git a/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd.uid b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd.uid new file mode 100644 index 0000000..591e005 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd.uid @@ -0,0 +1 @@ +uid://cqc8vta5ffmwt diff --git a/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn b/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn new file mode 100644 index 0000000..bf20ad5 --- /dev/null +++ b/stages/3d_scenes/cockpit_scene/ship_tutorial.tscn @@ -0,0 +1,325 @@ +[gd_scene format=3 uid="uid://cd8j7v7qtybi8"] + +[ext_resource type="Script" uid="uid://cqc8vta5ffmwt" path="res://stages/3d_scenes/cockpit_scene/scripts/ship_tutorial.gd" id="1_1jkg7"] +[ext_resource type="Shader" uid="uid://cuni3ggtw2uuy" path="res://common/vfx/materials/shaders/blur.gdshader" id="1_11pbi"] +[ext_resource type="LabelSettings" uid="uid://dqwayi8yjwau2" path="res://gui/ressources/title_label_settings.tres" id="2_1jkg7"] +[ext_resource type="Texture2D" uid="uid://bi5jo6pf0acjb" path="res://common/icons/carambola.svg" id="3_ofwam"] +[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="3_wyjs5"] +[ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="4_ofwam"] +[ext_resource type="Environment" uid="uid://bxyp24f85p0xf" path="res://gui/game/assets/gui_3d_environment.tres" id="5_2y716"] +[ext_resource type="Texture2D" uid="uid://7lw40nfj4lhl" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 112838.png" id="6_2y716"] +[ext_resource type="Theme" uid="uid://bgcmd213j6gk1" path="res://gui/ressources/hud.tres" id="6_6olc8"] +[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="7_cnkwc"] +[ext_resource type="Texture2D" uid="uid://d17ru4hw8okj1" path="res://stages/3d_scenes/cockpit_scene/assets/textures/tutorial_screenshots/Capture d'écran 2026-04-17 113002.png" id="9_6olc8"] + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_wa8fb"] +shader = ExtResource("1_11pbi") +shader_parameter/strength = 8.00000037674012 +shader_parameter/mix_percentage = 0.3 + +[sub_resource type="ViewportTexture" id="ViewportTexture_2y716"] +viewport_path = NodePath("Particles/SubViewport") + +[sub_resource type="Curve" id="Curve_6olc8"] +_limits = [-200.0, 200.0, 0.0, 1.0] +_data = [Vector2(0, -200), 0.0, 560.0, 0, 0, Vector2(0.08235294, 92.384125), 1336.3082, 1336.3082, 0, 0, Vector2(0.34901965, 200), 0.0, 0.0, 0, 0, Vector2(0.854902, -200), 0.0, 0.0, 0, 0] +point_count = 4 + +[sub_resource type="Gradient" id="Gradient_cnkwc"] +offsets = PackedFloat32Array(0, 0.8689956, 0.98253274) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[sub_resource type="LabelSettings" id="LabelSettings_n2u7g"] +font = ExtResource("3_wyjs5") +font_size = 50 +font_color = Color(1, 0.6509804, 0.09019608, 1) + +[sub_resource type="ViewportTexture" id="ViewportTexture_11pbi"] +viewport_path = NodePath("ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport") + +[sub_resource type="Animation" id="Animation_2y716"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ShipTutorialContainer:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Particles:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ShipTutorialContainer:theme_override_constants/separation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [12] +} + +[sub_resource type="Animation" id="Animation_6olc8"] +resource_name = "appear" +length = 0.8 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.13333334), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [false, true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("ShipTutorialContainer:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.2, 0.73333335), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Particles:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.2, 0.7), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("ShipTutorialContainer:theme_override_constants/separation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.26666665, 0.73333335), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [554, 8] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_cnkwc"] +_data = { +&"RESET": SubResource("Animation_2y716"), +&"appear": SubResource("Animation_6olc8") +} + +[node name="ShipTutorial" type="CanvasLayer" unique_id=868547496] +script = ExtResource("1_1jkg7") + +[node name="BlurRect" type="ColorRect" parent="." unique_id=1582095070] +material = SubResource("ShaderMaterial_wa8fb") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0.037180007, 0.020800002, 0.13, 1) + +[node name="Particles" type="TextureRect" parent="." unique_id=552383374] +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -179.0 +offset_top = -179.0 +offset_right = 179.0 +offset_bottom = 179.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = SubResource("ViewportTexture_2y716") +expand_mode = 1 + +[node name="SubViewport" type="SubViewport" parent="Particles" unique_id=205461032] +transparent_bg = true +size = Vector2i(1000, 1000) + +[node name="GPUParticles2D" type="CPUParticles2D" parent="Particles/SubViewport" unique_id=612988274] +position = Vector2(500, 500) +amount = 20 +texture = ExtResource("3_ofwam") +preprocess = 1.0 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_min = 2.0 +initial_velocity_max = 2.0 +linear_accel_min = 5.0 +linear_accel_max = 5.0 +linear_accel_curve = SubResource("Curve_6olc8") +color_ramp = SubResource("Gradient_cnkwc") + +[node name="ShipTutorialContainer" type="VBoxContainer" parent="." unique_id=732188526] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="ShipTutorialText" type="Label" parent="ShipTutorialContainer" unique_id=1403992763] +unique_name_in_owner = true +layout_mode = 2 +text = "SHIP_ACQUIRED" +label_settings = SubResource("LabelSettings_n2u7g") +horizontal_alignment = 1 + +[node name="ShipTutorialTitle" type="Label" parent="ShipTutorialContainer" unique_id=2022459650] +unique_name_in_owner = true +layout_mode = 2 +text = "USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET" +label_settings = ExtResource("2_1jkg7") +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="ShipTutorialContainer" unique_id=1001794244] +layout_mode = 2 +size_flags_horizontal = 4 +theme_override_constants/h_separation = 35 +columns = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1184100238] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=458438699] +layout_mode = 2 +texture = ExtResource("6_2y716") +expand_mode = 5 +stretch_mode = 5 + +[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer" unique_id=1193611093] +layout_mode = 2 +bbcode_enabled = true +text = "JUMP_BETWEEN_REGION_TEXT" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ShipVisualiser" type="TextureRect" parent="ShipTutorialContainer/GridContainer" unique_id=692971472] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +mouse_filter = 0 +texture = SubResource("ViewportTexture_11pbi") +stretch_mode = 5 + +[node name="SubViewport" type="SubViewport" parent="ShipTutorialContainer/GridContainer/ShipVisualiser" unique_id=1153633037] +own_world_3d = true +transparent_bg = true +size = Vector2i(400, 400) + +[node name="Ship" type="Node3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=434320277] +unique_name_in_owner = true +transform = Transform3D(0.86598426, 0, -0.5000024, 0, 0.9999422, 0, 0.49997625, 0, 0.8660295, 0, 0, 0) + +[node name="cockpit2" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship" unique_id=1190034532 instance=ExtResource("4_ofwam")] + +[node name="Skeleton3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature" parent_id_path=PackedInt32Array(1190034532, 368440226) index="0" unique_id=1318180746] +bones/0/rotation = Quaternion(-0.52081746, 0.47827742, 0.52081746, 0.47827742) +bones/1/rotation = Quaternion(0.042539995, -1.4957005e-08, -9.944439e-10, 0.9990948) +bones/2/rotation = Quaternion(0.52081746, 0.47827742, 0.52081746, -0.47827742) +bones/3/rotation = Quaternion(0.042539995, 1.4957005e-08, 9.944439e-10, 0.9990948) + +[node name="WinkEnd_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="0" unique_id=1435098475] +transform = Transform3D(7.145433e-10, -1, -7.4505806e-08, 2.9971538e-08, -4.4703484e-08, 1, -1, -7.1454553e-10, 2.9971538e-08, -12.358327, -1.0543112, -8.881784e-16) + +[node name="Wing_R" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="1" unique_id=891044283] +transform = Transform3D(0, -0.9963807, -0.08500305, 0, -0.08500302, 0.9963807, -1, 0, 0, 0, 0, 0) + +[node name="WinkEnd_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="2" unique_id=908817672] +transform = Transform3D(7.145433e-10, 1, 7.4505806e-08, -2.9971538e-08, -4.4703484e-08, 1, 1, -7.1454553e-10, 2.9971538e-08, 12.358327, -1.0543112, 0) + +[node name="Wing_L" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2/Armature/Skeleton3D" index="3" unique_id=74621525] +transform = Transform3D(0, 0.9963807, 0.08500305, 0, -0.08500302, 0.9963807, 1, 0, 0, 0, 0, 0) + +[node name="AnimationPlayer" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2" index="6" unique_id=1861191625] +autoplay = &"Fold" + +[node name="Camera3D" type="Camera3D" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=541588220] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 50) +current = true +fov = 30.0 + +[node name="WorldEnvironment" type="WorldEnvironment" parent="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport" unique_id=1274670225] +environment = ExtResource("5_2y716") + +[node name="VBoxContainer2" type="VBoxContainer" parent="ShipTutorialContainer/GridContainer" unique_id=1062837751] +custom_minimum_size = Vector2(300, 0) +layout_mode = 2 +theme_override_constants/separation = 12 +alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=227115375] +layout_mode = 2 +texture = ExtResource("9_6olc8") +expand_mode = 5 +stretch_mode = 5 + +[node name="RichTextLabel" type="RichTextLabel" parent="ShipTutorialContainer/GridContainer/VBoxContainer2" unique_id=1438289614] +layout_mode = 2 +bbcode_enabled = true +text = "RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT" +fit_content = true +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="OkButton" type="Button" parent="ShipTutorialContainer" unique_id=879779245] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +theme = ExtResource("6_6olc8") +text = "OK" +icon = ExtResource("7_cnkwc") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1299060348] +unique_name_in_owner = true +libraries/ = SubResource("AnimationLibrary_cnkwc") + +[connection signal="button_down" from="ShipTutorialContainer/OkButton" to="." method="_on_ok_button_button_down"] + +[editable path="ShipTutorialContainer/GridContainer/ShipVisualiser/SubViewport/Ship/cockpit2"] diff --git a/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend b/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend index b1138c4..01776f2 100644 Binary files a/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend and b/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend differ diff --git a/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend1 b/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend1 index fe21204..a850c41 100644 Binary files a/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend1 and b/stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend1 differ diff --git a/stages/3d_scenes/ship_garage/ship_garage.tscn b/stages/3d_scenes/ship_garage/ship_garage.tscn index 1a9c45b..821b7f7 100644 --- a/stages/3d_scenes/ship_garage/ship_garage.tscn +++ b/stages/3d_scenes/ship_garage/ship_garage.tscn @@ -1,31 +1,14 @@ [gd_scene format=3 uid="uid://c830fmv54pyk1"] [ext_resource type="Script" uid="uid://cx5dq0shygboa" path="res://stages/3d_scenes/ship_garage/scripts/ship_garage.gd" id="1_43lym"] -[ext_resource type="Shader" uid="uid://bv2rghn44mrrf" path="res://stages/title_screen/resources/shaders/stars.gdshader" id="1_cpd4q"] [ext_resource type="Texture2D" uid="uid://cww35xu1yqivp" path="res://stages/3d_scenes/cockpit_scene/assets/textures/sky.png" id="2_yl6nj"] [ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_g14ji"] [ext_resource type="PackedScene" uid="uid://bmkmhycmvtjfl" path="res://stages/3d_scenes/ship_garage/assets/3d/ship_garage.blend" id="4_g14ji"] [ext_resource type="PackedScene" uid="uid://blvetnnib2ks0" path="res://stages/3d_scenes/cockpit_scene/assets/3d/cockpit2.blend" id="5_43lym"] [ext_resource type="PackedScene" uid="uid://csx7d5khjd6y5" path="res://entities/interactable_3d/phone/phone.tscn" id="7_dkh4e"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_43lym"] -shader = ExtResource("1_cpd4q") -shader_parameter/sky_color = Color(0.03, 0.05, 0.11, 1) -shader_parameter/star_base_color = Color(0.8, 1, 0.3, 1) -shader_parameter/star_hue_offset = 0.6 -shader_parameter/star_intensity = 0.08 -shader_parameter/star_twinkle_speed = 0.8 -shader_parameter/star_twinkle_intensity = 0.2 -shader_parameter/layer_scale = 20.0 -shader_parameter/layer_scale_step = 10.0 -shader_parameter/layers_count = 3 - -[sub_resource type="Sky" id="Sky_dkh4e"] -sky_material = SubResource("ShaderMaterial_43lym") - [sub_resource type="Environment" id="Environment_ovhgo"] background_mode = 2 -sky = SubResource("Sky_dkh4e") sky_custom_fov = 61.7 ambient_light_source = 3 ambient_light_color = Color(1, 1, 1, 1) diff --git a/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd b/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd index b9103c3..1a7aec8 100644 --- a/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd +++ b/stages/3d_scenes/vending_machine_room/scripts/vending_machine_3d.gd @@ -186,7 +186,7 @@ func _on_pay_interactable_clicked(): fall_object_2() state = State.FETCH - get_tree().create_timer(1.).timeout.connect( + get_tree().create_timer(0.5).timeout.connect( func (): AudioManager.play_sfx("VendingMachineDrop") ) diff --git a/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd b/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd new file mode 100644 index 0000000..1f0a982 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd @@ -0,0 +1,20 @@ +extends RegionModifier +class_name ContaminatedModifier + +func get_modifier_name() -> String: + return tr("CONTAMINATED") + +func get_description() -> String: + return tr("CONTAMINATED_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/virus.svg") + +func get_card_section_color() -> Color: + return Color("8b2dffff") + +func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int: + return plant_seed_random_loose + 1 + +func modify_plant_seed_number(plant_seed_number : int) -> int: + return plant_seed_number - 1 \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd.uid new file mode 100644 index 0000000..65c4cc3 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/contaminated_modifier.gd.uid @@ -0,0 +1 @@ +uid://i14hpayg3owb diff --git a/stages/terrain/region/scripts/modifiers/radioactive_modifier.gd b/stages/terrain/region/scripts/modifiers/radioactive_modifier.gd new file mode 100644 index 0000000..770bc71 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/radioactive_modifier.gd @@ -0,0 +1,17 @@ +extends RegionModifier +class_name RadioactiveModifier + +func get_modifier_name() -> String: + return tr("RADIOACTIVE") + +func get_description() -> String: + return tr("RADIOACTIVE_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/radioactive.svg") + +func get_card_section_color() -> Color: + return Color("8b2dffff") + +func modify_plant_base_score(plant_base_score : int) -> int: + return plant_base_score - 1 \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/radioactive_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/radioactive_modifier.gd.uid new file mode 100644 index 0000000..90cb939 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/radioactive_modifier.gd.uid @@ -0,0 +1 @@ +uid://bqpi0ct8pryax diff --git a/stages/terrain/region/scripts/modifiers/region_modifier.gd b/stages/terrain/region/scripts/modifiers/region_modifier.gd index a6b9e68..281d592 100644 --- a/stages/terrain/region/scripts/modifiers/region_modifier.gd +++ b/stages/terrain/region/scripts/modifiers/region_modifier.gd @@ -55,6 +55,26 @@ func modify_cristal_threshold(cristal_threshold : float) -> float: func modify_start_decontamination_zone_radius(start_decontamination_zone_radius : int) -> int: return start_decontamination_zone_radius +func modify_seed_rarity_pool(seed_rarity_pool : Array[int]) -> Array[int]: + return seed_rarity_pool + +func modify_plant_growing_time(plant_growing_time : int) -> int: + return plant_growing_time + +func modify_plant_lifetime(plant_lifetime : int) -> int: + return plant_lifetime + +func modify_plant_seed_number(plant_seed_number : int) -> int: + return plant_seed_number + +func modify_plant_base_score(plant_base_score : int) -> int: + return plant_base_score + +func modify_plant_seed_random_loose(plant_seed_random_loose : int) -> int: + return plant_seed_random_loose + +func modify_plant_influence_radius(plant_influence_radius : float) -> float: + return plant_influence_radius func card_section() -> CardSectionInfo: var section := CardSectionInfo.new( diff --git a/stages/terrain/region/scripts/modifiers/resonnance_modifier.gd b/stages/terrain/region/scripts/modifiers/resonnance_modifier.gd new file mode 100644 index 0000000..aa869c3 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/resonnance_modifier.gd @@ -0,0 +1,19 @@ +extends RegionModifier +class_name ResonnanceModifier + +func get_modifier_name() -> String: + return tr("RESONNANCE") + +func get_description() -> String: + return tr("RESONNANCE_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/wave-sine.svg") + +func get_card_section_color() -> Color: + return Color("25c147") + +func modify_seed_rarity_pool(seed_rarity_pool : Array[int]) -> Array[int]: + for i in range(len(seed_rarity_pool)): + seed_rarity_pool[i] += 1 + return seed_rarity_pool \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/resonnance_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/resonnance_modifier.gd.uid new file mode 100644 index 0000000..570933e --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/resonnance_modifier.gd.uid @@ -0,0 +1 @@ +uid://dsowdgj1wspvb diff --git a/stages/terrain/region/scripts/modifiers/rocky_modifier.gd b/stages/terrain/region/scripts/modifiers/rocky_modifier.gd new file mode 100644 index 0000000..c8b003f --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/rocky_modifier.gd @@ -0,0 +1,17 @@ +extends RegionModifier +class_name RockyModifier + +func get_modifier_name() -> String: + return tr("ROCKY") + +func get_description() -> String: + return tr("ROCKY_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/mountain.svg") + +func get_card_section_color() -> Color: + return Color("8b2dffff") + +func modify_cristal_threshold(cristal_threshold : float) -> float: + return cristal_threshold * 0. \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/rocky_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/rocky_modifier.gd.uid new file mode 100644 index 0000000..0671456 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/rocky_modifier.gd.uid @@ -0,0 +1 @@ +uid://bmhfhct6wa218 diff --git a/stages/terrain/region/scripts/modifiers/sandy_modifier.gd b/stages/terrain/region/scripts/modifiers/sandy_modifier.gd new file mode 100644 index 0000000..0e2a113 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/sandy_modifier.gd @@ -0,0 +1,14 @@ +extends RegionModifier +class_name SandyModifier + +func get_modifier_name() -> String: + return tr("SANDY") + +func get_description() -> String: + return tr("SANDY_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/grain.svg") + +func modify_plant_influence_radius(plant_influence_radius : float) -> float: + return plant_influence_radius / 2 \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/sandy_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/sandy_modifier.gd.uid new file mode 100644 index 0000000..dabec94 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/sandy_modifier.gd.uid @@ -0,0 +1 @@ +uid://b0ca7k6lh57f diff --git a/stages/terrain/region/scripts/modifiers/toxic_modifier.gd b/stages/terrain/region/scripts/modifiers/toxic_modifier.gd new file mode 100644 index 0000000..9d4039b --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/toxic_modifier.gd @@ -0,0 +1,14 @@ +extends RegionModifier +class_name ToxicModifier + +func get_modifier_name() -> String: + return tr("TOXIC") + +func get_description() -> String: + return tr("TOXIC_MODIFIER_DESC_TEXT") + +func get_icon() -> Texture: + return preload("res://common/icons/biohazard.svg") + +func modify_plant_lifetime(plant_lifetime : int) -> int: + return plant_lifetime - 1 \ No newline at end of file diff --git a/stages/terrain/region/scripts/modifiers/toxic_modifier.gd.uid b/stages/terrain/region/scripts/modifiers/toxic_modifier.gd.uid new file mode 100644 index 0000000..e1f6477 --- /dev/null +++ b/stages/terrain/region/scripts/modifiers/toxic_modifier.gd.uid @@ -0,0 +1 @@ +uid://8pqatifhi7fs diff --git a/stages/terrain/region/scripts/region.gd b/stages/terrain/region/scripts/region.gd index 44c1720..4d843b9 100644 --- a/stages/terrain/region/scripts/region.gd +++ b/stages/terrain/region/scripts/region.gd @@ -18,9 +18,6 @@ const CHUNK_UNLOAD_DISTANCE : int = 3 const MAX_GENERATION_THREAD = 1 # Crash when superior to 1 -@export var first_loot_number : int = 3 -@export var loot_item_number : Array[int] = [1,2] - var is_generated : bool : get = check_is_generated var generated_value : float : get = get_generated_value @@ -287,7 +284,7 @@ func dig_hole(game_pos: Vector2, size : int): dig_rocks(hole_tiles,false,false) func loot_talion(coord : Vector2i): - var new_seed = Seed.generate_random() + var new_seed = Seed.generate_random(data.seed_rarity_pool.pick_random()) drop_item( new_seed, coord * TILE_SIZE, diff --git a/stages/terrain/region/scripts/region_data.gd b/stages/terrain/region/scripts/region_data.gd index b7f9747..17e18df 100644 --- a/stages/terrain/region/scripts/region_data.gd +++ b/stages/terrain/region/scripts/region_data.gd @@ -25,6 +25,7 @@ const PLAYER_ROCK_HOLE_RADIUS = 5 @export var decontamination_threshold : float @export var cristal_threshold : float @export var start_decontamination_hole_radius = 3 +@export var seed_rarity_pool : Array[int] = [0,0,0,0,0,0,0,1,1,1] @export var day : int = 1 @export var entities_saved_data : Array[EntityData] = [] diff --git a/stages/terrain/region/scripts/region_parameter.gd b/stages/terrain/region/scripts/region_parameter.gd index 914ee1e..1aaf9fc 100644 --- a/stages/terrain/region/scripts/region_parameter.gd +++ b/stages/terrain/region/scripts/region_parameter.gd @@ -6,6 +6,7 @@ const DEFAULT_DECONTAMINATION_THRESHOLD = 0.4 const DEFAULT_CRISTAL_THRESHOLD = 0.1 const DEFAULT_CHARGE = 8 const DEFAULT_START_DECONTAMINATION_ZONE_RADIUS = 3 +const DEFAULT_SEED_RARITY_POOL: Array[int] = [0,0,0,0,0,0,0,1,1,1] @export var region_name : String @export var region_flags : Array[String] @@ -109,6 +110,10 @@ func get_start_decontamination_zone_radius() -> int: return zone_radius -func card_info() -> CardInfo: - return null - #TODO \ No newline at end of file +func get_seed_rarity_pool() -> int: + var seed_rarity_pool = DEFAULT_SEED_RARITY_POOL + + for m in modifiers: + seed_rarity_pool = m.modify_seed_rarity_pool(seed_rarity_pool) + + return seed_rarity_pool \ No newline at end of file diff --git a/stages/title_screen/resources/shaders/stars.gdshader b/stages/title_screen/resources/shaders/stars.gdshader index 2d405c6..e4919a1 100644 --- a/stages/title_screen/resources/shaders/stars.gdshader +++ b/stages/title_screen/resources/shaders/stars.gdshader @@ -4,7 +4,7 @@ shader_type sky; // Comment this if you don't want to use star twinke. However, if you do want to keep it, // I suggest you to set the sky process mode to High-Quality Incremental or Real-Time, // as star twinkling may greatly impact performance. -#define USE_TWINKLE +// #define USE_TWINKLE group_uniforms sky; uniform vec3 sky_color: source_color = vec3(0.03, 0.05, 0.11); diff --git a/translation/game/gui.csv b/translation/game/gui.csv index f147c68..0401928 100644 --- a/translation/game/gui.csv +++ b/translation/game/gui.csv @@ -19,6 +19,7 @@ CONTROLS,Controls,Contrôles RESUME_GAME,Resume,Reprendre RESTART,Restart,Recommencer QUIT,Quit,Quitter +THIS_GAME_USE_AUTOSAVE,This game use autosave,Ce jeu sauvegarde votre progression automatiquement CHOOSE_GAME_MODE,Choose game mode,Choisissez le mode de jeu STORY_MODE,Story Mode,Mode Histoire INFINITE_MODE,Infinite Mode,Mode Infini @@ -70,9 +71,7 @@ TOUGH,Tough,Solide TOUGH_EFFECT_TEXT,Multiplies {score_icon} by [b]{score_multiplier}[/b] and add [b]{growing_time}[/b]{growing_icon},"Multiplie {score_icon} par [b]{score_multiplier}[/b] et ajoute [b]{growing_time}[/b]{growing_icon}" FERTILE,Fertile,Fertile FERTILE_EFFECT_TEXT,Add [b]{seed_buff}[/b]{seed_icon} to all nearby plant but [b]{score_change}[/b]{score_icon},Ajoute [b]{seed_buff}[/b]{seed_icon} à toutes les plantes autour mais [b]{score_change}[/b]{score_icon} -EPHEMERAL,Ephemeral,Éphémère -EPHEMERAL_EFFECT_TEXT,Add [b]{seed_number}[/b]{seed_icon} but [b]{lifetime_change}[/b]{lifetime_icon},"Ajoute [b]{seed_number}[/b]{seed_icon} mais [b]{lifetime_change}[/b]{lifetime_icon}" -PURIFICATION,Purification,Épuration +PURIFICATION,Purification,Purification PURIFICATION_EFFECT_TEXT,"When mature, create fertile zone in a radius of [b]{purification_radius}[/b]","Une fois mature, créée une zone fertile dans un rayon de [b]{purification_radius}[/b]" HURRIED,Hurried,Pressé HURRIED_EFFECT_TEXT,"[b]{growing_time_change}[/b]{growing_time_icon}","[b]{growing_time_change}[/b]{growing_time_icon}" @@ -110,7 +109,7 @@ PICKAXE,Pickaxe,Pioche PICKAXE_DESC_TEXT,Can dig rock and precious materials,Peut creuser la roche et des matériaux précieux DIG,Dig,Creuser OPEN,Open,Ouvrir - %s_SEED,%s Seed,Graine de %s +%s_SEED,%s Seed,Graine de %s PLANT_%s_MUST_BE_USED_IN_DECONTAMINATED_ZONE,Plant [b]%s[/b]. Must be used in the fertile zone.,Plante [b]%s[/b]. Doit être utilisée dans la zone fertile. PLANT_%s,Plant [b]%s[/b],Planter [b]%s[/b] MOVE_WITH_RIGHT_CLICK_OR_WASD,"Move with right click or WASD","Déplace-toi avec le clic droit ou ZQSD" @@ -125,6 +124,12 @@ DIG_A_TALION_VEIN_WITH_SHOVEL,Dig a [b]Talion Vein[/b] with the [b]Pickaxe[/b],C PLANT_SEED_IN_FERTILE_ZONE,Plant a [b]Seed[/b] in the [b]Fertile Zone[/b],Planter une [b]Graine[/b] dans la [b]Zone Fertile[/b] GAIN_FIRST_PLANT_POINT,Earn your first [b]Plant Point[/b] while waiting for a plant to [b]Mature[/b] (recharging will pass days),Gagnez votre premier [b]Point de Plante[/b] en attendant qu'une plante soit [b]Mature[/b] (se recharger fera passer les jours) HARVEST_A_MATURE_PLANT,Harvest a [b]Mature Plant[/b] using your [b]Fork[/b],Récoltez une [b]Plante Mature[/b] en utilisant votre [b]Fourche[/b] +PLANT_NAME_TEXT,"[b]Plant name and state[/b] Each plant species has a unique name and can have 2 states: juvenile and mature","[b]Nom et état de la plante[/b] Chaque espèce de plantes a un nom unique et chaque plante peut avoir deux états : juvénile et mature" +PLANT_STATS_TEXT,"[b]Plant stats[/b] Here you can see your plant's age, the day of maturation, the lifetime, and the seed number that the plant can produce","[b]Statistiques[/b] Ici, vous pouvez voir l'âge de votre plante, le jour de maturation, le temps de vie et le nombre de graine que la plante donne" +PLANT_MUTATION_TEXT,"[b]Mutations[/b] Each species has mutations that alter the plant's behavior. These mutations are transmissible to the plant's seeds, where they can change or evolve superior levels","[b]Mutations[/b] Chaque espèce possède des mutations qui modifient le comportement de la plante. Ces mutations se transmettent aux graines, et peuvent changer ou évoluer aux niveaux supérieurs" +PLANTS_INFO,"Plants info","Information des plantes" +OBTAIN_INFORMATION_ON_PLANTS_WHILE_HOVERING_PLANTS_BASE,"Obtain information on plants while hovering over the plant base","Obtenez des informations sur les plantes en survolant leur base" +PLANT_SCORE_TEXT,"[b]Score[/b] By default, each plant get 1 score when mature","[b]Score[/b] Par défaut, chaque plante gagne 1 de score à la maturation" %d_PLANT_POINT,%d Plant Point,%d Point de plante %d_PLANT_POINTS,%d Plant Points,%d Points de plante SCORE_%d,Score %d,Score %d @@ -197,6 +202,10 @@ LAND_SHIP,Land Ship,Atterrir TAKE_OFF,Take Off,Décoller NO_MORE_ENERGY,No more energy,Plus assez d'énergie NO_RECHARGE_LEFT,"No recharge left, give up to try again","Pas de recharge restante, abandonnez pour recommencer" +SHIP_ACQUIRED,Ship Acquired,Vaisseau Acquis +USE_THE_SHIP_TO_TRAVEL_ACROSS_THE_PLANET,"Use the ship to travel across the planet","Utilisez le vaisseau pour voyager sur la planète" +JUMP_BETWEEN_REGION_TEXT,"[b]Jump between regions[/b] Use the ship dashboard to choose the next region between two choices","[b]Changez de région[/b] Utilisez le tableau de bord pour changer de région parmi deux choix" +RECHARGE_YOUR_SHIP_WITH_PLANT_SCORE_TEXT,"[b]Recharge your ship with plant score[/b] The Internode has fuel for only one jump; recharge it with plants on the planet","[b]Rechargez votre vaisseau avec les scores de plantes[/b] L'Internode a du carburant pour un seul changement, rechargez le avec en plantant sur la planète" SHIP_IS_READY_TO_TAKE_OFF,Ship is ready to take off,Le vaisseau est prêt à partir TUTORIAL_FINISHED,Tutorial finished,Tutoriel terminé CHOOSE_NEXT_STOP,Choose next stop,Choisissez le prochain arrêt @@ -229,8 +238,20 @@ HUMID,Humid,Humide HUMID_MODIFIER_DESC_TEXT,Reduce the number of [b]Recharge[/b],Réduit le nombre de [b]Recharge[/b] POOR,Poor,Pauvre POOR_MODIFIER_DESC_TEXT,Reduce the number of [b]Talion Veins[/b],Réduit le nombre de [b]Veine de Talion[/b] +ROCKY,Rocky,Rocheux +ROCKY_MODIFIER_DESC_TEXT,There is no [b]Talion Veins[/b] in the area,Aucune [b]Veine de Talion[/b] dans la zone +TOXIC,Toxic,Toxique +TOXIC_MODIFIER_DESC_TEXT,Reduce all plant lifetime by 1,Réduit la durée de vie de toutes les plantes de 1 +SANDY,Sandy,Sableux +SANDY_MODIFIER_DESC_TEXT,Reduce plants influence radius,Réduit le rayon d'influence des plantes +RADIOACTIVE,Radioactive,Radioactif +RADIOACTIVE_MODIFIER_DESC_TEXT,Reduce the plant's base score by 1,Réduit le score de base des plantes de 1 +CONTAMINATED,Contaminated,Contaminée +CONTAMINATED_MODIFIER_DESC_TEXT,Decrease all plants seeds production and increase the possible seed loss,Diminue la production de graine et augmente la perte possible de graine pour toutes les plantes VENDING_MACHINES,Vending Machines,Distributeurs VENDING_MACHINES_MODIFIER_DESC_TEXT,A room with old vending machine is in the area,Une pièce avec de vieux distributeurs se trouve dans la zone +RESONNANCE,Resonnance,Résonnance +RESONNANCE_MODIFIER_DESC_TEXT,Mutation level from [b]Talion Veins[/b] seeds is increased,Le niveau de mutation des graines issues de [b]Veine de Talion[/b] est augmenté PASS_THE_MYSTERIOUS_DOOR,Go through the mysterious door,Franchissez la porte mystérieuse NEXT_STOP,Next Stop,Prochain arrêt ORBIT,Orbit,Orbite