19 Commits

Author SHA1 Message Date
ruslan 9590e29956 Added new level 2. Reworked objects 2026-08-07 15:20:19 +03:00
ruslan 1f4e17648d Added pickup bounce 2026-08-07 13:32:26 +03:00
ruslan 017263b2bb Reworked tiles 2026-08-07 12:28:24 +03:00
ruslan 00ecde975e Fixed pitch initializing 2026-06-27 19:31:27 +03:00
ruslan e2dcad2e41 Fixed typos. Fixed player timers mode 2026-06-27 19:29:10 +03:00
ruslan 04f2325489 Added begining of level 2 2026-06-23 23:44:11 +03:00
ruslan 68929cef64 Finished level 1 2026-06-23 22:44:19 +03:00
ruslan ad410e5ec5 Updated part of the first level 2026-06-22 23:51:37 +03:00
ruslan 05532b1f6f Added shader disabling flag to doors 2026-06-22 23:50:23 +03:00
ruslan 569cde340b Added HiddedColorPlatform 2026-06-21 19:29:27 +03:00
ruslan a1601c9266 Added missing blood shader 2026-06-20 23:24:23 +03:00
ruslan 6452b8e2e3 Added color switching to the TouchColorPlatform 2026-06-20 23:23:47 +03:00
ruslan 66ee9887c8 Improved blood splash 2026-06-20 22:50:15 +03:00
ruslan 1983165cf8 Added blood splash 2026-06-20 22:35:54 +03:00
ruslan e2c5cd35ec Reworked Cultist 2026-06-20 21:58:27 +03:00
ruslan e1e2cb3bd1 Reworked CollisionSwitcher to the arrays 2026-06-20 17:37:12 +03:00
ruslan 04cbca0ce1 Added TriggerColorPlatform 2026-06-20 16:01:15 +03:00
ruslan 0a8c9a8163 Simplified ConnecctionCable shader 2026-06-20 15:10:20 +03:00
ruslan 6667047406 Fixed actiovation hint in the editor 2026-06-20 14:54:55 +03:00
110 changed files with 3524 additions and 1545 deletions
@@ -1,10 +0,0 @@
class_name AbstractColorCultist
extends AbstractCultist
@onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher
func _ready() -> void:
super._ready()
collision_switcher.material = sprite.material
@@ -1 +0,0 @@
uid://das7ujanefsn0
@@ -1,17 +0,0 @@
[gd_scene format=3 uid="uid://d37eyum03h83i"]
[ext_resource type="PackedScene" uid="uid://bx0luh4vdob3q" path="res://game/characters/enemies/abstract_cultist.tscn" id="1_12hr0"]
[ext_resource type="Script" uid="uid://das7ujanefsn0" path="res://game/characters/enemies/abstract_color_cultist.gd" id="2_rd56i"]
[ext_resource type="PackedScene" uid="uid://5qlocc0yu8ug" path="res://game/collision_switcher.tscn" id="3_e5cea"]
[sub_resource type="ViewportTexture" id="ViewportTexture_c7l74"]
viewport_path = NodePath("SubViewport")
[node name="AbstractColorCultist" unique_id=644641841 instance=ExtResource("1_12hr0")]
script = ExtResource("2_rd56i")
[node name="CultistSprite" parent="." index="0" unique_id=797412888]
texture = SubResource("ViewportTexture_c7l74")
[node name="CollisionSwitcher" parent="." index="2" unique_id=991274552 node_paths=PackedStringArray("object") instance=ExtResource("3_e5cea")]
object = NodePath("..")
@@ -1,71 +0,0 @@
class_name AbstractCultist
extends CharacterBody2D
const MAX_WALK_SPEED = 85
const MAX_CHASE_SPEED = 170
const ACCELERATION = 600.0
const JUMP_VELOCITY = 222.0
const JUMP_GRAVITY_FACTOR = 1.0
const FALL_GRAVITY_FACTOR = 1.5
var target_x := 0.0
@onready var sprite : Sprite2D = $CultistSprite
@onready var water_splash : GPUParticles2D = $WaterSplash
@onready var animated_sprite : AnimatedSprite2D = $SubViewport/CultistSprite
@onready var left_wall_high_ray : RayCast2D = $WallCheckHigh/LeftWallRay
@onready var right_wall_high_ray : RayCast2D = $WallCheckHigh/RightWallRay
@onready var left_wall_low_ray : RayCast2D = $WallCheckLow/LeftWallRay
@onready var right_wall_low_ray : RayCast2D = $WallCheckLow/RightWallRay
@onready var left_player_close_ray : RayCast2D = $%LeftPlayerCloseRay
@onready var right_player_close_ray : RayCast2D = $%RightPlayerCloseRay
@onready var left_player_distant_ray : RayCast2D = $%LeftPlayerDistantRay
@onready var right_player_distant_ray : RayCast2D = $%RightPlayerDistantRay
@onready var state_machine : CultistStateMachine = $CultistStateMachine
@onready var chase_left_state : CultistState = $CultistStateMachine/ChaseLeftState
@onready var chase_right_state : CultistState = $CultistStateMachine/ChaseRightState
@onready var look_around_state : CultistState = $CultistStateMachine/LookAroundState
func _ready() -> void:
_set_ray_cast_enable(left_player_close_ray, false)
_set_ray_cast_enable(right_player_close_ray, false)
_set_ray_cast_enable(left_player_distant_ray, false)
_set_ray_cast_enable(right_player_distant_ray, false)
state_machine.init()
func _physics_process(delta: float) -> void:
state_machine.physics_process(delta)
move_and_slide()
func kill(type := KillingArea.Type.None) -> void:
match type:
KillingArea.Type.Water:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_splash, global_position)
water_splash.finished.connect(queue_free)
water_splash.restart()
_:
queue_free()
func update_x_velocity(direction: int, max_speed: float, delta: float) -> void:
velocity.x = move_toward(velocity.x, direction * max_speed, ACCELERATION * delta)
func get_gravity_factor() -> float:
return JUMP_GRAVITY_FACTOR if velocity.y < 0.0 else FALL_GRAVITY_FACTOR
func _set_ray_cast_enable(ray_cast: RayCast2D, enabled: bool) -> void:
ray_cast.process_mode = Node.PROCESS_MODE_INHERIT if enabled else Node.PROCESS_MODE_DISABLED
-2
View File
@@ -1,2 +0,0 @@
class_name BlackCultist
extends AbstractColorCultist
@@ -1 +0,0 @@
uid://c2knsjcp6faf6
@@ -1,43 +0,0 @@
[gd_scene format=3 uid="uid://cutjutvd8dqqc"]
[ext_resource type="PackedScene" uid="uid://d37eyum03h83i" path="res://game/characters/enemies/abstract_color_cultist.tscn" id="1_gj2ks"]
[ext_resource type="Script" uid="uid://c2knsjcp6faf6" path="res://game/characters/enemies/black_cultist.gd" id="2_332ds"]
[ext_resource type="Material" uid="uid://dggr8t4b30e3n" path="res://game/materials/enemy_black.tres" id="3_v1if5"]
[sub_resource type="ViewportTexture" id="ViewportTexture_q6bby"]
viewport_path = NodePath("SubViewport")
[node name="BlackCultist" unique_id=1910124567 instance=ExtResource("1_gj2ks")]
collision_layer = 4
collision_mask = 3
script = ExtResource("2_332ds")
[node name="CultistSprite" parent="." index="0" unique_id=797412888]
material = ExtResource("3_v1if5")
texture = SubResource("ViewportTexture_q6bby")
[node name="CollisionSwitcher" parent="." index="2" unique_id=991274552]
initial_state = 0
[node name="LeftWallRay" parent="WallCheckLow" parent_id_path=PackedInt32Array(782156094) index="0" unique_id=521416854]
collision_mask = 3
[node name="RightWallRay" parent="WallCheckLow" parent_id_path=PackedInt32Array(782156094) index="1" unique_id=1457669135]
collision_mask = 3
[node name="LeftPlayerCloseRay" parent="PlayerCloseCheck" parent_id_path=PackedInt32Array(1593775088) index="0" unique_id=947570027]
target_position = Vector2(-32, 0)
collision_mask = 11
[node name="RightPlayerCloseRay" parent="PlayerCloseCheck" parent_id_path=PackedInt32Array(1593775088) index="1" unique_id=1559118218]
target_position = Vector2(32, 0)
collision_mask = 11
[node name="LeftPlayerDistantRay" parent="PlayerDistantCheck" parent_id_path=PackedInt32Array(1597489123) index="0" unique_id=1491085518]
collision_mask = 11
[node name="RightPlayerDistantRay" parent="PlayerDistantCheck" parent_id_path=PackedInt32Array(1597489123) index="1" unique_id=1377654831]
collision_mask = 11
[node name="KillingArea" parent="." index="8" unique_id=1891922549]
collision_mask = 8
+144
View File
@@ -0,0 +1,144 @@
@tool
class_name Cultist
extends CharacterBody2D
enum Type {
White,
Black,
Gray,
}
const MAX_WALK_SPEED = 85
const MAX_CHASE_SPEED = 170
const ACCELERATION = 600.0
const JUMP_VELOCITY = 222.0
const JUMP_GRAVITY_FACTOR = 1.0
const FALL_GRAVITY_FACTOR = 1.5
@export var type := Type.White:
set(value):
type = value
if is_node_ready():
_updated_sprite()
_updated_collision()
var target_x := 0.0
@onready var sprite : Sprite2D = $CultistSprite
@onready var animated_sprite : AnimatedSprite2D = $CultistSprite.animated_sprite
@onready var water_splash : GPUParticles2D = $WaterSplash
@onready var killing_area : KillingArea = $KillingArea
@onready var left_wall_high_ray : RayCast2D = $WallCheckHigh/LeftWallRay
@onready var right_wall_high_ray : RayCast2D = $WallCheckHigh/RightWallRay
@onready var left_wall_low_ray : RayCast2D = $WallCheckLow/LeftWallRay
@onready var right_wall_low_ray : RayCast2D = $WallCheckLow/RightWallRay
@onready var left_player_close_ray : RayCast2D = $%LeftPlayerCloseRay
@onready var right_player_close_ray : RayCast2D = $%RightPlayerCloseRay
@onready var left_player_distant_ray : RayCast2D = $%LeftPlayerDistantRay
@onready var right_player_distant_ray : RayCast2D = $%RightPlayerDistantRay
@onready var wall_rays : Array[RayCast2D] = [
left_wall_high_ray, right_wall_high_ray,
left_wall_low_ray, right_wall_low_ray,
]
@onready var player_rays : Array[RayCast2D] = [
left_player_close_ray, right_player_close_ray,
left_player_distant_ray, right_player_distant_ray,
]
@onready var state_machine : CultistStateMachine = $CultistStateMachine
@onready var chase_left_state : CultistState = $CultistStateMachine/ChaseLeftState
@onready var chase_right_state : CultistState = $CultistStateMachine/ChaseRightState
@onready var look_around_state : CultistState = $CultistStateMachine/LookAroundState
func _ready() -> void:
_updated_sprite()
_updated_collision()
if not Engine.is_editor_hint():
_set_ray_cast_enable(left_player_close_ray, false)
_set_ray_cast_enable(right_player_close_ray, false)
_set_ray_cast_enable(left_player_distant_ray, false)
_set_ray_cast_enable(right_player_distant_ray, false)
state_machine.init()
func _physics_process(delta: float) -> void:
if not Engine.is_editor_hint():
state_machine.physics_process(delta)
move_and_slide()
func kill(killing_type := KillingArea.Type.None) -> void:
match killing_type:
KillingArea.Type.Water:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_splash, global_position)
water_splash.finished.connect(queue_free)
water_splash.restart()
_:
queue_free()
func update_x_velocity(direction: int, max_speed: float, delta: float) -> void:
velocity.x = move_toward(velocity.x, direction * max_speed, ACCELERATION * delta)
func get_gravity_factor() -> float:
return JUMP_GRAVITY_FACTOR if velocity.y < 0.0 else FALL_GRAVITY_FACTOR
func _updated_sprite() -> void:
sprite.type = type
func _updated_collision() -> void:
const C = CollisionSwitcher.Collisions
var layer: int
var world_mask: int
var player_mask: int
match type:
Type.White:
layer = C.WHITE_ENEMY
world_mask = C.WHITE_WORLD
player_mask = C.WHITE_PLAYER
Type.Black:
layer = C.BLACK_ENEMY
world_mask = C.BLACK_WORLD
player_mask = C.BLACK_PLAYER
Type.Gray:
layer = C.GREY_ENEMY
world_mask = C.WHITE_WORLD | C.BLACK_WORLD
player_mask = C.WHITE_PLAYER | C.BLACK_PLAYER
_:
return
world_mask |= C.GREY_WORLD
collision_layer = layer
_set_mask(world_mask, player_mask)
func _set_mask(world_mask: int, player_mask: int) -> void:
collision_mask = world_mask
for ray in wall_rays:
ray.collision_mask = world_mask
for ray in player_rays:
ray.collision_mask = world_mask | player_mask
killing_area.collision_mask = player_mask
func _set_ray_cast_enable(ray_cast: RayCast2D, enabled: bool) -> void:
ray_cast.process_mode = Node.PROCESS_MODE_INHERIT if enabled else Node.PROCESS_MODE_DISABLED
if Engine.is_editor_hint():
if enabled: ray_cast.show()
else: ray_cast.hide()
@@ -1,23 +1,38 @@
[gd_scene format=3 uid="uid://bx0luh4vdob3q"] [gd_scene format=3 uid="uid://bx0luh4vdob3q"]
[ext_resource type="Script" uid="uid://but5aeh7y1s0f" path="res://game/characters/enemies/abstract_cultist.gd" id="1_2wrno"] [ext_resource type="Script" uid="uid://but5aeh7y1s0f" path="res://game/characters/enemies/cultist.gd" id="1_ah13v"]
[ext_resource type="PackedScene" uid="uid://dtxiercm8dsfm" path="res://game/characters/enemies/cultist_sprite.tscn" id="2_tjvyk"] [ext_resource type="PackedScene" uid="uid://8yd8f5x1hujv" path="res://game/characters/water_splash.tscn" id="2_go1hq"]
[ext_resource type="PackedScene" uid="uid://8yd8f5x1hujv" path="res://game/characters/water_splash.tscn" id="2_w1t0g"] [ext_resource type="PackedScene" uid="uid://dtxiercm8dsfm" path="res://game/characters/enemies/cultist_sprite.tscn" id="3_mbt3t"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="3_tjvyk"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="4_ul6ar"]
[ext_resource type="PackedScene" uid="uid://bg7k6ovbk1xgm" path="res://game/characters/enemies/state_machine/cultist_state_machine.tscn" id="4_yu28k"] [ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="5_500rx"]
[ext_resource type="PackedScene" uid="uid://bq1v55jv4c6qe" path="res://game/characters/enemies/state_machine/cultist_state.tscn" id="5_tu2pi"] [ext_resource type="PackedScene" uid="uid://bg7k6ovbk1xgm" path="res://game/characters/enemies/state_machine/cultist_state_machine.tscn" id="6_oqd45"]
[ext_resource type="Script" uid="uid://bqnq6m0s4etqh" path="res://game/characters/enemies/state_machine/fall_state.gd" id="7_7tkj8"] [ext_resource type="PackedScene" uid="uid://bq1v55jv4c6qe" path="res://game/characters/enemies/state_machine/cultist_state.tscn" id="7_nsxyj"]
[ext_resource type="Script" uid="uid://b8o0lvuy6a5q1" path="res://game/characters/enemies/state_machine/fall_left_state.gd" id="8_2opx4"] [ext_resource type="Script" uid="uid://bqnq6m0s4etqh" path="res://game/characters/enemies/state_machine/fall_state.gd" id="8_h77eg"]
[ext_resource type="Script" uid="uid://cxg54u14yb6go" path="res://game/characters/enemies/state_machine/fall_right_state.gd" id="9_lu83c"] [ext_resource type="Script" uid="uid://b8o0lvuy6a5q1" path="res://game/characters/enemies/state_machine/fall_left_state.gd" id="9_uasba"]
[ext_resource type="Script" uid="uid://bfp8gywqqkju7" path="res://game/characters/enemies/state_machine/look_around_state.gd" id="10_lu83c"] [ext_resource type="Script" uid="uid://cxg54u14yb6go" path="res://game/characters/enemies/state_machine/fall_right_state.gd" id="10_mye2w"]
[ext_resource type="Script" uid="uid://hgn4yll571hp" path="res://game/characters/enemies/state_machine/walk_left_state.gd" id="11_lh753"] [ext_resource type="Script" uid="uid://bfp8gywqqkju7" path="res://game/characters/enemies/state_machine/look_around_state.gd" id="11_rqqg0"]
[ext_resource type="Script" uid="uid://bwwhmjxhg2adp" path="res://game/characters/enemies/state_machine/walk_right_state.gd" id="12_lh753"] [ext_resource type="Script" uid="uid://hgn4yll571hp" path="res://game/characters/enemies/state_machine/walk_left_state.gd" id="12_vm7uu"]
[ext_resource type="Script" uid="uid://cn2lfl4kuxvjk" path="res://game/characters/enemies/state_machine/chase_left_state.gd" id="13_42ivi"] [ext_resource type="Script" uid="uid://bwwhmjxhg2adp" path="res://game/characters/enemies/state_machine/walk_right_state.gd" id="13_x8b3k"]
[ext_resource type="Script" uid="uid://cqlym4lqahsd3" path="res://game/characters/enemies/state_machine/cultist_jump_left_state.gd" id="14_42ivi"] [ext_resource type="Script" uid="uid://cn2lfl4kuxvjk" path="res://game/characters/enemies/state_machine/chase_left_state.gd" id="14_d5aal"]
[ext_resource type="Script" uid="uid://3kl84tu1vwiv" path="res://game/characters/enemies/state_machine/chase_right_state.gd" id="14_cqp7f"] [ext_resource type="Script" uid="uid://3kl84tu1vwiv" path="res://game/characters/enemies/state_machine/chase_right_state.gd" id="15_1yxn0"]
[ext_resource type="Script" uid="uid://cf52bjcpasft1" path="res://game/characters/enemies/state_machine/cultist_jump_right_state.gd" id="15_cqp7f"] [ext_resource type="Script" uid="uid://cqlym4lqahsd3" path="res://game/characters/enemies/state_machine/cultist_jump_left_state.gd" id="16_11eub"]
[ext_resource type="Script" uid="uid://cf52bjcpasft1" path="res://game/characters/enemies/state_machine/cultist_jump_right_state.gd" id="17_6hjcx"]
[sub_resource type="ViewportTexture" id="ViewportTexture_cqp7f"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_ah13v"]
resource_local_to_scene = true
shader = ExtResource("4_ul6ar")
shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5
shader_parameter/speed = 3.0
shader_parameter/intensity = 1.0
shader_parameter/scale = 5.0
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(0, 1)
shader_parameter/use_world_pos = false
[sub_resource type="ViewportTexture" id="ViewportTexture_go1hq"]
viewport_path = NodePath("SubViewport") viewport_path = NodePath("SubViewport")
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_mocsw"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_mocsw"]
@@ -28,25 +43,19 @@ height = 28.0
radius = 4.0 radius = 4.0
height = 28.0 height = 28.0
[node name="AbstractCultist" type="CharacterBody2D" unique_id=1676614852] [node name="Cultist" type="CharacterBody2D" unique_id=1676614852]
collision_layer = 0 collision_layer = 64
script = ExtResource("1_2wrno") collision_mask = 33
script = ExtResource("1_ah13v")
[node name="WaterSplash" parent="." unique_id=658940825 instance=ExtResource("2_w1t0g")] [node name="CultistSprite" parent="." unique_id=1997264413 instance=ExtResource("3_mbt3t")]
material = SubResource("ShaderMaterial_ah13v")
position = Vector2(0, 1)
texture = SubResource("ViewportTexture_go1hq")
[node name="WaterSplash" parent="." unique_id=658940825 instance=ExtResource("2_go1hq")]
position = Vector2(0, -14) position = Vector2(0, -14)
[node name="CultistSprite" type="Sprite2D" parent="." unique_id=797412888]
texture = SubResource("ViewportTexture_cqp7f")
[node name="SubViewport" type="SubViewport" parent="." unique_id=903152885]
transparent_bg = true
canvas_item_default_texture_filter = 0
size = Vector2i(32, 32)
[node name="CultistSprite" parent="SubViewport" unique_id=1997264413 instance=ExtResource("2_tjvyk")]
material = null
position = Vector2(16, 16)
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=185651284] [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=185651284]
position = Vector2(0, 2) position = Vector2(0, 2)
shape = SubResource("CapsuleShape2D_mocsw") shape = SubResource("CapsuleShape2D_mocsw")
@@ -56,18 +65,22 @@ position = Vector2(0, -8)
[node name="LeftWallRay" type="RayCast2D" parent="WallCheckHigh" unique_id=1026693538] [node name="LeftWallRay" type="RayCast2D" parent="WallCheckHigh" unique_id=1026693538]
target_position = Vector2(-16, 0) target_position = Vector2(-16, 0)
collision_mask = 33
[node name="RightWallRay" type="RayCast2D" parent="WallCheckHigh" unique_id=1129233918] [node name="RightWallRay" type="RayCast2D" parent="WallCheckHigh" unique_id=1129233918]
target_position = Vector2(16, 0) target_position = Vector2(16, 0)
collision_mask = 33
[node name="WallCheckLow" type="Node2D" parent="." unique_id=782156094] [node name="WallCheckLow" type="Node2D" parent="." unique_id=782156094]
position = Vector2(0, 9) position = Vector2(0, 9)
[node name="LeftWallRay" type="RayCast2D" parent="WallCheckLow" unique_id=521416854] [node name="LeftWallRay" type="RayCast2D" parent="WallCheckLow" unique_id=521416854]
target_position = Vector2(-16, 0) target_position = Vector2(-16, 0)
collision_mask = 33
[node name="RightWallRay" type="RayCast2D" parent="WallCheckLow" unique_id=1457669135] [node name="RightWallRay" type="RayCast2D" parent="WallCheckLow" unique_id=1457669135]
target_position = Vector2(16, 0) target_position = Vector2(16, 0)
collision_mask = 33
[node name="PlayerCloseCheck" type="Node2D" parent="." unique_id=1593775088] [node name="PlayerCloseCheck" type="Node2D" parent="." unique_id=1593775088]
position = Vector2(0, -8) position = Vector2(0, -8)
@@ -75,12 +88,12 @@ position = Vector2(0, -8)
[node name="LeftPlayerCloseRay" type="RayCast2D" parent="PlayerCloseCheck" unique_id=947570027] [node name="LeftPlayerCloseRay" type="RayCast2D" parent="PlayerCloseCheck" unique_id=947570027]
unique_name_in_owner = true unique_name_in_owner = true
target_position = Vector2(-48, 0) target_position = Vector2(-48, 0)
collision_mask = 0 collision_mask = 161
[node name="RightPlayerCloseRay" type="RayCast2D" parent="PlayerCloseCheck" unique_id=1559118218] [node name="RightPlayerCloseRay" type="RayCast2D" parent="PlayerCloseCheck" unique_id=1559118218]
unique_name_in_owner = true unique_name_in_owner = true
target_position = Vector2(48, 0) target_position = Vector2(48, 0)
collision_mask = 0 collision_mask = 161
[node name="PlayerDistantCheck" type="Node2D" parent="." unique_id=1597489123] [node name="PlayerDistantCheck" type="Node2D" parent="." unique_id=1597489123]
position = Vector2(0, -8) position = Vector2(0, -8)
@@ -88,43 +101,44 @@ position = Vector2(0, -8)
[node name="LeftPlayerDistantRay" type="RayCast2D" parent="PlayerDistantCheck" unique_id=1491085518] [node name="LeftPlayerDistantRay" type="RayCast2D" parent="PlayerDistantCheck" unique_id=1491085518]
unique_name_in_owner = true unique_name_in_owner = true
target_position = Vector2(-320, 0) target_position = Vector2(-320, 0)
collision_mask = 0 collision_mask = 161
[node name="RightPlayerDistantRay" type="RayCast2D" parent="PlayerDistantCheck" unique_id=1377654831] [node name="RightPlayerDistantRay" type="RayCast2D" parent="PlayerDistantCheck" unique_id=1377654831]
unique_name_in_owner = true unique_name_in_owner = true
target_position = Vector2(320, 0) target_position = Vector2(320, 0)
collision_mask = 0 collision_mask = 161
[node name="KillingArea" parent="." unique_id=1891922549 instance=ExtResource("3_tjvyk")] [node name="KillingArea" parent="." unique_id=1891922549 instance=ExtResource("5_500rx")]
collision_mask = 0 collision_mask = 128
type = 2
[node name="CollisionShape2D" type="CollisionShape2D" parent="KillingArea" unique_id=1710758452] [node name="CollisionShape2D" type="CollisionShape2D" parent="KillingArea" unique_id=1710758452]
position = Vector2(0, 2) position = Vector2(0, 2)
shape = SubResource("CapsuleShape2D_tjvyk") shape = SubResource("CapsuleShape2D_tjvyk")
[node name="CultistStateMachine" parent="." unique_id=633169960 node_paths=PackedStringArray("cultist", "initial_state") instance=ExtResource("4_yu28k")] [node name="CultistStateMachine" parent="." unique_id=633169960 node_paths=PackedStringArray("cultist", "initial_state") instance=ExtResource("6_oqd45")]
cultist = NodePath("..") cultist = NodePath("..")
initial_state = NodePath("WalkLeftState") initial_state = NodePath("LookAroundState")
[node name="FallState" parent="CultistStateMachine" unique_id=1764777802 node_paths=PackedStringArray("look_around_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="FallState" parent="CultistStateMachine" unique_id=1764777802 node_paths=PackedStringArray("look_around_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("7_7tkj8") script = ExtResource("8_h77eg")
look_around_state = NodePath("../LookAroundState") look_around_state = NodePath("../LookAroundState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="FallLeftState" parent="CultistStateMachine" unique_id=1011952297 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="FallLeftState" parent="CultistStateMachine" unique_id=1011952297 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("8_2opx4") script = ExtResource("9_uasba")
fall_state = NodePath("../FallState") fall_state = NodePath("../FallState")
look_around_state = NodePath("../LookAroundState") look_around_state = NodePath("../LookAroundState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="FallRightState" parent="CultistStateMachine" unique_id=1932915544 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="FallRightState" parent="CultistStateMachine" unique_id=1932915544 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("9_lu83c") script = ExtResource("10_mye2w")
fall_state = NodePath("../FallState") fall_state = NodePath("../FallState")
look_around_state = NodePath("../LookAroundState") look_around_state = NodePath("../LookAroundState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="LookAroundState" parent="CultistStateMachine" unique_id=2025927882 node_paths=PackedStringArray("fall_state", "walk_left_state", "walk_right_state", "chase_left_state", "chase_right_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="LookAroundState" parent="CultistStateMachine" unique_id=2025927882 node_paths=PackedStringArray("fall_state", "walk_left_state", "walk_right_state", "chase_left_state", "chase_right_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("10_lu83c") script = ExtResource("11_rqqg0")
fall_state = NodePath("../FallState") fall_state = NodePath("../FallState")
walk_left_state = NodePath("../WalkLeftState") walk_left_state = NodePath("../WalkLeftState")
walk_right_state = NodePath("../WalkRightState") walk_right_state = NodePath("../WalkRightState")
@@ -132,40 +146,40 @@ chase_left_state = NodePath("../ChaseLeftState")
chase_right_state = NodePath("../ChaseRightState") chase_right_state = NodePath("../ChaseRightState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="WalkLeftState" parent="CultistStateMachine" unique_id=276543931 node_paths=PackedStringArray("chase_state", "another_direction_walk_state", "fall_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="WalkLeftState" parent="CultistStateMachine" unique_id=276543931 node_paths=PackedStringArray("chase_state", "another_direction_walk_state", "fall_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("11_lh753") script = ExtResource("12_vm7uu")
chase_state = NodePath("../ChaseLeftState") chase_state = NodePath("../ChaseLeftState")
another_direction_walk_state = NodePath("../WalkRightState") another_direction_walk_state = NodePath("../WalkRightState")
fall_state = NodePath("../FallLeftState") fall_state = NodePath("../FallLeftState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="WalkRightState" parent="CultistStateMachine" unique_id=1671686910 node_paths=PackedStringArray("chase_state", "another_direction_walk_state", "fall_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="WalkRightState" parent="CultistStateMachine" unique_id=1671686910 node_paths=PackedStringArray("chase_state", "another_direction_walk_state", "fall_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("12_lh753") script = ExtResource("13_x8b3k")
chase_state = NodePath("../ChaseRightState") chase_state = NodePath("../ChaseRightState")
another_direction_walk_state = NodePath("../WalkLeftState") another_direction_walk_state = NodePath("../WalkLeftState")
fall_state = NodePath("../FallRightState") fall_state = NodePath("../FallRightState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="ChaseLeftState" parent="CultistStateMachine" unique_id=209480830 node_paths=PackedStringArray("look_around_state", "jump_state", "fall_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="ChaseLeftState" parent="CultistStateMachine" unique_id=209480830 node_paths=PackedStringArray("look_around_state", "jump_state", "fall_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("13_42ivi") script = ExtResource("14_d5aal")
look_around_state = NodePath("../LookAroundState") look_around_state = NodePath("../LookAroundState")
jump_state = NodePath("../JumpLeftState") jump_state = NodePath("../JumpLeftState")
fall_state = NodePath("../FallState") fall_state = NodePath("../FallState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="ChaseRightState" parent="CultistStateMachine" unique_id=383038915 node_paths=PackedStringArray("look_around_state", "jump_state", "fall_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="ChaseRightState" parent="CultistStateMachine" unique_id=383038915 node_paths=PackedStringArray("look_around_state", "jump_state", "fall_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("14_cqp7f") script = ExtResource("15_1yxn0")
look_around_state = NodePath("../LookAroundState") look_around_state = NodePath("../LookAroundState")
jump_state = NodePath("../JumpRightState") jump_state = NodePath("../JumpRightState")
fall_state = NodePath("../FallState") fall_state = NodePath("../FallState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="JumpLeftState" parent="CultistStateMachine" unique_id=739226464 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="JumpLeftState" parent="CultistStateMachine" unique_id=739226464 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("14_42ivi") script = ExtResource("16_11eub")
chase_state = NodePath("../ChaseLeftState") chase_state = NodePath("../ChaseLeftState")
cultist = NodePath("../..") cultist = NodePath("../..")
[node name="JumpRightState" parent="CultistStateMachine" unique_id=756126836 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("5_tu2pi")] [node name="JumpRightState" parent="CultistStateMachine" unique_id=756126836 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("7_nsxyj")]
script = ExtResource("15_cqp7f") script = ExtResource("17_6hjcx")
chase_state = NodePath("../ChaseRightState") chase_state = NodePath("../ChaseRightState")
cultist = NodePath("../..") cultist = NodePath("../..")
+63 -1
View File
@@ -1,7 +1,31 @@
@tool
class_name CultistSprite class_name CultistSprite
extends AnimatedSprite2D extends Sprite2D
enum View {
Front,
Right,
Left,
}
const SHADER_SWITCH_COLORS = "shader_parameter/switch_colors"
const SHADER_INTENSITY = "shader_parameter/intensity"
const SHADER_SEED = "shader_parameter/seed"
const is_color_switched : Dictionary[Cultist.Type, bool] = {
Cultist.Type.White: false,
Cultist.Type.Black: true,
Cultist.Type.Gray: false,
}
const intensity : Dictionary[Cultist.Type, float] = {
Cultist.Type.White: 1.0,
Cultist.Type.Black: 1.0,
Cultist.Type.Gray: 0.5,
}
const ANIMATION_FALL = "fall" const ANIMATION_FALL = "fall"
const ANIMATION_FALL_LEFT = "fall_left" const ANIMATION_FALL_LEFT = "fall_left"
const ANIMATION_FALL_RIGHT = "fall_right" const ANIMATION_FALL_RIGHT = "fall_right"
@@ -21,3 +45,41 @@ const LOOK_AROUND_ANIMATIONS : Array[String] = [
ANIMATION_LOOK_AROUND_1, ANIMATION_LOOK_AROUND_1,
ANIMATION_LOOK_AROUND_2, ANIMATION_LOOK_AROUND_2,
] ]
@export var type := Cultist.Type.White:
set(value):
type = value
if is_node_ready():
_update_type()
@export var view := View.Front:
set(value):
view = value
if is_node_ready():
_update_view()
@onready var animated_sprite : AnimatedSprite2D = $SubViewport/AnimatedSprite2D
func _ready() -> void:
_update_type()
_update_view()
if not Engine.is_editor_hint():
material.set(SHADER_SEED, randf())
func _update_type() -> void:
material.set(SHADER_INTENSITY, intensity[type])
material.set(SHADER_SWITCH_COLORS, is_color_switched[type])
func _update_view() -> void:
match view:
View.Front:
animated_sprite.animation = ANIMATION_IDLE
View.Left:
animated_sprite.animation = ANIMATION_WALK_LEFT
View.Right:
animated_sprite.animation = ANIMATION_WALK_RIGHT
@@ -1 +1 @@
uid://dkxmwkjttbf2d uid://bmk0r5ovfi60u
+29 -28
View File
@@ -1,18 +1,11 @@
[gd_scene format=3 uid="uid://dtxiercm8dsfm"] [gd_scene format=3 uid="uid://dtxiercm8dsfm"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_ew6gn"] [ext_resource type="Material" uid="uid://dwgqr50guokxg" path="res://game/materials/cultist.tres" id="1_1pedr"]
[ext_resource type="Script" uid="uid://bmk0r5ovfi60u" path="res://game/characters/enemies/cultist_sprite.gd" id="2_ew6gn"]
[ext_resource type="Texture2D" uid="uid://drk8j57acajrq" path="res://images/characters/cultist.png" id="2_g4n4l"] [ext_resource type="Texture2D" uid="uid://drk8j57acajrq" path="res://images/characters/cultist.png" id="2_g4n4l"]
[ext_resource type="Script" uid="uid://dkxmwkjttbf2d" path="res://game/characters/enemies/cultist_sprite.gd" id="3_ef0vi"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vecdo"] [sub_resource type="ViewportTexture" id="ViewportTexture_bhunq"]
shader = ExtResource("1_ew6gn") viewport_path = NodePath("SubViewport")
shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5
shader_parameter/speed = 5.0
shader_parameter/intensity = 1.0
shader_parameter/scale = 20.0
[sub_resource type="AtlasTexture" id="AtlasTexture_l58xb"] [sub_resource type="AtlasTexture" id="AtlasTexture_l58xb"]
atlas = ExtResource("2_g4n4l") atlas = ExtResource("2_g4n4l")
@@ -177,7 +170,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_x6npu") "texture": SubResource("AtlasTexture_x6npu")
}], }],
"loop": true, "loop": 1,
"name": &"chase_left", "name": &"chase_left",
"speed": 20.0 "speed": 20.0
}, { }, {
@@ -206,7 +199,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_0xs27") "texture": SubResource("AtlasTexture_0xs27")
}], }],
"loop": true, "loop": 1,
"name": &"chase_right", "name": &"chase_right",
"speed": 20.0 "speed": 20.0
}, { }, {
@@ -214,7 +207,7 @@ animations = [{
"duration": 10.0, "duration": 10.0,
"texture": SubResource("AtlasTexture_tjvyk") "texture": SubResource("AtlasTexture_tjvyk")
}], }],
"loop": true, "loop": 1,
"name": &"fall", "name": &"fall",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -222,7 +215,7 @@ animations = [{
"duration": 5.0, "duration": 5.0,
"texture": SubResource("AtlasTexture_vecdo") "texture": SubResource("AtlasTexture_vecdo")
}], }],
"loop": true, "loop": 1,
"name": &"fall_left", "name": &"fall_left",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -230,7 +223,7 @@ animations = [{
"duration": 5.0, "duration": 5.0,
"texture": SubResource("AtlasTexture_qly8p") "texture": SubResource("AtlasTexture_qly8p")
}], }],
"loop": true, "loop": 1,
"name": &"fall_right", "name": &"fall_right",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -244,7 +237,7 @@ animations = [{
"duration": 5.0, "duration": 5.0,
"texture": SubResource("AtlasTexture_ijx3p") "texture": SubResource("AtlasTexture_ijx3p")
}], }],
"loop": true, "loop": 1,
"name": &"idle", "name": &"idle",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -252,7 +245,7 @@ animations = [{
"duration": 5.0, "duration": 5.0,
"texture": SubResource("AtlasTexture_klrad") "texture": SubResource("AtlasTexture_klrad")
}], }],
"loop": true, "loop": 1,
"name": &"jump", "name": &"jump",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -260,7 +253,7 @@ animations = [{
"duration": 5.0, "duration": 5.0,
"texture": SubResource("AtlasTexture_rjy0i") "texture": SubResource("AtlasTexture_rjy0i")
}], }],
"loop": true, "loop": 1,
"name": &"jump_left", "name": &"jump_left",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -268,7 +261,7 @@ animations = [{
"duration": 5.0, "duration": 5.0,
"texture": SubResource("AtlasTexture_ps2ar") "texture": SubResource("AtlasTexture_ps2ar")
}], }],
"loop": true, "loop": 1,
"name": &"jump_right", "name": &"jump_right",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -285,7 +278,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_soo8x") "texture": SubResource("AtlasTexture_soo8x")
}], }],
"loop": true, "loop": 1,
"name": &"look_around", "name": &"look_around",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -305,7 +298,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_vbirv") "texture": SubResource("AtlasTexture_vbirv")
}], }],
"loop": false, "loop": 0,
"name": &"look_around_1", "name": &"look_around_1",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -325,7 +318,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_hrljr") "texture": SubResource("AtlasTexture_hrljr")
}], }],
"loop": false, "loop": 0,
"name": &"look_around_2", "name": &"look_around_2",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -354,7 +347,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_x6npu") "texture": SubResource("AtlasTexture_x6npu")
}], }],
"loop": true, "loop": 1,
"name": &"walk_left", "name": &"walk_left",
"speed": 10.0 "speed": 10.0
}, { }, {
@@ -383,13 +376,21 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_0xs27") "texture": SubResource("AtlasTexture_0xs27")
}], }],
"loop": true, "loop": 1,
"name": &"walk_right", "name": &"walk_right",
"speed": 10.0 "speed": 10.0
}] }]
[node name="CultistSprite" type="AnimatedSprite2D" unique_id=351120861] [node name="CultistSprite" type="Sprite2D" unique_id=1870874123]
material = SubResource("ShaderMaterial_vecdo") material = ExtResource("1_1pedr")
texture = SubResource("ViewportTexture_bhunq")
script = ExtResource("2_ew6gn")
[node name="SubViewport" type="SubViewport" parent="." unique_id=1722886587]
transparent_bg = true
size = Vector2i(32, 32)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="SubViewport" unique_id=1233349440]
position = Vector2(16, 16)
sprite_frames = SubResource("SpriteFrames_2wrno") sprite_frames = SubResource("SpriteFrames_2wrno")
animation = &"idle" animation = &"idle"
script = ExtResource("3_ef0vi")
-2
View File
@@ -1,2 +0,0 @@
class_name GrayCultist
extends AbstractCultist
@@ -1 +0,0 @@
uid://cern5veiqkrkc
-38
View File
@@ -1,38 +0,0 @@
[gd_scene format=3 uid="uid://cb0w6mt8g4mer"]
[ext_resource type="PackedScene" uid="uid://bx0luh4vdob3q" path="res://game/characters/enemies/abstract_cultist.tscn" id="1_q3s46"]
[ext_resource type="Script" uid="uid://cern5veiqkrkc" path="res://game/characters/enemies/gray_cultist.gd" id="2_olede"]
[ext_resource type="Material" uid="uid://dbkn3k0batj5w" path="res://game/materials/enemy_gray.tres" id="3_ho47d"]
[sub_resource type="ViewportTexture" id="ViewportTexture_b3gyl"]
viewport_path = NodePath("SubViewport")
[node name="GrayCultist" unique_id=139812221 instance=ExtResource("1_q3s46")]
collision_layer = 16
collision_mask = 35
script = ExtResource("2_olede")
[node name="CultistSprite" parent="." index="0" unique_id=797412888]
material = ExtResource("3_ho47d")
texture = SubResource("ViewportTexture_b3gyl")
[node name="LeftWallRay" parent="WallCheckLow" parent_id_path=PackedInt32Array(782156094) index="0" unique_id=521416854]
collision_mask = 35
[node name="RightWallRay" parent="WallCheckLow" parent_id_path=PackedInt32Array(782156094) index="1" unique_id=1457669135]
collision_mask = 35
[node name="LeftPlayerCloseRay" parent="PlayerCloseCheck" parent_id_path=PackedInt32Array(1593775088) index="0" unique_id=947570027]
collision_mask = 171
[node name="RightPlayerCloseRay" parent="PlayerCloseCheck" parent_id_path=PackedInt32Array(1593775088) index="1" unique_id=1559118218]
collision_mask = 171
[node name="LeftPlayerDistantRay" parent="PlayerDistantCheck" parent_id_path=PackedInt32Array(1597489123) index="0" unique_id=1491085518]
collision_mask = 171
[node name="RightPlayerDistantRay" parent="PlayerDistantCheck" parent_id_path=PackedInt32Array(1597489123) index="1" unique_id=1377654831]
collision_mask = 171
[node name="KillingArea" parent="." index="7" unique_id=1891922549]
collision_mask = 136
@@ -6,7 +6,7 @@ const DIRECTION_LEFT = -1
const DIRECTION_RIGHT = 1 const DIRECTION_RIGHT = 1
@export var cultist: AbstractCultist @export var cultist: Cultist
func _get_colliding_player(ray_cast: RayCast2D) -> Player: func _get_colliding_player(ray_cast: RayCast2D) -> Player:
@@ -2,4 +2,4 @@ class_name CultistStateMachine
extends StateMachine extends StateMachine
@export var cultist: AbstractCultist @export var cultist: Cultist
-2
View File
@@ -1,2 +0,0 @@
class_name WhiteCultist
extends AbstractColorCultist
@@ -1 +0,0 @@
uid://dmcpkytgiuedi
@@ -1,40 +0,0 @@
[gd_scene format=3 uid="uid://bv2gahb4wxgb1"]
[ext_resource type="PackedScene" uid="uid://d37eyum03h83i" path="res://game/characters/enemies/abstract_color_cultist.tscn" id="1_3yi7g"]
[ext_resource type="Script" uid="uid://dmcpkytgiuedi" path="res://game/characters/enemies/white_cultist.gd" id="2_c7pdf"]
[ext_resource type="Material" uid="uid://ci7xuso12af5" path="res://game/materials/enemy_white.tres" id="3_36f86"]
[sub_resource type="ViewportTexture" id="ViewportTexture_fb5t4"]
viewport_path = NodePath("SubViewport")
[node name="WhiteEnemy" unique_id=486389199 instance=ExtResource("1_3yi7g")]
collision_layer = 64
collision_mask = 33
script = ExtResource("2_c7pdf")
[node name="CultistSprite" parent="." index="0" unique_id=797412888]
material = ExtResource("3_36f86")
texture = SubResource("ViewportTexture_fb5t4")
[node name="LeftWallRay" parent="WallCheckLow" parent_id_path=PackedInt32Array(782156094) index="0" unique_id=521416854]
collision_mask = 33
[node name="RightWallRay" parent="WallCheckLow" parent_id_path=PackedInt32Array(782156094) index="1" unique_id=1457669135]
collision_mask = 33
[node name="LeftPlayerCloseRay" parent="PlayerCloseCheck" parent_id_path=PackedInt32Array(1593775088) index="0" unique_id=947570027]
target_position = Vector2(-32, 0)
collision_mask = 161
[node name="RightPlayerCloseRay" parent="PlayerCloseCheck" parent_id_path=PackedInt32Array(1593775088) index="1" unique_id=1559118218]
target_position = Vector2(32, 0)
collision_mask = 161
[node name="LeftPlayerDistantRay" parent="PlayerDistantCheck" parent_id_path=PackedInt32Array(1597489123) index="0" unique_id=1491085518]
collision_mask = 161
[node name="RightPlayerDistantRay" parent="PlayerDistantCheck" parent_id_path=PackedInt32Array(1597489123) index="1" unique_id=1377654831]
collision_mask = 161
[node name="KillingArea" parent="." index="8" unique_id=1891922549]
collision_mask = 128
+28 -15
View File
@@ -4,6 +4,7 @@ extends CharacterBody2D
signal dead signal dead
signal interacted signal interacted
signal color_switched(new_color: CollisionSwitcher.ObjectColor)
const PICKUP_OFFSET = 16.0 const PICKUP_OFFSET = 16.0
@@ -24,19 +25,23 @@ var _is_switching_needed := false
@onready var camera : Camera2D = $Camera2D @onready var camera : Camera2D = $Camera2D
@onready var water_splash : GPUParticles2D = $WaterSplash
@onready var sprite : AnimatedSprite2D = $PlayerSprite @onready var sprite : AnimatedSprite2D = $PlayerSprite
@onready var particles : GPUParticles2D = $GPUParticles2D @onready var water_splash : GPUParticles2D = $WaterSplash
@onready var blood_splash : GPUParticles2D = $BloodSplash
@onready var switch_effect : GPUParticles2D = $SwitchEffect
@onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher @onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher
@onready var pickups : Node2D = $Pickups @onready var pickups : Node2D = $Pickups
@onready var switch_buffer_timer : Timer = $SwitchBufferTimer
@onready var jump_buffer_timer : Timer = $JumpBufferTimer @onready var jump_buffer_timer : Timer = $JumpBufferTimer
@onready var coyote_time_timer : Timer = $CoyoteTimeTimer @onready var coyote_time_timer : Timer = $CoyoteTimeTimer
@onready var center_area : Area2D = $CenterArea2D @onready var center_area : Area2D = $CenterArea2D
@onready var state_machine : PlayerStateMachine = $PlayerStateMachine @onready var state_machine : PlayerStateMachine = $PlayerStateMachine
func _ready() -> void: func _ready() -> void:
collision_switcher.material = sprite.material collision_switcher.add_material(sprite.material)
state_machine.init() state_machine.init()
@@ -77,7 +82,7 @@ func _physics_process(delta: float) -> void:
else: else:
_slow_down(delta) _slow_down(delta)
if _is_switching_needed: if _is_switching_needed and not is_dead:
_switch() _switch()
move_and_slide() move_and_slide()
@@ -85,22 +90,19 @@ func _physics_process(delta: float) -> void:
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if event.is_action_pressed("switch_color") and can_switch_color and not particles.emitting: if event.is_action_pressed("switch_color") and can_switch_color and not is_dead:
_is_switching_needed = true
switch_buffer_timer.start()
_switch() _switch()
func _switch() -> void: func _switch() -> void:
_is_switching_needed = false if center_area.get_overlapping_bodies().size() == 0 and not switch_effect.emitting:
if is_dead:
return
if center_area.get_overlapping_bodies().size() == 0:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_switch, global_position) SoundManager.play_sfx_stream(SoundManager.sfx_stream_switch, global_position)
collision_switcher.switch_color() collision_switcher.switch_color()
particles.restart() switch_buffer_timer.stop()
else: switch_effect.restart()
_is_switching_needed = true _is_switching_needed = false
func kill(type := KillingArea.Type.None) -> void: func kill(type := KillingArea.Type.None) -> void:
@@ -108,6 +110,9 @@ func kill(type := KillingArea.Type.None) -> void:
KillingArea.Type.Water: KillingArea.Type.Water:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_splash, global_position) SoundManager.play_sfx_stream(SoundManager.sfx_stream_splash, global_position)
water_splash.restart() water_splash.restart()
KillingArea.Type.Cultist:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_blood, global_position)
blood_splash.restart()
is_dead = true is_dead = true
@@ -141,3 +146,11 @@ func _rearrange_pickups() -> void:
var node := children[i] as Node2D var node := children[i] as Node2D
node.position.x = i * PICKUP_OFFSET - pickup_shift node.position.x = i * PICKUP_OFFSET - pickup_shift
node.position.y = 0 node.position.y = 0
func _on_switch_buffer_timer_timeout() -> void:
_is_switching_needed = false
func _on_collision_switched(new_color: CollisionSwitcher.ObjectColor) -> void:
color_switched.emit(new_color)
+41 -6
View File
@@ -4,6 +4,7 @@
[ext_resource type="PackedScene" uid="uid://8yd8f5x1hujv" path="res://game/characters/water_splash.tscn" id="2_eeksw"] [ext_resource type="PackedScene" uid="uid://8yd8f5x1hujv" path="res://game/characters/water_splash.tscn" id="2_eeksw"]
[ext_resource type="PackedScene" uid="uid://5qlocc0yu8ug" path="res://game/collision_switcher.tscn" id="2_j06tb"] [ext_resource type="PackedScene" uid="uid://5qlocc0yu8ug" path="res://game/collision_switcher.tscn" id="2_j06tb"]
[ext_resource type="PackedScene" uid="uid://cvx6akiplg21s" path="res://game/characters/player/player_sprite.tscn" id="2_n6ad3"] [ext_resource type="PackedScene" uid="uid://cvx6akiplg21s" path="res://game/characters/player/player_sprite.tscn" id="2_n6ad3"]
[ext_resource type="Shader" uid="uid://cdakbomof1cc6" path="res://game/shaders/invert.gdshader" id="4_v4yks"]
[ext_resource type="PackedScene" uid="uid://bdk23k2bypj8w" path="res://game/characters/player/state_machine/player_state_machine.tscn" id="4_ybe51"] [ext_resource type="PackedScene" uid="uid://bdk23k2bypj8w" path="res://game/characters/player/state_machine/player_state_machine.tscn" id="4_ybe51"]
[ext_resource type="PackedScene" uid="uid://c0d4wfdg7xjti" path="res://game/characters/player/state_machine/player_state.tscn" id="5_65114"] [ext_resource type="PackedScene" uid="uid://c0d4wfdg7xjti" path="res://game/characters/player/state_machine/player_state.tscn" id="5_65114"]
[ext_resource type="Script" uid="uid://bnxccvt265hlu" path="res://game/characters/player/state_machine/idle_state.gd" id="6_3qf5w"] [ext_resource type="Script" uid="uid://bnxccvt265hlu" path="res://game/characters/player/state_machine/idle_state.gd" id="6_3qf5w"]
@@ -18,6 +19,19 @@
[ext_resource type="Script" uid="uid://cmimnl6jf78ao" path="res://game/characters/player/state_machine/falling_left_state.gd" id="14_2lnxg"] [ext_resource type="Script" uid="uid://cmimnl6jf78ao" path="res://game/characters/player/state_machine/falling_left_state.gd" id="14_2lnxg"]
[ext_resource type="Script" uid="uid://5s7ko6pcqagy" path="res://game/characters/player/state_machine/falling_right_state.gd" id="15_bfpdl"] [ext_resource type="Script" uid="uid://5s7ko6pcqagy" path="res://game/characters/player/state_machine/falling_right_state.gd" id="15_bfpdl"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_eeksw"]
shader = ExtResource("4_v4yks")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_bhunq"]
lifetime_randomness = 0.5
particle_flag_disable_z = true
emission_shape = 1
emission_sphere_radius = 2.0
spread = 15.0
initial_velocity_min = -25.0
initial_velocity_max = 25.0
gravity = Vector3(0, 9.8, 0)
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_bfpdl"] [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_bfpdl"]
particle_flag_disable_z = true particle_flag_disable_z = true
emission_shape = 3 emission_shape = 3
@@ -40,13 +54,24 @@ collision_layer = 128
collision_mask = 33 collision_mask = 33
script = ExtResource("1_xln5q") script = ExtResource("1_xln5q")
[node name="WaterSplash" parent="." unique_id=658940825 instance=ExtResource("2_eeksw")]
position = Vector2(0, -16)
[node name="PlayerSprite" parent="." unique_id=237719081 instance=ExtResource("2_n6ad3")] [node name="PlayerSprite" parent="." unique_id=237719081 instance=ExtResource("2_n6ad3")]
animation = &"jump_right" animation = &"jump_right"
[node name="GPUParticles2D" type="GPUParticles2D" parent="." unique_id=405618377] [node name="WaterSplash" parent="." unique_id=658940825 instance=ExtResource("2_eeksw")]
position = Vector2(0, -16)
[node name="BloodSplash" type="GPUParticles2D" parent="." unique_id=218762198]
material = SubResource("ShaderMaterial_eeksw")
position = Vector2(0, -4)
emitting = false
amount = 32
one_shot = true
preprocess = 0.2
explosiveness = 1.0
fixed_fps = 10
process_material = SubResource("ParticleProcessMaterial_bhunq")
[node name="SwitchEffect" type="GPUParticles2D" parent="." unique_id=405618377]
emitting = false emitting = false
amount = 16 amount = 16
lifetime = 0.25 lifetime = 0.25
@@ -59,8 +84,8 @@ process_material = SubResource("ParticleProcessMaterial_bfpdl")
position = Vector2(0, 1) position = Vector2(0, 1)
shape = SubResource("CapsuleShape2D_xln5q") shape = SubResource("CapsuleShape2D_xln5q")
[node name="CollisionSwitcher" parent="." unique_id=601548821 node_paths=PackedStringArray("object") instance=ExtResource("2_j06tb")] [node name="CollisionSwitcher" parent="." unique_id=601548821 node_paths=PackedStringArray("objects") instance=ExtResource("2_j06tb")]
object = NodePath("..") objects = [NodePath("..")]
[node name="Camera2D" type="Camera2D" parent="." unique_id=45512317] [node name="Camera2D" type="Camera2D" parent="." unique_id=45512317]
process_callback = 0 process_callback = 0
@@ -76,11 +101,18 @@ drag_bottom_margin = 0.1
[node name="Pickups" type="Node2D" parent="." unique_id=958829860] [node name="Pickups" type="Node2D" parent="." unique_id=958829860]
position = Vector2(0, -24) position = Vector2(0, -24)
[node name="SwitchBufferTimer" type="Timer" parent="." unique_id=115300327]
process_callback = 0
wait_time = 0.5
one_shot = true
[node name="JumpBufferTimer" type="Timer" parent="." unique_id=740877224] [node name="JumpBufferTimer" type="Timer" parent="." unique_id=740877224]
process_callback = 0
wait_time = 0.1 wait_time = 0.1
one_shot = true one_shot = true
[node name="CoyoteTimeTimer" type="Timer" parent="." unique_id=117837002] [node name="CoyoteTimeTimer" type="Timer" parent="." unique_id=117837002]
process_callback = 0
wait_time = 0.1 wait_time = 0.1
one_shot = true one_shot = true
@@ -240,3 +272,6 @@ jump_right_state = NodePath("../JumpRightState")
fall_state = NodePath("../FallState") fall_state = NodePath("../FallState")
fall_left_state = NodePath("../FallLeftState") fall_left_state = NodePath("../FallLeftState")
fall_right_state = NodePath("../FallRightState") fall_right_state = NodePath("../FallRightState")
[connection signal="switched" from="CollisionSwitcher" to="." method="_on_collision_switched"]
[connection signal="timeout" from="SwitchBufferTimer" to="." method="_on_switch_buffer_timer_timeout"]
+68 -27
View File
@@ -3,6 +3,15 @@ class_name CollisionSwitcher
extends Node extends Node
signal switched(new_color: CollisionSwitcher.ObjectColor)
enum ObjectColor {
White,
Black,
}
enum Collisions { enum Collisions {
GREY_WORLD = 1 << 0, GREY_WORLD = 1 << 0,
GREY_ENEMY = 1 << 4, GREY_ENEMY = 1 << 4,
@@ -37,16 +46,13 @@ const SHADER_SWITCH_COLORS = "shader_parameter/switch_colors"
const SHADER_INTENSITY = "shader_parameter/intensity" const SHADER_INTENSITY = "shader_parameter/intensity"
@export var object : CollisionObject2D @export var objects : Array[CollisionObject2D] = []
@export var initial_state := State.White @export var initial_state := State.White
var material : Material: var _materials : Array[Material]
set(value):
material = value
if is_node_ready():
_apply_color()
var _state : State: var _state : State:
set(value): set(value):
@@ -56,35 +62,43 @@ var _state : State:
var _intensity_tween : Tween var _intensity_tween : Tween
var _grey_layer := 0 var _grey_layers : Dictionary[CollisionObject2D, int] = {}
var _color_layer := 0 var _color_layers : Dictionary[CollisionObject2D, int] = {}
var _grey_mask := 0 var _grey_masks : Dictionary[CollisionObject2D, int] = {}
var _color_mask := 0 var _color_masks : Dictionary[CollisionObject2D, int] = {}
func _ready() -> void: func _ready() -> void:
_grey_layer = _get_grey_collision(object.collision_layer) for object in objects:
_color_layer = _get_color_collision(object.collision_layer) _grey_layers[object] = _get_grey_collision(object.collision_layer)
_color_layers[object] = _get_color_collision(object.collision_layer)
_grey_mask = _get_grey_collision(object.collision_mask) _grey_masks[object] = _get_grey_collision(object.collision_mask)
_color_mask = _get_color_collision(object.collision_mask) _color_masks[object] = _get_color_collision(object.collision_mask)
_state = initial_state _state = initial_state
_apply_color() _apply_color()
func add_material(material: Material) -> void:
_materials.append(material)
_apply_color_to_material(material)
func switch_color(switch_time := 0.0) -> void: func switch_color(switch_time := 0.0) -> void:
if _intensity_tween != null and _intensity_tween.is_running(): return #TODO if _intensity_tween != null and _intensity_tween.is_running(): return #TODO
if is_zero_approx(switch_time): if is_zero_approx(switch_time):
_state = State.Black if _state == State.White else State.White _state = State.Black if _state == State.White else State.White
_emit_switch_signal()
else: else:
_state = State.TransitionToBlack if _state == State.White else State.TransitionToWhite _state = State.TransitionToBlack if _state == State.White else State.TransitionToWhite
_intensity_tween = create_tween() _intensity_tween = create_tween()
_intensity_tween.tween_method(_set_shader_internsity, 0.0, MAX_INTENSITY, switch_time) _intensity_tween.tween_method(_set_shader_internsity, 0.0, MAX_INTENSITY, switch_time) \
.set_ease(Tween.EASE_OUT_IN) \
.set_trans(Tween.TRANS_SINE)
_intensity_tween.finished.connect(_update_state) _intensity_tween.finished.connect(_update_state)
@@ -99,7 +113,8 @@ func _get_color_collision(collision: int) -> int:
func _set_shader_internsity(value: float) -> void: func _set_shader_internsity(value: float) -> void:
material.set(SHADER_INTENSITY, value) for material in _materials:
material.set(SHADER_INTENSITY, value)
func _update_state() -> void: func _update_state() -> void:
@@ -108,26 +123,52 @@ func _update_state() -> void:
_state = State.Black _state = State.Black
State.TransitionToWhite: State.TransitionToWhite:
_state = State.White _state = State.White
_emit_switch_signal()
func _apply_color() -> void: func _apply_color() -> void:
for object in objects:
_apply_color_to_object(object)
for material in _materials:
_apply_color_to_material(material)
func _apply_color_to_object(object: CollisionObject2D) -> void:
var layer := 0 var layer := 0
var mask := 0 var mask := 0
var grey_layer := _grey_layers[object]
var color_layer := _color_layers[object]
var grey_mask := _grey_masks[object]
var color_mask := _color_masks[object]
match _state: match _state:
State.Black: State.Black:
layer = _grey_layer | _color_layer layer = grey_layer | color_layer
mask = _grey_mask | _color_mask mask = grey_mask | color_mask
State.White: State.White:
layer = _grey_layer | (_color_layer << COLLISION_WHITE_SHIFT) layer = grey_layer | (color_layer << COLLISION_WHITE_SHIFT)
mask = _grey_mask | (_color_mask << COLLISION_WHITE_SHIFT) mask = grey_mask | (color_mask << COLLISION_WHITE_SHIFT)
State.TransitionToBlack, State.TransitionToWhite: State.TransitionToBlack, State.TransitionToWhite:
layer = _grey_layer | _color_layer | (_color_layer << COLLISION_WHITE_SHIFT) layer = grey_layer | color_layer | (color_layer << COLLISION_WHITE_SHIFT)
mask = _grey_mask | _color_mask | (_color_mask << COLLISION_WHITE_SHIFT) mask = grey_mask | color_mask | (color_mask << COLLISION_WHITE_SHIFT)
object.collision_layer = layer object.collision_layer = layer
object.collision_mask = mask object.collision_mask = mask
if material != null:
var is_black := _state == State.Black or _state == State.TransitionToBlack func _apply_color_to_material(material: Material) -> void:
material.set(SHADER_SWITCH_COLORS, is_black) var is_black := _state == State.Black or _state == State.TransitionToBlack
material.set(SHADER_SWITCH_COLORS, is_black)
func _emit_switch_signal() -> void:
var color : ObjectColor
match _state:
State.White:
color = ObjectColor.White
State.Black:
color = ObjectColor.Black
_:
return
switched.emit(color)
+1
View File
@@ -1,3 +1,4 @@
@tool
class_name BookDoor class_name BookDoor
extends LockedDoor extends LockedDoor
+1
View File
@@ -1,3 +1,4 @@
@tool
class_name CircleDoor class_name CircleDoor
extends LockedDoor extends LockedDoor
+14
View File
@@ -1,3 +1,4 @@
@tool
class_name Door class_name Door
extends Node2D extends Node2D
@@ -8,6 +9,13 @@ const ANIMATION_OPENING = "opening"
const ANIMATION_CLOSING = "closing" const ANIMATION_CLOSING = "closing"
@export var use_shader := true:
set(value):
use_shader = value
if is_node_ready():
_update_shader()
var _needed_to_be_open := false var _needed_to_be_open := false
var _needed_to_be_closed := false var _needed_to_be_closed := false
@@ -19,6 +27,7 @@ var _needed_to_be_closed := false
func _ready() -> void: func _ready() -> void:
_update_shader()
sprite.play(ANIMATION_CLOSED) sprite.play(ANIMATION_CLOSED)
@@ -50,6 +59,11 @@ func _close() -> void:
static_body.process_mode = Node.PROCESS_MODE_INHERIT static_body.process_mode = Node.PROCESS_MODE_INHERIT
func _update_shader() -> void:
var intensity := 0.5 if use_shader else 1.0
sprite.material.set(CollisionSwitcher.SHADER_INTENSITY, intensity)
func _on_animation_finished() -> void: func _on_animation_finished() -> void:
match sprite.animation: match sprite.animation:
ANIMATION_OPENING: ANIMATION_OPENING:
+15 -15
View File
@@ -1,14 +1,14 @@
[gd_scene load_steps=15 format=3 uid="uid://b7mhdrj3b6loq"] [gd_scene format=3 uid="uid://b7mhdrj3b6loq"]
[ext_resource type="Script" uid="uid://5uqub2a6701b" path="res://game/doors/door.gd" id="1_vx1od"] [ext_resource type="Script" uid="uid://5uqub2a6701b" path="res://game/doors/door.gd" id="1_vx1od"]
[ext_resource type="Material" uid="uid://dojhoc6ljpt1a" path="res://game/materials/walls_gray.tres" id="1_xelsh"] [ext_resource type="Material" uid="uid://dojhoc6ljpt1a" path="res://game/materials/walls_gray.tres" id="1_xelsh"]
[ext_resource type="Texture2D" uid="uid://sfjjweantpja" path="res://images/level/doors.png" id="3_ymlcn"] [ext_resource type="Texture2D" uid="uid://sfjjweantpja" path="res://images/level/doors.png" id="3_ymlcn"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cs8ri"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_cs8ri"]
size = Vector2(9, 48) size = Vector2(6, 38)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_u7b5a"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_u7b5a"]
size = Vector2(48, 48) size = Vector2(36, 38)
[sub_resource type="AtlasTexture" id="AtlasTexture_5nqrw"] [sub_resource type="AtlasTexture" id="AtlasTexture_5nqrw"]
atlas = ExtResource("3_ymlcn") atlas = ExtResource("3_ymlcn")
@@ -48,7 +48,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_5nqrw") "texture": SubResource("AtlasTexture_5nqrw")
}], }],
"loop": true, "loop": 1,
"name": &"closed", "name": &"closed",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -62,7 +62,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_4vug2") "texture": SubResource("AtlasTexture_4vug2")
}], }],
"loop": false, "loop": 0,
"name": &"closing", "name": &"closing",
"speed": 10.0 "speed": 10.0
}, { }, {
@@ -70,7 +70,7 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_ymlcn") "texture": SubResource("AtlasTexture_ymlcn")
}], }],
"loop": true, "loop": 1,
"name": &"open", "name": &"open",
"speed": 5.0 "speed": 5.0
}, { }, {
@@ -84,34 +84,34 @@ animations = [{
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_j83fq") "texture": SubResource("AtlasTexture_j83fq")
}], }],
"loop": false, "loop": 0,
"name": &"opening", "name": &"opening",
"speed": 10.0 "speed": 10.0
}] }]
[node name="Door" type="Node2D"] [node name="Door" type="Node2D" unique_id=2006466960]
script = ExtResource("1_vx1od") script = ExtResource("1_vx1od")
[node name="StaticBody2D" type="StaticBody2D" parent="."] [node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=584436734]
position = Vector2(-8.5, 0)
[node name="StaticBodyCollision" type="CollisionShape2D" parent="StaticBody2D"] [node name="StaticBodyCollision" type="CollisionShape2D" parent="StaticBody2D" unique_id=193176175]
unique_name_in_owner = true unique_name_in_owner = true
shape = SubResource("RectangleShape2D_cs8ri") shape = SubResource("RectangleShape2D_cs8ri")
[node name="Area2D" type="Area2D" parent="."] [node name="Area2D" type="Area2D" parent="." unique_id=371280403]
position = Vector2(-8.5, 0)
collision_layer = 0 collision_layer = 0
collision_mask = 136 collision_mask = 136
[node name="AreaCollision" type="CollisionShape2D" parent="Area2D"] [node name="AreaCollision" type="CollisionShape2D" parent="Area2D" unique_id=853891699]
unique_name_in_owner = true unique_name_in_owner = true
shape = SubResource("RectangleShape2D_u7b5a") shape = SubResource("RectangleShape2D_u7b5a")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1718827818]
material = ExtResource("1_xelsh") material = ExtResource("1_xelsh")
position = Vector2(8, -5)
sprite_frames = SubResource("SpriteFrames_r8rhb") sprite_frames = SubResource("SpriteFrames_r8rhb")
animation = &"closed" animation = &"closed"
frame_progress = 0.23665914
[connection signal="body_entered" from="Area2D" to="." method="_on_area_entered"] [connection signal="body_entered" from="Area2D" to="." method="_on_area_entered"]
[connection signal="body_exited" from="Area2D" to="." method="_on_area_exited"] [connection signal="body_exited" from="Area2D" to="." method="_on_area_exited"]
+1
View File
@@ -1,3 +1,4 @@
@tool
extends Door extends Door
+1
View File
@@ -1,3 +1,4 @@
@tool
class_name LockedDoor class_name LockedDoor
extends Door extends Door
+1
View File
@@ -1,3 +1,4 @@
@tool
class_name SquareDoor class_name SquareDoor
extends LockedDoor extends LockedDoor
+1
View File
@@ -1,3 +1,4 @@
@tool
class_name TriagleDoor class_name TriagleDoor
extends LockedDoor extends LockedDoor
+1
View File
@@ -5,6 +5,7 @@ extends Area2D
enum Type { enum Type {
None, None,
Water, Water,
Cultist,
} }
+16 -492
View File
@@ -3,8 +3,7 @@
[ext_resource type="Script" uid="uid://c737mx0kxva7i" path="res://game/levels/abstract_level.gd" id="1_o2mui"] [ext_resource type="Script" uid="uid://c737mx0kxva7i" path="res://game/levels/abstract_level.gd" id="1_o2mui"]
[ext_resource type="PackedScene" uid="uid://dtcad8tdx78tg" path="res://game/characters/player/player.tscn" id="2_r0ht6"] [ext_resource type="PackedScene" uid="uid://dtcad8tdx78tg" path="res://game/characters/player/player.tscn" id="2_r0ht6"]
[ext_resource type="PackedScene" uid="uid://dqu87loahl7wn" path="res://game/tiles/walls.tscn" id="3_3fw0b"] [ext_resource type="PackedScene" uid="uid://dqu87loahl7wn" path="res://game/tiles/walls.tscn" id="3_3fw0b"]
[ext_resource type="Texture2D" uid="uid://due8mmt5ww1sf" path="res://images/level/walls.png" id="3_fnnmn"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="4_3fw0b"]
[ext_resource type="Material" uid="uid://dojhoc6ljpt1a" path="res://game/materials/walls_gray.tres" id="3_pi5fd"]
[ext_resource type="Material" uid="uid://d2o2o1w8kb51g" path="res://game/materials/walls_white.tres" id="5_6b8cu"] [ext_resource type="Material" uid="uid://d2o2o1w8kb51g" path="res://game/materials/walls_white.tres" id="5_6b8cu"]
[ext_resource type="PackedScene" uid="uid://nfgx201cn4ti" path="res://game/tiles/traps.tscn" id="5_b7vts"] [ext_resource type="PackedScene" uid="uid://nfgx201cn4ti" path="res://game/tiles/traps.tscn" id="5_b7vts"]
[ext_resource type="Material" uid="uid://bhksbugqhxxa0" path="res://game/materials/walls_black.tres" id="6_x8k35"] [ext_resource type="Material" uid="uid://bhksbugqhxxa0" path="res://game/materials/walls_black.tres" id="6_x8k35"]
@@ -12,494 +11,22 @@
[ext_resource type="PackedScene" uid="uid://84lhc3yn8vub" path="res://game/menu/game_over_menu.tscn" id="8_b7vts"] [ext_resource type="PackedScene" uid="uid://84lhc3yn8vub" path="res://game/menu/game_over_menu.tscn" id="8_b7vts"]
[ext_resource type="PackedScene" uid="uid://bareycqj42c6e" path="res://game/menu/completion_menu.tscn" id="11_3fw0b"] [ext_resource type="PackedScene" uid="uid://bareycqj42c6e" path="res://game/menu/completion_menu.tscn" id="11_3fw0b"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8ydah"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_8xgvj"]
texture = ExtResource("3_fnnmn") resource_local_to_scene = true
0:0/0 = 0 shader = ExtResource("4_3fw0b")
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, -8, -8, 8, -3, 8, -3, -3, 8, -3, 8, -8) shader_parameter/black_color = Color(0, 0, 0, 1)
1:0/0 = 0 shader_parameter/white_color = Color(1, 1, 1, 1)
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3) shader_parameter/switch_colors = false
2:0/0 = 0 shader_parameter/threshold = 0.5
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3) shader_parameter/speed = 0.5
3:0/0 = 0 shader_parameter/intensity = 0.5
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, 3, 8, 3, 8, 8, 3, 8) shader_parameter/scale = 0.1
4:0/0 = 0 shader_parameter/seed = 0.0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, -3, 3, -3, 8, -8, 8) shader_parameter/direction = Vector2(1, 1)
5:0/0 = 0 shader_parameter/use_world_pos = true
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:0/0 = 0
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:1/0 = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
2:1/0 = 0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, 3, 8)
3:1/0 = 0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, -3, 3, -3)
4:1/0 = 0
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, -3, -8, -3, -8, -8)
5:1/0 = 0
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:1/0 = 0
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:2/0 = 0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
1:2/0 = 0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
2:2/0 = 0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8, -8, 3, 3, 3, 3, -8)
3:2/0 = 0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:2/0 = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:2/0 = 0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:2/0 = 0
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:3/0 = 0
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
1:3/0 = 0
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, -3, 8, -3, 8, -8)
2:3/0 = 0
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
3:3/0 = 0
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, -8, 8, 8, 8, 8, 3)
4:3/0 = 0
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:3/0 = 0
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:3/0 = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 8, 8, 8, 8, -8)
6:4/0 = 0
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
5:5/0 = 0
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
4:5/0 = 0
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 3, -8, 3, -8, 8, 8, 8, 8, -8)
3:5/0 = 0
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
2:5/0 = 0
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, -8, 8, -8, 3, 3, 3)
1:5/0 = 0
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
0:5/0 = 0
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, -8, 8, -8, 3, 3, 3)
0:4/0 = 0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
1:4/0 = 0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
2:4/0 = 0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
3:4/0 = 0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
4:4/0 = 0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
5:4/0 = 0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, 3, 8)
0:6/0 = 0
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
1:6/0 = 0
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
2:6/0 = 0
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
7:0/0 = 0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:0/0 = 0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:1/0 = 0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:1/0 = 0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:2/0 = 0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:2/0 = 0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:3/0 = 0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:3/0 = 0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:4/0 = 0
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:4/0 = 0
8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:5/0 = 0
8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:5/0 = 0
7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:6/0 = 0
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
4:6/0 = 0
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
5:6/0 = 0
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
6:6/0 = 0
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 3, 3, 3, -8, 8, -8, 8, 8, -8, 8)
7:6/0 = 0
7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:6/0 = 0
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:7/0 = 0
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:7/0 = 0
7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
6:7/0 = 0
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, -8, -8, -8, 8, -3, 8, -3, -3, 8, -3)
5:7/0 = 0
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
4:7/0 = 0
4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 3, -8, 3, -8, 8, 8, 8, 8, -8)
3:7/0 = 0
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, -3, 8, -3, 8, -8)
3:7/0/physics_layer_0/polygon_1/points = PackedVector2Array(-8, 3, -3, 3, -3, 8, -8, 8)
2:7/0 = 0
2:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, -3, -8, -3, -8, -8)
2:7/0/physics_layer_0/polygon_1/points = PackedVector2Array(3, 3, 8, 3, 8, 8, 3, 8)
1:7/0 = 0
1:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
0:7/0 = 0
0:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
0:8/0 = 0
0:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 8, -8, -8, 8, -8, 8, -3, -3, -3, -3, 8)
1:8/0 = 0
1:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
2:8/0 = 0
2:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:8/0 = 0
3:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
4:8/0 = 0
4:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8, -8, 3, 3, 3, 3, -8)
5:8/0 = 0
5:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
[sub_resource type="TileSet" id="TileSet_8xgvj"]
physics_layer_0/collision_layer = 1
physics_layer_0/collision_mask = 0
sources/0 = SubResource("TileSetAtlasSource_8ydah")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_3fw0b"]
texture = ExtResource("3_fnnmn")
0:0/0 = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, -8, -8, 8, -3, 8, -3, -3, 8, -3, 8, -8)
1:0/0 = 0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
2:0/0 = 0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
3:0/0 = 0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, 3, 8, 3, 8, 8, 3, 8)
4:0/0 = 0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, -3, 3, -3, 8, -8, 8)
5:0/0 = 0
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:0/0 = 0
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:1/0 = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
2:1/0 = 0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, 3, 8)
3:1/0 = 0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, -3, 3, -3)
4:1/0 = 0
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, -3, -8, -3, -8, -8)
5:1/0 = 0
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:1/0 = 0
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:2/0 = 0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
1:2/0 = 0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
2:2/0 = 0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8, -8, 3, 3, 3, 3, -8)
3:2/0 = 0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:2/0 = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:2/0 = 0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:2/0 = 0
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:3/0 = 0
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
1:3/0 = 0
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, -3, 8, -3, 8, -8)
2:3/0 = 0
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
3:3/0 = 0
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, -8, 8, 8, 8, 8, 3)
4:3/0 = 0
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:3/0 = 0
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:3/0 = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 8, 8, 8, 8, -8)
6:4/0 = 0
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
5:5/0 = 0
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
4:5/0 = 0
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 3, -8, 3, -8, 8, 8, 8, 8, -8)
3:5/0 = 0
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
2:5/0 = 0
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, -8, 8, -8, 3, 3, 3)
1:5/0 = 0
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
0:5/0 = 0
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, -8, 8, -8, 3, 3, 3)
0:4/0 = 0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
1:4/0 = 0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
2:4/0 = 0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
3:4/0 = 0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
4:4/0 = 0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
5:4/0 = 0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, 3, 8)
0:6/0 = 0
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
1:6/0 = 0
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
2:6/0 = 0
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
7:0/0 = 0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:0/0 = 0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:1/0 = 0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:1/0 = 0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:2/0 = 0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:2/0 = 0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:3/0 = 0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:3/0 = 0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:4/0 = 0
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:4/0 = 0
8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:5/0 = 0
8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:5/0 = 0
7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:6/0 = 0
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
4:6/0 = 0
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
5:6/0 = 0
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
6:6/0 = 0
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 3, 3, 3, -8, 8, -8, 8, 8, -8, 8)
7:6/0 = 0
7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:6/0 = 0
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:7/0 = 0
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:7/0 = 0
7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
6:7/0 = 0
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, -8, -8, -8, 8, -3, 8, -3, -3, 8, -3)
5:7/0 = 0
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
4:7/0 = 0
4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 3, -8, 3, -8, 8, 8, 8, 8, -8)
3:7/0 = 0
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, -3, 8, -3, 8, -8)
3:7/0/physics_layer_0/polygon_1/points = PackedVector2Array(-8, 3, -3, 3, -3, 8, -8, 8)
2:7/0 = 0
2:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, -3, -8, -3, -8, -8)
2:7/0/physics_layer_0/polygon_1/points = PackedVector2Array(3, 3, 8, 3, 8, 8, 3, 8)
1:7/0 = 0
1:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
0:7/0 = 0
0:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
0:8/0 = 0
0:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 8, -8, -8, 8, -8, 8, -3, -3, -3, -3, 8)
1:8/0 = 0
1:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
2:8/0 = 0
2:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:8/0 = 0
3:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
4:8/0 = 0
4:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8, -8, 3, 3, 3, 3, -8)
5:8/0 = 0
5:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
[sub_resource type="TileSet" id="TileSet_un604"]
physics_layer_0/collision_layer = 2
physics_layer_0/collision_mask = 0
sources/0 = SubResource("TileSetAtlasSource_3fw0b")
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_rvm7w"]
texture = ExtResource("3_fnnmn")
0:0/0 = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, -8, -8, 8, -3, 8, -3, -3, 8, -3, 8, -8)
1:0/0 = 0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
2:0/0 = 0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
3:0/0 = 0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, 3, 8, 3, 8, 8, 3, 8)
4:0/0 = 0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, -3, 3, -3, 8, -8, 8)
5:0/0 = 0
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:0/0 = 0
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:1/0 = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
2:1/0 = 0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, 3, 8)
3:1/0 = 0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, -3, 3, -3)
4:1/0 = 0
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, -3, -8, -3, -8, -8)
5:1/0 = 0
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:1/0 = 0
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:2/0 = 0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
1:2/0 = 0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
2:2/0 = 0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8, -8, 3, 3, 3, 3, -8)
3:2/0 = 0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
4:2/0 = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:2/0 = 0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:2/0 = 0
6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
0:3/0 = 0
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
1:3/0 = 0
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -8, -3, 8, -3, 8, -8)
2:3/0 = 0
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
3:3/0 = 0
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, -8, 8, 8, 8, 8, 3)
4:3/0 = 0
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
5:3/0 = 0
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
6:3/0 = 0
6:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 8, 8, 8, 8, -8)
6:4/0 = 0
6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
5:5/0 = 0
5:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
4:5/0 = 0
4:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 3, -8, 3, -8, 8, 8, 8, 8, -8)
3:5/0 = 0
3:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
2:5/0 = 0
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, -8, 8, -8, 3, 3, 3)
1:5/0 = 0
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 3, 8, 3, 8, 8, -8, 8)
0:5/0 = 0
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, -8, 8, -8, 3, 3, 3)
0:4/0 = 0
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
1:4/0 = 0
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
2:4/0 = 0
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
3:4/0 = 0
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
4:4/0 = 0
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -3, -8, -3, 8, -8, 8)
5:4/0 = 0
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 8, -8, 8, 8, 3, 8)
0:6/0 = 0
0:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
1:6/0 = 0
1:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
2:6/0 = 0
2:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
7:0/0 = 0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:0/0 = 0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:1/0 = 0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:1/0 = 0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:2/0 = 0
7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:2/0 = 0
8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:3/0 = 0
8:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:3/0 = 0
7:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:4/0 = 0
7:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:4/0 = 0
8:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:5/0 = 0
8:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:5/0 = 0
7:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:6/0 = 0
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -3, -3, -3, 8, -8, 8)
4:6/0 = 0
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
5:6/0 = 0
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
6:6/0 = 0
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 3, 3, 3, -8, 8, -8, 8, 8, -8, 8)
7:6/0 = 0
7:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:6/0 = 0
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
8:7/0 = 0
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
7:7/0 = 0
7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
6:7/0 = 0
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, -8, -8, -8, 8, -3, 8, -3, -3, 8, -3)
5:7/0 = 0
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
4:7/0 = 0
4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, 3, -8, 3, -8, 8, 8, 8, 8, -8)
3:7/0 = 0
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(3, -8, 3, -3, 8, -3, 8, -8)
3:7/0/physics_layer_0/polygon_1/points = PackedVector2Array(-8, 3, -3, 3, -3, 8, -8, 8)
2:7/0 = 0
2:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, -3, -8, -3, -8, -8)
2:7/0/physics_layer_0/polygon_1/points = PackedVector2Array(3, 3, 8, 3, 8, 8, 3, 8)
1:7/0 = 0
1:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 3, 8, 3, 8, 8, -8, 8)
0:7/0 = 0
0:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -3, -8, -3)
0:8/0 = 0
0:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 8, -8, -8, 8, -8, 8, -3, -3, -3, -3, 8)
1:8/0 = 0
1:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, 3, 8, 3, -3, -8, -3)
2:8/0 = 0
2:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
3:8/0 = 0
3:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-3, -8, -3, 3, 8, 3, 8, 8, -8, 8, -8, -8)
4:8/0 = 0
4:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 8, -8, 8, -8, 3, 3, 3, 3, -8)
5:8/0 = 0
5:8/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
[sub_resource type="TileSet" id="TileSet_jsd6f"]
physics_layer_0/collision_layer = 32
physics_layer_0/collision_mask = 0
sources/0 = SubResource("TileSetAtlasSource_rvm7w")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_3fw0b"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_3fw0b"]
size = Vector2(32, 32) size = Vector2(38, 38)
[node name="AbstractLevel" type="Node2D" unique_id=1364620575] [node name="AbstractLevel" type="Node2D" unique_id=1364620575]
script = ExtResource("1_o2mui") script = ExtResource("1_o2mui")
@@ -521,16 +48,13 @@ script = ExtResource("1_o2mui")
[node name="Tiles" type="Node2D" parent="." unique_id=1626037498] [node name="Tiles" type="Node2D" parent="." unique_id=1626037498]
[node name="GrayWalls" parent="Tiles" unique_id=557672309 instance=ExtResource("3_3fw0b")] [node name="GrayWalls" parent="Tiles" unique_id=557672309 instance=ExtResource("3_3fw0b")]
material = ExtResource("3_pi5fd") material = SubResource("ShaderMaterial_8xgvj")
tile_set = SubResource("TileSet_8xgvj")
[node name="BlackWalls" parent="Tiles" unique_id=1250602228 instance=ExtResource("3_3fw0b")] [node name="BlackWalls" parent="Tiles" unique_id=1250602228 instance=ExtResource("3_3fw0b")]
material = ExtResource("6_x8k35") material = ExtResource("6_x8k35")
tile_set = SubResource("TileSet_un604")
[node name="WhiteWalls" parent="Tiles" unique_id=940613078 instance=ExtResource("3_3fw0b")] [node name="WhiteWalls" parent="Tiles" unique_id=940613078 instance=ExtResource("3_3fw0b")]
material = ExtResource("5_6b8cu") material = ExtResource("5_6b8cu")
tile_set = SubResource("TileSet_jsd6f")
[node name="Traps" parent="Tiles" unique_id=635748436 instance=ExtResource("5_b7vts")] [node name="Traps" parent="Tiles" unique_id=635748436 instance=ExtResource("5_b7vts")]
+127 -113
View File
File diff suppressed because one or more lines are too long
+236 -110
View File
File diff suppressed because one or more lines are too long
+168
View File
@@ -0,0 +1,168 @@
[gd_scene format=4 uid="uid://cc06c06hlv7ix"]
[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/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"]
size = Vector2(224, 8)
[node name="Level2" unique_id=840940252 instance=ExtResource("1_t037v")]
[node name="LockedDoor" parent="Doors" parent_id_path=PackedInt32Array(1468144392) index="0" unique_id=260812823 instance=ExtResource("2_iakit")]
position = Vector2(-48, 296)
[node name="TunnelEntranceDoor" parent="Doors" parent_id_path=PackedInt32Array(1468144392) index="1" unique_id=1638160812 instance=ExtResource("3_ylsm2")]
position = Vector2(670, 440)
[node name="TunnelExitDoor" parent="Doors" parent_id_path=PackedInt32Array(1468144392) index="2" unique_id=330998146 instance=ExtResource("3_ylsm2")]
position = Vector2(963, 440)
[node name="Room1" type="Node2D" parent="Objects" parent_id_path=PackedInt32Array(1320033435) index="0" unique_id=1940245808]
position = Vector2(45, 272)
[node name="SwitchActionTip" parent="Objects/Room1" index="0" unique_id=1162424532 instance=ExtResource("4_xx77b")]
position = Vector2(57, -11)
[node name="MirrorL" parent="Objects/Room1" index="1" unique_id=1018611812 instance=ExtResource("5_bxukv")]
position = Vector2(0, 20)
[node name="Cabinet" parent="Objects/Room1" index="2" unique_id=1667173563 instance=ExtResource("5_uivyf")]
position = Vector2(0, 37)
[node name="Room2" type="Node2D" parent="Objects" parent_id_path=PackedInt32Array(1320033435) index="1" unique_id=965760986]
position = Vector2(244, 268)
[node name="ChairF1" parent="Objects/Room2" index="0" unique_id=1244225115 instance=ExtResource("6_go8g1")]
position = Vector2(-7, 38)
[node name="ChairF2" parent="Objects/Room2" index="1" unique_id=1055347084 instance=ExtResource("6_go8g1")]
position = Vector2(10, 38)
[node name="ChairR" parent="Objects/Room2" index="2" unique_id=303868742 instance=ExtResource("8_2a8w4")]
position = Vector2(-19, 38)
[node name="Plate" parent="Objects/Room2" index="3" unique_id=1006179530 instance=ExtResource("10_7s8yo")]
position = Vector2(6, 33)
[node name="TableM" parent="Objects/Room2" index="4" unique_id=2013142431 instance=ExtResource("7_2a8w4")]
position = Vector2(1, 43)
[node name="ChairB" parent="Objects/Room2" index="5" unique_id=783197386 instance=ExtResource("10_ylsm2")]
position = Vector2(1, 38)
[node name="ChairL" parent="Objects/Room2" index="6" unique_id=1185316526 instance=ExtResource("11_7c6gx")]
position = Vector2(83, 38)
[node name="Room3" type="Node2D" parent="Objects" parent_id_path=PackedInt32Array(1320033435) index="2" unique_id=2108329661]
position = Vector2(309, 408)
[node name="MirrorL" parent="Objects/Room3" index="0" unique_id=1626082225 instance=ExtResource("5_bxukv")]
position = Vector2(42, 28)
[node name="Cabinet1" parent="Objects/Room3" index="1" unique_id=490256385 instance=ExtResource("5_uivyf")]
position = Vector2(42, 45)
[node name="Cabinet2" parent="Objects/Room3" index="2" unique_id=2079902971 instance=ExtResource("5_uivyf")]
position = Vector2(145, 45)
[node name="Wardrobe1" parent="Objects/Room3" index="3" unique_id=564708342 instance=ExtResource("13_7c6gx")]
position = Vector2(-64, 34)
[node name="Wardrobe2" parent="Objects/Room3" index="4" unique_id=1492059704 instance=ExtResource("13_7c6gx")]
position = Vector2(-97, 34)
[node name="Wardrobe3" parent="Objects/Room3" index="5" unique_id=1911986622 instance=ExtResource("13_7c6gx")]
position = Vector2(-31, 34)
[node name="ChairB" parent="Objects/Room3" index="6" unique_id=1469500400 instance=ExtResource("10_ylsm2")]
position = Vector2(43, 42)
[node name="Room4" type="Node2D" parent="Objects" parent_id_path=PackedInt32Array(1320033435) index="3" unique_id=550870217]
position = Vector2(589, 430)
[node name="PaintingHL" parent="Objects/Room4" index="0" unique_id=1371296774 instance=ExtResource("14_u51cf")]
position = Vector2(0, -15)
[node name="ChairL" parent="Objects/Room4" index="1" unique_id=1485330081 instance=ExtResource("11_7c6gx")]
position = Vector2(-70, 20)
[node name="FlaskS1" parent="Objects/Room4" index="2" unique_id=916310165 instance=ExtResource("16_v8xjl")]
position = Vector2(-87, 10)
[node name="FlaskS2" parent="Objects/Room4" index="3" unique_id=337670743 instance=ExtResource("16_v8xjl")]
position = Vector2(-78, 10)
[node name="FlaskS3" parent="Objects/Room4" index="4" unique_id=1299986928 instance=ExtResource("16_v8xjl")]
position = Vector2(-83, 10)
[node name="TableS" parent="Objects/Room4" index="5" unique_id=1423743230 instance=ExtResource("15_cys5i")]
position = Vector2(-80, 25)
[node name="Room5" type="Node2D" parent="Objects" parent_id_path=PackedInt32Array(1320033435) index="4" unique_id=1126502668]
position = Vector2(1073, 410)
[node name="PaintingVL1" parent="Objects/Room5" index="0" unique_id=122380257 instance=ExtResource("16_ddwrs")]
position = Vector2(-63, -12)
[node name="PaintingVL2" parent="Objects/Room5" index="1" unique_id=613659926 instance=ExtResource("16_ddwrs")]
position = Vector2(61, -3)
[node name="PaintingVL3" parent="Objects/Room5" index="2" unique_id=2001285537 instance=ExtResource("16_ddwrs")]
position = Vector2(-5, 4)
[node name="Room6" type="Node2D" parent="Objects" parent_id_path=PackedInt32Array(1320033435) index="5" unique_id=660805563]
position = Vector2(1320, 406)
[node name="Wardrobe" parent="Objects/Room6" index="0" unique_id=668051858 instance=ExtResource("13_7c6gx")]
position = Vector2(-77, 36)
[node name="MirrorS" parent="Objects/Room6" index="1" unique_id=2080883588 instance=ExtResource("17_ddwrs")]
position = Vector2(-4, 37)
[node name="Chair" parent="Objects/Room6" index="2" unique_id=2117760164 instance=ExtResource("6_go8g1")]
position = Vector2(-42, 44)
[node name="TableS" parent="Objects/Room6" index="3" unique_id=311193464 instance=ExtResource("15_cys5i")]
position = Vector2(-43, 49)
[node name="Cabinet" parent="Objects/Room6" index="4" unique_id=1302842880 instance=ExtResource("5_uivyf")]
position = Vector2(32, 47)
[node name="GrayWalls" parent="Tiles" parent_id_path=PackedInt32Array(1626037498) index="0" unique_id=557672309]
tile_map_data = PackedByteArray("AAD+//T/AAACAAEAAAD+//X/AAACAAEAAAD+//b/AAACAAEAAAD+//f/AAACAAEAAAD+//j/AAACAAEAAAD+//n/AAACAAEAAAD+//r/AAACAAEAAAD+//v/AAACAAEAAAD+//z/AAACAAEAAAD+//3/AAACAAEAAAD+//7/AAACAAEAAAD+////AAACAAEAAAD+/wAAAAACAAEAAAD+/wEAAAACAAEAAAD+/wIAAAACAAEAAAD+/wMAAAACAAEAAAD+/wQAAAACAAEAAAD+/wUAAAACAAEAAAD+/wYAAAACAAEAAAD+/wcAAAACAAEAAAD+/wgAAAACAAEAAAD+/wkAAAACAAEAAAD+/woAAAACAAEAAAD+/wsAAAACAAEAAAABAPT/AAAAAAEAAAABAPX/AAAAAAEAAAABAPb/AAAAAAEAAAABAPf/AAAAAAEAAAABAPj/AAAAAAEAAAABAPn/AAAAAAEAAAABAPr/AAAAAAEAAAABAPv/AAAAAAEAAAABAPz/AAAAAAEAAAABAP3/AAAAAAEAAAABAP7/AAAAAAEAAAABAP//AAAAAAEAAAABAAAAAAAAAAEAAAABAAEAAAAAAAEAAAABAAIAAAAAAAEAAAABAAMAAAAAAAEAAAABAAQAAAAAAAEAAAABAAUAAAAAAAEAAAABAAYAAAAAAAEAAAABAAcAAAAAAAEAAAABAAgAAAAAAAEAAAABAAkAAAAAAAEAAAABAAoAAAAAAAEAAAABAAsAAAAAAAEAAAD8/xAAAAACAAIAAAD8/xQAAAABAAAAAAD9/xQAAAABAAAAAAD+/xQAAAABAAAAAAD//xQAAAABAAAAAAAAABQAAAABAAAAAAABABQAAAABAAAAAAACABQAAAABAAAAAAADABQAAAABAAAAAAAEABQAAAABAAAAAAAFABQAAAABAAAAAAAGABQAAAABAAAAAAAHABQAAAABAAAAAAAIABQAAAABAAAAAAAJABQAAAABAAAAAAAKABQAAAABAAAAAAD8/w8AAAACAAEAAAAVAA8AAAAAAAEAAAAVABAAAAAAAAEAAAAVABEAAAAAAAEAAAAVABIAAAAAAAEAAAAVABMAAAAAAAEAAAALABQAAAABAAAAAAAMABQAAAACAAAAAAASABQAAAAAAAAAAAATABQAAAABAAAAAAAUABQAAAABAAAAAAALABYAAAACAAEAAAALABcAAAACAAEAAAALABgAAAACAAEAAAALABkAAAACAAEAAAALABoAAAACAAEAAAALABsAAAACAAEAAAALABwAAAACAAEAAAAVABQAAAAEAAEAAAAMABUAAAACAAUAAAASABUAAAADAAUAAAALABUAAAADAAAAAAAMAB0AAAABAAAAAAANAB0AAAABAAAAAAAOAB0AAAABAAAAAAAPAB0AAAABAAAAAAAQAB0AAAABAAAAAAARAB0AAAABAAAAAAASAB0AAAABAAAAAAATAB0AAAABAAAAAAAUAB0AAAABAAAAAAAVAB0AAAABAAAAAAAWAB0AAAABAAAAAAAXAB0AAAABAAAAAAAYAB0AAAABAAAAAAAZAB0AAAABAAAAAAAaAB0AAAABAAAAAAAbAB0AAAABAAAAAAAcAB0AAAABAAAAAAAdAB0AAAABAAAAAAALAB0AAAADAAEAAAAeAB0AAAAAAAcAAAAeABwAAAAFAAEAAAAeABsAAAAFAAEAAAAeABoAAAACAAAAAAAaABgAAAAFAAEAAAAaABcAAAACAAEAAAAaABYAAAACAAEAAAAaABUAAAADAAAAAAAbABUAAAABAAIAAAAcABUAAAABAAIAAAAdABUAAAABAAIAAAAeABUAAAABAAIAAAAfABUAAAABAAIAAAAfAB0AAAABAAAAAAAgAB0AAAABAAAAAAAhAB0AAAABAAAAAAAiAB0AAAABAAAAAAAjAB0AAAABAAAAAAAkAB0AAAABAAAAAAAlAB0AAAABAAAAAAAmAB0AAAABAAAAAAAnAB0AAAABAAAAAAAoAB0AAAABAAAAAAAgABUAAAABAAIAAAAhABUAAAABAAIAAAAaABoAAAAAAAIAAAAaABkAAAAGAAEAAAApABgAAAAAAAEAAAApABkAAAAAAAIAAAApAB0AAAABAAAAAAAqAB0AAAABAAAAAAArAB0AAAABAAAAAAAsAB0AAAABAAAAAAAtAB0AAAABAAAAAAAuAB0AAAABAAAAAAAvAB0AAAABAAAAAAAwAB0AAAABAAAAAAAxAB0AAAABAAAAAAAyAB0AAAABAAAAAAAzAB0AAAABAAAAAAA0AB0AAAABAAAAAAA1AB0AAAABAAAAAAA2AB0AAAABAAAAAAA3AB0AAAABAAAAAAA4AB0AAAABAAAAAAA5AB0AAAABAAAAAAA6AB0AAAABAAAAAAA7AB0AAAACAAQAAAAqABkAAAABAAIAAAArABkAAAABAAIAAAAsABkAAAABAAIAAAAtABkAAAABAAIAAAAuABkAAAABAAIAAAAvABkAAAABAAIAAAAwABkAAAABAAIAAAAxABkAAAABAAIAAAAyABkAAAABAAIAAAAzABkAAAABAAIAAAA0ABkAAAABAAIAAAA1ABkAAAABAAIAAAA2ABkAAAABAAIAAAA3ABkAAAABAAIAAAA4ABkAAAABAAIAAAA5ABkAAAABAAIAAAA6ABkAAAABAAIAAAA7ABkAAAACAAIAAAA7ABgAAAACAAEAAABLAB0AAAABAAAAAABMAB0AAAABAAAAAABNAB0AAAABAAAAAABOAB0AAAABAAAAAABPAB0AAAABAAAAAABQAB0AAAABAAAAAABRAB0AAAABAAAAAABSAB0AAAABAAAAAABTAB0AAAABAAAAAABUAB0AAAABAAAAAABKAB0AAAADAAQAAABKAB4AAAAAAAEAAABKAB8AAAAAAAEAAABKACAAAAAAAAEAAABKACEAAAAAAAEAAAA7AB4AAAACAAEAAAA7AB8AAAACAAEAAAA7ACAAAAACAAEAAAA7ACEAAAACAAEAAAA8ACEAAAABAAIAAAA9ACEAAAABAAIAAAA+ACEAAAABAAIAAAA/ACEAAAABAAIAAABAACEAAAABAAIAAABBACEAAAABAAIAAABCACEAAAABAAIAAABDACEAAAABAAIAAABEACEAAAABAAIAAABFACEAAAABAAIAAABGACEAAAABAAIAAABHACEAAAABAAIAAABIACEAAAABAAIAAABJACEAAAABAAIAAABVAB0AAAABAAAAAABWAB0AAAABAAAAAABXAB0AAAACAAQAAABaAB0AAAAAAAEAAABaABwAAAAAAAEAAABaABsAAAAAAAEAAABaABoAAAAAAAEAAABaABkAAAAAAAEAAABaABgAAAAAAAEAAABaAB4AAAAAAAEAAABaAB8AAAAAAAEAAABaACAAAAAAAAEAAABaACEAAAAAAAEAAABaACIAAAAAAAEAAABaACMAAAAAAAEAAABaACQAAAAAAAEAAABaACUAAAAAAAEAAABaACYAAAAAAAEAAABaACcAAAAAAAEAAABaACgAAAAAAAEAAABaACkAAAAAAAEAAABaACoAAAAAAAEAAABXAB4AAAACAAEAAABXAB8AAAACAAEAAABXACAAAAACAAEAAABXACEAAAACAAEAAABXACIAAAACAAEAAABXACMAAAACAAEAAABXACQAAAACAAEAAABXACUAAAACAAEAAABXACYAAAACAAEAAABXACcAAAACAAEAAABXACgAAAACAAEAAABXACkAAAACAAEAAABXACoAAAACAAEAAABXACsAAAACAAEAAABXACwAAAACAAEAAABXAC0AAAACAAEAAABXAC4AAAACAAEAAABXAC8AAAACAAEAAABXADAAAAACAAEAAABXADEAAAACAAEAAABXADIAAAACAAEAAABXADMAAAACAAEAAABXADQAAAACAAEAAABaACsAAAAAAAEAAABaACwAAAAAAAEAAABaAC0AAAAAAAEAAABaAC4AAAAAAAEAAABaAC8AAAAAAAEAAABaADAAAAAAAAEAAABaADEAAAAAAAEAAABaADIAAAAAAAEAAABaADMAAAAAAAEAAABaADQAAAAAAAEAAAA=")
[node name="BlackWalls" parent="Tiles" parent_id_path=PackedInt32Array(1626037498) index="1" unique_id=1250602228]
tile_map_data = PackedByteArray("AAANABQAAAABAAAAAAAOABQAAAABAAAAAAAPABQAAAABAAAAAAAQABQAAAABAAAAAAARABQAAAABAAAAAAANABUAAAABAAIAAAAOABUAAAABAAIAAAAPABUAAAABAAIAAAAQABUAAAABAAIAAAARABUAAAABAAIAAABYAB0AAAABAAAAAABZAB0AAAABAAAAAAA=")
[node name="WhiteWalls" parent="Tiles" parent_id_path=PackedInt32Array(1626037498) index="2" unique_id=940613078]
tile_map_data = PackedByteArray("AAD8/wwAAAADAAAAAAD9/wwAAAABAAIAAAD8/w0AAAACAAEAAAD8/w4AAAACAAEAAAACAAwAAAABAAIAAAADAAwAAAABAAIAAAAEAAwAAAABAAIAAAAFAAwAAAABAAIAAAAGAAwAAAABAAIAAAAHAAwAAAABAAIAAAAIAAwAAAABAAIAAAAJAAwAAAABAAcAAAAJAA0AAAAGAAEAAAAJAA4AAAAGAAEAAAAJAA8AAAAGAAEAAAAJABAAAAAGAAEAAAAJABEAAAAGAAEAAAAJABIAAAAGAAEAAAAKAAwAAAABAAIAAAALAAwAAAABAAIAAAAMAAwAAAABAAIAAAANAAwAAAABAAIAAAAOAAwAAAABAAIAAAAPAAwAAAABAAIAAAAQAAwAAAABAAIAAAARAAwAAAABAAIAAAASAAwAAAABAAIAAAATAAwAAAABAAIAAAAUAAwAAAABAAIAAAAVAAwAAAAEAAAAAAAVAA0AAAAAAAEAAAAVAA4AAAAAAAEAAAAJABMAAAAGAAEAAAATABUAAAABAAIAAAAUABUAAAABAAIAAAAVABUAAAABAAIAAAAWABUAAAABAAIAAAAXABUAAAABAAIAAAAYABUAAAABAAIAAAAZABUAAAABAAIAAAAaABUAAAAEAAAAAAAaABcAAAAAAAEAAAAaABYAAAAAAAEAAAAiABUAAAABAAIAAAAjABUAAAABAAIAAAAkABUAAAABAAIAAAAlABUAAAABAAIAAAAmABUAAAABAAIAAAAnABUAAAABAAIAAAAoABUAAAABAAIAAAAaABoAAAADAAEAAAAbABoAAAAEAAIAAAAcABoAAAAEAAIAAAAdABoAAAAEAAIAAAAeABoAAAAEAAAAAAApABUAAAAEAAAAAAApABYAAAAAAAEAAAApABcAAAAAAAEAAAA7ABcAAAACAAEAAAA7ABYAAAACAAEAAAA7ABUAAAADAAAAAAA8ABUAAAABAAIAAAA9ABUAAAABAAIAAAA+ABUAAAABAAIAAAA/ABUAAAABAAIAAABAABUAAAABAAIAAABBABUAAAABAAIAAABCABUAAAABAAIAAABDABUAAAABAAIAAABEABUAAAABAAIAAABFABUAAAABAAIAAABGABUAAAABAAIAAABHABUAAAABAAIAAABIABUAAAABAAIAAABJABUAAAABAAIAAABLABUAAAABAAIAAABMABUAAAABAAIAAABNABUAAAABAAIAAABOABUAAAABAAIAAABPABUAAAABAAIAAABQABUAAAABAAIAAABRABUAAAABAAIAAABSABUAAAABAAIAAABTABUAAAABAAIAAABUABUAAAABAAIAAABVABUAAAABAAIAAABWABUAAAABAAIAAABXABUAAAABAAIAAABYABUAAAABAAIAAABZABUAAAABAAIAAAA8AB0AAAABAAAAAAA9AB0AAAABAAAAAAA+AB0AAAABAAAAAAA/AB0AAAABAAAAAABAAB0AAAABAAAAAABBAB0AAAABAAAAAABCAB0AAAABAAAAAABDAB0AAAABAAAAAABEAB0AAAABAAAAAABFAB0AAAABAAAAAABGAB0AAAABAAAAAABHAB0AAAABAAAAAABIAB0AAAABAAAAAABJAB0AAAABAAAAAABKABYAAAAGAAEAAABKABcAAAAGAAEAAABKABgAAAAGAAEAAABKABkAAAAGAAEAAABKABoAAAAGAAEAAABKABsAAAAGAAEAAABKABwAAAAGAAEAAABaABcAAAAAAAEAAABaABYAAAAAAAEAAABaABUAAAAEAAAAAABKABUAAAABAAcAAAABAAwAAAAAAAIAAAD+/wwAAAACAAIAAAA=")
[node name="Traps" parent="Tiles" parent_id_path=PackedInt32Array(1626037498) index="3" unique_id=635748436]
tile_map_data = PackedByteArray("AAA8AB8AAAAAAAAAAAA9AB8AAAAAAAAAAAA+AB8AAAAAAAAAAAA/AB8AAAAAAAAAAABAAB8AAAAAAAAAAABBAB8AAAAAAAAAAABCAB8AAAAAAAAAAABDAB8AAAAAAAAAAABEAB8AAAAAAAAAAABFAB8AAAAAAAAAAABGAB8AAAAAAAAAAABHAB8AAAAAAAAAAABIAB8AAAAAAAAAAABJAB8AAAAAAAAAAAA8ACAAAAAAAAEAAAA9ACAAAAAAAAEAAAA+ACAAAAAAAAEAAAA/ACAAAAAAAAEAAABAACAAAAAAAAEAAABBACAAAAAAAAEAAABCACAAAAAAAAEAAABDACAAAAAAAAEAAABEACAAAAAAAAEAAABFACAAAAAAAAEAAABGACAAAAAAAAEAAABHACAAAAAAAAEAAABIACAAAAAAAAEAAABJACAAAAAAAAEAAABJACEAAAAAAAEAAABIACEAAAAAAAEAAABHACEAAAAAAAEAAABGACEAAAAAAAEAAABFACEAAAAAAAEAAABEACEAAAAAAAEAAABDACEAAAAAAAEAAABCACEAAAAAAAEAAABBACEAAAAAAAEAAABAACEAAAAAAAEAAAA/ACEAAAAAAAEAAAA+ACEAAAAAAAEAAAA9ACEAAAAAAAEAAAA8ACEAAAAAAAEAAAA=")
[node name="KillingArea" parent="KillingAreas" parent_id_path=PackedInt32Array(1935554921) index="0" unique_id=1891922549 instance=ExtResource("19_7s8yo")]
position = Vector2(1072, 540)
type = 1
[node name="CollisionShape2D" type="CollisionShape2D" parent="KillingAreas/KillingArea" index="0" unique_id=1478981105]
shape = SubResource("RectangleShape2D_v8xjl")
[node name="LevelEnd" parent="." index="10" unique_id=1018767708]
position = Vector2(1424, 602)
File diff suppressed because one or more lines are too long
@@ -21,8 +21,7 @@
[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://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://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://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"] [ext_resource type="PackedScene" uid="uid://bx0luh4vdob3q" path="res://game/characters/enemies/cultist.tscn" id="22_3svqx"]
[ext_resource type="PackedScene" uid="uid://bv2gahb4wxgb1" path="res://game/characters/enemies/white_cultist.tscn" id="23_8555i"]
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="24_te27h"] [ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="24_te27h"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cjy8w"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_cjy8w"]
@@ -315,17 +314,27 @@ position = Vector2(1113, 344)
[node name="TriangleKeyPickup" parent="Pickups" parent_id_path=PackedInt32Array(1113969064) index="1" unique_id=85412946 instance=ExtResource("21_jk2b3")] [node name="TriangleKeyPickup" parent="Pickups" parent_id_path=PackedInt32Array(1113969064) index="1" unique_id=85412946 instance=ExtResource("21_jk2b3")]
position = Vector2(857, 136) position = Vector2(857, 136)
[node name="BlackCultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=129671926 instance=ExtResource("22_b1xny")] [node name="Cultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=1676614852 instance=ExtResource("22_3svqx")]
position = Vector2(1041, 352)
[node name="BlackCultist2" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="1" unique_id=1222909487 instance=ExtResource("22_b1xny")]
position = Vector2(403, 160)
[node name="WhiteCultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="2" unique_id=503464276 instance=ExtResource("23_8555i")]
position = Vector2(587, 368) position = Vector2(587, 368)
collision_layer = 64
collision_mask = 33
[node name="WhiteCultist2" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="3" unique_id=624398972 instance=ExtResource("23_8555i")] [node name="Cultist2" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="1" unique_id=102912907 instance=ExtResource("22_3svqx")]
position = Vector2(1041, 352)
collision_layer = 4
collision_mask = 3
type = 1
[node name="Cultist3" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="2" unique_id=996992141 instance=ExtResource("22_3svqx")]
position = Vector2(403, 160)
collision_layer = 4
collision_mask = 3
type = 1
[node name="Cultist4" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="3" unique_id=422993920 instance=ExtResource("22_3svqx")]
position = Vector2(549, 160) position = Vector2(549, 160)
collision_layer = 64
collision_mask = 33
[node name="Player" parent="." index="6" unique_id=1058744997] [node name="Player" parent="." index="6" unique_id=1058744997]
position = Vector2(208, -162) position = Vector2(208, -162)
@@ -6,12 +6,14 @@ const ANIMATION_NAME = "final_cutscene"
@onready var animation_player : AnimationPlayer = $AnimationPlayer @onready var animation_player : AnimationPlayer = $AnimationPlayer
@onready var fake_player : PlayerSprite = $Cutscene/FakePlayer @onready var fake_player : PlayerSprite = $Cutscene/FakePlayer
@onready var fake_cultist : CultistSprite = $Cutscene/FakeCultist
@onready var cutscene_camera : Camera2D = $Cutscene/Camera2D @onready var cutscene_camera : Camera2D = $Cutscene/Camera2D
@onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position @onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position
func _ready() -> void: func _ready() -> void:
$CanvasLayer/MarginContainer/ThanksLabel.hide()
animation_player.play("hide_cutscene_elements") animation_player.play("hide_cutscene_elements")
super._ready() super._ready()
@@ -42,6 +44,15 @@ func _play_cutscene_boop() -> void:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_haze, cutscene_room_center) SoundManager.play_sfx_stream(SoundManager.sfx_stream_haze, cutscene_room_center)
func _play_fake_cultist_animation() -> void:
fake_cultist.animated_sprite.play(CultistSprite.ANIMATION_LOOK_AROUND, 0.5)
func _make_fake_cultist_grey() -> void:
var tween := create_tween()
tween.tween_property(fake_cultist.material, CultistSprite.SHADER_INTENSITY, 0.5, 5)
func _on_animation_player_animation_finished(anim_name: StringName) -> void: func _on_animation_player_animation_finished(anim_name: StringName) -> void:
if anim_name == "final_cutscene": if anim_name == "final_cutscene":
_complete_level(cutscene_room_center) _complete_level(cutscene_room_center)
File diff suppressed because one or more lines are too long
+2
View File
@@ -10,3 +10,5 @@ func _ready() -> void:
$Objects/LeverPlatform.switching.connect($ConnectionCables/ConnectionCablePlatform.toggle) $Objects/LeverPlatform.switching.connect($ConnectionCables/ConnectionCablePlatform.toggle)
$Objects/LeverMoving.switching.connect($Platforms/SelfMovingPlatform.toggle) $Objects/LeverMoving.switching.connect($Platforms/SelfMovingPlatform.toggle)
$Platforms/HiddenColorPlatform.set_player(player)
+26 -11
View File
@@ -9,12 +9,14 @@
[ext_resource type="Shader" uid="uid://dbsrm43wcolg4" path="res://game/shaders/connection_cable.gdshader" id="4_lxcjr"] [ext_resource type="Shader" uid="uid://dbsrm43wcolg4" path="res://game/shaders/connection_cable.gdshader" id="4_lxcjr"]
[ext_resource type="PackedScene" uid="uid://g0n5npbt3hb2" path="res://game/doors/circle_door.tscn" id="4_yrqjd"] [ext_resource type="PackedScene" uid="uid://g0n5npbt3hb2" path="res://game/doors/circle_door.tscn" id="4_yrqjd"]
[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/locked_door.tscn" id="5_1skah"] [ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/locked_door.tscn" id="5_1skah"]
[ext_resource type="PackedScene" uid="uid://bwmd8w677p7k3" path="res://game/platform/color_switching_platform.tscn" id="5_a50fq"] [ext_resource type="PackedScene" uid="uid://bwmd8w677p7k3" path="res://game/platform/trigger_color_platform.tscn" id="5_a50fq"]
[ext_resource type="PackedScene" uid="uid://dwvv5dj8lqif2" path="res://game/doors/triangle_door.tscn" id="6_75eok"] [ext_resource type="PackedScene" uid="uid://dwvv5dj8lqif2" path="res://game/doors/triangle_door.tscn" id="6_75eok"]
[ext_resource type="PackedScene" uid="uid://b7imlh4sl036i" path="res://game/doors/square_door.tscn" id="7_1skah"] [ext_resource type="PackedScene" uid="uid://b7imlh4sl036i" path="res://game/doors/square_door.tscn" id="7_1skah"]
[ext_resource type="PackedScene" uid="uid://cpntbx0bpni2t" path="res://game/platform/touch_color_platform.tscn" id="7_a50fq"]
[ext_resource type="PackedScene" uid="uid://cudbspmpx6sik" path="res://game/pickups/book_pickup.tscn" id="7_fq0h3"] [ext_resource type="PackedScene" uid="uid://cudbspmpx6sik" path="res://game/pickups/book_pickup.tscn" id="7_fq0h3"]
[ext_resource type="PackedScene" uid="uid://dioc4r03dfleq" path="res://game/doors/book_door.tscn" id="8_75eok"] [ext_resource type="PackedScene" uid="uid://dioc4r03dfleq" path="res://game/doors/book_door.tscn" id="8_75eok"]
[ext_resource type="PackedScene" uid="uid://c4gqqhlew67ay" path="res://game/pickups/circle_key_pickup.tscn" id="8_g1txn"] [ext_resource type="PackedScene" uid="uid://c4gqqhlew67ay" path="res://game/pickups/circle_key_pickup.tscn" id="8_g1txn"]
[ext_resource type="PackedScene" uid="uid://bqb2qncny11a" path="res://game/platform/hidden_color_platform.tscn" id="8_lxcjr"]
[ext_resource type="PackedScene" uid="uid://ciubf1ttwc133" path="res://game/pickups/square_key_pickup.tscn" id="9_yrqjd"] [ext_resource type="PackedScene" uid="uid://ciubf1ttwc133" path="res://game/pickups/square_key_pickup.tscn" id="9_yrqjd"]
[ext_resource type="PackedScene" uid="uid://dqgmfpv2mhdpn" path="res://game/pickups/triangle_key_pickup.tscn" id="10_dea75"] [ext_resource type="PackedScene" uid="uid://dqgmfpv2mhdpn" path="res://game/pickups/triangle_key_pickup.tscn" id="10_dea75"]
[ext_resource type="PackedScene" uid="uid://be3mqeb784shj" path="res://game/objects/informative/movement_action_tip.tscn" id="10_ffor3"] [ext_resource type="PackedScene" uid="uid://be3mqeb784shj" path="res://game/objects/informative/movement_action_tip.tscn" id="10_ffor3"]
@@ -23,9 +25,7 @@
[ext_resource type="PackedScene" uid="uid://b0pxe00dlyx7t" path="res://game/objects/informative/switch_action_tip.tscn" id="12_r01v2"] [ext_resource type="PackedScene" uid="uid://b0pxe00dlyx7t" path="res://game/objects/informative/switch_action_tip.tscn" id="12_r01v2"]
[ext_resource type="PackedScene" uid="uid://dsww084wps0d0" path="res://game/objects/interactive/lever.tscn" id="13_00l78"] [ext_resource type="PackedScene" uid="uid://dsww084wps0d0" path="res://game/objects/interactive/lever.tscn" id="13_00l78"]
[ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/decorative/bookstand.tscn" id="13_g3b4m"] [ext_resource type="PackedScene" uid="uid://dx1yasi8wlaye" path="res://game/objects/decorative/bookstand.tscn" id="13_g3b4m"]
[ext_resource type="PackedScene" uid="uid://cb0w6mt8g4mer" path="res://game/characters/enemies/gray_cultist.tscn" id="18_blgb8"] [ext_resource type="PackedScene" uid="uid://bx0luh4vdob3q" path="res://game/characters/enemies/cultist.tscn" id="27_te8eb"]
[ext_resource type="PackedScene" uid="uid://cutjutvd8dqqc" path="res://game/characters/enemies/black_cultist.tscn" id="19_ohfy3"]
[ext_resource type="PackedScene" uid="uid://bv2gahb4wxgb1" path="res://game/characters/enemies/white_cultist.tscn" id="20_rt0xo"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lxcjr"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_lxcjr"]
resource_local_to_scene = true resource_local_to_scene = true
@@ -82,6 +82,15 @@ collision_layer = 2
initial_color = 1 initial_color = 1
platform_width = 104 platform_width = 104
[node name="TouchColorPlatform" parent="Platforms" parent_id_path=PackedInt32Array(1140671629) index="3" unique_id=1702050833 instance=ExtResource("7_a50fq")]
position = Vector2(200, -25)
platform_width = 80
[node name="HiddenColorPlatform" parent="Platforms" parent_id_path=PackedInt32Array(1140671629) index="4" unique_id=1861027364 instance=ExtResource("8_lxcjr")]
position = Vector2(13, -104)
collision_layer = 2
platform_width = 80
[node name="LeverDoor" parent="Doors" parent_id_path=PackedInt32Array(1468144392) index="0" unique_id=1575363350 instance=ExtResource("2_r01v2")] [node name="LeverDoor" parent="Doors" parent_id_path=PackedInt32Array(1468144392) index="0" unique_id=1575363350 instance=ExtResource("2_r01v2")]
position = Vector2(416, -56) position = Vector2(416, -56)
@@ -142,15 +151,21 @@ position = Vector2(306, -56)
[node name="TriangleKeyPickup" parent="Pickups" parent_id_path=PackedInt32Array(1113969064) index="3" unique_id=465768166 instance=ExtResource("10_dea75")] [node name="TriangleKeyPickup" parent="Pickups" parent_id_path=PackedInt32Array(1113969064) index="3" unique_id=465768166 instance=ExtResource("10_dea75")]
position = Vector2(803, -56) position = Vector2(803, -56)
[node name="GrayEnemy" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=2016246874 instance=ExtResource("18_blgb8")] [node name="Cultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=1676614852 instance=ExtResource("27_te8eb")]
position = Vector2(1552, 96)
[node name="BlackEnemy" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="1" unique_id=1849216089 instance=ExtResource("19_ohfy3")]
position = Vector2(936, -48)
[node name="WhiteEnemy" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="2" unique_id=1447247338 instance=ExtResource("20_rt0xo")]
position = Vector2(743, -48) position = Vector2(743, -48)
[node name="Cultist2" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="1" unique_id=1025404981 instance=ExtResource("27_te8eb")]
position = Vector2(936, -48)
collision_layer = 4
collision_mask = 3
type = 1
[node name="Cultist3" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="2" unique_id=1444846763 instance=ExtResource("27_te8eb")]
position = Vector2(1552, 96)
collision_layer = 16
collision_mask = 35
type = 2
[node name="Player" parent="." index="6" unique_id=1058744997] [node name="Player" parent="." index="6" unique_id=1058744997]
position = Vector2(-13, 0) position = Vector2(-13, 0)
+8 -7
View File
@@ -2,14 +2,15 @@
[ext_resource type="Script" uid="uid://w4ofprtn7lu8" path="res://game/managers/level_manager.gd" id="1_te7jw"] [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"] [ext_resource type="PackedScene" uid="uid://dlpi1ptis3wna" path="res://game/levels/level_1.tscn" id="2_r84xe"]
[ext_resource type="PackedScene" uid="uid://cc06c06hlv7ix" path="res://game/levels/level_2.tscn" id="3_yl05u"] [ext_resource type="PackedScene" uid="uid://cifrkw15tbunt" path="res://game/levels/level_2.tscn" id="3_yl05u"]
[ext_resource type="PackedScene" uid="uid://ungdvjmfc6v7" path="res://game/levels/level_3.tscn" id="4_eo2u3"] [ext_resource type="PackedScene" uid="uid://ungdvjmfc6v7" path="res://game/levels/level_3_old.tscn" id="4_eo2u3"]
[ext_resource type="PackedScene" uid="uid://cmp1cog2cbfh5" path="res://game/levels/level_4.tscn" id="5_yl05u"] [ext_resource type="PackedScene" uid="uid://cc06c06hlv7ix" path="res://game/levels/level_2_old.tscn" id="4_sidtq"]
[ext_resource type="PackedScene" uid="uid://brysu1p6fw88n" path="res://game/levels/level_5.tscn" id="6_eo2u3"] [ext_resource type="PackedScene" uid="uid://cmp1cog2cbfh5" path="res://game/levels/level_4_old.tscn" id="5_yl05u"]
[ext_resource type="PackedScene" uid="uid://uanhjjloryf4" path="res://game/levels/level_6.tscn" id="7_da5al"] [ext_resource type="PackedScene" uid="uid://brysu1p6fw88n" path="res://game/levels/level_5_old.tscn" id="6_eo2u3"]
[ext_resource type="PackedScene" uid="uid://cddh8nh54mrog" path="res://game/levels/level_7.tscn" id="8_rvthr"] [ext_resource type="PackedScene" uid="uid://uanhjjloryf4" path="res://game/levels/level_6_old.tscn" id="7_da5al"]
[ext_resource type="PackedScene" uid="uid://cddh8nh54mrog" path="res://game/levels/level_final.tscn" id="8_rvthr"]
[ext_resource type="PackedScene" uid="uid://bmn74wc2vophn" path="res://game/levels/test_level.tscn" id="9_7ahfy"] [ext_resource type="PackedScene" uid="uid://bmn74wc2vophn" path="res://game/levels/test_level.tscn" id="9_7ahfy"]
[node name="LevelManager" type="Node" unique_id=629915878] [node name="LevelManager" type="Node" unique_id=629915878]
script = ExtResource("1_te7jw") 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"), ExtResource("9_7ahfy")]) levels = Array[PackedScene]([ExtResource("2_r84xe"), ExtResource("3_yl05u"), ExtResource("4_sidtq"), ExtResource("4_eo2u3"), ExtResource("5_yl05u"), ExtResource("6_eo2u3"), ExtResource("7_da5al"), ExtResource("8_rvthr"), ExtResource("9_7ahfy")])
+7 -6
View File
@@ -9,10 +9,10 @@ const MUSIC_BUS = "Music"
@export_group("Pitch settings", "pitch") @export_group("Pitch settings", "pitch")
@export_range(0.9, 1.1, 0.01) var putch_ui_min := 1.0 @export_range(0.9, 1.1, 0.01) var pitch_ui_min := 1.0
@export_range(0.9, 1.1, 0.01) var putch_ui_max := 1.0 @export_range(0.9, 1.1, 0.01) var pitch_ui_max := 1.0
@export_range(0.9, 1.1, 0.01) var putch_sfx_min := 1.0 @export_range(0.9, 1.1, 0.01) var pitch_sfx_min := 1.0
@export_range(0.9, 1.1, 0.01) var putch_sfx_max := 1.0 @export_range(0.9, 1.1, 0.01) var pitch_sfx_max := 1.0
@export_group("Number of players", "player_count") @export_group("Number of players", "player_count")
@export_range(1, 10) var player_count_ui := 1 @export_range(1, 10) var player_count_ui := 1
@@ -38,6 +38,7 @@ const MUSIC_BUS = "Music"
@export var sfx_stream_player_lost : AudioStream @export var sfx_stream_player_lost : AudioStream
@export var sfx_stream_player_spoted : AudioStream @export var sfx_stream_player_spoted : AudioStream
@export var sfx_stream_splash : AudioStream @export var sfx_stream_splash : AudioStream
@export var sfx_stream_blood : AudioStream
@export var sfx_stream_switch : AudioStream @export var sfx_stream_switch : AudioStream
@export_group("Music Streams", "music_stream") @export_group("Music Streams", "music_stream")
@@ -59,7 +60,7 @@ func _ready() -> void:
func play_ui_stream(stream: AudioStream) -> AudioStreamPlayer: func play_ui_stream(stream: AudioStream) -> AudioStreamPlayer:
var player := _get_free_player(_ui_players) var player := _get_free_player(_ui_players)
player.stream = stream player.stream = stream
player.pitch_scale = randf_range(putch_ui_min, putch_ui_max) player.pitch_scale = randf_range(pitch_ui_min, pitch_ui_max)
player.play() player.play()
return player return player
@@ -67,7 +68,7 @@ func play_ui_stream(stream: AudioStream) -> AudioStreamPlayer:
func play_sfx_stream(stream: AudioStream, position: Vector2) -> AudioStreamPlayer2D: func play_sfx_stream(stream: AudioStream, position: Vector2) -> AudioStreamPlayer2D:
var player := _get_free_2d_player(_sfx_players) var player := _get_free_2d_player(_sfx_players)
player.stream = stream player.stream = stream
player.pitch_scale = randf_range(putch_ui_min, putch_ui_max) player.pitch_scale = randf_range(pitch_ui_min, pitch_ui_max)
player.position = position player.position = position
player.play() player.play()
return player return player
+6 -4
View File
@@ -21,14 +21,15 @@
[ext_resource type="AudioStream" uid="uid://ckmpft46wjgqs" path="res://sound/music/main_menu.wav" id="17_g6nb7"] [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"] [ext_resource type="AudioStream" uid="uid://ttemdy7avyh7" path="res://sound/music/gameplay.wav" id="17_l5yxe"]
[ext_resource type="AudioStream" uid="uid://ckykxq8ugds41" path="res://sound/sfx/splash.wav" id="18_4cvue"] [ext_resource type="AudioStream" uid="uid://ckykxq8ugds41" path="res://sound/sfx/splash.wav" id="18_4cvue"]
[ext_resource type="AudioStream" uid="uid://b18trj54c3x4e" path="res://sound/sfx/blood.wav" id="19_yvugr"]
[node name="SoundManager" type="Node" unique_id=1917953940] [node name="SoundManager" type="Node" unique_id=1917953940]
process_mode = 3 process_mode = 3
script = ExtResource("1_cg0sy") script = ExtResource("1_cg0sy")
putch_ui_min = 0.95 pitch_ui_min = 0.95
putch_ui_max = 1.05 pitch_ui_max = 1.05
putch_sfx_min = 0.95 pitch_sfx_min = 0.95
putch_sfx_max = 1.05 pitch_sfx_max = 1.05
player_count_ui = 4 player_count_ui = 4
player_count_sfx = 25 player_count_sfx = 25
ui_stream_accept = ExtResource("2_ge1il") ui_stream_accept = ExtResource("2_ge1il")
@@ -48,6 +49,7 @@ sfx_stream_lever = ExtResource("15_3d1ws")
sfx_stream_player_lost = ExtResource("8_6ll5c") sfx_stream_player_lost = ExtResource("8_6ll5c")
sfx_stream_player_spoted = ExtResource("9_q7cyi") sfx_stream_player_spoted = ExtResource("9_q7cyi")
sfx_stream_splash = ExtResource("18_4cvue") sfx_stream_splash = ExtResource("18_4cvue")
sfx_stream_blood = ExtResource("19_yvugr")
sfx_stream_switch = ExtResource("7_ab171") sfx_stream_switch = ExtResource("7_ab171")
music_stream_gameplay = ExtResource("17_l5yxe") music_stream_gameplay = ExtResource("17_l5yxe")
music_stream_main_menu = ExtResource("17_g6nb7") music_stream_main_menu = ExtResource("17_g6nb7")
@@ -1,15 +1,17 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://ci7xuso12af5"] [gd_resource type="ShaderMaterial" format=3 uid="uid://dwgqr50guokxg"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_xngo8"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_3bx4l"]
[resource] [resource]
resource_local_to_scene = true resource_local_to_scene = true
shader = ExtResource("1_xngo8") shader = ExtResource("1_3bx4l")
shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = false shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5 shader_parameter/threshold = 0.5
shader_parameter/speed = 3.0 shader_parameter/speed = 3.0000001425
shader_parameter/intensity = 1.0 shader_parameter/intensity = 1.0
shader_parameter/scale = 5.0 shader_parameter/scale = 5.0
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(0, 1)
shader_parameter/use_world_pos = false shader_parameter/use_world_pos = false
-15
View File
@@ -1,15 +0,0 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://dggr8t4b30e3n"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_61jua"]
[resource]
resource_local_to_scene = true
shader = ExtResource("1_61jua")
shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = true
shader_parameter/threshold = 0.5
shader_parameter/speed = 3.0
shader_parameter/intensity = 1.0
shader_parameter/scale = 5.0
shader_parameter/use_world_pos = false
-14
View File
@@ -1,14 +0,0 @@
[gd_resource type="ShaderMaterial" format=3 uid="uid://dbkn3k0batj5w"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_b0yyf"]
[resource]
shader = ExtResource("1_b0yyf")
shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5
shader_parameter/speed = 3.0
shader_parameter/intensity = 0.5
shader_parameter/scale = 5.0
shader_parameter/use_world_pos = false
+4 -1
View File
@@ -3,12 +3,15 @@
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_p23e2"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_p23e2"]
[resource] [resource]
resource_local_to_scene = true
shader = ExtResource("1_p23e2") shader = ExtResource("1_p23e2")
shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = true shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5 shader_parameter/threshold = 0.5
shader_parameter/speed = 1.0 shader_parameter/speed = 1.0
shader_parameter/intensity = 1.0 shader_parameter/intensity = 1.0
shader_parameter/scale = 5.0 shader_parameter/scale = 5.0
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(1, 1)
shader_parameter/use_world_pos = false shader_parameter/use_world_pos = false
+3
View File
@@ -3,6 +3,7 @@
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_rnyyp"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_rnyyp"]
[resource] [resource]
resource_local_to_scene = true
shader = ExtResource("1_rnyyp") shader = ExtResource("1_rnyyp")
shader_parameter/black_color = Color(0, 0, 0, 1) shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1) shader_parameter/white_color = Color(1, 1, 1, 1)
@@ -11,4 +12,6 @@ shader_parameter/threshold = 0.5
shader_parameter/speed = 0.5 shader_parameter/speed = 0.5
shader_parameter/intensity = 0.5 shader_parameter/intensity = 0.5
shader_parameter/scale = 0.1 shader_parameter/scale = 0.1
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(1, 1)
shader_parameter/use_world_pos = true shader_parameter/use_world_pos = true
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(144, 64, 16, 32)
[node name="Bookstand" type="Node2D" unique_id=764203715] [node name="Bookstand" type="Node2D" unique_id=764203715]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1927584709] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1927584709]
position = Vector2(0, -10)
texture = SubResource("AtlasTexture_opqiy") texture = SubResource("AtlasTexture_opqiy")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(128, 96, 32, 32)
[node name="Cabinet" type="Node2D" unique_id=776063180] [node name="Cabinet" type="Node2D" unique_id=776063180]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=633984423] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=633984423]
position = Vector2(0, -11)
texture = SubResource("AtlasTexture_sqimt") texture = SubResource("AtlasTexture_sqimt")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(32, 96, 16, 32)
[node name="ChairB" type="Node2D" unique_id=593320838] [node name="ChairB" type="Node2D" unique_id=593320838]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1141861091] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1141861091]
position = Vector2(0, -14)
texture = SubResource("AtlasTexture_ea7rc") texture = SubResource("AtlasTexture_ea7rc")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(0, 96, 16, 32)
[node name="ChairF" type="Node2D" unique_id=1967501122] [node name="ChairF" type="Node2D" unique_id=1967501122]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1824855132] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1824855132]
position = Vector2(0, -14)
texture = SubResource("AtlasTexture_1kw05") texture = SubResource("AtlasTexture_1kw05")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(16, 96, 16, 32)
[node name="ChairL" type="Node2D" unique_id=813233619] [node name="ChairL" type="Node2D" unique_id=813233619]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2136740309] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=2136740309]
position = Vector2(0, -14)
texture = SubResource("AtlasTexture_cktuf") texture = SubResource("AtlasTexture_cktuf")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(48, 96, 16, 32)
[node name="ChairR" type="Node2D" unique_id=567783693] [node name="ChairR" type="Node2D" unique_id=567783693]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1599831744] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1599831744]
position = Vector2(0, -14)
texture = SubResource("AtlasTexture_e7ewy") texture = SubResource("AtlasTexture_e7ewy")
+4 -1
View File
@@ -24,6 +24,8 @@ shader_parameter/threshold = 0.5
shader_parameter/speed = 2.50000011875 shader_parameter/speed = 2.50000011875
shader_parameter/intensity = 0.6000000285 shader_parameter/intensity = 0.6000000285
shader_parameter/scale = 75.0000035625 shader_parameter/scale = 75.0000035625
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(1, 1)
shader_parameter/use_world_pos = false shader_parameter/use_world_pos = false
[sub_resource type="AtlasTexture" id="AtlasTexture_tl0fg"] [sub_resource type="AtlasTexture" id="AtlasTexture_tl0fg"]
@@ -52,9 +54,10 @@ animations = [{
script = SubResource("GDScript_4nvxe") script = SubResource("GDScript_4nvxe")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1590498638] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1590498638]
position = Vector2(0, -16)
texture = SubResource("AtlasTexture_2ho61") texture = SubResource("AtlasTexture_2ho61")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=628370504] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=628370504]
material = SubResource("ShaderMaterial_2ho61") material = SubResource("ShaderMaterial_2ho61")
position = Vector2(0, 8) position = Vector2(0, -8)
sprite_frames = SubResource("SpriteFrames_f0x6e") sprite_frames = SubResource("SpriteFrames_f0x6e")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(128, 80, 16, 16)
[node name="FlaskL" type="Node2D" unique_id=1215208712] [node name="FlaskL" type="Node2D" unique_id=1215208712]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1287451147] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1287451147]
position = Vector2(0, -7)
texture = SubResource("AtlasTexture_i1pbn") texture = SubResource("AtlasTexture_i1pbn")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(128, 64, 16, 16)
[node name="FlaskS" type="Node2D" unique_id=565628633] [node name="FlaskS" type="Node2D" unique_id=565628633]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1428095427] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1428095427]
position = Vector2(0, -6)
texture = SubResource("AtlasTexture_wg65s") texture = SubResource("AtlasTexture_wg65s")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(112, 64, 16, 16)
[node name="Plate" type="Node2D" unique_id=611682922] [node name="Plate" type="Node2D" unique_id=611682922]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1274674649] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1274674649]
position = Vector2(0, -1)
texture = SubResource("AtlasTexture_q70ul") texture = SubResource("AtlasTexture_q70ul")
@@ -9,4 +9,5 @@ region = Rect2(144, 32, 16, 16)
[node name="RedortEndL" type="Node2D" unique_id=186703054] [node name="RedortEndL" type="Node2D" unique_id=186703054]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2083648757] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=2083648757]
position = Vector2(-1, -8)
texture = SubResource("AtlasTexture_hbatg") texture = SubResource("AtlasTexture_hbatg")
@@ -9,4 +9,5 @@ region = Rect2(112, 48, 16, 16)
[node name="RetortEndR" type="Node2D" unique_id=361163783] [node name="RetortEndR" type="Node2D" unique_id=361163783]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=851249465] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=851249465]
position = Vector2(1, -8)
texture = SubResource("AtlasTexture_2d2yp") texture = SubResource("AtlasTexture_2d2yp")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(128, 48, 32, 16)
[node name="RetortL" type="Node2D" unique_id=928599671] [node name="RetortL" type="Node2D" unique_id=928599671]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=777287822] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=777287822]
position = Vector2(-3, -8)
texture = SubResource("AtlasTexture_8epgq") texture = SubResource("AtlasTexture_8epgq")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(112, 32, 32, 16)
[node name="RetortR" type="Node2D" unique_id=2131329697] [node name="RetortR" type="Node2D" unique_id=2131329697]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=889741540] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=889741540]
position = Vector2(3, -8)
texture = SubResource("AtlasTexture_f54r7") texture = SubResource("AtlasTexture_f54r7")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(80, 0, 80, 32)
[node name="TableL" type="Node2D" unique_id=1210198021] [node name="TableL" type="Node2D" unique_id=1210198021]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1155132216] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1155132216]
position = Vector2(-1, -9)
texture = SubResource("AtlasTexture_l7gad") texture = SubResource("AtlasTexture_l7gad")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(32, 0, 48, 32)
[node name="TableM" type="Node2D" unique_id=639741163] [node name="TableM" type="Node2D" unique_id=639741163]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=881942302] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=881942302]
position = Vector2(0, -9)
texture = SubResource("AtlasTexture_runce") texture = SubResource("AtlasTexture_runce")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(0, 0, 32, 32)
[node name="TableS" type="Node2D" unique_id=1273697628] [node name="TableS" type="Node2D" unique_id=1273697628]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1017827625] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=1017827625]
position = Vector2(0, -9)
texture = SubResource("AtlasTexture_n2itf") texture = SubResource("AtlasTexture_n2itf")
+1
View File
@@ -9,4 +9,5 @@ region = Rect2(96, 80, 32, 48)
[node name="Wardrobe" type="Node2D" unique_id=1607339750] [node name="Wardrobe" type="Node2D" unique_id=1607339750]
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=422307570] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=422307570]
position = Vector2(0, -22)
texture = SubResource("AtlasTexture_wbqlk") texture = SubResource("AtlasTexture_wbqlk")
@@ -1,3 +1,4 @@
@tool
class_name AbstractActionTip class_name AbstractActionTip
extends Node2D extends Node2D
@@ -7,8 +8,11 @@ extends Node2D
func _ready() -> void: func _ready() -> void:
_updated_by_input_type(InputManager.get_type()) if Engine.is_editor_hint():
InputManager.type_changed.connect(_updated_by_input_type) _updated_by_input_type(InputManager.Type.Keyboard)
else:
_updated_by_input_type(InputManager.get_type())
InputManager.type_changed.connect(_updated_by_input_type)
func _updated_by_input_type(type: InputManager.Type) -> void: func _updated_by_input_type(type: InputManager.Type) -> void:
@@ -14,7 +14,9 @@ region = Rect2(0, 32, 32, 32)
[node name="MovementActionTip" unique_id=1113266380 instance=ExtResource("1_6vlve")] [node name="MovementActionTip" unique_id=1113266380 instance=ExtResource("1_6vlve")]
[node name="SpriteKbd" parent="." index="0" unique_id=948959005] [node name="SpriteKbd" parent="." index="0" unique_id=948959005]
position = Vector2(-1, -15)
texture = SubResource("AtlasTexture_qoa1y") texture = SubResource("AtlasTexture_qoa1y")
[node name="SpritePad" parent="." index="1" unique_id=1703375720] [node name="SpritePad" parent="." index="1" unique_id=1703375720]
visible = false
texture = SubResource("AtlasTexture_aui55") texture = SubResource("AtlasTexture_aui55")
+4 -2
View File
@@ -109,17 +109,19 @@ script = ExtResource("2_5hu3b")
initial_state = 0 initial_state = 0
[node name="CollisionShape2D" parent="." index="0" unique_id=2065213362] [node name="CollisionShape2D" parent="." index="0" unique_id=2065213362]
position = Vector2(0, -4) position = Vector2(0, -12)
shape = SubResource("RectangleShape2D_tnscr") shape = SubResource("RectangleShape2D_tnscr")
[node name="HoverTip" parent="." index="1" unique_id=1961962362] [node name="HoverTip" parent="." index="1" unique_id=1961962362]
position = Vector2(0, -11) position = Vector2(0, -19)
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="2" unique_id=2086579452] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." index="2" unique_id=2086579452]
position = Vector2(0, -8)
sprite_frames = SubResource("SpriteFrames_kky3u") sprite_frames = SubResource("SpriteFrames_kky3u")
animation = &"turning_left" animation = &"turning_left"
[node name="BaseSprite" type="Sprite2D" parent="." index="3" unique_id=256419860] [node name="BaseSprite" type="Sprite2D" parent="." index="3" unique_id=256419860]
position = Vector2(0, -8)
texture = SubResource("AtlasTexture_5upgc") texture = SubResource("AtlasTexture_5upgc")
[connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"] [connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"]
+13
View File
@@ -2,6 +2,19 @@ class_name AbstractPickup
extends Area2D extends Area2D
const BOUNCE_SPEED = 250.0
@export_range(0.0, 100.0) var max_bounce_offset := 0.0
@onready var sprite : Sprite2D = $Sprite2D
func _process(_delta: float) -> void:
sprite.position.y = round(sin(Time.get_ticks_msec() / BOUNCE_SPEED) * max_bounce_offset)
func _play_pickup_sound() -> void: func _play_pickup_sound() -> void:
SoundManager.play_sfx_stream(SoundManager.sfx_stream_key_picked_up, global_position) SoundManager.play_sfx_stream(SoundManager.sfx_stream_key_picked_up, global_position)
+7 -4
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://cmnfpr2h2hbeu"] [gd_scene format=3 uid="uid://cmnfpr2h2hbeu"]
[ext_resource type="Script" uid="uid://c54xcaigi43rn" path="res://game/pickups/abstract_pickup.gd" id="1_ek4cl"] [ext_resource type="Script" uid="uid://c54xcaigi43rn" path="res://game/pickups/abstract_pickup.gd" id="1_ek4cl"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="2_33jno"] [ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="2_33jno"]
@@ -12,19 +12,22 @@ shader_parameter/threshold = 0.5
shader_parameter/speed = 5.0000002375 shader_parameter/speed = 5.0000002375
shader_parameter/intensity = 0.800000038 shader_parameter/intensity = 0.800000038
shader_parameter/scale = 25.0000011875 shader_parameter/scale = 25.0000011875
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(1, 1)
shader_parameter/use_world_pos = false
[sub_resource type="CircleShape2D" id="CircleShape2D_ek4cl"] [sub_resource type="CircleShape2D" id="CircleShape2D_ek4cl"]
radius = 7.0 radius = 7.0
[node name="AbstractPickup" type="Area2D"] [node name="AbstractPickup" type="Area2D" unique_id=1918087631]
collision_layer = 0 collision_layer = 0
collision_mask = 136 collision_mask = 136
script = ExtResource("1_ek4cl") script = ExtResource("1_ek4cl")
[node name="Sprite2D" type="Sprite2D" parent="."] [node name="Sprite2D" type="Sprite2D" parent="." unique_id=787072909]
material = SubResource("ShaderMaterial_4r7i4") material = SubResource("ShaderMaterial_4r7i4")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1835897926]
shape = SubResource("CircleShape2D_ek4cl") shape = SubResource("CircleShape2D_ek4cl")
[connection signal="body_entered" from="." to="." method="_on_body_entered"] [connection signal="body_entered" from="." to="." method="_on_body_entered"]
+4 -3
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://cudbspmpx6sik"] [gd_scene format=3 uid="uid://cudbspmpx6sik"]
[ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_e7pu1"] [ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_e7pu1"]
[ext_resource type="Script" uid="uid://sheh3mtq6k8o" path="res://game/pickups/book_pickup.gd" id="2_jsqc0"] [ext_resource type="Script" uid="uid://sheh3mtq6k8o" path="res://game/pickups/book_pickup.gd" id="2_jsqc0"]
@@ -8,8 +8,9 @@
atlas = ExtResource("3_yg5bj") atlas = ExtResource("3_yg5bj")
region = Rect2(16, 16, 16, 16) region = Rect2(16, 16, 16, 16)
[node name="BookPickup" instance=ExtResource("1_e7pu1")] [node name="BookPickup" unique_id=371783630 instance=ExtResource("1_e7pu1")]
script = ExtResource("2_jsqc0") script = ExtResource("2_jsqc0")
max_bounce_offset = 1.0
[node name="Sprite2D" parent="." index="0"] [node name="Sprite2D" parent="." index="0" unique_id=787072909]
texture = SubResource("AtlasTexture_cpnvb") texture = SubResource("AtlasTexture_cpnvb")
+4 -3
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://c4gqqhlew67ay"] [gd_scene format=3 uid="uid://c4gqqhlew67ay"]
[ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_u687g"] [ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_u687g"]
[ext_resource type="Script" uid="uid://dbssfh6ecgstl" path="res://game/pickups/circle_key_pickup.gd" id="2_sjfny"] [ext_resource type="Script" uid="uid://dbssfh6ecgstl" path="res://game/pickups/circle_key_pickup.gd" id="2_sjfny"]
@@ -8,8 +8,9 @@
atlas = ExtResource("3_pwkbp") atlas = ExtResource("3_pwkbp")
region = Rect2(0, 0, 16, 16) region = Rect2(0, 0, 16, 16)
[node name="CircleKeyPickup" instance=ExtResource("1_u687g")] [node name="CircleKeyPickup" unique_id=479576639 instance=ExtResource("1_u687g")]
script = ExtResource("2_sjfny") script = ExtResource("2_sjfny")
max_bounce_offset = 2.0
[node name="Sprite2D" parent="." index="0"] [node name="Sprite2D" parent="." index="0" unique_id=787072909]
texture = SubResource("AtlasTexture_mprb4") texture = SubResource("AtlasTexture_mprb4")
+4 -3
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://ciubf1ttwc133"] [gd_scene format=3 uid="uid://ciubf1ttwc133"]
[ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_20fsk"] [ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_20fsk"]
[ext_resource type="Script" uid="uid://ck5tvlprgwlet" path="res://game/pickups/square_key_pickup.gd" id="2_5ybdl"] [ext_resource type="Script" uid="uid://ck5tvlprgwlet" path="res://game/pickups/square_key_pickup.gd" id="2_5ybdl"]
@@ -8,8 +8,9 @@
atlas = ExtResource("3_5ybdl") atlas = ExtResource("3_5ybdl")
region = Rect2(0, 16, 16, 16) region = Rect2(0, 16, 16, 16)
[node name="SquareKeyPickup" instance=ExtResource("1_20fsk")] [node name="SquareKeyPickup" unique_id=439452023 instance=ExtResource("1_20fsk")]
script = ExtResource("2_5ybdl") script = ExtResource("2_5ybdl")
max_bounce_offset = 2.0
[node name="Sprite2D" parent="." index="0"] [node name="Sprite2D" parent="." index="0" unique_id=787072909]
texture = SubResource("AtlasTexture_fx152") texture = SubResource("AtlasTexture_fx152")
+4 -3
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://dqgmfpv2mhdpn"] [gd_scene format=3 uid="uid://dqgmfpv2mhdpn"]
[ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_qr3v1"] [ext_resource type="PackedScene" uid="uid://cmnfpr2h2hbeu" path="res://game/pickups/abstract_pickup.tscn" id="1_qr3v1"]
[ext_resource type="Script" uid="uid://c73gihkak2xns" path="res://game/pickups/triangle_key_pickup.gd" id="2_pn8rn"] [ext_resource type="Script" uid="uid://c73gihkak2xns" path="res://game/pickups/triangle_key_pickup.gd" id="2_pn8rn"]
@@ -8,8 +8,9 @@
atlas = ExtResource("3_5k6x8") atlas = ExtResource("3_5k6x8")
region = Rect2(16, 0, 16, 16) region = Rect2(16, 0, 16, 16)
[node name="TriangleKeyPickup" instance=ExtResource("1_qr3v1")] [node name="TriangleKeyPickup" unique_id=1774919784 instance=ExtResource("1_qr3v1")]
script = ExtResource("2_pn8rn") script = ExtResource("2_pn8rn")
max_bounce_offset = 2.0
[node name="Sprite2D" parent="." index="0"] [node name="Sprite2D" parent="." index="0" unique_id=787072909]
texture = SubResource("AtlasTexture_8ko2n") texture = SubResource("AtlasTexture_8ko2n")
+7 -9
View File
@@ -3,13 +3,11 @@ class_name AbstractColorPlatform
extends AbstractPlatform extends AbstractPlatform
enum PlatformColor { @export var initial_color := CollisionSwitcher.ObjectColor.White:
White, set(value):
Black, initial_color = value
} if Engine.is_editor_hint() and is_node_ready():
collision_switcher.switch_color()
@export var initial_color := PlatformColor.White
@onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher @onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher
@@ -17,6 +15,6 @@ enum PlatformColor {
func _ready() -> void: func _ready() -> void:
super._ready() super._ready()
collision_switcher.material = platform_sprite.material collision_switcher.add_material(platform_sprite.material)
if initial_color == PlatformColor.Black: if initial_color == CollisionSwitcher.ObjectColor.Black:
collision_switcher.switch_color() collision_switcher.switch_color()
+2 -2
View File
@@ -37,5 +37,5 @@ material = SubResource("ShaderMaterial_vbsvi")
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124] [node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
shape = SubResource("RectangleShape2D_pbfpg") shape = SubResource("RectangleShape2D_pbfpg")
[node name="CollisionSwitcher" parent="." index="3" unique_id=542648449 node_paths=PackedStringArray("object") instance=ExtResource("6_mk014")] [node name="CollisionSwitcher" parent="." index="3" unique_id=542648449 node_paths=PackedStringArray("objects") instance=ExtResource("6_mk014")]
object = NodePath("..") objects = [NodePath("..")]
-3
View File
@@ -9,7 +9,6 @@ const SHADER_PLATFORM_WIDTH = "shader_parameter/platform_width"
const ANIMATION_COLOR_SWITCHING = "color_switching" const ANIMATION_COLOR_SWITCHING = "color_switching"
const ANIMATION_HIDING = "hiding" const ANIMATION_HIDING = "hiding"
const ANIMATION_TIMER = "timer"
const ANIMATION_SELF_MOVING = "self_moving" const ANIMATION_SELF_MOVING = "self_moving"
@@ -36,7 +35,6 @@ const MAX_WIDTH = TILE_SIZE * 32
@onready var collision: CollisionShape2D = $CollisionShape2D @onready var collision: CollisionShape2D = $CollisionShape2D
@onready var standing_check_collision: CollisionShape2D = $Area2D/CollisionShape2D
@onready var sub_viewport: SubViewport = $SubViewport @onready var sub_viewport: SubViewport = $SubViewport
@onready var platform_sprite: Sprite2D = $Sprite2D @onready var platform_sprite: Sprite2D = $Sprite2D
@onready var platform_rect: ColorRect = $SubViewport/PlatformRect @onready var platform_rect: ColorRect = $SubViewport/PlatformRect
@@ -52,7 +50,6 @@ func _ready() -> void:
func rebuild_platform() -> void: func rebuild_platform() -> void:
collision.shape.size.x = platform_width collision.shape.size.x = platform_width
standing_check_collision.shape.size.x = platform_width - 4
var platfor_size := Vector2(platform_width, TILE_SIZE) var platfor_size := Vector2(platform_width, TILE_SIZE)
+2 -44
View File
@@ -4,7 +4,7 @@
[ext_resource type="Material" uid="uid://2hd2pw5cgn1r" path="res://game/materials/platform_gray.tres" id="2_2ivtb"] [ext_resource type="Material" uid="uid://2hd2pw5cgn1r" path="res://game/materials/platform_gray.tres" id="2_2ivtb"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="2_31xwx"] [ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="2_31xwx"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_jsq8n"] [ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_jsq8n"]
[ext_resource type="Texture2D" uid="uid://bi2h4g71bro7v" path="res://images/level/platform-icons.png" id="5_hgabr"] [ext_resource type="Texture2D" uid="uid://bi2h4g71bro7v" path="res://images/level/platform_icons.png" id="5_hgabr"]
[sub_resource type="ViewportTexture" id="ViewportTexture_2ivtb"] [sub_resource type="ViewportTexture" id="ViewportTexture_2ivtb"]
viewport_path = NodePath("SubViewport") viewport_path = NodePath("SubViewport")
@@ -225,22 +225,6 @@ region = Rect2(16, 48, 8, 8)
atlas = ExtResource("5_hgabr") atlas = ExtResource("5_hgabr")
region = Rect2(8, 48, 8, 8) region = Rect2(8, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_4g8bw"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 64, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_mhe6c"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 64, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_d8o7t"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 64, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_txrl7"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 64, 8, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_j4n83"] [sub_resource type="SpriteFrames" id="SpriteFrames_j4n83"]
animations = [{ animations = [{
"frames": [{ "frames": [{
@@ -470,32 +454,12 @@ animations = [{
"loop": 1, "loop": 1,
"name": &"self_moving", "name": &"self_moving",
"speed": 10.0 "speed": 10.0
}, {
"frames": [{
"duration": 15.0,
"texture": SubResource("AtlasTexture_4g8bw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mhe6c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d8o7t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_txrl7")
}],
"loop": 1,
"name": &"timer",
"speed": 10.0
}] }]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_jsq8n"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_jsq8n"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(16, 7) size = Vector2(16, 7)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhunq"]
size = Vector2(12, 1)
[node name="AbstractPlatform" type="AnimatableBody2D" unique_id=137546339] [node name="AbstractPlatform" type="AnimatableBody2D" unique_id=137546339]
collision_mask = 0 collision_mask = 0
script = ExtResource("1_426vp") script = ExtResource("1_426vp")
@@ -531,14 +495,8 @@ size_flags_vertical = 4
[node name="IconSprite" type="AnimatedSprite2D" parent="SubViewport" unique_id=1917841765] [node name="IconSprite" type="AnimatedSprite2D" parent="SubViewport" unique_id=1917841765]
position = Vector2(8, 4) position = Vector2(8, 4)
sprite_frames = SubResource("SpriteFrames_j4n83") sprite_frames = SubResource("SpriteFrames_j4n83")
animation = &"self_moving"
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=175449124] [node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=175449124]
position = Vector2(0, -0.5) position = Vector2(0, -0.5)
shape = SubResource("RectangleShape2D_jsq8n") shape = SubResource("RectangleShape2D_jsq8n")
[node name="Area2D" type="Area2D" parent="." unique_id=1655744842]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=1261028767]
position = Vector2(0, -4.5)
shape = SubResource("RectangleShape2D_bhunq")
debug_color = Color(0.9020316, 0.24375501, 0.4918024, 0.41960785)
+23
View File
@@ -0,0 +1,23 @@
@tool
class_name HiddenColorPlatform
extends AbstractColorPlatform
func _ready() -> void:
super._ready()
icon_sprite.play(ANIMATION_HIDING)
if not Engine.is_editor_hint():
if initial_color == CollisionSwitcher.ObjectColor.White:
platform_sprite.hide()
func set_player(player: Player) -> void:
player.color_switched.connect(_on_player_color_switched)
func _on_player_color_switched(player_new_color: CollisionSwitcher.ObjectColor) -> void:
if player_new_color == initial_color:
platform_sprite.hide()
else:
platform_sprite.show()
@@ -0,0 +1 @@
uid://bmdc7dyijp211
+49
View File
@@ -0,0 +1,49 @@
[gd_scene format=3 uid="uid://bqb2qncny11a"]
[ext_resource type="PackedScene" uid="uid://wpkj48bqyuy2" path="res://game/platform/abstract_color_platform.tscn" id="1_s638m"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="2_4acet"]
[ext_resource type="Script" uid="uid://bmdc7dyijp211" path="res://game/platform/hidden_color_platform.gd" id="2_nlrds"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="3_nlrds"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="4_h5jhn"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ff5f1"]
resource_local_to_scene = true
shader = ExtResource("2_4acet")
shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5
shader_parameter/speed = 1.0
shader_parameter/intensity = 1.0
shader_parameter/scale = 5.0
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(1, 1)
shader_parameter/use_world_pos = false
[sub_resource type="ViewportTexture" id="ViewportTexture_17dby"]
viewport_path = NodePath("SubViewport")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_el5k2"]
resource_local_to_scene = true
shader = ExtResource("3_nlrds")
shader_parameter/tile_size = 8.0
shader_parameter/platform_width = 24.0
shader_parameter/atlas = ExtResource("4_h5jhn")
shader_parameter/seed = 0.12241629
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hm14r"]
resource_local_to_scene = true
size = Vector2(16, 7)
[node name="HiddenColorPlatform" unique_id=137546339 instance=ExtResource("1_s638m")]
script = ExtResource("2_nlrds")
[node name="Sprite2D" parent="." index="0" unique_id=264863796]
material = SubResource("ShaderMaterial_ff5f1")
texture = SubResource("ViewportTexture_17dby")
[node name="PlatformRect" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="0" unique_id=794315918]
material = SubResource("ShaderMaterial_el5k2")
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
shape = SubResource("RectangleShape2D_hm14r")
+62
View File
@@ -0,0 +1,62 @@
@tool
class_name TouchColorPlatform
extends AbstractColorPlatform
const INTENSITY = 0.85
const INTENSITY_SET_TIME = 0.5
const SWITCH_TIME = 1.5
var _is_body_in := false
var _intensity_tween : Tween
@onready var touch_check_collision: CollisionShape2D = $Area2D/CollisionShape2D
@onready var switch_timer: Timer = $SwitchTimer
func _ready() -> void:
super._ready()
icon_sprite.hide()
_reset_intensity()
func rebuild_platform() -> void:
super.rebuild_platform()
touch_check_collision.shape.size.x = platform_width - 4
func _switch() -> void:
collision_switcher.switch_color(SWITCH_TIME)
func _reset_intensity() -> void:
if _intensity_tween != null and _intensity_tween.is_running():
_intensity_tween.kill()
_intensity_tween = create_tween()
_intensity_tween.tween_property(platform_sprite.material, CollisionSwitcher.SHADER_INTENSITY, \
INTENSITY, INTENSITY_SET_TIME)
func _on_body_entered(_body: Node2D) -> void:
_is_body_in = true
_switch()
func _on_body_exited(_body: Node2D) -> void:
_is_body_in = false
func _on_collision_switched(_color: CollisionSwitcher.ObjectColor) -> void:
_reset_intensity()
if _is_body_in:
switch_timer.start()
func _on_switch_timer_timeout() -> void:
if _is_body_in:
_switch()
@@ -0,0 +1 @@
uid://d2xfxje428psp
+73
View File
@@ -0,0 +1,73 @@
[gd_scene format=3 uid="uid://cpntbx0bpni2t"]
[ext_resource type="PackedScene" uid="uid://wpkj48bqyuy2" path="res://game/platform/abstract_color_platform.tscn" id="1_xxggt"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_4n4xw"]
[ext_resource type="Script" uid="uid://d2xfxje428psp" path="res://game/platform/touch_color_platform.gd" id="2_wa58h"]
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="3_vol56"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="3_wa58h"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_wa58h"]
resource_local_to_scene = true
shader = ExtResource("3_vol56")
shader_parameter/black_color = Color(0, 0, 0, 1)
shader_parameter/white_color = Color(1, 1, 1, 1)
shader_parameter/switch_colors = false
shader_parameter/threshold = 0.5
shader_parameter/speed = 1.0
shader_parameter/intensity = 1.0
shader_parameter/scale = 5.0
shader_parameter/seed = 0.0
shader_parameter/direction = Vector2(1, 1)
shader_parameter/use_world_pos = false
[sub_resource type="ViewportTexture" id="ViewportTexture_vol56"]
viewport_path = NodePath("SubViewport")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_4wo0k"]
resource_local_to_scene = true
shader = ExtResource("2_4n4xw")
shader_parameter/tile_size = 8.0
shader_parameter/platform_width = 24.0
shader_parameter/atlas = ExtResource("3_wa58h")
shader_parameter/seed = 0.12241629
[sub_resource type="RectangleShape2D" id="RectangleShape2D_3k57e"]
resource_local_to_scene = true
size = Vector2(16, 7)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhunq"]
size = Vector2(12, 1)
[node name="TouchColorPlatform" unique_id=137546339 instance=ExtResource("1_xxggt")]
script = ExtResource("2_wa58h")
[node name="Sprite2D" parent="." index="0" unique_id=264863796]
material = SubResource("ShaderMaterial_wa58h")
texture = SubResource("ViewportTexture_vol56")
[node name="PlatformRect" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="0" unique_id=794315918]
material = SubResource("ShaderMaterial_4wo0k")
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
shape = SubResource("RectangleShape2D_3k57e")
[node name="CollisionSwitcher" parent="." index="3" unique_id=542648449 node_paths=PackedStringArray("objects")]
objects = [NodePath(".."), NodePath("../Area2D")]
[node name="Area2D" type="Area2D" parent="." index="4" unique_id=1655744842]
collision_layer = 0
collision_mask = 192
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" index="0" unique_id=1261028767]
position = Vector2(0, -4.5)
shape = SubResource("RectangleShape2D_bhunq")
debug_color = Color(0.9020316, 0.24375501, 0.4918024, 0.41960785)
[node name="SwitchTimer" type="Timer" parent="." index="5" unique_id=1137076745]
wait_time = 0.5
one_shot = true
[connection signal="switched" from="CollisionSwitcher" to="." method="_on_collision_switched"]
[connection signal="body_entered" from="Area2D" to="." method="_on_body_entered"]
[connection signal="body_exited" from="Area2D" to="." method="_on_body_exited"]
[connection signal="timeout" from="SwitchTimer" to="." method="_on_switch_timer_timeout"]
@@ -1,5 +1,5 @@
@tool @tool
class_name ColorSwitchingPlatform class_name TriggerColorPlatform
extends AbstractColorPlatform extends AbstractColorPlatform
@@ -1,14 +1,14 @@
[gd_scene format=3 uid="uid://bwmd8w677p7k3"] [gd_scene format=3 uid="uid://bwmd8w677p7k3"]
[ext_resource type="PackedScene" uid="uid://wpkj48bqyuy2" path="res://game/platform/abstract_color_platform.tscn" id="1_6jqdv"] [ext_resource type="PackedScene" uid="uid://wpkj48bqyuy2" path="res://game/platform/abstract_color_platform.tscn" id="1_6jqdv"]
[ext_resource type="Script" uid="uid://b2bityno64bl4" path="res://game/platform/color_switching_platform.gd" id="2_sbqh7"] [ext_resource type="Script" uid="uid://b2bityno64bl4" path="res://game/platform/trigger_color_platform.gd" id="2_sbqh7"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_svoke"] [ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_svoke"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="3_sbqh7"] [ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="3_sbqh7"]
[sub_resource type="ViewportTexture" id="ViewportTexture_svoke"] [sub_resource type="ViewportTexture" id="ViewportTexture_ju1s0"]
viewport_path = NodePath("SubViewport") viewport_path = NodePath("SubViewport")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sbqh7"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_avsyr"]
resource_local_to_scene = true resource_local_to_scene = true
shader = ExtResource("2_svoke") shader = ExtResource("2_svoke")
shader_parameter/tile_size = 8.0 shader_parameter/tile_size = 8.0
@@ -16,18 +16,22 @@ shader_parameter/platform_width = 24.0
shader_parameter/atlas = ExtResource("3_sbqh7") shader_parameter/atlas = ExtResource("3_sbqh7")
shader_parameter/seed = 0.12241629 shader_parameter/seed = 0.12241629
[sub_resource type="RectangleShape2D" id="RectangleShape2D_5slkc"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_i7ji2"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(16, 7) size = Vector2(16, 7)
[node name="ColorSwitchingPlatform" unique_id=137546339 instance=ExtResource("1_6jqdv")] [node name="TriggerColorPlatform" unique_id=137546339 instance=ExtResource("1_6jqdv")]
script = ExtResource("2_sbqh7") script = ExtResource("2_sbqh7")
[node name="Sprite2D" parent="." index="0" unique_id=264863796] [node name="Sprite2D" parent="." index="0" unique_id=264863796]
texture = SubResource("ViewportTexture_svoke") texture = SubResource("ViewportTexture_ju1s0")
[node name="PlatformRect" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="0" unique_id=794315918] [node name="PlatformRect" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="0" unique_id=794315918]
material = SubResource("ShaderMaterial_sbqh7") material = SubResource("ShaderMaterial_avsyr")
[node name="IconSprite" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="1" unique_id=1917841765]
animation = &"color_switching"
frame_progress = 0.021697018
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124] [node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
shape = SubResource("RectangleShape2D_5slkc") shape = SubResource("RectangleShape2D_i7ji2")
+4 -2
View File
@@ -9,12 +9,14 @@ uniform float threshold : hint_range(0.0, 1.0) = 0.5;
uniform float speed : hint_range(0.0, 10.0) = 0.5; uniform float speed : hint_range(0.0, 10.0) = 0.5;
uniform float intensity : hint_range(0.0, 1.0) = 1.0; uniform float intensity : hint_range(0.0, 1.0) = 1.0;
uniform float scale : hint_range(0.0, 100.0) = 20.0; uniform float scale : hint_range(0.0, 100.0) = 20.0;
uniform float seed : hint_range(0.0, 1.0) = 0.0;
uniform vec2 direction = vec2(1.0, 1.0);
uniform bool use_world_pos = false; uniform bool use_world_pos = false;
vec2 random(vec2 uv){ vec2 random(vec2 uv){
uv = vec2( dot(uv, vec2(127.1,311.7) ), uv = vec2( dot(uv, vec2(127.1,311.7) ),
dot(uv, vec2(269.5,183.3) ) ); dot(uv, vec2(269.5,183.3) ) );
return -1.0 + 2.0 * fract(sin(uv) * 43758.5453123); return -1.0 + 2.0 * fract((sin(uv) + seed) * 43758.5453123);
} }
float noise(vec2 uv) { float noise(vec2 uv) {
@@ -47,7 +49,7 @@ void fragment() {
is_black = !is_black; is_black = !is_black;
} }
if (intensity < 1.0) { if (intensity < 1.0) {
vec2 coord = noise_uv * scale + TIME * speed; vec2 coord = noise_uv * scale + TIME * speed * normalize(direction);
if (noise(coord) > intensity) { if (noise(coord) > intensity) {
is_black = !is_black; is_black = !is_black;
+4 -10
View File
@@ -5,19 +5,13 @@ uniform float glow_radius : hint_range(0.0, 1.0, 0.00001) = 1.0;
uniform float travel_time : hint_range(0.0, 100.0, 1) = 5.0; uniform float travel_time : hint_range(0.0, 100.0, 1) = 5.0;
float get_alpha(vec2 uv, float offset) { float get_alpha(vec2 uv, float offset) {
float dist = fract(mod(TIME, travel_time)/travel_time + offset); float progress = fract(mod(TIME, travel_time)/travel_time + offset);
float left = uv.x - glow_radius; return step(distance(progress, uv.x), glow_radius);
float right = uv.x + glow_radius;
return step(left, dist) * (1.0 - step(right, dist));
} }
void fragment() { void fragment() {
float alpha = 0.0; COLOR.a = 0.0;
float offset = 0.0;
for (float offset = 0.0; offset <= 1.0; offset += glow_interval) { for (float offset = 0.0; offset <= 1.0; offset += glow_interval) {
alpha += get_alpha(UV, offset); COLOR.a += get_alpha(UV, offset);
} }
COLOR.a = alpha;
} }
+9
View File
@@ -0,0 +1,9 @@
shader_type canvas_item;
uniform sampler2D screen_texture : hint_screen_texture, filter_nearest;
void fragment() {
vec4 screen_color = texture(screen_texture, SCREEN_UV);
vec3 inverted_color = 1.0 - screen_color.rgb;
COLOR.rgb = vec3(inverted_color);
}
+1
View File
@@ -0,0 +1 @@
uid://cdakbomof1cc6
+87 -4
View File
@@ -12,7 +12,11 @@ texture = ExtResource("1_wrl76")
0:0/animation_frame_2/duration = 1.0 0:0/animation_frame_2/duration = 1.0
0:0/animation_frame_3/duration = 1.0 0:0/animation_frame_3/duration = 1.0
0:0/0 = 0 0:0/0 = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 7, 8, 7, 8, 8, -8, 8) 0:0/0/terrain_set = 0
0:0/0/terrain = 0
0:0/0/terrains_peering_bit/right_side = 0
0:0/0/terrains_peering_bit/bottom_side = 0
0:0/0/terrains_peering_bit/left_side = 0
0:1/animation_columns = 4 0:1/animation_columns = 4
0:1/animation_speed = 5.0 0:1/animation_speed = 5.0
0:1/animation_mode = 1 0:1/animation_mode = 1
@@ -21,11 +25,90 @@ texture = ExtResource("1_wrl76")
0:1/animation_frame_2/duration = 1.0 0:1/animation_frame_2/duration = 1.0
0:1/animation_frame_3/duration = 1.0 0:1/animation_frame_3/duration = 1.0
0:1/0 = 0 0:1/0 = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8) 0:1/0/terrain_set = 0
0:1/0/terrain = 0
0:1/0/terrains_peering_bit/right_side = 0
0:1/0/terrains_peering_bit/bottom_side = 0
0:1/0/terrains_peering_bit/left_side = 0
0:1/0/terrains_peering_bit/top_side = 0
0:2/animation_speed = 5.0
0:2/animation_frame_0/duration = 1.0
0:2/animation_frame_1/duration = 1.0
0:2/animation_frame_2/duration = 1.0
0:2/animation_frame_3/duration = 1.0
0:2/0 = 0
0:2/0/terrain_set = 0
0:2/0/terrain = 0
0:2/0/terrains_peering_bit/bottom_side = 0
0:2/0/terrains_peering_bit/left_side = 0
0:3/animation_speed = 5.0
0:3/animation_frame_0/duration = 1.0
0:3/animation_frame_1/duration = 1.0
0:3/animation_frame_2/duration = 1.0
0:3/animation_frame_3/duration = 1.0
0:3/0 = 0
0:3/0/terrain_set = 0
0:3/0/terrain = 0
0:3/0/terrains_peering_bit/bottom_side = 0
0:3/0/terrains_peering_bit/left_side = 0
0:3/0/terrains_peering_bit/top_side = 0
0:4/animation_speed = 5.0
0:4/animation_frame_0/duration = 1.0
0:4/animation_frame_1/duration = 1.0
0:4/animation_frame_2/duration = 1.0
0:4/animation_frame_3/duration = 1.0
0:4/0 = 0
0:4/0/terrain_set = 0
0:4/0/terrain = 0
0:4/0/terrains_peering_bit/right_side = 0
0:4/0/terrains_peering_bit/bottom_side = 0
0:5/animation_speed = 5.0
0:5/animation_frame_0/duration = 1.0
0:5/animation_frame_1/duration = 1.0
0:5/animation_frame_2/duration = 1.0
0:5/animation_frame_3/duration = 1.0
0:5/0 = 0
0:5/0/terrain_set = 0
0:5/0/terrain = 0
0:5/0/terrains_peering_bit/right_side = 0
0:5/0/terrains_peering_bit/bottom_side = 0
0:5/0/terrains_peering_bit/top_side = 0
0:6/animation_speed = 5.0
0:6/animation_frame_0/duration = 1.0
0:6/animation_frame_1/duration = 1.0
0:6/animation_frame_2/duration = 1.0
0:6/animation_frame_3/duration = 1.0
0:6/0 = 0
0:6/0/terrain_set = 0
0:6/0/terrain = 0
0:6/0/terrains_peering_bit/right_side = 0
0:6/0/terrains_peering_bit/left_side = 0
0:6/0/terrains_peering_bit/top_side = 0
0:7/animation_speed = 5.0
0:7/animation_frame_0/duration = 1.0
0:7/animation_frame_1/duration = 1.0
0:7/animation_frame_2/duration = 1.0
0:7/animation_frame_3/duration = 1.0
0:7/0 = 0
0:7/0/terrain_set = 0
0:7/0/terrain = 0
0:7/0/terrains_peering_bit/left_side = 0
0:7/0/terrains_peering_bit/top_side = 0
0:8/animation_speed = 5.0
0:8/animation_frame_0/duration = 1.0
0:8/animation_frame_1/duration = 1.0
0:8/animation_frame_2/duration = 1.0
0:8/animation_frame_3/duration = 1.0
0:8/0 = 0
0:8/0/terrain_set = 0
0:8/0/terrain = 0
0:8/0/terrains_peering_bit/right_side = 0
0:8/0/terrains_peering_bit/top_side = 0
[sub_resource type="TileSet" id="TileSet_un604"] [sub_resource type="TileSet" id="TileSet_un604"]
physics_layer_0/collision_layer = 16 terrain_set_0/mode = 2
physics_layer_0/collision_mask = 16 terrain_set_0/terrain_0/name = "Water"
terrain_set_0/terrain_0/color = Color(0.17461759, 0.21010289, 0.99999994, 1)
sources/0 = SubResource("TileSetAtlasSource_3fw0b") sources/0 = SubResource("TileSetAtlasSource_3fw0b")
[node name="Traps" type="TileMapLayer" unique_id=397992951] [node name="Traps" type="TileMapLayer" unique_id=397992951]
+1374 -146
View File
File diff suppressed because it is too large Load Diff

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