- Rééquilibrage du mode histoire (vers le haut, le jeu sera un poil plus dur)
- Ajout d'effet pour dissuader le joueur d'aller hors map (avec peut être un easter egg ???)
- Réparation des noms de régions avec le mode twitch et ajout de nombreux noms de régions de la communauté
- Buff de la mutation solide (plus qu'un jour de maturation en plus)
- Quelques coquilles dans les textes (il doit en rester)
- Ajout de la mention de la région choisie dans le dashboard du cockpit
- Distributeurs plus clairs (surtout la notion de choix d'artefact)
This commit is contained in:
2026-07-22 00:14:46 +02:00
parent d103cd22f2
commit bb0424d67e
49 changed files with 513 additions and 165 deletions
+18 -1
View File
@@ -3,6 +3,8 @@
[ext_resource type="Script" uid="uid://cwvmwpcuvo4mq" path="res://stages/3d_scenes/backrooms/scripts/backrooms.gd" id="1_5hv6p"]
[ext_resource type="PackedScene" uid="uid://iu6snlm18qqj" path="res://stages/3d_scenes/backrooms/resources/backroom.blend" id="2_xnw3x"]
[ext_resource type="PackedScene" uid="uid://da7a74dg30q1l" path="res://entities/player_3d/player_3D.tscn" id="3_7gjj1"]
[ext_resource type="AudioStream" uid="uid://cr0m1m31ityxl" path="res://stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3" id="4_7gjj1"]
[ext_resource type="PackedScene" uid="uid://b2tn4biidxwdo" path="res://entities/player_3d/dead_orchid.tscn" id="5_msdly"]
[sub_resource type="Environment" id="Environment_y4ueh"]
background_energy_multiplier = 1.01
@@ -24,7 +26,7 @@ environment = SubResource("Environment_y4ueh")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0022678375, -0.0022674203, 0.00014042854)
[node name="Player3D" parent="." unique_id=549819967 instance=ExtResource("3_7gjj1")]
transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, -0.18744713, 1.1111141, 4.915328)
transform = Transform3D(0.98413754, 0, -0.17740725, 0, 1, 0, 0.17740725, 0, 0.98413754, -0.18744713, 1.1111141, -67.26987)
[node name="Outline" parent="Player3D/Camera3D" parent_id_path=PackedInt32Array(549819967, 2091917091) index="0" unique_id=1477584785]
visible = false
@@ -32,4 +34,19 @@ visible = false
[node name="InteractTutorial" parent="Player3D/CanvasLayer/3dTutorial" parent_id_path=PackedInt32Array(549819967, 259323543) index="1" unique_id=1117243867]
visible = false
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=705358424]
stream = ExtResource("4_7gjj1")
volume_db = 0.479
autoplay = true
bus = &"Ambiance"
[node name="DeadOrchid" parent="." unique_id=1056532235 instance=ExtResource("5_msdly")]
transform = Transform3D(0.1392759, 0.34471768, 0.9283167, -0.05114577, 0.9387064, -0.3409023, -0.9889319, 0, 0.14837003, 4.0246277, 0.4754955, -96.991806)
[node name="DeadOrchid2" parent="." unique_id=1647290799 instance=ExtResource("5_msdly")]
transform = Transform3D(0.1392759, 0.34471768, 0.9283167, -0.05114577, 0.9387064, -0.3409023, -0.9889319, 0, 0.14837003, 36.75826, 0.4754955, -55.182575)
[node name="DeadOrchid3" parent="." unique_id=1088417260 instance=ExtResource("5_msdly")]
transform = Transform3D(0.1392759, 0.34471768, 0.9283167, -0.05114577, 0.9387064, -0.3409023, -0.9889319, 0, 0.14837003, 5.560206, 0.4754955, -123.28887)
[editable path="Player3D"]
@@ -0,0 +1,19 @@
[remap]
importer="mp3"
type="AudioStreamMP3"
uid="uid://cr0m1m31ityxl"
path="res://.godot/imported/freesound_community-neonlight_highpitch-7058.mp3-271ea6e3bc4882988338869dcd4c4fb0.mp3str"
[deps]
source_file="res://stages/3d_scenes/backrooms/resources/freesound_community-neonlight_highpitch-7058.mp3"
dest_files=["res://.godot/imported/freesound_community-neonlight_highpitch-7058.mp3-271ea6e3bc4882988338869dcd4c4fb0.mp3str"]
[params]
loop=true
loop_offset=0.0
bpm=0.0
beat_count=0
bar_beats=4
@@ -100,7 +100,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1, 1, 1), Vector3(1.2, 1.2, 1.2), Vector3(1, 1, 1)]
"values": [Vector3(1, 1, 1), Vector3(1.1, 1.1, 1.1), Vector3(1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2ofl5"]
@@ -147,7 +147,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1, 1.0000002, 1), Vector3(1.2, 1.2, 1.2), Vector3(1, 1.0000002, 1)]
"values": [Vector3(1, 1.0000002, 1), Vector3(1.1, 1.1, 1.1), Vector3(1, 1.0000002, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_h8fs1"]
@@ -191,7 +191,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0.033333335, 0.53333336, 1),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(1, 1.0000002, 1), Vector3(1.2, 1.2, 1.2), Vector3(1, 1.0000002, 1)]
"values": [Vector3(1, 1.0000002, 1), Vector3(1.1, 1.1, 1.1), Vector3(1, 1.0000002, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cvt2p"]
@@ -208,7 +208,6 @@ metadata/_custom_type_script = "uid://fnu2d6wna4yc"
[node name="Dashboard" type="Node3D" unique_id=1374334508]
script = ExtResource("1_vks67")
destination_text = null
[node name="Background" type="Sprite3D" parent="." unique_id=747271324]
transform = Transform3D(-1, 0, 8.742278e-08, 5.2901907e-08, 0.79612875, 0.6051273, -6.9599785e-08, 0.6051273, -0.79612875, 0, 0.85765254, 1.1502768)
@@ -286,7 +285,7 @@ vertical_alignment = 1
[node name="DestinationScreen" type="Sprite3D" parent="." unique_id=1472417379]
unique_name_in_owner = true
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.4130048, 1.044728)
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1.0000002, 0, 8.742278e-08, 0, -1, 0, 1.5415668, 0.71455646)
pixel_size = 0.003
texture = SubResource("ViewportTexture_y1ysr")
@@ -337,8 +336,8 @@ metadata/_custom_type_script = "uid://bj4d1x8n8ina"
shape = SubResource("SphereShape3D_vlkbw")
[node name="MainScreenSprite" type="Sprite3D" parent="MainScreen" unique_id=1081515212]
transform = Transform3D(-1, 8.0014914e-08, 5.4146472e-08, 7.923836e-08, 0.35859588, 0.9334929, 5.5276644e-08, 0.9334929, -0.35859588, 0, 0, 0)
pixel_size = 0.003
transform = Transform3D(-1, 8.0014914e-08, 5.4146472e-08, 7.923836e-08, 0.35859588, 0.9334929, 5.5276644e-08, 0.9334929, -0.35859588, 0, -0.0066892505, 0)
pixel_size = 0.002
texture = SubResource("ViewportTexture_qbi61")
[node name="SubViewport" type="SubViewport" parent="MainScreen/MainScreenSprite" unique_id=1101534363]
@@ -30,11 +30,12 @@ func set_state(s := state):
interactable = true
State.READY_TO_LAND:
icon.texture = LAND_ICON
label.text = tr("LAND_SHIP")
label.text = tr("LAND_SHIP_IN_%S") % run_point.region_parameter.get_region_name()
interactable = true
inspectable = true
State.WAITING_CHOICE:
icon.texture = WAITING_ICON
label.text = ""
label.text = "CHOOSE_A_REGION"
State.LANDED:
icon.texture = RUN_POINT_ICON
label.text = "" if not run_point else run_point.region_parameter.get_region_name()
@@ -65,6 +65,7 @@ func update_dialogs():
if len(phone_dialogs):
await get_tree().create_timer(randf_range(0.5,3.)).timeout
ring_phone()
@@ -104,9 +105,8 @@ func _on_main_screen_activated():
land.emit()
GameInfo.game_data.ship_in_space = false
%PlantInfoScreen.update_plant_info()
get_tree().create_timer(randf_range(0,3)).timeout.connect(
func(): update_dialogs()
)
update_dialogs()
else :
take_off.emit()
GameInfo.game_data.ship_in_space = true
@@ -116,9 +116,7 @@ func _on_main_screen_activated():
var gauge_tween = get_tree().create_tween()
gauge_tween.tween_property(%Gauge3D,"progress",0,3.)
get_tree().create_timer(randf_range(0,3)).timeout.connect(
func(): update_dialogs()
)
update_dialogs()
%Exit.interactable = can_exit()
update_dashboard()
@@ -161,6 +159,7 @@ func update_dashboard(with_animation := true):
if GameInfo.game_data.ship_in_space:
if choosen_run_point:
dashboard.main_screen_run_point = choosen_run_point
dashboard.main_screen_state = DashboardMainScreen.State.READY_TO_LAND
dashboard.status_text = ""
else:
@@ -16,6 +16,8 @@ dest_files=["res://.godot/imported/vending_machine.blend-d2b640c8f4d0c595cec0b5e
nodes/root_type=""
nodes/root_name=""
nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
@@ -57,7 +59,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/vertex_colors=2
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
@@ -71,3 +73,4 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2
gltf/texture_map_mode=0
@@ -17,7 +17,7 @@ signal used
@export_tool_button("Fall Object 1", "Callable") var fall_object_2_action = fall_object_2
@export var state : State = State.CHOOSE : set = set_state
@export var choose_state : ChooseState = ChooseState.NONE
@export var choose_state : ChooseState = ChooseState.NONE : set = set_choose_state
@export var artefact_1 : Artefact = null : set = set_artefact_1
@export var artefact_2 : Artefact = null : set = set_artefact_2
@export var price : VendingMachinePrice = null : set = set_price
@@ -39,6 +39,7 @@ func update():
set_artefact_2()
set_state()
set_price()
set_choose_state()
func set_state(s := state):
state = s
@@ -105,6 +106,12 @@ func set_price(p := price):
%PayIcon.modulate = Color.WHITE if p.can_pay(GameInfo.game_data.player_data) else Color.RED
price = p
func set_choose_state(cs := choose_state):
if is_node_ready():
%SelectTop.visible = cs == ChooseState.FIRST
%SelectBottom.visible = cs == ChooseState.SECOND
choose_state = cs
func fall_object_1():
fall_object([
%Line1,
@@ -9,6 +9,7 @@
[ext_resource type="Texture2D" uid="uid://3slhocr5wy3w" path="res://common/icons/hand-stop.svg" id="6_c54xj"]
[ext_resource type="Texture2D" uid="uid://cwewx7cdy085h" path="res://common/icons/help-hexagon.svg" id="7_1vufv"]
[ext_resource type="FontFile" uid="uid://qt80w6o01q5s" path="res://gui/ressources/fonts/TitanOne-Regular.ttf" id="8_5gq8t"]
[ext_resource type="Texture2D" uid="uid://80gifgp26h2g" path="res://common/icons/check.svg" id="9_ia2hc"]
[ext_resource type="Texture2D" uid="uid://dcgnamu7sb3ov" path="res://common/icons/bolt.svg" id="9_p1py0"]
[ext_resource type="Script" uid="uid://cpdtt25r2ne23" path="res://stages/3d_scenes/vending_machine_room/scripts/vending_machine_select_interactable.gd" id="10_js246"]
[ext_resource type="AudioStream" uid="uid://bynxc84w03so4" path="res://stages/3d_scenes/vending_machine_room/assets/sounds/alex_jauk-vending-machines-ambient-noise-236027.mp3" id="12_js246"]
@@ -72,6 +73,23 @@ viewport_path = NodePath("PriceScreen/PriceScreenContent")
font = ExtResource("8_5gq8t")
font_size = 30
[sub_resource type="Gradient" id="Gradient_vrdoi"]
colors = PackedColorArray(1, 0, 0.4333334, 0.78431374, 1, 0.6511667, 0.089999974, 0.78431374)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_g4v7s"]
gradient = SubResource("Gradient_vrdoi")
width = 102
height = 42
fill_from = Vector2(0.5, 1)
fill_to = Vector2(0.5, 0)
[sub_resource type="GradientTexture2D" id="GradientTexture2D_ia2hc"]
gradient = SubResource("Gradient_vrdoi")
width = 109
height = 47
fill_from = Vector2(0.5, 1)
fill_to = Vector2(0.5, 0)
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_p1py0"]
radius = 0.23339844
height = 1.2451172
@@ -242,6 +260,32 @@ texture = ExtResource("9_p1py0")
expand_mode = 1
stretch_mode = 5
[node name="SelectTop" type="Sprite3D" parent="." unique_id=1013628083]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.09805095, 0.83888793, -0.5682117)
shaded = true
texture = SubResource("GradientTexture2D_g4v7s")
[node name="Sprite3D" type="Sprite3D" parent="SelectTop" unique_id=1049079427]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, -0.018707275)
pixel_size = 0.005
shaded = true
double_sided = false
texture = ExtResource("9_ia2hc")
[node name="SelectBottom" type="Sprite3D" parent="." unique_id=656087871]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.09805095, 0.3876989, -0.5682117)
shaded = true
texture = SubResource("GradientTexture2D_ia2hc")
[node name="Sprite3D" type="Sprite3D" parent="SelectBottom" unique_id=1406817348]
transform = Transform3D(-1, 0, 8.742278e-08, 0, 1, 0, -8.742278e-08, 0, -1, 0, 0, -0.018707275)
pixel_size = 0.005
shaded = true
double_sided = false
texture = ExtResource("9_ia2hc")
[node name="Select1Interactable" type="Area3D" parent="." unique_id=957239971]
unique_name_in_owner = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.08462322, 0.884176, -0.18582645)
@@ -328,7 +372,6 @@ bus = &"Sfx"
[node name="ArtefactAnnounce" parent="." unique_id=1447182082 instance=ExtResource("13_tvcj6")]
unique_name_in_owner = true
visible = false
announce_artefact = null
[connection signal="clicked" from="Select1Interactable" to="." method="_on_select_1_interactable_clicked"]
+19 -19
View File
@@ -49,26 +49,26 @@ var data_last_updated = 0.
var plant_grid : PlantGrid
# Cheat Code
func _input(_e):
if (
Input.is_action_pressed("drop")
and Input.is_action_pressed("move_right")
and Input.is_action_pressed("move_left")
and Input.is_action_just_pressed("action")
):
if data.state != RegionData.State.SUCCEEDED:
data.succeded.emit()
data.state = RegionData.State.SUCCEEDED
# data.update()
# func _input(_e):
# if (
# Input.is_action_pressed("drop")
# and Input.is_action_pressed("move_right")
# and Input.is_action_pressed("move_left")
# and Input.is_action_just_pressed("action")
# ):
# if data.state != RegionData.State.SUCCEEDED:
# data.succeded.emit()
# data.state = RegionData.State.SUCCEEDED
# # data.update()
if (
Input.is_action_pressed("drop")
and Input.is_action_pressed("move_right")
and Input.is_action_pressed("move_left")
and Input.is_action_just_pressed("move_pointer")
):
data.charges = 0
data.state = RegionData.State.FAILED
# if (
# Input.is_action_pressed("drop")
# and Input.is_action_pressed("move_right")
# and Input.is_action_pressed("move_left")
# and Input.is_action_just_pressed("move_pointer")
# ):
# data.charges = 0
# data.state = RegionData.State.FAILED
func _init():
data = GameInfo.game_data.current_region_data
+1 -1
View File
@@ -69,7 +69,7 @@ func _init(
charges = parameter.get_charge()
objective = parameter.get_objective()
region_first_name = parameter.region_first_name;
region_name_key = parameter.region_name_key;
region_name_key = parameter.region_type_key;
region_seed = parameter.get_region_seed()
rock_threshold = parameter.get_rock_threshold()
decontamination_threshold = parameter.get_decontamination_threshold()
@@ -15,50 +15,31 @@ const REGION_TYPES_CSV := "res://translation/names/location_types.csv"
const REGION_NAMES_FILE := "res://translation/names/location_names.csv"
@export var region_first_name: String
@export var region_name_key: String
@export var region_type_key: String
@export var objective: int
@export var charge: int
@export var region_seed: int
@export var modifiers: Array[RegionModifier]
func _init(
_name = "",
_region_first_name : String = "",
_region_type_key : String = "",
_modifiers: Array[RegionModifier] = [],
_region_seed = randi(),
):
set_random_region_name()
region_first_name = _region_first_name
region_type_key = _region_type_key
modifiers = _modifiers
region_seed = _region_seed
func get_random_region_first_name() -> String:
var name_file := FileAccess.open(REGION_NAMES_FILE, FileAccess.READ)
var n_names := name_file.get_line().to_int()
var name_ind := randi_range(0, n_names)
var first_name := name_file.get_line()
for i in range(name_ind):
first_name = name_file.get_line()
return first_name
func get_random_region_name_key() -> String:
var place_file := FileAccess.open(REGION_TYPES_CSV, FileAccess.READ)
var n_places := place_file.get_line().split(",")[0].to_int()
var place_ind := randi_range(0, n_places)
var place_key := place_file.get_line().split(",")[0]
for i in range(place_ind):
place_key = place_file.get_line().split(",")[0]
return place_key
func set_random_region_name():
region_first_name = get_random_region_first_name()
if randf() > JUST_NAME_PROBABILITY:
region_name_key = get_random_region_name_key()
else:
region_name_key = ""
if region_first_name == "" or region_type_key == "":
region_first_name = Random.RANDOM_REGION_NAME_POOL.pick_random()
region_type_key = Random.RANDOM_REGION_TYPE_POOL.pick_random()
func get_region_name() -> String:
var n := region_first_name
if region_name_key != "":
n = tr(region_name_key).format({"name": region_first_name})
if region_type_key != "":
n = tr(region_type_key).format({"name": region_first_name})
for m in modifiers:
n = m.modify_region_name(n)
+1 -1
View File
@@ -76,7 +76,7 @@ func _process(delta):
%Planet3d.rotate(Vector3.UP, planet_rotation.x * delta)
%Planet3d.rotate(Vector3.RIGHT, planet_rotation.y * delta)
if not planet_spin_ach_sended and planet_rotation.length() > 100:
if not planet_spin_ach_sended and planet_rotation.length() > 200:
planet_spin_ach_sended = true
SteamConnection.unlock_achievement(SteamConnection.ACH_SPIN_PLANET)