diff --git a/scenes/game_elements/characters/enemies/guard/components/guard.gd b/scenes/game_elements/characters/enemies/guard/components/guard.gd index 8a9a67e56..a602ac6a6 100644 --- a/scenes/game_elements/characters/enemies/guard/components/guard.gd +++ b/scenes/game_elements/characters/enemies/guard/components/guard.gd @@ -466,6 +466,8 @@ func _set_alert_other_sound_stream(new_value: AudioStream) -> void: func _on_instant_detection_area_body_entered(body: Node2D) -> void: + if _is_sight_to_point_blocked(body.global_position): + return state = State.ALERTED player_detected.emit(body) diff --git a/scenes/game_elements/props/door/components/door.gd b/scenes/game_elements/props/door/components/door.gd index 20af8aebe..008199917 100644 --- a/scenes/game_elements/props/door/components/door.gd +++ b/scenes/game_elements/props/door/components/door.gd @@ -40,6 +40,8 @@ func update_opened_state() -> void: %ColliderWhenClosed.set_collision_layer_value(Enums.CollisionLayers.WALLS, not opened) %ColliderWhenClosed.set_collision_mask_value(Enums.CollisionLayers.PLAYERS, not opened) + %SightOcclussion.set_collision_layer_value(Enums.CollisionLayers.SIGHT_OCCLUDERS, not opened) + %LightOccluder2D.visible = not opened func update_door_flip() -> void: diff --git a/scenes/game_elements/props/door/horizontal_door.tscn b/scenes/game_elements/props/door/horizontal_door.tscn index b44f4eaf0..fc85462aa 100644 --- a/scenes/game_elements/props/door/horizontal_door.tscn +++ b/scenes/game_elements/props/door/horizontal_door.tscn @@ -6,12 +6,22 @@ [ext_resource type="AudioStream" uid="uid://wyrvtep877iy" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Door.ogg" id="4_0hwet"] [ext_resource type="AudioStream" uid="uid://erxulumcdtuu" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Ring.ogg" id="5_qouav"] +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ty0te"] +polygon = PackedVector2Array(7, 9, 7, -138, -6, -138, -6, 9) + [sub_resource type="RectangleShape2D" id="RectangleShape2D_t3aaa"] size = Vector2(13, 76.25) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_qda76"] +size = Vector2(19, 133.375) + [node name="HorizontalDoor" type="Node2D" unique_id=1860367584] script = ExtResource("1_apinb") +[node name="LightOccluder2D" type="LightOccluder2D" parent="." unique_id=1053118773] +unique_name_in_owner = true +occluder = SubResource("OccluderPolygon2D_ty0te") + [node name="DoorClosed" type="Sprite2D" parent="." unique_id=47488445] unique_name_in_owner = true position = Vector2(26, -63) @@ -31,6 +41,16 @@ collision_layer = 16 position = Vector2(0.5, -37.125) shape = SubResource("RectangleShape2D_t3aaa") +[node name="SightOcclussion" type="StaticBody2D" parent="." unique_id=729311558] +unique_name_in_owner = true +collision_layer = 8 +collision_mask = 0 + +[node name="ShapeWhenClosed" type="CollisionShape2D" parent="SightOcclussion" unique_id=1123213291] +position = Vector2(0.5, -63.3125) +shape = SubResource("RectangleShape2D_qda76") +debug_color = Color(0.972549, 0, 0.44313726, 0) + [node name="DoorOpenSound" type="AudioStreamPlayer2D" parent="." unique_id=1659028188] unique_name_in_owner = true stream = ExtResource("4_0hwet") diff --git a/scenes/game_elements/props/door/vertical_door.tscn b/scenes/game_elements/props/door/vertical_door.tscn index e439b372e..168063d9c 100644 --- a/scenes/game_elements/props/door/vertical_door.tscn +++ b/scenes/game_elements/props/door/vertical_door.tscn @@ -6,12 +6,22 @@ [ext_resource type="AudioStream" uid="uid://wyrvtep877iy" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Door.ogg" id="4_wl1pt"] [ext_resource type="AudioStream" uid="uid://erxulumcdtuu" path="res://assets/third_party/sounds/characters/enemies/throwing_enemy/Ring.ogg" id="5_20262"] +[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_ty0te"] +polygon = PackedVector2Array(33, -65, 26, -73, 18, -76, -18, -76, -27, -73, -33, -65, -30, -65, -18, -72, 18, -72, 30, -65) + [sub_resource type="RectangleShape2D" id="RectangleShape2D_t3aaa"] size = Vector2(57.5, 25) +[sub_resource type="RectangleShape2D" id="RectangleShape2D_mqtua"] +size = Vector2(68, 81) + [node name="VerticalDoor" type="Node2D" unique_id=1860367584] script = ExtResource("1_t3aaa") +[node name="LightOccluder2D" type="LightOccluder2D" parent="." unique_id=366675999] +unique_name_in_owner = true +occluder = SubResource("OccluderPolygon2D_ty0te") + [node name="DoorClosed" type="Sprite2D" parent="." unique_id=47488445] unique_name_in_owner = true position = Vector2(0, -32) @@ -31,6 +41,16 @@ collision_layer = 16 position = Vector2(0.25, -12.5) shape = SubResource("RectangleShape2D_t3aaa") +[node name="SightOcclussion" type="StaticBody2D" parent="." unique_id=2115023129] +unique_name_in_owner = true +collision_layer = 8 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SightOcclussion" unique_id=1355802857] +position = Vector2(0, -37.5) +shape = SubResource("RectangleShape2D_mqtua") +debug_color = Color(0.972549, 0, 0.44313726, 0) + [node name="DoorOpenSound" type="AudioStreamPlayer2D" parent="." unique_id=1659028188] unique_name_in_owner = true stream = ExtResource("4_wl1pt")