10 Commits

75 changed files with 684 additions and 311 deletions
@@ -16,6 +16,8 @@ func physics_process(delta: float) -> void:
cultist.target_x = player.position.x
if _is_target_reached() or _wall_high_ray_cast.is_colliding():
var stream := SoundManager.sfx_stream_player_lost
SoundManager.play_sfx_stream(stream, cultist.global_position)
switch_state.emit(look_around_state)
elif _wall_low_ray_cast.is_colliding():
switch_state.emit(jump_state)
@@ -16,8 +16,6 @@ func physics_process(delta: float) -> void:
switch_state.emit(chase_state)
else:
if _wall_low_ray_cast.is_colliding() or _wall_high_ray_cast.is_colliding():
var stream := SoundManager.sfx_stream_player_lost
SoundManager.play_sfx_stream(stream, cultist.global_position)
switch_state.emit(another_direction_walk_state)
else:
cultist.update_x_velocity(_direction, cultist.MAX_WALK_SPEED, delta)
+5
View File
@@ -3,6 +3,7 @@ extends CharacterBody2D
signal dead
signal interacted
const PICKUP_OFFSET = 16.0
@@ -21,6 +22,7 @@ var is_dead := false
var _is_switching_needed := false
@onready var camera : Camera2D = $Camera2D
@onready var sprite : AnimatedSprite2D = $PlayerSprite
@onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher
@onready var pickups : Node2D = $Pickups
@@ -54,6 +56,9 @@ func _physics_process(delta: float) -> void:
if is_dead:
_slow_down(delta*3)
else:
if Input.is_action_pressed("interact"):
interacted.emit()
if Input.is_action_just_pressed("jump"):
jump_buffer_timer.start()
+5
View File
@@ -42,6 +42,11 @@ object = NodePath("..")
[node name="Camera2D" type="Camera2D" parent="." unique_id=45512317]
process_callback = 0
position_smoothing_enabled = true
drag_horizontal_enabled = true
drag_left_margin = 0.1
drag_top_margin = 0.1
drag_right_margin = 0.1
drag_bottom_margin = 0.1
[node name="Pickups" type="Node2D" parent="." unique_id=958829860]
position = Vector2(0, -24)
+17
View File
@@ -0,0 +1,17 @@
extends Door
func toggle() -> void:
if _is_closed():
_open()
else:
_close()
func _on_area_entered(_body: Node2D) -> void:
if _is_closed():
SoundManager.play_sfx_stream(SoundManager.sfx_stream_door_locked, global_position)
func _on_area_exited(_body: Node2D) -> void:
pass
+1
View File
@@ -0,0 +1 @@
uid://dbkeh7pcgqi57
+90
View File
@@ -0,0 +1,90 @@
[gd_scene format=3 uid="uid://ct6n0u0iegynv"]
[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="1_jgfnv"]
[ext_resource type="Script" uid="uid://dbkeh7pcgqi57" path="res://game/doors/lever_door.gd" id="2_fk4ax"]
[ext_resource type="Texture2D" uid="uid://sfjjweantpja" path="res://images/level/doors.png" id="3_x1nwx"]
[sub_resource type="AtlasTexture" id="AtlasTexture_h66js"]
atlas = ExtResource("3_x1nwx")
region = Rect2(0, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_bylla"]
atlas = ExtResource("3_x1nwx")
region = Rect2(64, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_xebht"]
atlas = ExtResource("3_x1nwx")
region = Rect2(32, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_nru66"]
atlas = ExtResource("3_x1nwx")
region = Rect2(0, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_qwy8m"]
atlas = ExtResource("3_x1nwx")
region = Rect2(64, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_s3afl"]
atlas = ExtResource("3_x1nwx")
region = Rect2(0, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_tyoor"]
atlas = ExtResource("3_x1nwx")
region = Rect2(32, 288, 32, 48)
[sub_resource type="AtlasTexture" id="AtlasTexture_0spri"]
atlas = ExtResource("3_x1nwx")
region = Rect2(64, 288, 32, 48)
[sub_resource type="SpriteFrames" id="SpriteFrames_iecf3"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_h66js")
}],
"loop": true,
"name": &"closed",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_bylla")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xebht")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nru66")
}],
"loop": false,
"name": &"closing",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_qwy8m")
}],
"loop": true,
"name": &"open",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_s3afl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tyoor")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0spri")
}],
"loop": false,
"name": &"opening",
"speed": 10.0
}]
[node name="LeverDoor" unique_id=1575363350 instance=ExtResource("1_jgfnv")]
script = ExtResource("2_fk4ax")
[node name="AnimatedSprite2D" parent="." index="2"]
sprite_frames = SubResource("SpriteFrames_iecf3")
+16 -16
View File
@@ -7,22 +7,22 @@
[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="3_crrvt"]
[ext_resource type="Texture2D" uid="uid://du56n63yrot7d" path="res://images/level/tree.png" id="3_o0jti"]
[ext_resource type="Texture2D" uid="uid://d3346lrt1c1oh" path="res://images/level/outdoor.png" id="3_wi6ud"]
[ext_resource type="PackedScene" uid="uid://be3mqeb784shj" path="res://game/objects/tutorial/movement_action_tip.tscn" id="6_ia26y"]
[ext_resource type="PackedScene" uid="uid://cjduhfqgdmyhe" path="res://game/objects/tutorial/jump_action_tip.tscn" id="7_rt0xo"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/fireplace.tscn" id="8_dea75"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="8_rt0xo"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="9_mmf06"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="10_yrqjd"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="11_qpo0v"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="12_lxfsh"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="13_g3b4m"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="14_blgb8"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="15_ohfy3"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="15_rt0xo"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/cabinet.tscn" id="16_rt0xo"]
[ext_resource type="PackedScene" uid="uid://xny1x7me75gc" path="res://game/objects/mirror_l.tscn" id="17_blgb8"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="18_ohfy3"]
[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/table_l.tscn" id="19_rt0xo"]
[ext_resource type="PackedScene" uid="uid://be3mqeb784shj" path="res://game/objects/informative/movement_action_tip.tscn" id="6_ia26y"]
[ext_resource type="PackedScene" uid="uid://cjduhfqgdmyhe" path="res://game/objects/informative/jump_action_tip.tscn" id="7_rt0xo"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/decorative/fireplace.tscn" id="8_dea75"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/decorative/flask_s.tscn" id="8_rt0xo"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/decorative/painting_v_l.tscn" id="9_mmf06"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/decorative/painting_h_s.tscn" id="10_yrqjd"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/decorative/chair_f.tscn" id="11_qpo0v"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/decorative/table_m.tscn" id="12_lxfsh"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/decorative/painting_h_l.tscn" id="13_g3b4m"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/decorative/painting_v_s.tscn" id="14_blgb8"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/decorative/wardrobe.tscn" id="15_ohfy3"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/decorative/plate.tscn" id="15_rt0xo"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/decorative/cabinet.tscn" id="16_rt0xo"]
[ext_resource type="PackedScene" uid="uid://xny1x7me75gc" path="res://game/objects/decorative/mirror_l.tscn" id="17_blgb8"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/decorative/chair_b.tscn" id="18_ohfy3"]
[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/decorative/table_l.tscn" id="19_rt0xo"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="24_ia26y"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_4ocoy"]
+15 -15
View File
@@ -3,21 +3,21 @@
[ext_resource type="PackedScene" uid="uid://mpsu4g2b5h3a" path="res://game/levels/abstract_level.tscn" id="1_t037v"]
[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/locked_door.tscn" id="2_iakit"]
[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="3_ylsm2"]
[ext_resource type="PackedScene" uid="uid://b0pxe00dlyx7t" path="res://game/objects/tutorial/switch_action_tip.tscn" id="4_xx77b"]
[ext_resource type="PackedScene" uid="uid://xny1x7me75gc" path="res://game/objects/mirror_l.tscn" id="5_bxukv"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/cabinet.tscn" id="5_uivyf"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="6_go8g1"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="7_2a8w4"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="8_2a8w4"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="10_7s8yo"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="10_ylsm2"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/chair_l.tscn" id="11_7c6gx"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="13_7c6gx"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="14_u51cf"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="15_cys5i"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="16_ddwrs"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="16_v8xjl"]
[ext_resource type="PackedScene" uid="uid://bmx60xftq8f2v" path="res://game/objects/mirror_s.tscn" id="17_ddwrs"]
[ext_resource type="PackedScene" uid="uid://b0pxe00dlyx7t" path="res://game/objects/informative/switch_action_tip.tscn" id="4_xx77b"]
[ext_resource type="PackedScene" uid="uid://xny1x7me75gc" path="res://game/objects/decorative/mirror_l.tscn" id="5_bxukv"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/decorative/cabinet.tscn" id="5_uivyf"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/decorative/chair_f.tscn" id="6_go8g1"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/decorative/table_m.tscn" id="7_2a8w4"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/decorative/chair_r.tscn" id="8_2a8w4"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/decorative/plate.tscn" id="10_7s8yo"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/decorative/chair_b.tscn" id="10_ylsm2"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/decorative/chair_l.tscn" id="11_7c6gx"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/decorative/wardrobe.tscn" id="13_7c6gx"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/decorative/painting_h_l.tscn" id="14_u51cf"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/decorative/table_s.tscn" id="15_cys5i"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/decorative/painting_v_l.tscn" id="16_ddwrs"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/decorative/flask_s.tscn" id="16_v8xjl"]
[ext_resource type="PackedScene" uid="uid://bmx60xftq8f2v" path="res://game/objects/decorative/mirror_s.tscn" id="17_ddwrs"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="19_7s8yo"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_v8xjl"]
+17 -17
View File
@@ -3,24 +3,24 @@
[ext_resource type="PackedScene" uid="uid://mpsu4g2b5h3a" path="res://game/levels/abstract_level.tscn" id="1_4awbs"]
[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="2_rvmgs"]
[ext_resource type="PackedScene" uid="uid://g0n5npbt3hb2" path="res://game/doors/circle_door.tscn" id="3_pkj3y"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="4_54a2v"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/decorative/wardrobe.tscn" id="4_54a2v"]
[ext_resource type="PackedScene" uid="uid://c4gqqhlew67ay" path="res://game/pickups/circle_key_pickup.tscn" id="4_nangp"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="5_q1mik"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="6_lu8lf"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="7_gkiew"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="8_t7g3k"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/fireplace.tscn" id="9_kqu3l"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/chair_l.tscn" id="10_b1jnq"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="11_54p7s"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="12_80tx3"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="13_73jkm"]
[ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/bookstand.tscn" id="14_o683l"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="15_pkjbe"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="16_o61p0"]
[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/table_l.tscn" id="17_q1mik"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/flask_l.tscn" id="17_t7g3k"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="18_kqu3l"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="20_b1jnq"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/decorative/table_s.tscn" id="5_q1mik"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/decorative/chair_b.tscn" id="6_lu8lf"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/decorative/painting_h_l.tscn" id="7_gkiew"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/decorative/painting_v_s.tscn" id="8_t7g3k"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/decorative/fireplace.tscn" id="9_kqu3l"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/decorative/chair_l.tscn" id="10_b1jnq"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/decorative/chair_r.tscn" id="11_54p7s"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/decorative/painting_v_l.tscn" id="12_80tx3"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/decorative/painting_h_s.tscn" id="13_73jkm"]
[ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/decorative/bookstand.tscn" id="14_o683l"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/decorative/table_m.tscn" id="15_pkjbe"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/decorative/chair_f.tscn" id="16_o61p0"]
[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/decorative/table_l.tscn" id="17_q1mik"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/decorative/flask_l.tscn" id="17_t7g3k"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/decorative/flask_s.tscn" id="18_kqu3l"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/decorative/plate.tscn" id="20_b1jnq"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="22_kqu3l"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_b1jnq"]
+15 -15
View File
@@ -4,24 +4,24 @@
[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="2_h35x0"]
[ext_resource type="PackedScene" uid="uid://bv2gahb4wxgb1" path="res://game/characters/enemies/white_cultist.tscn" id="3_2vfi4"]
[ext_resource type="PackedScene" uid="uid://b7imlh4sl036i" path="res://game/doors/square_door.tscn" id="3_qpxtm"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/wardrobe.tscn" id="4_mpb5r"]
[ext_resource type="PackedScene" uid="uid://cvhovmnl050os" path="res://game/objects/decorative/wardrobe.tscn" id="4_mpb5r"]
[ext_resource type="PackedScene" uid="uid://ciubf1ttwc133" path="res://game/pickups/square_key_pickup.tscn" id="4_p0pgv"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="5_i374g"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/decorative/chair_f.tscn" id="5_i374g"]
[ext_resource type="PackedScene" uid="uid://cb0w6mt8g4mer" path="res://game/characters/enemies/gray_cultist.tscn" id="5_p0pgv"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="6_gwfl1"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/decorative/plate.tscn" id="6_gwfl1"]
[ext_resource type="PackedScene" uid="uid://cutjutvd8dqqc" path="res://game/characters/enemies/black_cultist.tscn" id="7_12tya"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="7_fxyr3"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/flask_l.tscn" id="8_pp088"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="9_gtr04"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="10_c6guj"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/fireplace.tscn" id="12_s735u"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/cabinet.tscn" id="13_rnrg1"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="14_4ncxq"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="15_sqm4v"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/chair_l.tscn" id="16_had2m"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="17_fovvg"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="18_0iuyy"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="19_s735u"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/decorative/table_m.tscn" id="7_fxyr3"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/decorative/flask_l.tscn" id="8_pp088"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/decorative/flask_s.tscn" id="9_gtr04"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/decorative/painting_h_s.tscn" id="10_c6guj"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/decorative/fireplace.tscn" id="12_s735u"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/decorative/cabinet.tscn" id="13_rnrg1"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/decorative/painting_v_s.tscn" id="14_4ncxq"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/decorative/painting_h_l.tscn" id="15_sqm4v"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/decorative/chair_l.tscn" id="16_had2m"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/decorative/chair_r.tscn" id="17_fovvg"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/decorative/table_s.tscn" id="18_0iuyy"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/decorative/painting_v_l.tscn" id="19_s735u"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="23_s735u"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_rnrg1"]
+12 -12
View File
@@ -4,18 +4,18 @@
[ext_resource type="PackedScene" uid="uid://b7mhdrj3b6loq" path="res://game/doors/door.tscn" id="2_2vfi4"]
[ext_resource type="PackedScene" uid="uid://g0n5npbt3hb2" path="res://game/doors/circle_door.tscn" id="3_3jny0"]
[ext_resource type="PackedScene" uid="uid://c4gqqhlew67ay" path="res://game/pickups/circle_key_pickup.tscn" id="6_r6jdw"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="6_t3mj1"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="7_mthp1"]
[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/table_l.tscn" id="8_mpb5r"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/chair_b.tscn" id="9_i374g"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/painting_h_l.tscn" id="10_c6guj"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="11_fah6j"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="11_ipebk"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="11_jnu4q"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="12_gtkf3"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="13_8fy2b"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/flask_l.tscn" id="14_j8u63"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="15_wjoyx"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/decorative/chair_f.tscn" id="6_t3mj1"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/decorative/plate.tscn" id="7_mthp1"]
[ext_resource type="PackedScene" uid="uid://b1cq0uor2sk6k" path="res://game/objects/decorative/table_l.tscn" id="8_mpb5r"]
[ext_resource type="PackedScene" uid="uid://btpkbyyteewsh" path="res://game/objects/decorative/chair_b.tscn" id="9_i374g"]
[ext_resource type="PackedScene" uid="uid://crccdk7wmuqig" path="res://game/objects/decorative/painting_h_l.tscn" id="10_c6guj"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/decorative/painting_v_l.tscn" id="11_fah6j"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/decorative/chair_r.tscn" id="11_ipebk"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/decorative/table_s.tscn" id="11_jnu4q"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/decorative/painting_v_s.tscn" id="12_gtkf3"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/decorative/flask_s.tscn" id="13_8fy2b"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/decorative/flask_l.tscn" id="14_j8u63"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/decorative/painting_h_s.tscn" id="15_wjoyx"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="17_8fy2b"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_j8u63"]
+14 -14
View File
@@ -5,20 +5,20 @@
[ext_resource type="PackedScene" uid="uid://b7imlh4sl036i" path="res://game/doors/square_door.tscn" id="3_m4658"]
[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/locked_door.tscn" id="4_86oha"]
[ext_resource type="PackedScene" uid="uid://dwvv5dj8lqif2" path="res://game/doors/triangle_door.tscn" id="5_kbju5"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/chair_f.tscn" id="6_l40pv"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/plate.tscn" id="7_qgnyh"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/chair_l.tscn" id="13_eokxn"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/painting_h_s.tscn" id="14_3svqx"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/table_m.tscn" id="14_uq0u2"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/flask_l.tscn" id="15_825wl"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/painting_v_s.tscn" id="15_te27h"]
[ext_resource type="PackedScene" uid="uid://bvbjd5l447qjy" path="res://game/objects/retort_l.tscn" id="16_36g7i"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/cabinet.tscn" id="16_cjy8w"]
[ext_resource type="PackedScene" uid="uid://cpvsevdfmecrq" path="res://game/objects/retort_end_r.tscn" id="17_fgs51"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/chair_r.tscn" id="17_own00"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/table_s.tscn" id="18_5iebq"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/flask_s.tscn" id="18_dj2vh"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/painting_v_l.tscn" id="19_l40pv"]
[ext_resource type="PackedScene" uid="uid://b8pvlnpdnfmd0" path="res://game/objects/decorative/chair_f.tscn" id="6_l40pv"]
[ext_resource type="PackedScene" uid="uid://c6qy8uybkn4x" path="res://game/objects/decorative/plate.tscn" id="7_qgnyh"]
[ext_resource type="PackedScene" uid="uid://x82wjrsqdfd" path="res://game/objects/decorative/chair_l.tscn" id="13_eokxn"]
[ext_resource type="PackedScene" uid="uid://c0bk5sk661hi1" path="res://game/objects/decorative/painting_h_s.tscn" id="14_3svqx"]
[ext_resource type="PackedScene" uid="uid://bdwbdnbenueu1" path="res://game/objects/decorative/table_m.tscn" id="14_uq0u2"]
[ext_resource type="PackedScene" uid="uid://d3m8kf7lqmyb8" path="res://game/objects/decorative/flask_l.tscn" id="15_825wl"]
[ext_resource type="PackedScene" uid="uid://bo7756lp68bl1" path="res://game/objects/decorative/painting_v_s.tscn" id="15_te27h"]
[ext_resource type="PackedScene" uid="uid://bvbjd5l447qjy" path="res://game/objects/decorative/retort_l.tscn" id="16_36g7i"]
[ext_resource type="PackedScene" uid="uid://dopjsft0y8mw5" path="res://game/objects/decorative/cabinet.tscn" id="16_cjy8w"]
[ext_resource type="PackedScene" uid="uid://cpvsevdfmecrq" path="res://game/objects/decorative/retort_end_r.tscn" id="17_fgs51"]
[ext_resource type="PackedScene" uid="uid://b6wgujelmka5p" path="res://game/objects/decorative/chair_r.tscn" id="17_own00"]
[ext_resource type="PackedScene" uid="uid://baqawh1drerhk" path="res://game/objects/decorative/table_s.tscn" id="18_5iebq"]
[ext_resource type="PackedScene" uid="uid://bt4smb361amjj" path="res://game/objects/decorative/flask_s.tscn" id="18_dj2vh"]
[ext_resource type="PackedScene" uid="uid://d330w1ygg6uxy" path="res://game/objects/decorative/painting_v_l.tscn" id="19_l40pv"]
[ext_resource type="PackedScene" uid="uid://ciubf1ttwc133" path="res://game/pickups/square_key_pickup.tscn" id="20_uffr2"]
[ext_resource type="PackedScene" uid="uid://dqgmfpv2mhdpn" path="res://game/pickups/triangle_key_pickup.tscn" id="21_jk2b3"]
[ext_resource type="PackedScene" uid="uid://cutjutvd8dqqc" path="res://game/characters/enemies/black_cultist.tscn" id="22_b1xny"]
+15 -10
View File
@@ -1,10 +1,11 @@
extends AbstractLevel
@onready var cutscene_haze : Polygon2D = $%CutsceneHaze
@onready var cutscene_haze_timer : Timer = $Cutscene/HazeTimer
const ANIMATION_NAME = "final_cutscene"
@onready var animation_player : AnimationPlayer = $AnimationPlayer
@onready var fake_player : PlayerSprite = $Cutscene/FakePlayer
@onready var cutscene_camera : Camera2D = $Cutscene/Camera2D
@onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position
@@ -21,20 +22,24 @@ func _on_level_end_entered(body: Node2D) -> void:
func _play_cutscene() -> void:
var camera_track_name := "Cutscene/Camera2D:position"
var player_track_name := "Cutscene/FakePlayer:position"
var animation := animation_player.get_animation(ANIMATION_NAME)
var camera_track := animation.find_track(camera_track_name, Animation.TYPE_VALUE)
var player_track := animation.find_track(player_track_name, Animation.TYPE_VALUE)
animation.track_set_key_value(camera_track, 0, player.camera.get_screen_center_position())
animation.track_set_key_value(player_track, 0, player.position)
player.queue_free()
cutscene_camera.enabled = true
cutscene_camera.make_current()
animation_player.play("final_cutscene")
animation_player.play(ANIMATION_NAME)
func _show_cutscene_haze(time: float) -> void:
func _play_cutscene_boop() -> void:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_haze, cutscene_room_center)
cutscene_haze.show()
cutscene_haze_timer.start(time)
func _on_haze_timer_timeout() -> void:
cutscene_haze.hide()
func _on_animation_player_animation_finished(anim_name: StringName) -> void:
+24 -55
View File
@@ -1,7 +1,7 @@
[gd_scene format=4 uid="uid://cddh8nh54mrog"]
[ext_resource type="PackedScene" uid="uid://mpsu4g2b5h3a" path="res://game/levels/abstract_level.tscn" id="1_bhhdo"]
[ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/bookstand.tscn" id="2_1t02d"]
[ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/decorative/bookstand.tscn" id="2_1t02d"]
[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/locked_door.tscn" id="2_b6xh1"]
[ext_resource type="Script" uid="uid://lxye5wqo5suq" path="res://game/levels/level_7.gd" id="2_sh0fj"]
[ext_resource type="PackedScene" uid="uid://cudbspmpx6sik" path="res://game/pickups/book_pickup.tscn" id="3_2esp0"]
@@ -230,18 +230,6 @@ tracks/8/keys = {
"update": 1,
"values": [true]
}
tracks/9/type = "value"
tracks/9/imported = false
tracks/9/enabled = true
tracks/9/path = NodePath("CanvasLayer/CutsceneHaze:visible")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_wrq4k"]
resource_name = "final_cutscene"
@@ -256,7 +244,7 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 10, 12, 14),
"transitions": PackedFloat32Array(0.5, -1, -1, -1),
"update": 0,
"values": [Vector2(1986, 2448), Vector2(2349, 2448), Vector2(2264, 2448), Vector2(2304, 2448)]
"values": [Vector2(1970, 2448), Vector2(2349, 2448), Vector2(2264, 2448), Vector2(2304, 2448)]
}
tracks/1/type = "value"
tracks/1/imported = false
@@ -418,20 +406,20 @@ tracks/12/keys = {
"times": PackedFloat32Array(0, 7.8333, 11.1, 15.7667, 19.5),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"values": [{
"args": [0.1],
"method": &"_show_cutscene_haze"
"args": [],
"method": &"_play_cutscene_boop"
}, {
"args": [0.1],
"method": &"_show_cutscene_haze"
"args": [],
"method": &"_play_cutscene_boop"
}, {
"args": [0.1],
"method": &"_show_cutscene_haze"
"args": [],
"method": &"_play_cutscene_boop"
}, {
"args": [0.1],
"method": &"_show_cutscene_haze"
"args": [],
"method": &"_play_cutscene_boop"
}, {
"args": [0.1],
"method": &"_show_cutscene_haze"
"args": [],
"method": &"_play_cutscene_boop"
}]
}
@@ -509,18 +497,6 @@ tracks/5/keys = {
"update": 1,
"values": [false]
}
tracks/6/type = "value"
tracks/6/imported = false
tracks/6/enabled = true
tracks/6/path = NodePath("CanvasLayer/CutsceneHaze:visible")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fta07"]
_data = {
@@ -572,23 +548,19 @@ tile_map_data = PackedByteArray("AAABAP//AAAAAAEAAAABAAAAAAAAAAEAAAABAAEAAAAAAAE
[node name="Cutscene" type="Node2D" parent="." index="6" unique_id=1766969073]
[node name="HazeTimer" type="Timer" parent="Cutscene" index="0" unique_id=407248883]
one_shot = true
[node name="Camera2D" type="Camera2D" parent="Cutscene" index="1" unique_id=1980628744]
[node name="Camera2D" type="Camera2D" parent="Cutscene" index="0" unique_id=1980628744]
enabled = false
[node name="FakePlayer" parent="Cutscene" index="2" unique_id=782833865 instance=ExtResource("10_x0kb5")]
[node name="FakePlayer" parent="Cutscene" index="1" unique_id=782833865 instance=ExtResource("10_x0kb5")]
position = Vector2(2034, 2448)
animation = &"walk_right"
[node name="FakeCultist" parent="Cutscene" index="3" unique_id=375756058 instance=ExtResource("11_6yudq")]
[node name="FakeCultist" parent="Cutscene" index="2" unique_id=375756058 instance=ExtResource("11_6yudq")]
position = Vector2(2304, 2448)
[node name="RoomCenter" type="Node2D" parent="Cutscene" index="4" unique_id=653526662]
[node name="RoomCenter" type="Node2D" parent="Cutscene" index="3" unique_id=653526662]
position = Vector2(2304, 2448)
[node name="EnemyWaves" type="Node2D" parent="Cutscene" index="5" unique_id=1349451991]
[node name="EnemyWaves" type="Node2D" parent="Cutscene" index="4" unique_id=1349451991]
position = Vector2(2304, 2448)
[node name="WaveThree" type="Node2D" parent="Cutscene/EnemyWaves" index="0" unique_id=1872436058]
@@ -724,25 +696,22 @@ theme = ExtResource("13_6yudq")
text = "Thanks for playing!"
horizontal_alignment = 1
[node name="CutsceneHaze" type="Polygon2D" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="1" unique_id=766558100]
unique_name_in_owner = true
color = Color(0, 0, 0, 1)
polygon = PackedVector2Array(0, 0, 640, 0, 640, 360, 0, 360)
[node name="PauseMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="2" unique_id=1609121400]
[node name="PauseMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="1" unique_id=1609121400]
visible = true
[node name="GameOverMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="3" unique_id=859418625]
[node name="GameOverMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="2" unique_id=859418625]
visible = true
[node name="CompletionMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="4" unique_id=814534035]
[node name="CompletionMenu" parent="CanvasLayer" parent_id_path=PackedInt32Array(1402255323) index="3" unique_id=814534035]
visible = true
[node name="LevelEnd" parent="." index="9" unique_id=1018767708]
position = Vector2(1986, 2440)
position = Vector2(1945, 2442)
[node name="CollisionShape2D" parent="LevelEnd" index="0" unique_id=937956890]
position = Vector2(0, -1)
[node name="AnimationPlayer" type="AnimationPlayer" parent="." index="10" unique_id=648159573]
libraries/ = SubResource("AnimationLibrary_fta07")
[connection signal="timeout" from="Cutscene/HazeTimer" to="." method="_on_haze_timer_timeout"]
[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"]
+6
View File
@@ -0,0 +1,6 @@
extends AbstractLevel
func _ready() -> void:
super._ready()
$Objects/Lever.switching.connect($Doors/LeverDoor.toggle)
+1
View File
@@ -0,0 +1 @@
uid://bc114fx0hcb6s
File diff suppressed because one or more lines are too long
+4 -3
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://b2rgtl2dyorip"]
[gd_scene format=3 uid="uid://b2rgtl2dyorip"]
[ext_resource type="Script" uid="uid://w4ofprtn7lu8" path="res://game/managers/level_manager.gd" id="1_te7jw"]
[ext_resource type="PackedScene" uid="uid://dlpi1ptis3wna" path="res://game/levels/level_1.tscn" id="2_r84xe"]
@@ -8,7 +8,8 @@
[ext_resource type="PackedScene" uid="uid://brysu1p6fw88n" path="res://game/levels/level_5.tscn" id="6_eo2u3"]
[ext_resource type="PackedScene" uid="uid://uanhjjloryf4" path="res://game/levels/level_6.tscn" id="7_da5al"]
[ext_resource type="PackedScene" uid="uid://cddh8nh54mrog" path="res://game/levels/level_7.tscn" id="8_rvthr"]
[ext_resource type="PackedScene" uid="uid://bmn74wc2vophn" path="res://game/levels/test_level.tscn" id="9_7ahfy"]
[node name="LevelManager" type="Node"]
[node name="LevelManager" type="Node" unique_id=629915878]
script = ExtResource("1_te7jw")
levels = Array[PackedScene]([ExtResource("2_r84xe"), ExtResource("3_yl05u"), ExtResource("4_eo2u3"), ExtResource("5_yl05u"), ExtResource("6_eo2u3"), ExtResource("7_da5al"), ExtResource("8_rvthr")])
levels = Array[PackedScene]([ExtResource("2_r84xe"), ExtResource("3_yl05u"), ExtResource("4_eo2u3"), ExtResource("5_yl05u"), ExtResource("6_eo2u3"), ExtResource("7_da5al"), ExtResource("8_rvthr"), ExtResource("9_7ahfy")])
+1
View File
@@ -34,6 +34,7 @@ const MUSIC_BUS = "Music"
@export var sfx_stream_jump : AudioStream
@export var sfx_stream_key_picked_up : AudioStream
@export var sfx_stream_level_completed : AudioStream
@export var sfx_stream_lever : AudioStream
@export var sfx_stream_player_lost : AudioStream
@export var sfx_stream_player_spoted : AudioStream
@export var sfx_stream_switch : AudioStream
+4 -2
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=20 format=3 uid="uid://drk4dvbn78dva"]
[gd_scene format=3 uid="uid://drk4dvbn78dva"]
[ext_resource type="Script" uid="uid://cx5qcukr66whc" path="res://game/managers/sound_manager.gd" id="1_cg0sy"]
[ext_resource type="AudioStream" uid="uid://d2suvaisb6w45" path="res://sound/ui/accept.wav" id="2_ge1il"]
@@ -17,10 +17,11 @@
[ext_resource type="AudioStream" uid="uid://dy7qnen5k20mo" path="res://sound/sfx/player_spoted.wav" id="9_q7cyi"]
[ext_resource type="AudioStream" uid="uid://dg0t7fwu8u3m2" path="res://sound/sfx/door_unlocking.wav" id="10_lqyhh"]
[ext_resource type="AudioStream" uid="uid://capj5pjbrdpw5" path="res://sound/sfx/haze.wav" id="11_13qx5"]
[ext_resource type="AudioStream" uid="uid://buv55jfj7qhix" path="res://sound/sfx/lever.wav" id="15_3d1ws"]
[ext_resource type="AudioStream" uid="uid://ckmpft46wjgqs" path="res://sound/music/main_menu.wav" id="17_g6nb7"]
[ext_resource type="AudioStream" uid="uid://ttemdy7avyh7" path="res://sound/music/gameplay.wav" id="17_l5yxe"]
[node name="SoundManager" type="Node"]
[node name="SoundManager" type="Node" unique_id=1917953940]
process_mode = 3
script = ExtResource("1_cg0sy")
putch_ui_min = 0.95
@@ -42,6 +43,7 @@ sfx_stream_haze = ExtResource("11_13qx5")
sfx_stream_jump = ExtResource("6_22ptj")
sfx_stream_key_picked_up = ExtResource("8_wyfta")
sfx_stream_level_completed = ExtResource("7_22ptj")
sfx_stream_lever = ExtResource("15_3d1ws")
sfx_stream_player_lost = ExtResource("8_6ll5c")
sfx_stream_player_spoted = ExtResource("9_q7cyi")
sfx_stream_switch = ExtResource("7_ab171")
+1 -1
View File
@@ -48,7 +48,7 @@ text = "Quit"
layout_mode = 2
size_flags_vertical = 1
theme = ExtResource("3_i4f54")
text = "v 1.0.3
text = "v 2.0.0
(c) Ruslan Ignatov 2026
Powered by Godot Engine"
horizontal_alignment = 2
@@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://b24pn1q6u3u5v"]
[gd_scene format=3 uid="uid://b24pn1q6u3u5v"]
[ext_resource type="Script" uid="uid://byjums4jdva4x" path="res://game/objects/tutorial/abstract_action_tip.gd" id="1_erg4q"]
[ext_resource type="Script" uid="uid://byjums4jdva4x" path="res://game/objects/informative/abstract_action_tip.gd" id="1_erg4q"]
[node name="AbstractActionTip" type="Node2D"]
script = ExtResource("1_erg4q")
@@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://g7wjnlsbden8"]
[gd_scene format=3 uid="uid://g7wjnlsbden8"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/tutorial/abstract_action_tip.tscn" id="1_jsfj2"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/informative/abstract_action_tip.tscn" id="1_jsfj2"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="2_xbyc1"]
[sub_resource type="AtlasTexture" id="AtlasTexture_71ogr"]
@@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://cjduhfqgdmyhe"]
[gd_scene format=3 uid="uid://cjduhfqgdmyhe"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/tutorial/abstract_action_tip.tscn" id="1_ffrc6"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/informative/abstract_action_tip.tscn" id="1_ffrc6"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="2_nd0mf"]
[sub_resource type="AtlasTexture" id="AtlasTexture_sre3d"]
@@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://be3mqeb784shj"]
[gd_scene format=3 uid="uid://be3mqeb784shj"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/tutorial/abstract_action_tip.tscn" id="1_6vlve"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/informative/abstract_action_tip.tscn" id="1_6vlve"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="2_aui55"]
[sub_resource type="AtlasTexture" id="AtlasTexture_qoa1y"]
@@ -1,6 +1,6 @@
[gd_scene load_steps=5 format=3 uid="uid://b0pxe00dlyx7t"]
[gd_scene format=3 uid="uid://b0pxe00dlyx7t"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/tutorial/abstract_action_tip.tscn" id="1_sol75"]
[ext_resource type="PackedScene" uid="uid://b24pn1q6u3u5v" path="res://game/objects/informative/abstract_action_tip.tscn" id="1_sol75"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="2_278pw"]
[sub_resource type="AtlasTexture" id="AtlasTexture_2aait"]
@@ -0,0 +1,30 @@
class_name AbstractActivatableObject
extends Node2D
@onready var hint_sprite : Sprite2D = $HintSprite
var _player_in_range := false
func _ready() -> void:
hint_sprite.hide()
func _on_body_entered(body: Node2D) -> void:
if body is Player:
hint_sprite.show()
_player_in_range = true
body.interacted.connect(_activate)
func _on_body_exited(body: Node2D) -> void:
if body is Player:
hint_sprite.hide()
_player_in_range = false
body.interacted.disconnect(_activate)
func _activate() -> void:
pass
@@ -0,0 +1 @@
uid://cfqo4k2uarorm
@@ -0,0 +1,20 @@
[gd_scene format=3 uid="uid://725frvpqe1c8"]
[ext_resource type="Script" uid="uid://cfqo4k2uarorm" path="res://game/objects/interactive/abstract_activatable_object.gd" id="1_b4djr"]
[ext_resource type="Texture2D" uid="uid://c42nswehn307r" path="res://images/level/activation_hint.png" id="1_rexes"]
[sub_resource type="CircleShape2D" id="CircleShape2D_n2cvl"]
[node name="AbstractActivatableObject" type="Area2D" unique_id=1823472506]
collision_layer = 256
collision_mask = 136
script = ExtResource("1_b4djr")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=2065213362]
shape = SubResource("CircleShape2D_n2cvl")
[node name="HintSprite" type="Sprite2D" parent="." unique_id=1362423739]
texture = ExtResource("1_rexes")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
[connection signal="body_exited" from="." to="." method="_on_body_exited"]
+70
View File
@@ -0,0 +1,70 @@
extends AbstractActivatableObject
signal switching
signal switched
enum State {
TurnedLeft,
TurnedRight,
TurningLeft,
TurningRight,
}
const ANIMATION_BY_STATE : Dictionary[State, String] = {
State.TurnedLeft: "turned_left",
State.TurnedRight: "turned_right",
State.TurningLeft: "turning_left",
State.TurningRight: "turning_right",
}
@export var initial_state: State = State.TurnedLeft
var _current_state : State
@onready var animated_sprite : AnimatedSprite2D = $AnimatedSprite2D
func _ready() -> void:
super._ready()
_current_state = initial_state
_update_animation()
func _activate() -> void:
var set_state := func(state: State) -> void:
_current_state = state
_update_animation()
hint_sprite.hide()
switching.emit()
SoundManager.play_sfx_stream(SoundManager.sfx_stream_lever, global_position)
match _current_state:
State.TurnedLeft:
set_state.call(State.TurningRight)
State.TurnedRight:
set_state.call(State.TurningLeft)
func _update_animation() -> void:
var animation := ANIMATION_BY_STATE[_current_state]
animated_sprite.play(animation)
func _on_animation_finished() -> void:
var set_state := func(state: State) -> void:
_current_state = state
_update_animation()
switched.emit()
if _player_in_range:
hint_sprite.show()
match _current_state:
State.TurningLeft:
set_state.call(State.TurnedLeft)
State.TurningRight:
set_state.call(State.TurnedRight)
+1
View File
@@ -0,0 +1 @@
uid://nkhmjep3evjx
+125
View File
@@ -0,0 +1,125 @@
[gd_scene format=3 uid="uid://dsww084wps0d0"]
[ext_resource type="PackedScene" uid="uid://725frvpqe1c8" path="res://game/objects/interactive/abstract_activatable_object.tscn" id="1_rl4ey"]
[ext_resource type="Script" uid="uid://nkhmjep3evjx" path="res://game/objects/interactive/lever.gd" id="2_5hu3b"]
[ext_resource type="Texture2D" uid="uid://c8a451rgx116q" path="res://images/level/lever.png" id="3_tnscr"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_tnscr"]
size = Vector2(32, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_ap6wp"]
atlas = ExtResource("3_tnscr")
region = Rect2(0, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_wb3bq"]
atlas = ExtResource("3_tnscr")
region = Rect2(80, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmhac"]
atlas = ExtResource("3_tnscr")
region = Rect2(64, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_gclvq"]
atlas = ExtResource("3_tnscr")
region = Rect2(48, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_m2d68"]
atlas = ExtResource("3_tnscr")
region = Rect2(32, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_eom63"]
atlas = ExtResource("3_tnscr")
region = Rect2(16, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_0m1ch"]
atlas = ExtResource("3_tnscr")
region = Rect2(16, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_l5vfu"]
atlas = ExtResource("3_tnscr")
region = Rect2(32, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_b2o5l"]
atlas = ExtResource("3_tnscr")
region = Rect2(48, 0, 16, 16)
[sub_resource type="AtlasTexture" id="AtlasTexture_5h41l"]
atlas = ExtResource("3_tnscr")
region = Rect2(64, 0, 16, 16)
[sub_resource type="SpriteFrames" id="SpriteFrames_kky3u"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ap6wp")
}],
"loop": true,
"name": &"turned_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wb3bq")
}],
"loop": true,
"name": &"turned_right",
"speed": 5.0
}, {
"frames": [{
"duration": 2.0,
"texture": SubResource("AtlasTexture_fmhac")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gclvq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_m2d68")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_eom63")
}],
"loop": false,
"name": &"turning_left",
"speed": 20.0
}, {
"frames": [{
"duration": 2.0,
"texture": SubResource("AtlasTexture_0m1ch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_l5vfu")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b2o5l")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_5h41l")
}],
"loop": false,
"name": &"turning_right",
"speed": 20.0
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_5upgc"]
atlas = ExtResource("3_tnscr")
region = Rect2(96, 0, 16, 16)
[node name="Lever" unique_id=1479061220 instance=ExtResource("1_rl4ey")]
script = ExtResource("2_5hu3b")
initial_state = 0
[node name="CollisionShape2D" parent="." index="0" unique_id=2065213362]
position = Vector2(0, -4)
shape = SubResource("RectangleShape2D_tnscr")
[node name="HintSprite" parent="." index="1" unique_id=1362423739]
position = Vector2(0, -11)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="2" unique_id=2086579452]
sprite_frames = SubResource("SpriteFrames_kky3u")
animation = &"turning_left"
[node name="BaseSprite" type="Sprite2D" parent="." index="3" unique_id=256419860]
texture = SubResource("AtlasTexture_5upgc")
[connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"]
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://bgs6j6ak5qnq1"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_0act5"]
[sub_resource type="AtlasTexture" id="AtlasTexture_pnn6n"]
atlas = ExtResource("1_0act5")
region = Rect2(48, 96, 32, 32)
[node name="InteractionKbd" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_pnn6n")
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://c0cae3bivcnal"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_fjtec"]
[sub_resource type="AtlasTexture" id="AtlasTexture_ow2w5"]
atlas = ExtResource("1_fjtec")
region = Rect2(112, 96, 32, 32)
[node name="InteractionPad" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_ow2w5")
-12
View File
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://pw8xqtpauy57"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_gth0n"]
[sub_resource type="AtlasTexture" id="AtlasTexture_wa8xe"]
atlas = ExtResource("1_gth0n")
region = Rect2(0, 96, 48, 32)
[node name="JumpKbd" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_wa8xe")
-12
View File
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://3372ayctb2ed"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_206pc"]
[sub_resource type="AtlasTexture" id="AtlasTexture_6w0xc"]
atlas = ExtResource("1_206pc")
region = Rect2(80, 96, 32, 32)
[node name="JumpPad" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_6w0xc")
-12
View File
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://cemhsfdru4pv6"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_pa6ll"]
[sub_resource type="AtlasTexture" id="AtlasTexture_v0og1"]
atlas = ExtResource("1_pa6ll")
region = Rect2(0, 64, 48, 32)
[node name="MovementKbd" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_v0og1")
-12
View File
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://tipop68pyrf7"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_crf2r"]
[sub_resource type="AtlasTexture" id="AtlasTexture_00r84"]
atlas = ExtResource("1_crf2r")
region = Rect2(80, 48, 32, 48)
[node name="MovementPad" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_00r84")
-12
View File
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://deo60sij43ibm"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_t6r5l"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lviuj"]
atlas = ExtResource("1_t6r5l")
region = Rect2(0, 128, 48, 32)
[node name="SwitchKbd" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_lviuj")
-12
View File
@@ -1,12 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://f70xseggdimg"]
[ext_resource type="Texture2D" uid="uid://ddm4gc2g3aj2i" path="res://images/level/objects.png" id="1_d2iw1"]
[sub_resource type="AtlasTexture" id="AtlasTexture_nyhjv"]
atlas = ExtResource("1_d2iw1")
region = Rect2(112, 64, 32, 32)
[node name="SwitchPad" type="Node2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_nyhjv")
Binary file not shown.
+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c42nswehn307r"
path="res://.godot/imported/activation_hint.png-d71cb806d34b5813c305102aca86fa65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://images/level/activation_hint.png"
dest_files=["res://.godot/imported/activation_hint.png-d71cb806d34b5813c305102aca86fa65.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
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+40
View File
@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8a451rgx116q"
path="res://.godot/imported/lever.png-d607102a11441cc805205162ec192f8f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://images/level/lever.png"
dest_files=["res://.godot/imported/lever.png-d607102a11441cc805205162ec192f8f.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
+1
View File
@@ -162,6 +162,7 @@ pause={
2d_physics/layer_6="White world"
2d_physics/layer_7="White enemy"
2d_physics/layer_8="White player"
2d_physics/layer_9="ActivatableObjects"
[physics]
BIN
View File
Binary file not shown.
+24
View File
@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://buv55jfj7qhix"
path="res://.godot/imported/lever.wav-d2af19b03b0cc019ad3ff0c43ed715f5.sample"
[deps]
source_file="res://sound/sfx/lever.wav"
dest_files=["res://.godot/imported/lever.wav-d2af19b03b0cc019ad3ff0c43ed715f5.sample"]
[params]
force/8_bit=false
force/mono=false
force/max_rate=false
force/max_rate_hz=44100
edit/trim=false
edit/normalize=false
edit/loop_mode=0
edit/loop_begin=0
edit/loop_end=-1
compress/mode=2