Compare commits
19 Commits
08c6e3a870
..
states
| Author | SHA1 | Date | |
|---|---|---|---|
| 9590e29956 | |||
| 1f4e17648d | |||
| 017263b2bb | |||
| 00ecde975e | |||
| e2dcad2e41 | |||
| 04f2325489 | |||
| 68929cef64 | |||
| ad410e5ec5 | |||
| 05532b1f6f | |||
| 569cde340b | |||
| a1601c9266 | |||
| 6452b8e2e3 | |||
| 66ee9887c8 | |||
| 1983165cf8 | |||
| e2c5cd35ec | |||
| e1e2cb3bd1 | |||
| 04cbca0ce1 | |||
| 0a8c9a8163 | |||
| 6667047406 |
@@ -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
|
||||
@@ -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
|
||||
@@ -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()
|
||||
+75
-61
@@ -1,23 +1,38 @@
|
||||
[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="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_w1t0g"]
|
||||
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="3_tjvyk"]
|
||||
[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://bq1v55jv4c6qe" path="res://game/characters/enemies/state_machine/cultist_state.tscn" id="5_tu2pi"]
|
||||
[ext_resource type="Script" uid="uid://bqnq6m0s4etqh" path="res://game/characters/enemies/state_machine/fall_state.gd" id="7_7tkj8"]
|
||||
[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://cxg54u14yb6go" path="res://game/characters/enemies/state_machine/fall_right_state.gd" id="9_lu83c"]
|
||||
[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://hgn4yll571hp" path="res://game/characters/enemies/state_machine/walk_left_state.gd" id="11_lh753"]
|
||||
[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://cn2lfl4kuxvjk" path="res://game/characters/enemies/state_machine/chase_left_state.gd" id="13_42ivi"]
|
||||
[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://3kl84tu1vwiv" path="res://game/characters/enemies/state_machine/chase_right_state.gd" id="14_cqp7f"]
|
||||
[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://but5aeh7y1s0f" path="res://game/characters/enemies/cultist.gd" id="1_ah13v"]
|
||||
[ext_resource type="PackedScene" uid="uid://8yd8f5x1hujv" path="res://game/characters/water_splash.tscn" id="2_go1hq"]
|
||||
[ext_resource type="PackedScene" uid="uid://dtxiercm8dsfm" path="res://game/characters/enemies/cultist_sprite.tscn" id="3_mbt3t"]
|
||||
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="4_ul6ar"]
|
||||
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="5_500rx"]
|
||||
[ext_resource type="PackedScene" uid="uid://bg7k6ovbk1xgm" path="res://game/characters/enemies/state_machine/cultist_state_machine.tscn" id="6_oqd45"]
|
||||
[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://bqnq6m0s4etqh" path="res://game/characters/enemies/state_machine/fall_state.gd" id="8_h77eg"]
|
||||
[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://cxg54u14yb6go" path="res://game/characters/enemies/state_machine/fall_right_state.gd" id="10_mye2w"]
|
||||
[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://hgn4yll571hp" path="res://game/characters/enemies/state_machine/walk_left_state.gd" id="12_vm7uu"]
|
||||
[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://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="15_1yxn0"]
|
||||
[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")
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_mocsw"]
|
||||
@@ -28,25 +43,19 @@ height = 28.0
|
||||
radius = 4.0
|
||||
height = 28.0
|
||||
|
||||
[node name="AbstractCultist" type="CharacterBody2D" unique_id=1676614852]
|
||||
collision_layer = 0
|
||||
script = ExtResource("1_2wrno")
|
||||
[node name="Cultist" type="CharacterBody2D" unique_id=1676614852]
|
||||
collision_layer = 64
|
||||
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)
|
||||
|
||||
[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]
|
||||
position = Vector2(0, 2)
|
||||
shape = SubResource("CapsuleShape2D_mocsw")
|
||||
@@ -56,18 +65,22 @@ position = Vector2(0, -8)
|
||||
|
||||
[node name="LeftWallRay" type="RayCast2D" parent="WallCheckHigh" unique_id=1026693538]
|
||||
target_position = Vector2(-16, 0)
|
||||
collision_mask = 33
|
||||
|
||||
[node name="RightWallRay" type="RayCast2D" parent="WallCheckHigh" unique_id=1129233918]
|
||||
target_position = Vector2(16, 0)
|
||||
collision_mask = 33
|
||||
|
||||
[node name="WallCheckLow" type="Node2D" parent="." unique_id=782156094]
|
||||
position = Vector2(0, 9)
|
||||
|
||||
[node name="LeftWallRay" type="RayCast2D" parent="WallCheckLow" unique_id=521416854]
|
||||
target_position = Vector2(-16, 0)
|
||||
collision_mask = 33
|
||||
|
||||
[node name="RightWallRay" type="RayCast2D" parent="WallCheckLow" unique_id=1457669135]
|
||||
target_position = Vector2(16, 0)
|
||||
collision_mask = 33
|
||||
|
||||
[node name="PlayerCloseCheck" type="Node2D" parent="." unique_id=1593775088]
|
||||
position = Vector2(0, -8)
|
||||
@@ -75,12 +88,12 @@ position = Vector2(0, -8)
|
||||
[node name="LeftPlayerCloseRay" type="RayCast2D" parent="PlayerCloseCheck" unique_id=947570027]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector2(-48, 0)
|
||||
collision_mask = 0
|
||||
collision_mask = 161
|
||||
|
||||
[node name="RightPlayerCloseRay" type="RayCast2D" parent="PlayerCloseCheck" unique_id=1559118218]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector2(48, 0)
|
||||
collision_mask = 0
|
||||
collision_mask = 161
|
||||
|
||||
[node name="PlayerDistantCheck" type="Node2D" parent="." unique_id=1597489123]
|
||||
position = Vector2(0, -8)
|
||||
@@ -88,43 +101,44 @@ position = Vector2(0, -8)
|
||||
[node name="LeftPlayerDistantRay" type="RayCast2D" parent="PlayerDistantCheck" unique_id=1491085518]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector2(-320, 0)
|
||||
collision_mask = 0
|
||||
collision_mask = 161
|
||||
|
||||
[node name="RightPlayerDistantRay" type="RayCast2D" parent="PlayerDistantCheck" unique_id=1377654831]
|
||||
unique_name_in_owner = true
|
||||
target_position = Vector2(320, 0)
|
||||
collision_mask = 0
|
||||
collision_mask = 161
|
||||
|
||||
[node name="KillingArea" parent="." unique_id=1891922549 instance=ExtResource("3_tjvyk")]
|
||||
collision_mask = 0
|
||||
[node name="KillingArea" parent="." unique_id=1891922549 instance=ExtResource("5_500rx")]
|
||||
collision_mask = 128
|
||||
type = 2
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="KillingArea" unique_id=1710758452]
|
||||
position = Vector2(0, 2)
|
||||
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("..")
|
||||
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")]
|
||||
script = ExtResource("7_7tkj8")
|
||||
[node name="FallState" parent="CultistStateMachine" unique_id=1764777802 node_paths=PackedStringArray("look_around_state", "cultist") instance=ExtResource("7_nsxyj")]
|
||||
script = ExtResource("8_h77eg")
|
||||
look_around_state = NodePath("../LookAroundState")
|
||||
cultist = NodePath("../..")
|
||||
|
||||
[node name="FallLeftState" parent="CultistStateMachine" unique_id=1011952297 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("5_tu2pi")]
|
||||
script = ExtResource("8_2opx4")
|
||||
[node name="FallLeftState" parent="CultistStateMachine" unique_id=1011952297 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("7_nsxyj")]
|
||||
script = ExtResource("9_uasba")
|
||||
fall_state = NodePath("../FallState")
|
||||
look_around_state = NodePath("../LookAroundState")
|
||||
cultist = NodePath("../..")
|
||||
|
||||
[node name="FallRightState" parent="CultistStateMachine" unique_id=1932915544 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("5_tu2pi")]
|
||||
script = ExtResource("9_lu83c")
|
||||
[node name="FallRightState" parent="CultistStateMachine" unique_id=1932915544 node_paths=PackedStringArray("fall_state", "look_around_state", "cultist") instance=ExtResource("7_nsxyj")]
|
||||
script = ExtResource("10_mye2w")
|
||||
fall_state = NodePath("../FallState")
|
||||
look_around_state = NodePath("../LookAroundState")
|
||||
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")]
|
||||
script = ExtResource("10_lu83c")
|
||||
[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("11_rqqg0")
|
||||
fall_state = NodePath("../FallState")
|
||||
walk_left_state = NodePath("../WalkLeftState")
|
||||
walk_right_state = NodePath("../WalkRightState")
|
||||
@@ -132,40 +146,40 @@ chase_left_state = NodePath("../ChaseLeftState")
|
||||
chase_right_state = NodePath("../ChaseRightState")
|
||||
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")]
|
||||
script = ExtResource("11_lh753")
|
||||
[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("12_vm7uu")
|
||||
chase_state = NodePath("../ChaseLeftState")
|
||||
another_direction_walk_state = NodePath("../WalkRightState")
|
||||
fall_state = NodePath("../FallLeftState")
|
||||
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")]
|
||||
script = ExtResource("12_lh753")
|
||||
[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("13_x8b3k")
|
||||
chase_state = NodePath("../ChaseRightState")
|
||||
another_direction_walk_state = NodePath("../WalkLeftState")
|
||||
fall_state = NodePath("../FallRightState")
|
||||
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")]
|
||||
script = ExtResource("13_42ivi")
|
||||
[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("14_d5aal")
|
||||
look_around_state = NodePath("../LookAroundState")
|
||||
jump_state = NodePath("../JumpLeftState")
|
||||
fall_state = NodePath("../FallState")
|
||||
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")]
|
||||
script = ExtResource("14_cqp7f")
|
||||
[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("15_1yxn0")
|
||||
look_around_state = NodePath("../LookAroundState")
|
||||
jump_state = NodePath("../JumpRightState")
|
||||
fall_state = NodePath("../FallState")
|
||||
cultist = NodePath("../..")
|
||||
|
||||
[node name="JumpLeftState" parent="CultistStateMachine" unique_id=739226464 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("5_tu2pi")]
|
||||
script = ExtResource("14_42ivi")
|
||||
[node name="JumpLeftState" parent="CultistStateMachine" unique_id=739226464 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("7_nsxyj")]
|
||||
script = ExtResource("16_11eub")
|
||||
chase_state = NodePath("../ChaseLeftState")
|
||||
cultist = NodePath("../..")
|
||||
|
||||
[node name="JumpRightState" parent="CultistStateMachine" unique_id=756126836 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("5_tu2pi")]
|
||||
script = ExtResource("15_cqp7f")
|
||||
[node name="JumpRightState" parent="CultistStateMachine" unique_id=756126836 node_paths=PackedStringArray("chase_state", "cultist") instance=ExtResource("7_nsxyj")]
|
||||
script = ExtResource("17_6hjcx")
|
||||
chase_state = NodePath("../ChaseRightState")
|
||||
cultist = NodePath("../..")
|
||||
@@ -1,7 +1,31 @@
|
||||
@tool
|
||||
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_LEFT = "fall_left"
|
||||
const ANIMATION_FALL_RIGHT = "fall_right"
|
||||
@@ -21,3 +45,41 @@ const LOOK_AROUND_ANIMATIONS : Array[String] = [
|
||||
ANIMATION_LOOK_AROUND_1,
|
||||
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
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
[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="Script" uid="uid://dkxmwkjttbf2d" path="res://game/characters/enemies/cultist_sprite.gd" id="3_ef0vi"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vecdo"]
|
||||
shader = ExtResource("1_ew6gn")
|
||||
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="ViewportTexture" id="ViewportTexture_bhunq"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_l58xb"]
|
||||
atlas = ExtResource("2_g4n4l")
|
||||
@@ -177,7 +170,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_x6npu")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"chase_left",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
@@ -206,7 +199,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0xs27")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"chase_right",
|
||||
"speed": 20.0
|
||||
}, {
|
||||
@@ -214,7 +207,7 @@ animations = [{
|
||||
"duration": 10.0,
|
||||
"texture": SubResource("AtlasTexture_tjvyk")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"fall",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -222,7 +215,7 @@ animations = [{
|
||||
"duration": 5.0,
|
||||
"texture": SubResource("AtlasTexture_vecdo")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"fall_left",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -230,7 +223,7 @@ animations = [{
|
||||
"duration": 5.0,
|
||||
"texture": SubResource("AtlasTexture_qly8p")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"fall_right",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -244,7 +237,7 @@ animations = [{
|
||||
"duration": 5.0,
|
||||
"texture": SubResource("AtlasTexture_ijx3p")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"idle",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -252,7 +245,7 @@ animations = [{
|
||||
"duration": 5.0,
|
||||
"texture": SubResource("AtlasTexture_klrad")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"jump",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -260,7 +253,7 @@ animations = [{
|
||||
"duration": 5.0,
|
||||
"texture": SubResource("AtlasTexture_rjy0i")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"jump_left",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -268,7 +261,7 @@ animations = [{
|
||||
"duration": 5.0,
|
||||
"texture": SubResource("AtlasTexture_ps2ar")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"jump_right",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -285,7 +278,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_soo8x")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"look_around",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -305,7 +298,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_vbirv")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": 0,
|
||||
"name": &"look_around_1",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -325,7 +318,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_hrljr")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": 0,
|
||||
"name": &"look_around_2",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -354,7 +347,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_x6npu")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"walk_left",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
@@ -383,13 +376,21 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_0xs27")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"walk_right",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[node name="CultistSprite" type="AnimatedSprite2D" unique_id=351120861]
|
||||
material = SubResource("ShaderMaterial_vecdo")
|
||||
[node name="CultistSprite" type="Sprite2D" unique_id=1870874123]
|
||||
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")
|
||||
animation = &"idle"
|
||||
script = ExtResource("3_ef0vi")
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
class_name GrayCultist
|
||||
extends AbstractCultist
|
||||
@@ -1 +0,0 @@
|
||||
uid://cern5veiqkrkc
|
||||
@@ -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
|
||||
|
||||
|
||||
@export var cultist: AbstractCultist
|
||||
@export var cultist: Cultist
|
||||
|
||||
|
||||
func _get_colliding_player(ray_cast: RayCast2D) -> Player:
|
||||
|
||||
@@ -2,4 +2,4 @@ class_name CultistStateMachine
|
||||
extends StateMachine
|
||||
|
||||
|
||||
@export var cultist: AbstractCultist
|
||||
@export var cultist: Cultist
|
||||
|
||||
@@ -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
|
||||
@@ -4,6 +4,7 @@ extends CharacterBody2D
|
||||
|
||||
signal dead
|
||||
signal interacted
|
||||
signal color_switched(new_color: CollisionSwitcher.ObjectColor)
|
||||
|
||||
|
||||
const PICKUP_OFFSET = 16.0
|
||||
@@ -24,19 +25,23 @@ var _is_switching_needed := false
|
||||
|
||||
|
||||
@onready var camera : Camera2D = $Camera2D
|
||||
@onready var water_splash : GPUParticles2D = $WaterSplash
|
||||
@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 pickups : Node2D = $Pickups
|
||||
|
||||
@onready var switch_buffer_timer : Timer = $SwitchBufferTimer
|
||||
@onready var jump_buffer_timer : Timer = $JumpBufferTimer
|
||||
@onready var coyote_time_timer : Timer = $CoyoteTimeTimer
|
||||
|
||||
@onready var center_area : Area2D = $CenterArea2D
|
||||
@onready var state_machine : PlayerStateMachine = $PlayerStateMachine
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
collision_switcher.material = sprite.material
|
||||
collision_switcher.add_material(sprite.material)
|
||||
|
||||
state_machine.init()
|
||||
|
||||
@@ -77,7 +82,7 @@ func _physics_process(delta: float) -> void:
|
||||
else:
|
||||
_slow_down(delta)
|
||||
|
||||
if _is_switching_needed:
|
||||
if _is_switching_needed and not is_dead:
|
||||
_switch()
|
||||
|
||||
move_and_slide()
|
||||
@@ -85,22 +90,19 @@ func _physics_process(delta: float) -> 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()
|
||||
|
||||
|
||||
func _switch() -> void:
|
||||
_is_switching_needed = false
|
||||
|
||||
if is_dead:
|
||||
return
|
||||
|
||||
if center_area.get_overlapping_bodies().size() == 0:
|
||||
if center_area.get_overlapping_bodies().size() == 0 and not switch_effect.emitting:
|
||||
SoundManager.play_sfx_stream(SoundManager.sfx_stream_switch, global_position)
|
||||
collision_switcher.switch_color()
|
||||
particles.restart()
|
||||
else:
|
||||
_is_switching_needed = true
|
||||
switch_buffer_timer.stop()
|
||||
switch_effect.restart()
|
||||
_is_switching_needed = false
|
||||
|
||||
|
||||
func kill(type := KillingArea.Type.None) -> void:
|
||||
@@ -108,6 +110,9 @@ func kill(type := KillingArea.Type.None) -> void:
|
||||
KillingArea.Type.Water:
|
||||
SoundManager.play_sfx_stream(SoundManager.sfx_stream_splash, global_position)
|
||||
water_splash.restart()
|
||||
KillingArea.Type.Cultist:
|
||||
SoundManager.play_sfx_stream(SoundManager.sfx_stream_blood, global_position)
|
||||
blood_splash.restart()
|
||||
is_dead = true
|
||||
|
||||
|
||||
@@ -141,3 +146,11 @@ func _rearrange_pickups() -> void:
|
||||
var node := children[i] as Node2D
|
||||
node.position.x = i * PICKUP_OFFSET - pickup_shift
|
||||
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)
|
||||
|
||||
@@ -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://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="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://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"]
|
||||
@@ -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://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"]
|
||||
particle_flag_disable_z = true
|
||||
emission_shape = 3
|
||||
@@ -40,13 +54,24 @@ collision_layer = 128
|
||||
collision_mask = 33
|
||||
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")]
|
||||
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
|
||||
amount = 16
|
||||
lifetime = 0.25
|
||||
@@ -59,8 +84,8 @@ process_material = SubResource("ParticleProcessMaterial_bfpdl")
|
||||
position = Vector2(0, 1)
|
||||
shape = SubResource("CapsuleShape2D_xln5q")
|
||||
|
||||
[node name="CollisionSwitcher" parent="." unique_id=601548821 node_paths=PackedStringArray("object") instance=ExtResource("2_j06tb")]
|
||||
object = NodePath("..")
|
||||
[node name="CollisionSwitcher" parent="." unique_id=601548821 node_paths=PackedStringArray("objects") instance=ExtResource("2_j06tb")]
|
||||
objects = [NodePath("..")]
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="." unique_id=45512317]
|
||||
process_callback = 0
|
||||
@@ -76,11 +101,18 @@ drag_bottom_margin = 0.1
|
||||
[node name="Pickups" type="Node2D" parent="." unique_id=958829860]
|
||||
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]
|
||||
process_callback = 0
|
||||
wait_time = 0.1
|
||||
one_shot = true
|
||||
|
||||
[node name="CoyoteTimeTimer" type="Timer" parent="." unique_id=117837002]
|
||||
process_callback = 0
|
||||
wait_time = 0.1
|
||||
one_shot = true
|
||||
|
||||
@@ -240,3 +272,6 @@ jump_right_state = NodePath("../JumpRightState")
|
||||
fall_state = NodePath("../FallState")
|
||||
fall_left_state = NodePath("../FallLeftState")
|
||||
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"]
|
||||
|
||||
+64
-23
@@ -3,6 +3,15 @@ class_name CollisionSwitcher
|
||||
extends Node
|
||||
|
||||
|
||||
signal switched(new_color: CollisionSwitcher.ObjectColor)
|
||||
|
||||
|
||||
enum ObjectColor {
|
||||
White,
|
||||
Black,
|
||||
}
|
||||
|
||||
|
||||
enum Collisions {
|
||||
GREY_WORLD = 1 << 0,
|
||||
GREY_ENEMY = 1 << 4,
|
||||
@@ -37,16 +46,13 @@ const SHADER_SWITCH_COLORS = "shader_parameter/switch_colors"
|
||||
const SHADER_INTENSITY = "shader_parameter/intensity"
|
||||
|
||||
|
||||
@export var object : CollisionObject2D
|
||||
@export var objects : Array[CollisionObject2D] = []
|
||||
|
||||
@export var initial_state := State.White
|
||||
|
||||
|
||||
var material : Material:
|
||||
set(value):
|
||||
material = value
|
||||
if is_node_ready():
|
||||
_apply_color()
|
||||
var _materials : Array[Material]
|
||||
|
||||
|
||||
var _state : State:
|
||||
set(value):
|
||||
@@ -56,35 +62,43 @@ var _state : State:
|
||||
|
||||
var _intensity_tween : Tween
|
||||
|
||||
var _grey_layer := 0
|
||||
var _color_layer := 0
|
||||
var _grey_layers : Dictionary[CollisionObject2D, int] = {}
|
||||
var _color_layers : Dictionary[CollisionObject2D, int] = {}
|
||||
|
||||
var _grey_mask := 0
|
||||
var _color_mask := 0
|
||||
var _grey_masks : Dictionary[CollisionObject2D, int] = {}
|
||||
var _color_masks : Dictionary[CollisionObject2D, int] = {}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_grey_layer = _get_grey_collision(object.collision_layer)
|
||||
_color_layer = _get_color_collision(object.collision_layer)
|
||||
|
||||
_grey_mask = _get_grey_collision(object.collision_mask)
|
||||
_color_mask = _get_color_collision(object.collision_mask)
|
||||
for object in objects:
|
||||
_grey_layers[object] = _get_grey_collision(object.collision_layer)
|
||||
_color_layers[object] = _get_color_collision(object.collision_layer)
|
||||
_grey_masks[object] = _get_grey_collision(object.collision_mask)
|
||||
_color_masks[object] = _get_color_collision(object.collision_mask)
|
||||
|
||||
_state = initial_state
|
||||
|
||||
_apply_color()
|
||||
|
||||
|
||||
func add_material(material: Material) -> void:
|
||||
_materials.append(material)
|
||||
_apply_color_to_material(material)
|
||||
|
||||
|
||||
func switch_color(switch_time := 0.0) -> void:
|
||||
if _intensity_tween != null and _intensity_tween.is_running(): return #TODO
|
||||
|
||||
if is_zero_approx(switch_time):
|
||||
_state = State.Black if _state == State.White else State.White
|
||||
_emit_switch_signal()
|
||||
else:
|
||||
_state = State.TransitionToBlack if _state == State.White else State.TransitionToWhite
|
||||
|
||||
_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)
|
||||
|
||||
|
||||
@@ -99,6 +113,7 @@ func _get_color_collision(collision: int) -> int:
|
||||
|
||||
|
||||
func _set_shader_internsity(value: float) -> void:
|
||||
for material in _materials:
|
||||
material.set(SHADER_INTENSITY, value)
|
||||
|
||||
|
||||
@@ -108,26 +123,52 @@ func _update_state() -> void:
|
||||
_state = State.Black
|
||||
State.TransitionToWhite:
|
||||
_state = State.White
|
||||
_emit_switch_signal()
|
||||
|
||||
|
||||
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 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:
|
||||
State.Black:
|
||||
layer = _grey_layer | _color_layer
|
||||
mask = _grey_mask | _color_mask
|
||||
layer = grey_layer | color_layer
|
||||
mask = grey_mask | color_mask
|
||||
State.White:
|
||||
layer = _grey_layer | (_color_layer << COLLISION_WHITE_SHIFT)
|
||||
mask = _grey_mask | (_color_mask << COLLISION_WHITE_SHIFT)
|
||||
layer = grey_layer | (color_layer << COLLISION_WHITE_SHIFT)
|
||||
mask = grey_mask | (color_mask << COLLISION_WHITE_SHIFT)
|
||||
State.TransitionToBlack, State.TransitionToWhite:
|
||||
layer = _grey_layer | _color_layer | (_color_layer << COLLISION_WHITE_SHIFT)
|
||||
mask = _grey_mask | _color_mask | (_color_mask << COLLISION_WHITE_SHIFT)
|
||||
layer = grey_layer | color_layer | (color_layer << COLLISION_WHITE_SHIFT)
|
||||
mask = grey_mask | color_mask | (color_mask << COLLISION_WHITE_SHIFT)
|
||||
|
||||
object.collision_layer = layer
|
||||
object.collision_mask = mask
|
||||
|
||||
if material != null:
|
||||
|
||||
func _apply_color_to_material(material: Material) -> void:
|
||||
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,3 +1,4 @@
|
||||
@tool
|
||||
class_name BookDoor
|
||||
extends LockedDoor
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
class_name CircleDoor
|
||||
extends LockedDoor
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
class_name Door
|
||||
extends Node2D
|
||||
|
||||
@@ -8,6 +9,13 @@ const ANIMATION_OPENING = "opening"
|
||||
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_closed := false
|
||||
|
||||
@@ -19,6 +27,7 @@ var _needed_to_be_closed := false
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
_update_shader()
|
||||
sprite.play(ANIMATION_CLOSED)
|
||||
|
||||
|
||||
@@ -50,6 +59,11 @@ func _close() -> void:
|
||||
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:
|
||||
match sprite.animation:
|
||||
ANIMATION_OPENING:
|
||||
|
||||
+15
-15
@@ -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="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"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_cs8ri"]
|
||||
size = Vector2(9, 48)
|
||||
size = Vector2(6, 38)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_u7b5a"]
|
||||
size = Vector2(48, 48)
|
||||
size = Vector2(36, 38)
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_5nqrw"]
|
||||
atlas = ExtResource("3_ymlcn")
|
||||
@@ -48,7 +48,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_5nqrw")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"closed",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -62,7 +62,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_4vug2")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": 0,
|
||||
"name": &"closing",
|
||||
"speed": 10.0
|
||||
}, {
|
||||
@@ -70,7 +70,7 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_ymlcn")
|
||||
}],
|
||||
"loop": true,
|
||||
"loop": 1,
|
||||
"name": &"open",
|
||||
"speed": 5.0
|
||||
}, {
|
||||
@@ -84,34 +84,34 @@ animations = [{
|
||||
"duration": 1.0,
|
||||
"texture": SubResource("AtlasTexture_j83fq")
|
||||
}],
|
||||
"loop": false,
|
||||
"loop": 0,
|
||||
"name": &"opening",
|
||||
"speed": 10.0
|
||||
}]
|
||||
|
||||
[node name="Door" type="Node2D"]
|
||||
[node name="Door" type="Node2D" unique_id=2006466960]
|
||||
script = ExtResource("1_vx1od")
|
||||
|
||||
[node name="StaticBody2D" type="StaticBody2D" parent="."]
|
||||
position = Vector2(-8.5, 0)
|
||||
[node name="StaticBody2D" type="StaticBody2D" parent="." unique_id=584436734]
|
||||
|
||||
[node name="StaticBodyCollision" type="CollisionShape2D" parent="StaticBody2D"]
|
||||
[node name="StaticBodyCollision" type="CollisionShape2D" parent="StaticBody2D" unique_id=193176175]
|
||||
unique_name_in_owner = true
|
||||
shape = SubResource("RectangleShape2D_cs8ri")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
position = Vector2(-8.5, 0)
|
||||
[node name="Area2D" type="Area2D" parent="." unique_id=371280403]
|
||||
collision_layer = 0
|
||||
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
|
||||
shape = SubResource("RectangleShape2D_u7b5a")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=1718827818]
|
||||
material = ExtResource("1_xelsh")
|
||||
position = Vector2(8, -5)
|
||||
sprite_frames = SubResource("SpriteFrames_r8rhb")
|
||||
animation = &"closed"
|
||||
frame_progress = 0.23665914
|
||||
|
||||
[connection signal="body_entered" from="Area2D" to="." method="_on_area_entered"]
|
||||
[connection signal="body_exited" from="Area2D" to="." method="_on_area_exited"]
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
extends Door
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
class_name LockedDoor
|
||||
extends Door
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
class_name SquareDoor
|
||||
extends LockedDoor
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
class_name TriagleDoor
|
||||
extends LockedDoor
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ extends Area2D
|
||||
enum Type {
|
||||
None,
|
||||
Water,
|
||||
Cultist,
|
||||
}
|
||||
|
||||
|
||||
|
||||
+16
-492
@@ -3,8 +3,7 @@
|
||||
[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://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="Material" uid="uid://dojhoc6ljpt1a" path="res://game/materials/walls_gray.tres" id="3_pi5fd"]
|
||||
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="4_3fw0b"]
|
||||
[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="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://bareycqj42c6e" path="res://game/menu/completion_menu.tscn" id="11_3fw0b"]
|
||||
|
||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_8ydah"]
|
||||
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_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="ShaderMaterial" id="ShaderMaterial_8xgvj"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("4_3fw0b")
|
||||
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 = 0.5
|
||||
shader_parameter/intensity = 0.5
|
||||
shader_parameter/scale = 0.1
|
||||
shader_parameter/seed = 0.0
|
||||
shader_parameter/direction = Vector2(1, 1)
|
||||
shader_parameter/use_world_pos = true
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_3fw0b"]
|
||||
size = Vector2(32, 32)
|
||||
size = Vector2(38, 38)
|
||||
|
||||
[node name="AbstractLevel" type="Node2D" unique_id=1364620575]
|
||||
script = ExtResource("1_o2mui")
|
||||
@@ -521,16 +48,13 @@ script = ExtResource("1_o2mui")
|
||||
[node name="Tiles" type="Node2D" parent="." unique_id=1626037498]
|
||||
|
||||
[node name="GrayWalls" parent="Tiles" unique_id=557672309 instance=ExtResource("3_3fw0b")]
|
||||
material = ExtResource("3_pi5fd")
|
||||
tile_set = SubResource("TileSet_8xgvj")
|
||||
material = SubResource("ShaderMaterial_8xgvj")
|
||||
|
||||
[node name="BlackWalls" parent="Tiles" unique_id=1250602228 instance=ExtResource("3_3fw0b")]
|
||||
material = ExtResource("6_x8k35")
|
||||
tile_set = SubResource("TileSet_un604")
|
||||
|
||||
[node name="WhiteWalls" parent="Tiles" unique_id=940613078 instance=ExtResource("3_3fw0b")]
|
||||
material = ExtResource("5_6b8cu")
|
||||
tile_set = SubResource("TileSet_jsd6f")
|
||||
|
||||
[node name="Traps" parent="Tiles" unique_id=635748436 instance=ExtResource("5_b7vts")]
|
||||
|
||||
|
||||
+127
-113
File diff suppressed because one or more lines are too long
+236
-110
File diff suppressed because one or more lines are too long
@@ -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://ciubf1ttwc133" path="res://game/pickups/square_key_pickup.tscn" id="20_uffr2"]
|
||||
[ext_resource type="PackedScene" uid="uid://dqgmfpv2mhdpn" path="res://game/pickups/triangle_key_pickup.tscn" id="21_jk2b3"]
|
||||
[ext_resource type="PackedScene" uid="uid://cutjutvd8dqqc" path="res://game/characters/enemies/black_cultist.tscn" id="22_b1xny"]
|
||||
[ext_resource type="PackedScene" uid="uid://bv2gahb4wxgb1" path="res://game/characters/enemies/white_cultist.tscn" id="23_8555i"]
|
||||
[ext_resource type="PackedScene" uid="uid://bx0luh4vdob3q" path="res://game/characters/enemies/cultist.tscn" id="22_3svqx"]
|
||||
[ext_resource type="PackedScene" uid="uid://dike8xgbqdut2" path="res://game/killing_area.tscn" id="24_te27h"]
|
||||
|
||||
[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")]
|
||||
position = Vector2(857, 136)
|
||||
|
||||
[node name="BlackCultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=129671926 instance=ExtResource("22_b1xny")]
|
||||
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")]
|
||||
[node name="Cultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=1676614852 instance=ExtResource("22_3svqx")]
|
||||
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)
|
||||
collision_layer = 64
|
||||
collision_mask = 33
|
||||
|
||||
[node name="Player" parent="." index="6" unique_id=1058744997]
|
||||
position = Vector2(208, -162)
|
||||
@@ -6,12 +6,14 @@ const ANIMATION_NAME = "final_cutscene"
|
||||
|
||||
@onready var animation_player : AnimationPlayer = $AnimationPlayer
|
||||
@onready var fake_player : PlayerSprite = $Cutscene/FakePlayer
|
||||
@onready var fake_cultist : CultistSprite = $Cutscene/FakeCultist
|
||||
@onready var cutscene_camera : Camera2D = $Cutscene/Camera2D
|
||||
|
||||
@onready var cutscene_room_center : Vector2 = $Cutscene/RoomCenter.position
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$CanvasLayer/MarginContainer/ThanksLabel.hide()
|
||||
animation_player.play("hide_cutscene_elements")
|
||||
super._ready()
|
||||
|
||||
@@ -42,6 +44,15 @@ func _play_cutscene_boop() -> void:
|
||||
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:
|
||||
if anim_name == "final_cutscene":
|
||||
_complete_level(cutscene_room_center)
|
||||
File diff suppressed because one or more lines are too long
@@ -10,3 +10,5 @@ func _ready() -> void:
|
||||
$Objects/LeverPlatform.switching.connect($ConnectionCables/ConnectionCablePlatform.toggle)
|
||||
|
||||
$Objects/LeverMoving.switching.connect($Platforms/SelfMovingPlatform.toggle)
|
||||
|
||||
$Platforms/HiddenColorPlatform.set_player(player)
|
||||
|
||||
+26
-11
@@ -9,12 +9,14 @@
|
||||
[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://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://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://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://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://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"]
|
||||
@@ -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://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://cb0w6mt8g4mer" path="res://game/characters/enemies/gray_cultist.tscn" id="18_blgb8"]
|
||||
[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"]
|
||||
[ext_resource type="PackedScene" uid="uid://bx0luh4vdob3q" path="res://game/characters/enemies/cultist.tscn" id="27_te8eb"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_lxcjr"]
|
||||
resource_local_to_scene = true
|
||||
@@ -82,6 +82,15 @@ collision_layer = 2
|
||||
initial_color = 1
|
||||
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")]
|
||||
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")]
|
||||
position = Vector2(803, -56)
|
||||
|
||||
[node name="GrayEnemy" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=2016246874 instance=ExtResource("18_blgb8")]
|
||||
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")]
|
||||
[node name="Cultist1" parent="Enemies" parent_id_path=PackedInt32Array(857989772) index="0" unique_id=1676614852 instance=ExtResource("27_te8eb")]
|
||||
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]
|
||||
position = Vector2(-13, 0)
|
||||
|
||||
|
||||
@@ -2,14 +2,15 @@
|
||||
|
||||
[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://cc06c06hlv7ix" 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://cmp1cog2cbfh5" path="res://game/levels/level_4.tscn" id="5_yl05u"]
|
||||
[ext_resource type="PackedScene" uid="uid://brysu1p6fw88n" path="res://game/levels/level_5.tscn" id="6_eo2u3"]
|
||||
[ext_resource type="PackedScene" uid="uid://uanhjjloryf4" path="res://game/levels/level_6.tscn" id="7_da5al"]
|
||||
[ext_resource type="PackedScene" uid="uid://cddh8nh54mrog" path="res://game/levels/level_7.tscn" id="8_rvthr"]
|
||||
[ext_resource type="PackedScene" uid="uid://cifrkw15tbunt" path="res://game/levels/level_2.tscn" id="3_yl05u"]
|
||||
[ext_resource type="PackedScene" uid="uid://ungdvjmfc6v7" path="res://game/levels/level_3_old.tscn" id="4_eo2u3"]
|
||||
[ext_resource type="PackedScene" uid="uid://cc06c06hlv7ix" path="res://game/levels/level_2_old.tscn" id="4_sidtq"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmp1cog2cbfh5" path="res://game/levels/level_4_old.tscn" id="5_yl05u"]
|
||||
[ext_resource type="PackedScene" uid="uid://brysu1p6fw88n" path="res://game/levels/level_5_old.tscn" id="6_eo2u3"]
|
||||
[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"]
|
||||
|
||||
[node name="LevelManager" type="Node" unique_id=629915878]
|
||||
script = ExtResource("1_te7jw")
|
||||
levels = Array[PackedScene]([ExtResource("2_r84xe"), ExtResource("3_yl05u"), ExtResource("4_eo2u3"), ExtResource("5_yl05u"), ExtResource("6_eo2u3"), ExtResource("7_da5al"), ExtResource("8_rvthr"), 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")])
|
||||
|
||||
@@ -9,10 +9,10 @@ const MUSIC_BUS = "Music"
|
||||
|
||||
|
||||
@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 putch_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 putch_sfx_max := 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 pitch_ui_max := 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 pitch_sfx_max := 1.0
|
||||
|
||||
@export_group("Number of players", "player_count")
|
||||
@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_spoted : AudioStream
|
||||
@export var sfx_stream_splash : AudioStream
|
||||
@export var sfx_stream_blood : AudioStream
|
||||
@export var sfx_stream_switch : AudioStream
|
||||
|
||||
@export_group("Music Streams", "music_stream")
|
||||
@@ -59,7 +60,7 @@ func _ready() -> void:
|
||||
func play_ui_stream(stream: AudioStream) -> AudioStreamPlayer:
|
||||
var player := _get_free_player(_ui_players)
|
||||
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()
|
||||
return player
|
||||
|
||||
@@ -67,7 +68,7 @@ func play_ui_stream(stream: AudioStream) -> AudioStreamPlayer:
|
||||
func play_sfx_stream(stream: AudioStream, position: Vector2) -> AudioStreamPlayer2D:
|
||||
var player := _get_free_2d_player(_sfx_players)
|
||||
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.play()
|
||||
return player
|
||||
|
||||
@@ -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://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://b18trj54c3x4e" path="res://sound/sfx/blood.wav" id="19_yvugr"]
|
||||
|
||||
[node name="SoundManager" type="Node" unique_id=1917953940]
|
||||
process_mode = 3
|
||||
script = ExtResource("1_cg0sy")
|
||||
putch_ui_min = 0.95
|
||||
putch_ui_max = 1.05
|
||||
putch_sfx_min = 0.95
|
||||
putch_sfx_max = 1.05
|
||||
pitch_ui_min = 0.95
|
||||
pitch_ui_max = 1.05
|
||||
pitch_sfx_min = 0.95
|
||||
pitch_sfx_max = 1.05
|
||||
player_count_ui = 4
|
||||
player_count_sfx = 25
|
||||
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_spoted = ExtResource("9_q7cyi")
|
||||
sfx_stream_splash = ExtResource("18_4cvue")
|
||||
sfx_stream_blood = ExtResource("19_yvugr")
|
||||
sfx_stream_switch = ExtResource("7_ab171")
|
||||
music_stream_gameplay = ExtResource("17_l5yxe")
|
||||
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_local_to_scene = true
|
||||
shader = ExtResource("1_xngo8")
|
||||
shader = ExtResource("1_3bx4l")
|
||||
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/speed = 3.0000001425
|
||||
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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -3,12 +3,15 @@
|
||||
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_p23e2"]
|
||||
|
||||
[resource]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("1_p23e2")
|
||||
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/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
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
[ext_resource type="Shader" uid="uid://lqq1mg6l1qqe" path="res://game/shaders/black_n_white.gdshader" id="1_rnyyp"]
|
||||
|
||||
[resource]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("1_rnyyp")
|
||||
shader_parameter/black_color = Color(0, 0, 0, 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/intensity = 0.5
|
||||
shader_parameter/scale = 0.1
|
||||
shader_parameter/seed = 0.0
|
||||
shader_parameter/direction = Vector2(1, 1)
|
||||
shader_parameter/use_world_pos = true
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(144, 64, 16, 32)
|
||||
[node name="Bookstand" type="Node2D" unique_id=764203715]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1927584709]
|
||||
position = Vector2(0, -10)
|
||||
texture = SubResource("AtlasTexture_opqiy")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(128, 96, 32, 32)
|
||||
[node name="Cabinet" type="Node2D" unique_id=776063180]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=633984423]
|
||||
position = Vector2(0, -11)
|
||||
texture = SubResource("AtlasTexture_sqimt")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(32, 96, 16, 32)
|
||||
[node name="ChairB" type="Node2D" unique_id=593320838]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1141861091]
|
||||
position = Vector2(0, -14)
|
||||
texture = SubResource("AtlasTexture_ea7rc")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(0, 96, 16, 32)
|
||||
[node name="ChairF" type="Node2D" unique_id=1967501122]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1824855132]
|
||||
position = Vector2(0, -14)
|
||||
texture = SubResource("AtlasTexture_1kw05")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(16, 96, 16, 32)
|
||||
[node name="ChairL" type="Node2D" unique_id=813233619]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2136740309]
|
||||
position = Vector2(0, -14)
|
||||
texture = SubResource("AtlasTexture_cktuf")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(48, 96, 16, 32)
|
||||
[node name="ChairR" type="Node2D" unique_id=567783693]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1599831744]
|
||||
position = Vector2(0, -14)
|
||||
texture = SubResource("AtlasTexture_e7ewy")
|
||||
|
||||
@@ -24,6 +24,8 @@ shader_parameter/threshold = 0.5
|
||||
shader_parameter/speed = 2.50000011875
|
||||
shader_parameter/intensity = 0.6000000285
|
||||
shader_parameter/scale = 75.0000035625
|
||||
shader_parameter/seed = 0.0
|
||||
shader_parameter/direction = Vector2(1, 1)
|
||||
shader_parameter/use_world_pos = false
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_tl0fg"]
|
||||
@@ -52,9 +54,10 @@ animations = [{
|
||||
script = SubResource("GDScript_4nvxe")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1590498638]
|
||||
position = Vector2(0, -16)
|
||||
texture = SubResource("AtlasTexture_2ho61")
|
||||
|
||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="." unique_id=628370504]
|
||||
material = SubResource("ShaderMaterial_2ho61")
|
||||
position = Vector2(0, 8)
|
||||
position = Vector2(0, -8)
|
||||
sprite_frames = SubResource("SpriteFrames_f0x6e")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(128, 80, 16, 16)
|
||||
[node name="FlaskL" type="Node2D" unique_id=1215208712]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1287451147]
|
||||
position = Vector2(0, -7)
|
||||
texture = SubResource("AtlasTexture_i1pbn")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(128, 64, 16, 16)
|
||||
[node name="FlaskS" type="Node2D" unique_id=565628633]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1428095427]
|
||||
position = Vector2(0, -6)
|
||||
texture = SubResource("AtlasTexture_wg65s")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(112, 64, 16, 16)
|
||||
[node name="Plate" type="Node2D" unique_id=611682922]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1274674649]
|
||||
position = Vector2(0, -1)
|
||||
texture = SubResource("AtlasTexture_q70ul")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(144, 32, 16, 16)
|
||||
[node name="RedortEndL" type="Node2D" unique_id=186703054]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2083648757]
|
||||
position = Vector2(-1, -8)
|
||||
texture = SubResource("AtlasTexture_hbatg")
|
||||
@@ -9,4 +9,5 @@ region = Rect2(112, 48, 16, 16)
|
||||
[node name="RetortEndR" type="Node2D" unique_id=361163783]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=851249465]
|
||||
position = Vector2(1, -8)
|
||||
texture = SubResource("AtlasTexture_2d2yp")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(128, 48, 32, 16)
|
||||
[node name="RetortL" type="Node2D" unique_id=928599671]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=777287822]
|
||||
position = Vector2(-3, -8)
|
||||
texture = SubResource("AtlasTexture_8epgq")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(112, 32, 32, 16)
|
||||
[node name="RetortR" type="Node2D" unique_id=2131329697]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=889741540]
|
||||
position = Vector2(3, -8)
|
||||
texture = SubResource("AtlasTexture_f54r7")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(80, 0, 80, 32)
|
||||
[node name="TableL" type="Node2D" unique_id=1210198021]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1155132216]
|
||||
position = Vector2(-1, -9)
|
||||
texture = SubResource("AtlasTexture_l7gad")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(32, 0, 48, 32)
|
||||
[node name="TableM" type="Node2D" unique_id=639741163]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=881942302]
|
||||
position = Vector2(0, -9)
|
||||
texture = SubResource("AtlasTexture_runce")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(0, 0, 32, 32)
|
||||
[node name="TableS" type="Node2D" unique_id=1273697628]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1017827625]
|
||||
position = Vector2(0, -9)
|
||||
texture = SubResource("AtlasTexture_n2itf")
|
||||
|
||||
@@ -9,4 +9,5 @@ region = Rect2(96, 80, 32, 48)
|
||||
[node name="Wardrobe" type="Node2D" unique_id=1607339750]
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=422307570]
|
||||
position = Vector2(0, -22)
|
||||
texture = SubResource("AtlasTexture_wbqlk")
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
@tool
|
||||
class_name AbstractActionTip
|
||||
extends Node2D
|
||||
|
||||
@@ -7,6 +8,9 @@ extends Node2D
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if Engine.is_editor_hint():
|
||||
_updated_by_input_type(InputManager.Type.Keyboard)
|
||||
else:
|
||||
_updated_by_input_type(InputManager.get_type())
|
||||
InputManager.type_changed.connect(_updated_by_input_type)
|
||||
|
||||
|
||||
@@ -14,7 +14,9 @@ region = Rect2(0, 32, 32, 32)
|
||||
[node name="MovementActionTip" unique_id=1113266380 instance=ExtResource("1_6vlve")]
|
||||
|
||||
[node name="SpriteKbd" parent="." index="0" unique_id=948959005]
|
||||
position = Vector2(-1, -15)
|
||||
texture = SubResource("AtlasTexture_qoa1y")
|
||||
|
||||
[node name="SpritePad" parent="." index="1" unique_id=1703375720]
|
||||
visible = false
|
||||
texture = SubResource("AtlasTexture_aui55")
|
||||
|
||||
@@ -109,17 +109,19 @@ script = ExtResource("2_5hu3b")
|
||||
initial_state = 0
|
||||
|
||||
[node name="CollisionShape2D" parent="." index="0" unique_id=2065213362]
|
||||
position = Vector2(0, -4)
|
||||
position = Vector2(0, -12)
|
||||
shape = SubResource("RectangleShape2D_tnscr")
|
||||
|
||||
[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]
|
||||
position = Vector2(0, -8)
|
||||
sprite_frames = SubResource("SpriteFrames_kky3u")
|
||||
animation = &"turning_left"
|
||||
|
||||
[node name="BaseSprite" type="Sprite2D" parent="." index="3" unique_id=256419860]
|
||||
position = Vector2(0, -8)
|
||||
texture = SubResource("AtlasTexture_5upgc")
|
||||
|
||||
[connection signal="animation_finished" from="AnimatedSprite2D" to="." method="_on_animation_finished"]
|
||||
|
||||
@@ -2,6 +2,19 @@ class_name AbstractPickup
|
||||
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:
|
||||
SoundManager.play_sfx_stream(SoundManager.sfx_stream_key_picked_up, global_position)
|
||||
|
||||
|
||||
@@ -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="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/intensity = 0.800000038
|
||||
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"]
|
||||
radius = 7.0
|
||||
|
||||
[node name="AbstractPickup" type="Area2D"]
|
||||
[node name="AbstractPickup" type="Area2D" unique_id=1918087631]
|
||||
collision_layer = 0
|
||||
collision_mask = 136
|
||||
script = ExtResource("1_ek4cl")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=787072909]
|
||||
material = SubResource("ShaderMaterial_4r7i4")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=1835897926]
|
||||
shape = SubResource("CircleShape2D_ek4cl")
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
|
||||
@@ -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="Script" uid="uid://sheh3mtq6k8o" path="res://game/pickups/book_pickup.gd" id="2_jsqc0"]
|
||||
@@ -8,8 +8,9 @@
|
||||
atlas = ExtResource("3_yg5bj")
|
||||
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")
|
||||
max_bounce_offset = 1.0
|
||||
|
||||
[node name="Sprite2D" parent="." index="0"]
|
||||
[node name="Sprite2D" parent="." index="0" unique_id=787072909]
|
||||
texture = SubResource("AtlasTexture_cpnvb")
|
||||
|
||||
@@ -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="Script" uid="uid://dbssfh6ecgstl" path="res://game/pickups/circle_key_pickup.gd" id="2_sjfny"]
|
||||
@@ -8,8 +8,9 @@
|
||||
atlas = ExtResource("3_pwkbp")
|
||||
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")
|
||||
max_bounce_offset = 2.0
|
||||
|
||||
[node name="Sprite2D" parent="." index="0"]
|
||||
[node name="Sprite2D" parent="." index="0" unique_id=787072909]
|
||||
texture = SubResource("AtlasTexture_mprb4")
|
||||
|
||||
@@ -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="Script" uid="uid://ck5tvlprgwlet" path="res://game/pickups/square_key_pickup.gd" id="2_5ybdl"]
|
||||
@@ -8,8 +8,9 @@
|
||||
atlas = ExtResource("3_5ybdl")
|
||||
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")
|
||||
max_bounce_offset = 2.0
|
||||
|
||||
[node name="Sprite2D" parent="." index="0"]
|
||||
[node name="Sprite2D" parent="." index="0" unique_id=787072909]
|
||||
texture = SubResource("AtlasTexture_fx152")
|
||||
|
||||
@@ -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="Script" uid="uid://c73gihkak2xns" path="res://game/pickups/triangle_key_pickup.gd" id="2_pn8rn"]
|
||||
@@ -8,8 +8,9 @@
|
||||
atlas = ExtResource("3_5k6x8")
|
||||
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")
|
||||
max_bounce_offset = 2.0
|
||||
|
||||
[node name="Sprite2D" parent="." index="0"]
|
||||
[node name="Sprite2D" parent="." index="0" unique_id=787072909]
|
||||
texture = SubResource("AtlasTexture_8ko2n")
|
||||
|
||||
@@ -3,13 +3,11 @@ class_name AbstractColorPlatform
|
||||
extends AbstractPlatform
|
||||
|
||||
|
||||
enum PlatformColor {
|
||||
White,
|
||||
Black,
|
||||
}
|
||||
|
||||
|
||||
@export var initial_color := PlatformColor.White
|
||||
@export var initial_color := CollisionSwitcher.ObjectColor.White:
|
||||
set(value):
|
||||
initial_color = value
|
||||
if Engine.is_editor_hint() and is_node_ready():
|
||||
collision_switcher.switch_color()
|
||||
|
||||
|
||||
@onready var collision_switcher : CollisionSwitcher = $CollisionSwitcher
|
||||
@@ -17,6 +15,6 @@ enum PlatformColor {
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
collision_switcher.material = platform_sprite.material
|
||||
if initial_color == PlatformColor.Black:
|
||||
collision_switcher.add_material(platform_sprite.material)
|
||||
if initial_color == CollisionSwitcher.ObjectColor.Black:
|
||||
collision_switcher.switch_color()
|
||||
|
||||
@@ -37,5 +37,5 @@ material = SubResource("ShaderMaterial_vbsvi")
|
||||
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
|
||||
shape = SubResource("RectangleShape2D_pbfpg")
|
||||
|
||||
[node name="CollisionSwitcher" parent="." index="3" unique_id=542648449 node_paths=PackedStringArray("object") instance=ExtResource("6_mk014")]
|
||||
object = NodePath("..")
|
||||
[node name="CollisionSwitcher" parent="." index="3" unique_id=542648449 node_paths=PackedStringArray("objects") instance=ExtResource("6_mk014")]
|
||||
objects = [NodePath("..")]
|
||||
|
||||
@@ -9,7 +9,6 @@ const SHADER_PLATFORM_WIDTH = "shader_parameter/platform_width"
|
||||
|
||||
const ANIMATION_COLOR_SWITCHING = "color_switching"
|
||||
const ANIMATION_HIDING = "hiding"
|
||||
const ANIMATION_TIMER = "timer"
|
||||
|
||||
const ANIMATION_SELF_MOVING = "self_moving"
|
||||
|
||||
@@ -36,7 +35,6 @@ const MAX_WIDTH = TILE_SIZE * 32
|
||||
|
||||
|
||||
@onready var collision: CollisionShape2D = $CollisionShape2D
|
||||
@onready var standing_check_collision: CollisionShape2D = $Area2D/CollisionShape2D
|
||||
@onready var sub_viewport: SubViewport = $SubViewport
|
||||
@onready var platform_sprite: Sprite2D = $Sprite2D
|
||||
@onready var platform_rect: ColorRect = $SubViewport/PlatformRect
|
||||
@@ -52,7 +50,6 @@ func _ready() -> void:
|
||||
|
||||
func rebuild_platform() -> void:
|
||||
collision.shape.size.x = platform_width
|
||||
standing_check_collision.shape.size.x = platform_width - 4
|
||||
|
||||
var platfor_size := Vector2(platform_width, TILE_SIZE)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
[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="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"]
|
||||
viewport_path = NodePath("SubViewport")
|
||||
@@ -225,22 +225,6 @@ region = Rect2(16, 48, 8, 8)
|
||||
atlas = ExtResource("5_hgabr")
|
||||
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"]
|
||||
animations = [{
|
||||
"frames": [{
|
||||
@@ -470,32 +454,12 @@ animations = [{
|
||||
"loop": 1,
|
||||
"name": &"self_moving",
|
||||
"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"]
|
||||
resource_local_to_scene = true
|
||||
size = Vector2(16, 7)
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhunq"]
|
||||
size = Vector2(12, 1)
|
||||
|
||||
[node name="AbstractPlatform" type="AnimatableBody2D" unique_id=137546339]
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_426vp")
|
||||
@@ -531,14 +495,8 @@ size_flags_vertical = 4
|
||||
[node name="IconSprite" type="AnimatedSprite2D" parent="SubViewport" unique_id=1917841765]
|
||||
position = Vector2(8, 4)
|
||||
sprite_frames = SubResource("SpriteFrames_j4n83")
|
||||
animation = &"self_moving"
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=175449124]
|
||||
position = Vector2(0, -0.5)
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
@@ -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")
|
||||
@@ -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
|
||||
@@ -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
|
||||
class_name ColorSwitchingPlatform
|
||||
class_name TriggerColorPlatform
|
||||
extends AbstractColorPlatform
|
||||
|
||||
|
||||
+12
-8
@@ -1,14 +1,14 @@
|
||||
[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="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="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")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_sbqh7"]
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_avsyr"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("2_svoke")
|
||||
shader_parameter/tile_size = 8.0
|
||||
@@ -16,18 +16,22 @@ shader_parameter/platform_width = 24.0
|
||||
shader_parameter/atlas = ExtResource("3_sbqh7")
|
||||
shader_parameter/seed = 0.12241629
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_5slkc"]
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_i7ji2"]
|
||||
resource_local_to_scene = true
|
||||
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")
|
||||
|
||||
[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]
|
||||
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]
|
||||
shape = SubResource("RectangleShape2D_5slkc")
|
||||
shape = SubResource("RectangleShape2D_i7ji2")
|
||||
@@ -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 intensity : hint_range(0.0, 1.0) = 1.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;
|
||||
|
||||
vec2 random(vec2 uv){
|
||||
uv = vec2( dot(uv, vec2(127.1,311.7) ),
|
||||
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) {
|
||||
@@ -47,7 +49,7 @@ void fragment() {
|
||||
is_black = !is_black;
|
||||
}
|
||||
if (intensity < 1.0) {
|
||||
vec2 coord = noise_uv * scale + TIME * speed;
|
||||
vec2 coord = noise_uv * scale + TIME * speed * normalize(direction);
|
||||
|
||||
if (noise(coord) > intensity) {
|
||||
is_black = !is_black;
|
||||
|
||||
@@ -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;
|
||||
|
||||
float get_alpha(vec2 uv, float offset) {
|
||||
float dist = fract(mod(TIME, travel_time)/travel_time + offset);
|
||||
float left = uv.x - glow_radius;
|
||||
float right = uv.x + glow_radius;
|
||||
return step(left, dist) * (1.0 - step(right, dist));
|
||||
float progress = fract(mod(TIME, travel_time)/travel_time + offset);
|
||||
return step(distance(progress, uv.x), glow_radius);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
float alpha = 0.0;
|
||||
float offset = 0.0;
|
||||
|
||||
COLOR.a = 0.0;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
uid://cdakbomof1cc6
|
||||
+87
-4
@@ -12,7 +12,11 @@ texture = ExtResource("1_wrl76")
|
||||
0:0/animation_frame_2/duration = 1.0
|
||||
0:0/animation_frame_3/duration = 1.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_speed = 5.0
|
||||
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_3/duration = 1.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"]
|
||||
physics_layer_0/collision_layer = 16
|
||||
physics_layer_0/collision_mask = 16
|
||||
terrain_set_0/mode = 2
|
||||
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")
|
||||
|
||||
[node name="Traps" type="TileMapLayer" unique_id=397992951]
|
||||
|
||||
+1374
-146
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
Reference in New Issue
Block a user