Dev de la démo

* Modification de l'apparence de l'UI des dialogues
* Changement de l'ordre de déblocage des mutations
* Ajout d'une confirmation pour l'abandon
* Ajout de la scène de fin avec la base Boréa, en tant que fin de démo
* Modification des icône de durée de vie, temps de pousse, et de mort
* Ajout d'un icône au dessus du joueur quand il n'a plus d'énergie
* Amélioration des dialogues du jeu
* Changement du modèle du téléphone
* Ajout de cellule d'énergie et de cellule de talion trouvable sur la carte
* Il est à nouveau possible de se recharger après la fin d'une région
* Buff des mutations ancien sociale et solide
* Modification de la mutation fertile (ne donne de gain de graine qu'à la maturation)
* Ajout d'une récupération automatique des graines
* Ajout de deux cartons de tutoriel ainsi qu'une option pour les revoir dans l'aide de jeu
* Amélioration générale du tutoriel
* Ajout d'un écran titre digne de ce nom
* Lors de l'arrivée à destination, ne téléporte plus le joueur sur une map vide, mais directement dans les lieux de cinématique
* Ajout graphique de plus de pattern de mousse et de roche
* Le talion apparait maintenant sur toute la carte
* La roche peut désormais apparaitre sur la zone de départ
* Ajout dud modificateur de région Canyon
* Equilibrage général
* Fix de bugs en tout genre
This commit is contained in:
2026-05-27 19:13:32 +02:00
parent 4c4b051f3f
commit 908878dff4
289 changed files with 8802 additions and 1520 deletions

View File

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

View File

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

View File

@@ -96,6 +96,12 @@ func choose_next_run_point(run_point : RunPoint = null) -> RunPoint:
next_run_points = generate_next_run_points()
return current_run_point
func get_cockpit_exit_scene() -> Scene:
if story_step.is_run_finished(level):
return story_step.get_destination_scene()
else :
return RegionScene.new(GameInfo.game_data.current_region_data)
#endregion
#region ------------------ Modifiers ------------------
@@ -109,6 +115,7 @@ func generate_normal_modifiers() -> Array[RegionModifier]:
ToxicModifier.new(),
SandyModifier.new(),
MagneticModifier.new(),
CanyonModifier.new()
]
func generate_benefic_modifiers() -> Array[RegionModifier]:

View File

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

View File

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

View File

@@ -62,12 +62,6 @@ func get_story_modifiers_for_region(level : int) -> Array[RegionModifier]:
var dest_mod = DestinationModifier.new()
dest_mod.destination_scene = get_destination_scene()
modifiers.append(dest_mod)
var first_cave = get_first_cave_occurence(level)
var cave_occurence = get_cave_occurence(level)
if cave_occurence > 0 and level >= first_cave:
if (level - first_cave)%cave_occurence == 0:
modifiers.append(CaveModifier.new())
return modifiers
@@ -80,6 +74,12 @@ func get_gameplay_modifiers_for_region(level : int) -> Array[RegionModifier]:
if vending_occurence > 0 and level >= first_vending:
if (level - first_vending)%vending_occurence == 0:
modifiers.append(VendingMachineModifier.new())
var first_cave = get_first_cave_occurence(level)
var cave_occurence = get_cave_occurence(level)
if cave_occurence > 0 and level >= first_cave:
if (level - first_cave)%cave_occurence == 0:
modifiers.append(CaveModifier.new())
return modifiers

View File

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

View File

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

View File

@@ -2,8 +2,8 @@ extends StoryStep
class_name MercuryStoryStep
const MERCURY_DEPARTURE_DIALOG_PATH = "res://dialogs/timelines/mercury/mercury_departure.dtl"
const VENUS_ARRIVAL_DIALOG_PATH = "res://dialogs/timelines/mercury/venus_arrival.dtl"
const MERCURY_DEPARTURE_DIALOG_PATH = "res://dialogs/timelines/1_waking_up/6_mercury_departure.dtl"
const VENUS_ARRIVAL_DIALOG_PATH = "res://dialogs/timelines/1_waking_up/7_venus_arrival.dtl"
func get_respawn_scene() -> Scene:
return RelayBaseScene.new(

View File

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

View File

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