diff --git a/3D/Maps/Fusion.map b/3D/Maps/Fusion.map index 9ae3c2f4..2467fbef 100644 --- a/3D/Maps/Fusion.map +++ b/3D/Maps/Fusion.map @@ -1634,3 +1634,17 @@ "origin" "-48 -24 28" "timeline" "BBS_Test" } +// entity 63 +{ +"classname" "actor_emitter_floor" +"origin" "-100 -132 20" +"script_path" "res://Resources/BulletScripts/Laser_Pattern_Test_1.tres" +"targetname" "laser_test_trap" +} +// entity 64 +{ +"classname" "actor_controlpad" +"origin" "-140 -100 36" +"target" "laser_test_trap" +"activationtype" "Toggle" +} diff --git a/Cirno.csproj b/Cirno.csproj index e382e856..b6941b00 100644 --- a/Cirno.csproj +++ b/Cirno.csproj @@ -16,6 +16,11 @@ + + + + + diff --git a/IsoTest/Fusion001.tscn b/IsoTest/Fusion001.tscn index 8b68b215..ed633779 100644 --- a/IsoTest/Fusion001.tscn +++ b/IsoTest/Fusion001.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=218 format=4 uid="uid://daohl01bt8upt"] +[gd_scene format=4 uid="uid://daohl01bt8upt"] [ext_resource type="PackedScene" uid="uid://bv7tjma3g7nkf" path="res://Scenes/Actors/3D/game_controller.tscn" id="1_tykkg"] [ext_resource type="Resource" uid="uid://bwg6xki3d8yow" path="res://Resources/Maps/3D/Factory4_Map.tres" id="2_wgcya"] @@ -43,17 +43,16 @@ [ext_resource type="PackedScene" uid="uid://kegxrgsa0dvi" path="res://3D/Scenes/Props/Table_3D_002.tscn" id="49_rllxc"] [ext_resource type="PackedScene" uid="uid://duq3xp5imtsxi" path="res://3D/BlockbenchModels/Table/Table_004.gltf" id="50_p30g5"] [ext_resource type="PackedScene" uid="uid://ch2frqgng472t" path="res://3D/Scenes/Props/Table_3D_003.tscn" id="51_fmfkd"] -[ext_resource type="Script" uid="uid://drhprlnl1e44m" path="res://Scripts/Actors/3D/Laser.cs" id="51_p30g5"] -[ext_resource type="Script" uid="uid://5utr3255hbln" path="res://Scripts/Actors/3D/LaserConfig.cs" id="52_g8tx2"] [ext_resource type="Script" uid="uid://uaponrre7ew6" path="res://Scripts/Actors/3D/LaserStarterTest3D.cs" id="53_awu2v"] -[ext_resource type="Shader" uid="uid://cd8n7vsgxkfib" path="res://Shaders/minimal_laser.gdshader" id="53_tqorp"] [ext_resource type="PackedScene" uid="uid://yath5bvxo3cn" path="res://3D/Scenes/Props/Wall_Emitter_3D.tscn" id="53_xon24"] +[ext_resource type="PackedScene" uid="uid://bkv1sf54u3agr" path="res://Scenes/Weapons/Bullets/Laser_Bullet_3D.tscn" id="55_fmfkd"] [ext_resource type="PackedScene" uid="uid://ou07lptfp0d1" path="res://3D/Scenes/Props/Table_3D.tscn" id="55_pjnt2"] +[ext_resource type="PackedScene" uid="uid://d4ek8xjuh6y11" path="res://3D/Scenes/Props/Floor_Emitter_3D.tscn" id="55_vqi8m"] +[ext_resource type="Resource" uid="uid://bog816y8fx3w5" path="res://Resources/BulletScripts/Laser_Pattern_Test_1.tres" id="56_xon24"] [ext_resource type="PackedScene" uid="uid://bubtvv3pa06py" path="res://3D/Scenes/Props/Door_3D.tscn" id="57_gw41l"] [ext_resource type="Script" uid="uid://csruxpdnpj18r" path="res://Scripts/Actors/3D/PlayerStartMarker3D.cs" id="60_y4idx"] [ext_resource type="PackedScene" uid="uid://hak5o0k5yhn1" path="res://3D/Scenes/Props/Terminal_3D.tscn" id="61_5o6gw"] [ext_resource type="PackedScene" uid="uid://dyi4ji0t3ryi4" path="res://3D/Scenes/Props/chest_3d.tscn" id="62_o1xh2"] -[ext_resource type="Script" uid="uid://ddsqqfx1usc3j" path="res://Scripts/Resources/DamageResistance.cs" id="72_lfw22"] [ext_resource type="PackedScene" uid="uid://cf7jo7q71ucli" path="res://3D/Scenes/Props/Box_3D_Blue_Tall.tscn" id="74_g3cic"] [ext_resource type="PackedScene" uid="uid://jffyxmft3nbw" path="res://3D/Scenes/Props/Box_3D_Red.tscn" id="80_6axiq"] [ext_resource type="PackedScene" uid="uid://c8wwioforxms3" path="res://3D/Scenes/Props/Box_3D_Green.tscn" id="81_q68ro"] @@ -780,26 +779,6 @@ _surfaces = [{ [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_27ahx"] points = PackedVector3Array(0.25, 0.75, 0.5, 0.25, -0.75, 0.5, -0.25, 0.75, 0.5, -0.25, -0.75, 0.5, 0.25, 0.75, -0.5, 0.25, -0.75, -0.5, -0.25, 0.75, -0.5, -0.25, -0.75, -0.5) -[sub_resource type="Resource" id="Resource_awu2v"] -script = ExtResource("52_g8tx2") -MaxLength = 100.0 -WarningRadius = 0.025 -DamageRadius = 0.05 -ActiveDuration = 100.0 -metadata/_custom_type_script = "uid://5utr3255hbln" - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_fmfkd"] -render_priority = 0 -shader = ExtResource("53_tqorp") -shader_parameter/beam_color = Color(1, 0.2, 0.2, 1) -shader_parameter/glow_radius = 0.2 -shader_parameter/noise_speed = 1.0 -shader_parameter/flicker_strength = 0.2 - -[sub_resource type="CylinderMesh" id="CylinderMesh_tqorp"] - -[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tqorp"] - [sub_resource type="NavigationMesh" id="NavigationMesh_xhmq5"] vertices = PackedVector3Array(-10.5, 3.5, -8.75, -9, 3.5, -9, -10.5, 3.5, -9.5, 25, 3.25, -30.75, 24.75, 3.25, -32.5, 24, 3.5, -32.75, 24, 3.5, -26.25, 25, 3, -26.5, 23.75, 3.5, -35.25, 24, 3.5, -35.25, 33.25, 3.5, -35.5, -10.75, 3.5, -4.25, 7, 3.5, -26, 7, 3.5, -35.25, 6.75, 3.5, -35.25, 6.5, 3.5, -25.75, 15.25, 3.5, -35.25, 15.5, 3.5, -35.25, 15.25, 3.5, -26, 15.5, 3.5, -26, -10.75, 3.5, -25.25, -10.25, 3.5, -25.5, -19.75, 3.5, -25.75, 23.75, 3.5, -26, 24, 3.5, -25.5, -19.75, 3.5, -35.75, 24.25, 1.5, -20.75, 24.5, 1.5, -20, 25.5, 1.5, -19.75, 25.5, 1.5, -26.25, 24.5, 1.5, -26, 24, 1.5, -25, 24.5, 1.5, -35, 24.5, 1.5, -33, 25.25, 1.5, -32.75, 37.75, 1.5, -35.25, 22.25, 1.5, -25, 22.5, 1.5, -20.75, 25.5, 1.5, -30.75, 37.75, 1.5, -16.75, 25.5, 1.5, -16.75, 58.25, 1.5, -16.25, 58.25, 1.5, -35.25, 40, 1.5, -16.5, 57.75, 1.5, -16, 40, 1.5, -9.25, 57.75, 1.5, -9.25, -19.75, 1.5, -35, -19.75, 1.5, -26.25, 6.25, 1.5, -26.25, 6.25, 1.5, -35, 7.5, 1.5, -35, 7.5, 1.5, -26.25, 14.75, 1.5, -26.25, 14.75, 1.5, -35, 19, 1.5, -32, 18.75, 1.5, -33.5, 16, 1.5, -35, 16, 1.5, -26.25, 23.25, 1.5, -35, 20.75, 1.5, -33.75, 23.25, 1.5, -26.25, 20.5, 1.5, -32, 21, 1.5, -32.5, 19.25, 2.25, -33.25, 19.25, 2.25, -32.75, 20.5, 2.25, -32.75, 20.5, 2.25, -33.25, -17, 1.5, -19.75, -16.5, 1.5, -20, -17, 1.5, -21, -18.75, 1.5, -21.25, -17.5, 1.5, -15.25, -17.25, 1.5, -14.5, -16.25, 1.5, -14.75, -16.25, 1.5, -15.5, -18.75, 1.5, -22.5, -19.75, 1.5, -25, -19.75, 1.5, -16.75, -19, 1.5, -15.25, -18.75, 1.5, -15, -18.75, 1.5, -16.5, -17, 1.5, -18.25, -15.5, 1.5, -15.75, -15.75, 1.5, -18, -18.25, 1.5, -22.75, -18, 1.5, -25, -15.5, 1.5, -20, -15.25, 1.5, -21, -16.5, 1.5, -22.5, -13.75, 1.5, -21, -11.25, 1.5, -20, -11.25, 1.5, -25, -13.5, 1.5, -20, -10, 1.5, -19.25, -5.25, 1.5, -19, -5, 1.5, -20.75, -10, 1.5, -25, 0.75, 1.5, -20.75, 1, 1.5, -25, 2.5, 1.5, -20.5, 6.25, 1.5, -20.5, 8, 1.5, -20.75, 7.75, 1.5, -25, 2.5, 1.5, -14.75, 6.25, 1.5, -14.75, -18.25, 2.25, -22.25, -18.25, 2.25, -21.75, -17, 2.25, -21.75, -17, 2.25, -22.25, -14, 2.5, -19.5, -14, 2.5, -20.5, -15, 2.5, -20.5, -15.25, 2.5, -19.75, 10.25, 3.75, -2, 11.5, 3.75, -2, 10.5, 3.75, -2.5, 18.25, 3.75, 2.75, 17.75, 3.75, 2, 17.75, 3.75, 3, 33.5, 3.75, 2.75, 30, 3.75, 3, 34, 3.75, 3, 17.75, 3.75, -2.5, 16.5, 3.75, -2.25, 17.75, 3.75, -1.75, 30.25, 3.75, -0.25, 29.75, 3.75, -1.5, 29.5, 3.75, -0.25, 29.5, 3.75, -4.75, 29.5, 3.75, -4.5, 30, 3.75, -3.5, 30.25, 3.75, -4.5, 30.25, 3.75, -4.75, 29.75, 3.75, -6, 25.5, 3.75, -9, 29.5, 3.75, -9, 24.25, 3.75, -9.25, 30, 3.75, -8, 30.25, 3.75, -9, 33.5, 3.75, -9, 34, 3.75, -8, 34.25, 3.5, -9, 24, 3.75, -15.75, 24.25, 3.5, -16.25, 24, 3.75, -17, 34, 3.75, -3.5, 34, 3.75, -6, 33.5, 3.75, -4.75, 33.5, 3.75, -4.5, 7.25, 3.5, -9.25, 11.25, 3.75, -9, 12.75, 3.75, -9, 11.5, 3.25, -8.25, 12.5, 3.25, -8.25, 13.75, 3.75, -9, 14, 3.25, -8.25, 15, 3.25, -8.25, 15.25, 3.75, -9, 23.75, 3.75, -9.5, 1.75, 3.5, -9.5, -6.75, 3.5, -9.25, 4, 3.5, -9, 2, 3.5, -9.5, 18, 3.75, -8.75, 25, 3, -17, 25, 3, -19.5, 24.25, 3.25, -19.5, 17.75, 3.75, -8.75, -4.25, 3.5, -17.25, -4.5, 3.5, -19.75, -4.75, 3.5, -20.25, -4.75, 3.5, -14, -4.25, 3.5, -17, -4.25, 3.5, -14.25, 33.5, 3.75, 0, 34, 3.75, -1.5, 25.75, 3.75, 2.5, 28, 3.75, 3, 26, 3.75, 2.5, 33.5, 3.75, -0.25, 24, 3.5, -20.25, 23.5, 3.5, -20, 10.25, 3.75, -9, 10.75, 3.75, -9, 26.25, 3.75, -4.75, 26, 3.75, -4.25, 26, 3.75, -8.75, 26.25, 3.75, 0, 26.25, 3.75, -0.25, 2, 3.5, -13.75, 1.75, 3.5, -16.75, 6.75, 3.5, -20.25, 7, 3.5, -19.75, 6.75, 3.5, -14.5, 39.5, 3.5, -9, 39.25, 3.5, -9.5, 1.75, 3.5, -17.5, 2.25, 3.5, -14.25, 2, 3.5, -20.25, 1.5, 3.5, -20, 39.5, 3.5, -16.25, 39, 3.5, -16, 17.75, 3.75, 0, 6.5, 3.5, -14, 6.75, 3.5, -9.5, 6, 3.5, -9, 8.833334, 3.25, -9, -19.75, 1.5, -15.25, -19.75, 1.5, -9.75, -18.5, 1.5, -13.75, -16, 1.5, -14.25, -17.5, 1.5, -13.75, -13.75, 1.5, -19, -15, 1.5, -19, -15, 1.5, -18.25, -14.75, 1.5, -15.5, -14.75, 1.5, -14.5, -11.25, 1.5, -9.75, -16.5, 2.5, -19.5, -16.5, 2.5, -18.5, -15.5, 2.5, -18.5, -15.25, 2.5, -19.25, -4, 1.5, -19.5, -4, 1.5, -17.75, 1.25, 1.5, -17.75, 1.25, 1.5, -19.5, 7.5, 1.5, -19.5, 7.5, 1.5, -9.75, 23.25, 1.5, -9.75, 23.25, 1.5, -19.5, -8.5, 1.5, -9.25, -7.25, 1.5, -9.25, -7, 1.5, -9.75, -8.75, 1.5, -9.75, -10, 1.5, -9.75, -5.25, 1.5, -9.75, -4, 1.5, -16.5, -4, 1.5, -14.75, 1.25, 1.5, -14.75, 1.25, 1.5, -16.5, -19.75, 2, -16.25, -19.75, 2, -15.75, -19.25, 2, -15.75, -19.25, 2, -16.25, 24.5, 1.5, -15.5, 24.5, 1.5, -9.75, 38.75, 1.5, -9.75, 38.75, 1.5, -15.5, -15.75, 2, -15.25, -15.75, 2, -14.75, -15.25, 2, -14.75, -15.25, 2, -15.25, -18.25, 2, -14.75, -18.25, 2, -14.25, -17.75, 2, -14.25, -17.75, 2, -14.75, 2.5, 1.5, -13.5, 2.5, 1.5, -9.75, 6.25, 1.5, -9.75, 6.25, 1.5, -13.5, -2, 1.5, -1.25, -1.75, 1.5, -0.5, -1.5, 1.5, -0.5, -1.25, 1.5, -1.5, 1.5, 1.5, -4, 1, 1.5, -3, 0.5, 1.5, -1, 3.75, 1.5, -1, 2.75, 1.5, -3.25, -7, 1.5, -8.5, -9, 1.5, -8.5, -10, 1.5, -4.25, -3, 1.5, -1.25, -3, 1.5, -3, 2.75, 1.5, -4, 4.5, 1.5, -4.25, 4.5, 1.5, -8.75, 3.75, 1.5, -3, 0.25, 1.5, -1.5, -10, 1.5, -8.5, 5, 1.5, -4, 9.75, 1.5, -3, 9.75, 1.5, -8.5, 5, 1.5, -2.75, 17.25, 1.5, -8.5, 15.5, 1.5, -8.5, 15, 1.5, -7.5, 17.25, 1.5, -2.75, 11.5, 1.5, -7.5, 11, 1.5, -8, 11, 1.5, -2.75, 18.5, 1.5, -1.75, 19.5, 1.5, -1.5, 19.75, 1.5, -2, 19.25, 1.5, -2.75, 23.75, 1.5, -5.25, 25.25, 1.5, -8.5, 18.5, 1.5, -8.5, 19.75, 1.5, -5.25, 20.25, 1.5, -3.25, 20.25, 1.5, -3.75, 19.25, 1.5, -4.25, 25.25, 1.5, -5.25, 26.5, 1.5, -8.5, 26.5, 1.5, -5.25, 29.25, 1.5, -5.25, 29.25, 1.5, -8.5, 33.25, 1.5, -8.5, 30.5, 1.5, -8.5, 30.25, 1.5, -8, 30.5, 1.5, -5.25, 33.25, 1.5, -5.25, 38.75, 1.5, -8.5, 34.5, 1.5, -8.5, 34.25, 1.5, -8, 34.5, 1.5, 1.25, 38.75, 1.5, 1.5, 19.25, 1.5, -0.75, 24.25, 1.5, -4.25, 23.5, 1.5, -3.25, 24.25, 1.5, -2.75, 20.5, 1.5, 0.5, 20.25, 1.5, -0.25, 18.5, 1.5, 2.25, 23.75, 1.5, -2, 24.25, 1.5, -0.75, 25.25, 1.5, 2.25, 23, 1.5, 0.5, 19.75, 2.25, -4.75, 19.75, 2.25, -4.25, 20.25, 2.25, -4.25, 20.25, 2.25, -4.75, 23, 2.5, -0.5, 23.75, 2.25, -0.75, 23.75, 2.25, -1.25, 23, 2.5, -1.5, 20.75, 2.5, 0, 23, 2.5, -3, 20.5, 2.5, -4.75, 23, 2.5, -4, 23.75, 2.25, -4.25, 23.75, 2.25, -4.75, 23.75, 2.25, -2.75, 23, 2.5, 0, 26.5, 1.5, -4, 26.5, 1.5, -0.75, 29.25, 1.5, -0.75, 29.25, 1.5, -4, 33.25, 1.5, -4, 30.5, 1.5, -4, 30.25, 1.5, -3.5, 30.5, 1.5, -0.75, 33.25, 1.5, -0.75, -3.5, 3.5, -3.25, 1, 3.5, -3.5, -3.75, 3.5, -3.75, -3.75, 3.5, 4.25, -3.25, 3.5, 4.25, 4.5, 3.5, -3.75, 3.25, 3.5, -3.75, 4.25, 3.5, -3.25, 4, 3.5, 4.25, 4.5, 3.5, 4.25, 7.5, 1.5, 5, 9.25, 1.5, 5.25, 9.25, 1.5, 4.5, 7.25, 1.5, 3.75, 10.5, 1.5, -1.5, 9.75, 1.5, -1.75, 5, 1.5, 3.75, 10.25, 1.5, 4.25, 19.75, 2.25, -2.75, 19.75, 2.25, -2.25, 20.25, 2.25, -2.25, 20.25, 2.25, -2.75, 18.75, 1.5, 7.75, 19, 1.5, 3.5, 17.25, 1.5, 3.25, 10.5, 1.5, 7.75, 17.25, 1.5, -1.5, -2, 1.5, 0.25, -1.25, 1.5, 0.5, 0.25, 1.5, 0.5, -3, 1.5, 3.75, -3, 1.5, 0.25, 3.75, 1.5, 3.75, 19.75, 2.25, -1.25, 19.75, 2.25, -0.75, 20.25, 2.25, -0.75, 20.25, 2.25, -1.25, -1, 2.5, -1, -1, 2.5, 0, 0, 2.5, 0, 0, 2.5, -1, -2.75, 2.25, -0.75, -2.75, 2.25, -0.25, -2.25, 2.25, -0.25, -2.25, 2.25, -0.75, 32, 2.5, 0.5, 32, 2.5, 1, 33, 2.5, 1, 33, 2.5, 0.5, 27.25, 1.5, 1.5, 26.5, 1.5, 1.75, 26.5, 1.5, 2.25, 31.75, 1.5, 1.5, 31.5, 1.5, 1, 30.25, 1.5, 0.75, 33.25, 1.5, 2.25, 33.25, 1.5, 1.5, 27.5, 1.5, 0.75, 34, 1.5, 3.5, 32.5, 1.5, 3.5, 32.75, 1.5, 7.75, 34.5, 1.5, 3, 38.75, 1.5, 3.25, 39.25, 1.5, 7.75, 39.25, 1.5, 3.5, 5.25, 3.5, 4.25, 5.25, 3.5, 6, 7, 3.5, 6, 7, 3.5, 4.25, 5.5, 1.5, 4.5, 5.5, 1.5, 5.75, 6.75, 1.5, 5.75, 6.75, 1.5, 4.5, 10.25, 3.5, 8.5, 27.5, 3.5, 8.5, 10.25, 3.5, 8.25, 9.75, 3.5, 4.75, 9.5, 3.5, 18, 10.25, 3.5, 18.25, 4.25, 1.5, 10.75, 4.5, 1.5, 12.25, 4.75, 1.5, 12.25, 5, 1.5, 10.75, 3.75, 1.5, 8.75, 1.25, 1.5, 8.75, 2, 1.5, 10.75, 4, 1.5, 9.5, 1.25, 1.5, 12.25, 1.75, 1.5, 12.25, 4.75, 1.5, 6.25, 4.75, 1.5, 6.75, 6.5, 1.5, 7, 7, 1.5, 6.5, 6, 1.5, 9.5, 7.25, 1.5, 10.75, 6.5, 1.5, 9, 7.5, 1.5, 12, 9.25, 1.5, 12, 4.25, 3.5, 7.25, 4.25, 3.5, 9, 6, 3.5, 9, 6, 3.5, 7.25, 4.5, 1.5, 8.5, 5.75, 1.5, 8.75, 5.75, 1.5, 7.5, 4.75, 1.5, 7.5, 10.5, 1.5, 9, 10.5, 1.5, 17.75, 27.25, 1.5, 17.75, 27.25, 1.5, 9, 2.25, 3.5, 11.25, 2.25, 3.5, 13, 4, 3.5, 13, 4, 3.5, 11.25, 5.25, 3.5, 11.25, 5.25, 3.5, 13, 7, 3.5, 13, 7, 3.5, 11.25, 2.5, 1.5, 11.5, 2.5, 1.5, 12.75, 3.75, 1.5, 12.75, 3.75, 1.5, 11.5, 5.5, 1.5, 11.5, 5.5, 1.5, 12.75, 6.75, 1.5, 12.75, 6.75, 1.5, 11.5, 5, 1.5, 13.5, 4, 1.5, 13.5, 2, 1.5, 13.5, 1.25, 1.5, 17.75, 7, 1.5, 13.5, 9.25, 1.5, 17.75) polygons = [PackedInt32Array(2, 1, 0), PackedInt32Array(4, 3, 5), PackedInt32Array(5, 3, 7), PackedInt32Array(5, 7, 6), PackedInt32Array(10, 9, 8), PackedInt32Array(2, 0, 11), PackedInt32Array(9, 5, 8), PackedInt32Array(13, 12, 14), PackedInt32Array(14, 12, 15), PackedInt32Array(10, 17, 16), PackedInt32Array(15, 12, 18), PackedInt32Array(18, 16, 19), PackedInt32Array(19, 16, 17), PackedInt32Array(10, 8, 17), PackedInt32Array(15, 18, 19), PackedInt32Array(21, 2, 20), PackedInt32Array(20, 2, 11), PackedInt32Array(10, 16, 13), PackedInt32Array(21, 20, 22), PackedInt32Array(21, 22, 15), PackedInt32Array(15, 19, 23), PackedInt32Array(23, 24, 15), PackedInt32Array(15, 24, 21), PackedInt32Array(13, 14, 10), PackedInt32Array(10, 14, 25), PackedInt32Array(23, 6, 24), PackedInt32Array(6, 23, 5), PackedInt32Array(5, 23, 8), PackedInt32Array(28, 27, 26), PackedInt32Array(31, 30, 29), PackedInt32Array(33, 32, 34), PackedInt32Array(34, 32, 35), PackedInt32Array(26, 37, 31), PackedInt32Array(31, 37, 36), PackedInt32Array(35, 38, 34), PackedInt32Array(26, 31, 28), PackedInt32Array(28, 31, 29), PackedInt32Array(28, 29, 39), PackedInt32Array(39, 29, 35), PackedInt32Array(35, 29, 38), PackedInt32Array(39, 40, 28), PackedInt32Array(44, 43, 41), PackedInt32Array(41, 43, 39), PackedInt32Array(41, 39, 35), PackedInt32Array(41, 35, 42), PackedInt32Array(46, 45, 44), PackedInt32Array(44, 45, 43), PackedInt32Array(50, 49, 47), PackedInt32Array(47, 49, 48), PackedInt32Array(54, 53, 51), PackedInt32Array(51, 53, 52), PackedInt32Array(56, 55, 57), PackedInt32Array(57, 55, 58), PackedInt32Array(60, 56, 59), PackedInt32Array(59, 56, 57), PackedInt32Array(62, 61, 55), PackedInt32Array(55, 61, 58), PackedInt32Array(60, 59, 63), PackedInt32Array(63, 59, 61), PackedInt32Array(62, 63, 61), PackedInt32Array(67, 66, 64), PackedInt32Array(64, 66, 65), PackedInt32Array(69, 68, 70), PackedInt32Array(70, 68, 71), PackedInt32Array(73, 72, 74), PackedInt32Array(74, 72, 75), PackedInt32Array(76, 71, 77), PackedInt32Array(77, 71, 78), PackedInt32Array(79, 81, 80), PackedInt32Array(80, 81, 72), PackedInt32Array(81, 78, 82), PackedInt32Array(82, 78, 68), PackedInt32Array(68, 78, 71), PackedInt32Array(75, 72, 83), PackedInt32Array(83, 72, 81), PackedInt32Array(83, 81, 82), PackedInt32Array(83, 82, 84), PackedInt32Array(85, 76, 86), PackedInt32Array(86, 76, 77), PackedInt32Array(87, 69, 88), PackedInt32Array(88, 69, 70), PackedInt32Array(88, 70, 89), PackedInt32Array(90, 88, 89), PackedInt32Array(90, 89, 91), PackedInt32Array(91, 89, 92), PackedInt32Array(92, 89, 86), PackedInt32Array(91, 93, 90), PackedInt32Array(89, 85, 86), PackedInt32Array(95, 94, 96), PackedInt32Array(96, 94, 97), PackedInt32Array(98, 96, 99), PackedInt32Array(99, 96, 97), PackedInt32Array(98, 99, 100), PackedInt32Array(100, 99, 101), PackedInt32Array(101, 99, 102), PackedInt32Array(102, 99, 103), PackedInt32Array(101, 105, 100), PackedInt32Array(100, 105, 104), PackedInt32Array(103, 36, 102), PackedInt32Array(102, 36, 37), PackedInt32Array(109, 108, 106), PackedInt32Array(106, 108, 107), PackedInt32Array(112, 111, 113), PackedInt32Array(113, 111, 110), PackedInt32Array(115, 114, 116), PackedInt32Array(119, 118, 117), PackedInt32Array(122, 121, 120), PackedInt32Array(125, 124, 123), PackedInt32Array(128, 127, 126), PackedInt32Array(132, 131, 133), PackedInt32Array(133, 131, 130), PackedInt32Array(133, 130, 129), PackedInt32Array(133, 129, 134), PackedInt32Array(136, 135, 137), PackedInt32Array(139, 138, 136), PackedInt32Array(142, 141, 140), PackedInt32Array(145, 144, 143), PackedInt32Array(149, 148, 146), PackedInt32Array(146, 148, 147), PackedInt32Array(152, 151, 150), PackedInt32Array(153, 151, 154), PackedInt32Array(154, 151, 152), PackedInt32Array(156, 155, 157), PackedInt32Array(157, 155, 158), PackedInt32Array(155, 150, 158), PackedInt32Array(158, 150, 159), PackedInt32Array(155, 152, 150), PackedInt32Array(163, 162, 160), PackedInt32Array(160, 162, 161), PackedInt32Array(164, 125, 123), PackedInt32Array(166, 165, 167), PackedInt32Array(167, 165, 145), PackedInt32Array(164, 123, 168), PackedInt32Array(169, 173, 170), PackedInt32Array(170, 173, 171), PackedInt32Array(171, 173, 172), PackedInt32Array(172, 173, 174), PackedInt32Array(120, 175, 122), PackedInt32Array(122, 175, 176), PackedInt32Array(179, 178, 177), PackedInt32Array(177, 178, 117), PackedInt32Array(117, 178, 119), PackedInt32Array(180, 176, 175), PackedInt32Array(181, 167, 182), PackedInt32Array(182, 167, 145), PackedInt32Array(126, 180, 175), PackedInt32Array(133, 148, 132), PackedInt32Array(132, 148, 149), PackedInt32Array(137, 159, 143), PackedInt32Array(143, 159, 182), PackedInt32Array(184, 183, 150), PackedInt32Array(151, 184, 150), PackedInt32Array(129, 130, 185), PackedInt32Array(185, 130, 186), PackedInt32Array(164, 137, 135), PackedInt32Array(145, 143, 182), PackedInt32Array(136, 187, 135), PackedInt32Array(128, 126, 188), PackedInt32Array(188, 126, 175), PackedInt32Array(168, 158, 164), PackedInt32Array(164, 158, 159), PackedInt32Array(164, 159, 137), PackedInt32Array(189, 128, 188), PackedInt32Array(179, 177, 188), PackedInt32Array(188, 177, 189), PackedInt32Array(189, 177, 186), PackedInt32Array(186, 177, 135), PackedInt32Array(163, 160, 190), PackedInt32Array(190, 160, 191), PackedInt32Array(193, 192, 182), PackedInt32Array(182, 192, 181), PackedInt32Array(187, 185, 135), PackedInt32Array(135, 185, 186), PackedInt32Array(192, 193, 194), PackedInt32Array(194, 193, 150), PackedInt32Array(196, 195, 142), PackedInt32Array(169, 197, 173), PackedInt32Array(173, 197, 191), PackedInt32Array(140, 139, 196), PackedInt32Array(196, 139, 137), PackedInt32Array(190, 191, 198), PackedInt32Array(198, 191, 197), PackedInt32Array(198, 197, 199), PackedInt32Array(170, 171, 200), PackedInt32Array(200, 171, 199), PackedInt32Array(137, 139, 136), PackedInt32Array(199, 197, 200), PackedInt32Array(202, 201, 196), PackedInt32Array(196, 201, 195), PackedInt32Array(164, 203, 125), PackedInt32Array(194, 204, 198), PackedInt32Array(198, 204, 190), PackedInt32Array(143, 144, 202), PackedInt32Array(202, 144, 201), PackedInt32Array(205, 204, 150), PackedInt32Array(150, 204, 194), PackedInt32Array(196, 142, 140), PackedInt32Array(206, 205, 150), PackedInt32Array(206, 150, 207), PackedInt32Array(207, 150, 183), PackedInt32Array(184, 116, 183), PackedInt32Array(183, 116, 114), PackedInt32Array(79, 80, 208), PackedInt32Array(208, 80, 210), PackedInt32Array(208, 210, 209), PackedInt32Array(74, 211, 73), PackedInt32Array(73, 211, 212), PackedInt32Array(215, 214, 213), PackedInt32Array(209, 210, 212), PackedInt32Array(216, 213, 217), PackedInt32Array(217, 213, 91), PackedInt32Array(217, 91, 218), PackedInt32Array(83, 84, 215), PackedInt32Array(213, 93, 91), PackedInt32Array(83, 215, 216), PackedInt32Array(216, 215, 213), PackedInt32Array(211, 217, 212), PackedInt32Array(212, 217, 209), PackedInt32Array(209, 217, 218), PackedInt32Array(221, 220, 222), PackedInt32Array(222, 220, 219), PackedInt32Array(226, 225, 223), PackedInt32Array(223, 225, 224), PackedInt32Array(230, 229, 227), PackedInt32Array(227, 229, 228), PackedInt32Array(231, 234, 232), PackedInt32Array(232, 234, 233), PackedInt32Array(233, 234, 95), PackedInt32Array(95, 234, 94), PackedInt32Array(234, 235, 94), PackedInt32Array(95, 236, 233), PackedInt32Array(240, 239, 237), PackedInt32Array(237, 239, 238), PackedInt32Array(244, 243, 241), PackedInt32Array(241, 243, 242), PackedInt32Array(248, 247, 245), PackedInt32Array(245, 247, 246), PackedInt32Array(252, 251, 249), PackedInt32Array(249, 251, 250), PackedInt32Array(256, 255, 253), PackedInt32Array(253, 255, 254), PackedInt32Array(260, 259, 257), PackedInt32Array(257, 259, 258), PackedInt32Array(262, 261, 263), PackedInt32Array(263, 261, 264), PackedInt32Array(265, 269, 266), PackedInt32Array(266, 269, 267), PackedInt32Array(267, 269, 268), PackedInt32Array(232, 270, 231), PackedInt32Array(231, 270, 271), PackedInt32Array(271, 270, 272), PackedInt32Array(261, 273, 264), PackedInt32Array(264, 273, 274), PackedInt32Array(275, 269, 265), PackedInt32Array(275, 265, 276), PackedInt32Array(276, 265, 277), PackedInt32Array(277, 265, 270), PackedInt32Array(270, 265, 272), PackedInt32Array(269, 278, 268), PackedInt32Array(279, 264, 266), PackedInt32Array(266, 264, 274), PackedInt32Array(272, 280, 271), PackedInt32Array(267, 279, 266), PackedInt32Array(276, 277, 281), PackedInt32Array(281, 277, 283), PackedInt32Array(281, 283, 282), PackedInt32Array(282, 284, 281), PackedInt32Array(286, 285, 287), PackedInt32Array(287, 285, 288), PackedInt32Array(291, 290, 289), PackedInt32Array(289, 287, 291), PackedInt32Array(291, 287, 288), PackedInt32Array(294, 293, 295), PackedInt32Array(295, 293, 292), PackedInt32Array(299, 298, 296), PackedInt32Array(296, 298, 297), PackedInt32Array(300, 295, 301), PackedInt32Array(301, 295, 302), PackedInt32Array(299, 302, 298), PackedInt32Array(295, 292, 302), PackedInt32Array(302, 292, 298), PackedInt32Array(297, 303, 296), PackedInt32Array(307, 306, 304), PackedInt32Array(304, 306, 305), PackedInt32Array(309, 308, 310), PackedInt32Array(310, 308, 311), PackedInt32Array(311, 308, 312), PackedInt32Array(314, 313, 315), PackedInt32Array(315, 313, 316), PackedInt32Array(316, 313, 317), PackedInt32Array(292, 293, 318), PackedInt32Array(319, 296, 303), PackedInt32Array(320, 319, 321), PackedInt32Array(321, 319, 303), PackedInt32Array(323, 322, 318), PackedInt32Array(318, 322, 324), PackedInt32Array(326, 325, 321), PackedInt32Array(322, 328, 324), PackedInt32Array(324, 328, 327), PackedInt32Array(324, 292, 318), PackedInt32Array(328, 326, 327), PackedInt32Array(321, 303, 326), PackedInt32Array(326, 303, 327), PackedInt32Array(332, 331, 329), PackedInt32Array(329, 331, 330), PackedInt32Array(334, 333, 335), PackedInt32Array(335, 333, 336), PackedInt32Array(336, 333, 337), PackedInt32Array(336, 337, 338), PackedInt32Array(338, 337, 339), PackedInt32Array(341, 340, 342), PackedInt32Array(342, 340, 339), PackedInt32Array(338, 343, 336), PackedInt32Array(333, 344, 337), PackedInt32Array(339, 340, 338), PackedInt32Array(348, 347, 345), PackedInt32Array(345, 347, 346), PackedInt32Array(350, 349, 351), PackedInt32Array(351, 349, 352), PackedInt32Array(352, 349, 353), PackedInt32Array(356, 355, 354), PackedInt32Array(358, 357, 354), PackedInt32Array(354, 357, 356), PackedInt32Array(360, 359, 361), PackedInt32Array(362, 361, 363), PackedInt32Array(363, 361, 359), PackedInt32Array(365, 364, 366), PackedInt32Array(366, 364, 367), PackedInt32Array(369, 368, 284), PackedInt32Array(284, 368, 367), PackedInt32Array(284, 367, 370), PackedInt32Array(366, 367, 371), PackedInt32Array(371, 367, 368), PackedInt32Array(284, 282, 369), PackedInt32Array(375, 374, 372), PackedInt32Array(372, 374, 373), PackedInt32Array(377, 376, 378), PackedInt32Array(378, 376, 371), PackedInt32Array(371, 376, 379), PackedInt32Array(380, 378, 368), PackedInt32Array(368, 378, 371), PackedInt32Array(262, 263, 381), PackedInt32Array(381, 263, 382), PackedInt32Array(384, 382, 383), PackedInt32Array(381, 382, 385), PackedInt32Array(385, 382, 384), PackedInt32Array(268, 386, 383), PackedInt32Array(383, 386, 384), PackedInt32Array(383, 267, 268), PackedInt32Array(390, 389, 387), PackedInt32Array(387, 389, 388), PackedInt32Array(394, 393, 391), PackedInt32Array(391, 393, 392), PackedInt32Array(398, 397, 395), PackedInt32Array(395, 397, 396), PackedInt32Array(402, 401, 399), PackedInt32Array(399, 401, 400), PackedInt32Array(404, 403, 405), PackedInt32Array(405, 403, 408), PackedInt32Array(405, 408, 407), PackedInt32Array(405, 407, 406), PackedInt32Array(410, 409, 406), PackedInt32Array(406, 409, 405), PackedInt32Array(408, 403, 411), PackedInt32Array(414, 413, 412), PackedInt32Array(416, 415, 317), PackedInt32Array(317, 415, 316), PackedInt32Array(418, 417, 416), PackedInt32Array(416, 417, 415), PackedInt32Array(415, 417, 412), PackedInt32Array(412, 417, 414), PackedInt32Array(413, 414, 377), PackedInt32Array(377, 414, 376), PackedInt32Array(422, 421, 419), PackedInt32Array(419, 421, 420), PackedInt32Array(426, 425, 423), PackedInt32Array(423, 425, 424), PackedInt32Array(429, 428, 427), PackedInt32Array(430, 429, 427), PackedInt32Array(432, 431, 427), PackedInt32Array(427, 431, 430), PackedInt32Array(434, 433, 435), PackedInt32Array(435, 433, 436), PackedInt32Array(440, 433, 437), PackedInt32Array(437, 433, 439), PackedInt32Array(437, 439, 438), PackedInt32Array(442, 441, 439), PackedInt32Array(439, 441, 438), PackedInt32Array(444, 443, 445), PackedInt32Array(445, 443, 446), PackedInt32Array(433, 440, 436), PackedInt32Array(436, 440, 447), PackedInt32Array(449, 448, 447), PackedInt32Array(447, 448, 436), PackedInt32Array(451, 450, 448), PackedInt32Array(449, 445, 446), PackedInt32Array(364, 365, 446), PackedInt32Array(446, 365, 449), PackedInt32Array(449, 365, 448), PackedInt32Array(448, 365, 451), PackedInt32Array(455, 454, 452), PackedInt32Array(452, 454, 453), PackedInt32Array(459, 458, 456), PackedInt32Array(456, 458, 457), PackedInt32Array(463, 462, 460), PackedInt32Array(460, 462, 461), PackedInt32Array(467, 466, 464), PackedInt32Array(464, 466, 465), PackedInt32Array(471, 470, 468), PackedInt32Array(468, 470, 469), PackedInt32Array(475, 474, 472), PackedInt32Array(472, 474, 473), PackedInt32Array(479, 478, 476), PackedInt32Array(476, 478, 477), PackedInt32Array(435, 480, 434), PackedInt32Array(434, 480, 481), PackedInt32Array(483, 482, 481), PackedInt32Array(442, 482, 441), PackedInt32Array(441, 482, 483), PackedInt32Array(450, 451, 484), PackedInt32Array(484, 451, 485), PackedInt32Array(483, 481, 480), PackedInt32Array(484, 485, 480), PackedInt32Array(480, 485, 483)] @@ -813,28 +792,28 @@ shader_parameter/SCREEN_WIDTH = 96.0 shader_parameter/COLOR_FACTOR = 10.0 shader_parameter/DITHERING_STRENTH = 0.0150000007125 -[node name="Fusion1" type="Node3D"] +[node name="Fusion1" type="Node3D" unique_id=94783677] -[node name="GameController" parent="." node_paths=PackedStringArray("_cameraTarget") instance=ExtResource("1_tykkg")] +[node name="GameController" parent="." unique_id=1107760882 node_paths=PackedStringArray("_cameraTarget") instance=ExtResource("1_tykkg")] _cameraTarget = NodePath("../CameraTarget") MapResource = ExtResource("2_wgcya") SpawnMarkers = Dictionary[int, NodePath]({ 0: NodePath("") }) -[node name="DirectionalLight3D_Original" type="DirectionalLight3D" parent="."] +[node name="DirectionalLight3D_Original" type="DirectionalLight3D" parent="." unique_id=152050596] transform = Transform3D(0.442606, -0.744379, 0.5, 0.287606, 0.645974, 0.707107, -0.849343, -0.169167, 0.5, 28.5973, 5.82742, 17.535) visible = false light_energy = 1.375 light_bake_mode = 1 shadow_enabled = true -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=352434270] transform = Transform3D(0.401703, -0.767225, 0.5, 0.322119, 0.629476, 0.707107, -0.857248, -0.122987, 0.5, 28.5973, 5.82742, 17.535) light_energy = 2.029 light_bake_mode = 1 -[node name="DirectionalLight3D2" type="DirectionalLight3D" parent="."] +[node name="DirectionalLight3D2" type="DirectionalLight3D" parent="." unique_id=1151343023] transform = Transform3D(0.0306036, -0.825802, -0.56313, -0.675985, -0.43211, 0.596931, -0.73628, 0.362399, -0.571454, 27.8154, 5.82742, 13.9456) light_energy = 0.394 light_bake_mode = 1 @@ -842,11 +821,11 @@ shadow_enabled = true shadow_blur = 0.51 sky_mode = 1 -[node name="CameraTarget" type="Marker3D" parent="."] +[node name="CameraTarget" type="Marker3D" parent="." unique_id=1000745341] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.0461216, 2.33215, 2.5474238) script = ExtResource("3_kvreb") -[node name="Camera3D" type="Camera3D" parent="."] +[node name="Camera3D" type="Camera3D" parent="." unique_id=1603703919] physics_interpolation_mode = 1 transform = Transform3D(0.7071068, -0.4156269, 0.5720614, 0, 0.809017, 0.58778524, -0.7071068, -0.4156269, 0.5720614, 4.336014, 7.935, 5.0604153) projection = 1 @@ -855,632 +834,628 @@ script = ExtResource("4_lg4s6") MaxAimOffsetDistance = 16.0 TargetPath = NodePath("../CameraTarget") -[node name="AudioStreamPlayer2D" parent="." instance=ExtResource("5_yap0c")] +[node name="AudioStreamPlayer2D" parent="." unique_id=2002105023 instance=ExtResource("5_yap0c")] autoplay = true MusicData = ExtResource("6_ssvhe") -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=258600946] environment = SubResource("Environment_d6hgs") camera_attributes = SubResource("CameraAttributesPractical_w45nv") -[node name="FuncGodotMap" type="Node3D" parent="." groups=["navigation_mesh_source_group"]] +[node name="FuncGodotMap" type="Node3D" parent="." unique_id=2098646502 groups=["navigation_mesh_source_group"]] script = ExtResource("7_otc2h") local_map_file = "uid://0rvqo8cwa4py" map_settings = ExtResource("8_wkbqu") -[node name="entity_0_worldspawn" type="StaticBody3D" parent="FuncGodotMap" groups=["Solid"]] +[node name="entity_0_worldspawn" type="StaticBody3D" parent="FuncGodotMap" unique_id=1939950554 groups=["Solid"]] collision_mask = 0 script = ExtResource("9_h488m") -[node name="entity_0_mesh_instance" type="MeshInstance3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_mesh_instance" type="MeshInstance3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1285986715] layers = 2 mesh = SubResource("ArrayMesh_s0j30") -[node name="entity_0_occluder_instance" type="OccluderInstance3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_occluder_instance" type="OccluderInstance3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1342884813] occluder = SubResource("ArrayOccluder3D_6xfug") -[node name="entity_0_brush_0_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_0_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=987148611] shape = SubResource("ConvexPolygonShape3D_knxh1") -[node name="entity_0_brush_1_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_1_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1527306257] shape = SubResource("ConvexPolygonShape3D_yb8af") -[node name="entity_0_brush_2_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_2_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1082325517] shape = SubResource("ConvexPolygonShape3D_n1gd0") -[node name="entity_0_brush_3_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_3_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=87663422] shape = SubResource("ConvexPolygonShape3D_kweka") -[node name="entity_0_brush_4_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_4_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=418372826] shape = SubResource("ConvexPolygonShape3D_logi2") -[node name="entity_0_brush_5_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_5_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=737719713] shape = SubResource("ConvexPolygonShape3D_ojqkg") -[node name="entity_0_brush_6_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_6_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1334779676] shape = SubResource("ConvexPolygonShape3D_7qfla") -[node name="entity_0_brush_7_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_7_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=310064972] shape = SubResource("ConvexPolygonShape3D_q42rs") -[node name="entity_0_brush_8_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_8_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=56427887] shape = SubResource("ConvexPolygonShape3D_lydxa") -[node name="entity_0_brush_9_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_9_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1271435529] shape = SubResource("ConvexPolygonShape3D_tt026") -[node name="entity_0_brush_10_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_10_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=784565676] shape = SubResource("ConvexPolygonShape3D_spslv") -[node name="entity_0_brush_11_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_11_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=482427260] shape = SubResource("ConvexPolygonShape3D_eyq5e") -[node name="entity_0_brush_12_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_12_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1457051802] shape = SubResource("ConvexPolygonShape3D_indjt") -[node name="entity_0_brush_13_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_13_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=888076911] shape = SubResource("ConvexPolygonShape3D_k2wov") -[node name="entity_0_brush_14_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_14_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=111968621] shape = SubResource("ConvexPolygonShape3D_gr4tx") -[node name="entity_0_brush_15_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_15_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1563562584] shape = SubResource("ConvexPolygonShape3D_gtbk3") -[node name="entity_0_brush_16_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_16_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1627564547] shape = SubResource("ConvexPolygonShape3D_m4eo4") -[node name="entity_0_brush_17_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_17_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1073250452] shape = SubResource("ConvexPolygonShape3D_qx7vm") -[node name="entity_0_brush_18_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_18_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=378115987] shape = SubResource("ConvexPolygonShape3D_6qqxq") -[node name="entity_0_brush_19_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_19_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1651527376] shape = SubResource("ConvexPolygonShape3D_qxcb6") -[node name="entity_0_brush_20_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_20_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=609464029] shape = SubResource("ConvexPolygonShape3D_rsl71") -[node name="entity_0_brush_21_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_21_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1972338221] shape = SubResource("ConvexPolygonShape3D_cf5d4") -[node name="entity_0_brush_22_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_22_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2092410305] shape = SubResource("ConvexPolygonShape3D_tuoxd") -[node name="entity_0_brush_23_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_23_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=660624019] shape = SubResource("ConvexPolygonShape3D_ngaws") -[node name="entity_0_brush_24_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_24_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=703591452] shape = SubResource("ConvexPolygonShape3D_oj2ts") -[node name="entity_0_brush_25_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_25_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=370864157] shape = SubResource("ConvexPolygonShape3D_00olu") -[node name="entity_0_brush_26_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_26_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=619332936] shape = SubResource("ConvexPolygonShape3D_h7nod") -[node name="entity_0_brush_27_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_27_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2117386274] shape = SubResource("ConvexPolygonShape3D_2ikfa") -[node name="entity_0_brush_28_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_28_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=50464788] shape = SubResource("ConvexPolygonShape3D_dieoe") -[node name="entity_0_brush_29_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_29_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1398938683] shape = SubResource("ConvexPolygonShape3D_laqhu") -[node name="entity_0_brush_30_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_30_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1342380849] shape = SubResource("ConvexPolygonShape3D_04e31") -[node name="entity_0_brush_31_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_31_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=864453807] shape = SubResource("ConvexPolygonShape3D_qt5yd") -[node name="entity_0_brush_32_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_32_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1453854633] shape = SubResource("ConvexPolygonShape3D_6jn2u") -[node name="entity_0_brush_33_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_33_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=893908411] shape = SubResource("ConvexPolygonShape3D_ns8ns") -[node name="entity_0_brush_34_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_34_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=268927554] shape = SubResource("ConvexPolygonShape3D_i3odc") -[node name="entity_0_brush_35_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_35_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1881971500] shape = SubResource("ConvexPolygonShape3D_g1g3w") -[node name="entity_0_brush_36_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_36_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2074432408] shape = SubResource("ConvexPolygonShape3D_nfomg") -[node name="entity_0_brush_37_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_37_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1441485310] shape = SubResource("ConvexPolygonShape3D_gyxtc") -[node name="entity_0_brush_38_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_38_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=9257903] shape = SubResource("ConvexPolygonShape3D_1a10f") -[node name="entity_0_brush_39_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_39_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1769259920] shape = SubResource("ConvexPolygonShape3D_drmpt") -[node name="entity_0_brush_40_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_40_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=343552730] shape = SubResource("ConvexPolygonShape3D_kgr1s") -[node name="entity_0_brush_41_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_41_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2074934445] shape = SubResource("ConvexPolygonShape3D_bdomo") -[node name="entity_0_brush_42_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_42_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=357772452] shape = SubResource("ConvexPolygonShape3D_7kef7") -[node name="entity_0_brush_43_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_43_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1379472376] shape = SubResource("ConvexPolygonShape3D_tykkg") -[node name="entity_0_brush_44_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_44_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=674342868] shape = SubResource("ConvexPolygonShape3D_wgcya") -[node name="entity_0_brush_45_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_45_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=395768664] shape = SubResource("ConvexPolygonShape3D_kvreb") -[node name="entity_0_brush_46_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_46_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1196174313] shape = SubResource("ConvexPolygonShape3D_lg4s6") -[node name="entity_0_brush_47_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_47_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=463077193] shape = SubResource("ConvexPolygonShape3D_yap0c") -[node name="entity_0_brush_48_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_48_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2097496407] shape = SubResource("ConvexPolygonShape3D_ssvhe") -[node name="entity_0_brush_49_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_49_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1664871583] shape = SubResource("ConvexPolygonShape3D_otc2h") -[node name="entity_0_brush_50_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_50_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2000341407] shape = SubResource("ConvexPolygonShape3D_wkbqu") -[node name="entity_0_brush_51_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_51_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2104979165] shape = SubResource("ConvexPolygonShape3D_h488m") -[node name="entity_0_brush_52_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_52_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1553233847] shape = SubResource("ConvexPolygonShape3D_s2rw6") -[node name="entity_0_brush_53_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_53_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=342826002] shape = SubResource("ConvexPolygonShape3D_m36cs") -[node name="entity_0_brush_54_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_54_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=690861581] shape = SubResource("ConvexPolygonShape3D_tid3c") -[node name="entity_0_brush_55_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_55_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=460984334] shape = SubResource("ConvexPolygonShape3D_cj4oe") -[node name="entity_0_brush_56_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_56_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1149769142] shape = SubResource("ConvexPolygonShape3D_4hnxk") -[node name="entity_0_brush_57_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_57_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=843789703] shape = SubResource("ConvexPolygonShape3D_yqtxi") -[node name="entity_0_brush_58_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_58_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=792235725] shape = SubResource("ConvexPolygonShape3D_id242") -[node name="entity_0_brush_59_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_59_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=730829908] shape = SubResource("ConvexPolygonShape3D_ykbfy") -[node name="entity_0_brush_60_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_60_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1524801390] shape = SubResource("ConvexPolygonShape3D_5gxp7") -[node name="entity_0_brush_61_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_61_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2100133795] shape = SubResource("ConvexPolygonShape3D_2e56u") -[node name="entity_0_brush_62_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_62_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=18365974] shape = SubResource("ConvexPolygonShape3D_k7djb") -[node name="entity_0_brush_63_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_63_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=659789329] shape = SubResource("ConvexPolygonShape3D_12ldd") -[node name="entity_0_brush_64_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_64_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1615301078] shape = SubResource("ConvexPolygonShape3D_km5jc") -[node name="entity_0_brush_65_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_65_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1314282852] shape = SubResource("ConvexPolygonShape3D_eaka6") -[node name="entity_0_brush_66_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_66_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=715825948] shape = SubResource("ConvexPolygonShape3D_herok") -[node name="entity_0_brush_67_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_67_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=455386721] shape = SubResource("ConvexPolygonShape3D_xqnkj") -[node name="entity_0_brush_68_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_68_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1803634290] shape = SubResource("ConvexPolygonShape3D_lc8gt") -[node name="entity_0_brush_69_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_69_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=57639702] shape = SubResource("ConvexPolygonShape3D_4ofho") -[node name="entity_0_brush_70_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_70_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=634429293] shape = SubResource("ConvexPolygonShape3D_45vuc") -[node name="entity_0_brush_71_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_71_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1455179816] shape = SubResource("ConvexPolygonShape3D_b4rvf") -[node name="entity_0_brush_72_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_72_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=198567012] shape = SubResource("ConvexPolygonShape3D_jn4mj") -[node name="entity_0_brush_73_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_73_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=623400856] shape = SubResource("ConvexPolygonShape3D_6spgm") -[node name="entity_0_brush_74_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_74_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1267953776] shape = SubResource("ConvexPolygonShape3D_h3yrb") -[node name="entity_0_brush_75_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_75_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1261492079] shape = SubResource("ConvexPolygonShape3D_2k318") -[node name="entity_0_brush_76_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_76_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1501492265] shape = SubResource("ConvexPolygonShape3D_at5mv") -[node name="entity_0_brush_77_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_77_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1278437609] shape = SubResource("ConvexPolygonShape3D_i0cbb") -[node name="entity_0_brush_78_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_78_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=391776566] shape = SubResource("ConvexPolygonShape3D_6s820") -[node name="entity_0_brush_79_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_79_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=475147004] shape = SubResource("ConvexPolygonShape3D_n2lug") -[node name="entity_0_brush_80_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_80_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1086098221] shape = SubResource("ConvexPolygonShape3D_2x2sy") -[node name="entity_0_brush_81_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_81_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2034124241] shape = SubResource("ConvexPolygonShape3D_7cobu") -[node name="entity_0_brush_82_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_82_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1226246846] shape = SubResource("ConvexPolygonShape3D_kgh0n") -[node name="entity_0_brush_83_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_83_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1843159335] shape = SubResource("ConvexPolygonShape3D_2q6cd") -[node name="entity_0_brush_84_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_84_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1574717423] shape = SubResource("ConvexPolygonShape3D_6h5c6") -[node name="entity_0_brush_85_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_85_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=517018724] shape = SubResource("ConvexPolygonShape3D_1wlib") -[node name="entity_0_brush_86_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_86_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1460513584] shape = SubResource("ConvexPolygonShape3D_lwtia") -[node name="entity_0_brush_87_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_87_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2025966779] shape = SubResource("ConvexPolygonShape3D_p4aj7") -[node name="entity_0_brush_88_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_88_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1239873955] shape = SubResource("ConvexPolygonShape3D_eqwx1") -[node name="entity_0_brush_89_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_89_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1226402758] shape = SubResource("ConvexPolygonShape3D_51pvs") -[node name="entity_0_brush_90_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_90_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1779311998] shape = SubResource("ConvexPolygonShape3D_ardev") -[node name="entity_0_brush_91_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_91_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=510722324] shape = SubResource("ConvexPolygonShape3D_q5euj") -[node name="entity_0_brush_92_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_92_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1542920724] shape = SubResource("ConvexPolygonShape3D_c1ngk") -[node name="entity_0_brush_93_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_93_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=437885997] shape = SubResource("ConvexPolygonShape3D_ml5eu") -[node name="entity_0_brush_94_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_94_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=279080778] shape = SubResource("ConvexPolygonShape3D_pv3c4") -[node name="entity_0_brush_95_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_95_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1626708116] shape = SubResource("ConvexPolygonShape3D_bob7s") -[node name="entity_0_brush_96_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_96_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=208766356] shape = SubResource("ConvexPolygonShape3D_4cwrg") -[node name="entity_0_brush_97_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_97_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=734417844] shape = SubResource("ConvexPolygonShape3D_pjnt2") -[node name="entity_0_brush_98_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_98_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1022010949] shape = SubResource("ConvexPolygonShape3D_ekjbc") -[node name="entity_0_brush_99_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_99_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=640886750] shape = SubResource("ConvexPolygonShape3D_gw41l") -[node name="entity_0_brush_100_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_100_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=762270908] shape = SubResource("ConvexPolygonShape3D_oxbyt") -[node name="entity_0_brush_101_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_101_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1725152680] shape = SubResource("ConvexPolygonShape3D_sqm1w") -[node name="entity_0_brush_102_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_102_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1212133335] shape = SubResource("ConvexPolygonShape3D_y4idx") -[node name="entity_0_brush_103_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_103_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2085272459] shape = SubResource("ConvexPolygonShape3D_5o6gw") -[node name="entity_0_brush_104_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_104_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=350561812] shape = SubResource("ConvexPolygonShape3D_o1xh2") -[node name="entity_0_brush_105_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_105_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1149319080] shape = SubResource("ConvexPolygonShape3D_rj48h") -[node name="entity_0_brush_106_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_106_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1199264909] shape = SubResource("ConvexPolygonShape3D_2prqd") -[node name="entity_0_brush_107_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_107_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=563068221] shape = SubResource("ConvexPolygonShape3D_eudhs") -[node name="entity_0_brush_108_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_108_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=650155983] shape = SubResource("ConvexPolygonShape3D_2ic1h") -[node name="entity_0_brush_109_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_109_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1010900279] shape = SubResource("ConvexPolygonShape3D_g1ide") -[node name="entity_0_brush_110_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_110_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1115119801] shape = SubResource("ConvexPolygonShape3D_la7ud") -[node name="entity_0_brush_111_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_111_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=467646822] shape = SubResource("ConvexPolygonShape3D_so1lp") -[node name="entity_0_brush_112_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_112_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2095576307] shape = SubResource("ConvexPolygonShape3D_7dbmd") -[node name="entity_0_brush_113_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_113_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1047135438] shape = SubResource("ConvexPolygonShape3D_luavn") -[node name="entity_0_brush_114_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_114_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=766952621] shape = SubResource("ConvexPolygonShape3D_lfw22") -[node name="entity_0_brush_115_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_115_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1347576100] shape = SubResource("ConvexPolygonShape3D_3fmmx") -[node name="entity_0_brush_116_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_116_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1072799634] shape = SubResource("ConvexPolygonShape3D_g3cic") -[node name="entity_0_brush_117_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_117_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=470835518] shape = SubResource("ConvexPolygonShape3D_wrlwf") -[node name="entity_0_brush_118_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_118_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1642096126] shape = SubResource("ConvexPolygonShape3D_qmtqy") -[node name="entity_0_brush_119_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_119_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=603541364] shape = SubResource("ConvexPolygonShape3D_gvby0") -[node name="entity_0_brush_120_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_120_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=906991646] shape = SubResource("ConvexPolygonShape3D_32jm4") -[node name="entity_0_brush_121_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_121_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1176350274] shape = SubResource("ConvexPolygonShape3D_l6261") -[node name="entity_0_brush_122_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_122_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=823779299] shape = SubResource("ConvexPolygonShape3D_6axiq") -[node name="entity_0_brush_123_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_123_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1844929865] shape = SubResource("ConvexPolygonShape3D_q68ro") -[node name="entity_0_brush_124_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_124_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2042508678] shape = SubResource("ConvexPolygonShape3D_q1fgf") -[node name="entity_0_brush_125_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_125_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=645167115] shape = SubResource("ConvexPolygonShape3D_xh6rd") -[node name="entity_0_brush_126_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_126_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1999098492] shape = SubResource("ConvexPolygonShape3D_isptq") -[node name="entity_0_brush_127_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_127_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1217269098] shape = SubResource("ConvexPolygonShape3D_u3ldu") -[node name="entity_0_brush_128_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_128_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1289503532] shape = SubResource("ConvexPolygonShape3D_1bipg") -[node name="entity_0_brush_129_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_129_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=108028701] shape = SubResource("ConvexPolygonShape3D_p7cvc") -[node name="entity_0_brush_130_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_130_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=2139635251] shape = SubResource("ConvexPolygonShape3D_kdlr2") -[node name="entity_0_brush_131_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_131_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=52676899] shape = SubResource("ConvexPolygonShape3D_64akk") -[node name="entity_0_brush_132_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_132_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=1202429649] shape = SubResource("ConvexPolygonShape3D_ego5g") -[node name="entity_0_brush_133_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_133_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=735818174] shape = SubResource("ConvexPolygonShape3D_2151w") -[node name="entity_0_brush_134_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_134_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=740605098] shape = SubResource("ConvexPolygonShape3D_h1bu6") -[node name="entity_0_brush_135_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_135_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=824439224] shape = SubResource("ConvexPolygonShape3D_leaeb") -[node name="entity_0_brush_136_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_136_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=35023421] shape = SubResource("ConvexPolygonShape3D_q8alw") -[node name="entity_0_brush_137_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_137_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=480652153] shape = SubResource("ConvexPolygonShape3D_do8t3") -[node name="entity_0_brush_138_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_138_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=484472702] shape = SubResource("ConvexPolygonShape3D_vjib0") -[node name="entity_0_brush_139_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_139_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=746634158] shape = SubResource("ConvexPolygonShape3D_jb6fk") -[node name="entity_0_brush_140_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_140_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=541077018] shape = SubResource("ConvexPolygonShape3D_05uph") -[node name="entity_0_brush_141_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_141_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=260441256] shape = SubResource("ConvexPolygonShape3D_eb5kj") -[node name="entity_0_brush_142_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn"] +[node name="entity_0_brush_142_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_0_worldspawn" unique_id=219677726] shape = SubResource("ConvexPolygonShape3D_rijl6") -[node name="entity_1_actor_box_blue_tall" parent="FuncGodotMap" instance=ExtResource("74_g3cic")] +[node name="entity_1_actor_box_blue_tall" parent="FuncGodotMap" unique_id=1301159779 instance=ExtResource("74_g3cic")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 1.5625, -0.5) Health = 10.0 ActivationType = 6 -[node name="entity_2_marker_spawn" type="Marker3D" parent="FuncGodotMap"] +[node name="entity_2_marker_spawn" type="Marker3D" parent="FuncGodotMap" unique_id=392336330] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 1.375, 1.75) script = ExtResource("60_y4idx") -[node name="entity_3_actor_tank_standalone" parent="FuncGodotMap" instance=ExtResource("95_do8t3")] +[node name="entity_3_actor_tank_standalone" parent="FuncGodotMap" unique_id=1764615376 instance=ExtResource("95_do8t3")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -2.5, 1.5, -0.5) -[node name="entity_4_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_4_actor_door_1" parent="FuncGodotMap" unique_id=226039606 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 5, 2, -9.25) -[node name="entity_5_actor_box_blue_tall" parent="FuncGodotMap" instance=ExtResource("74_g3cic")] +[node name="entity_5_actor_box_blue_tall" parent="FuncGodotMap" unique_id=913688049 instance=ExtResource("74_g3cic")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 1.5625, -19) Health = 10.0 ActivationType = 6 -[node name="entity_6_actor_box_green" parent="FuncGodotMap" instance=ExtResource("81_q68ro")] +[node name="entity_6_actor_box_green" parent="FuncGodotMap" unique_id=989758510 instance=ExtResource("81_q68ro")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -18, 1.25, -14.5) Health = 10.0 ActivationType = 6 -[node name="entity_7_actor_box_red" parent="FuncGodotMap" instance=ExtResource("80_6axiq")] +[node name="entity_7_actor_box_red" parent="FuncGodotMap" unique_id=1071498387 instance=ExtResource("80_6axiq")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -15.5, 1.25, -15) Health = 10.0 ActivationType = 6 -[node name="entity_8_actor_chest_1" parent="FuncGodotMap" instance=ExtResource("62_o1xh2")] +[node name="entity_8_actor_chest_1" parent="FuncGodotMap" unique_id=1979215478 instance=ExtResource("62_o1xh2")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -19, 1.5, -19.5) -[node name="entity_9_actor_box_blue_tall" parent="FuncGodotMap" instance=ExtResource("74_g3cic")] +[node name="entity_9_actor_box_blue_tall" parent="FuncGodotMap" unique_id=1644536987 instance=ExtResource("74_g3cic")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.5, 1.5625, -20) Health = 10.0 ActivationType = 6 -[node name="entity_10_actor_box_green" parent="FuncGodotMap" instance=ExtResource("81_q68ro")] +[node name="entity_10_actor_box_green" parent="FuncGodotMap" unique_id=1824137770 instance=ExtResource("81_q68ro")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -19.5, 1.25, -16) Health = 10.0 ActivationType = 6 -[node name="entity_11_actor_table" parent="FuncGodotMap" instance=ExtResource("55_pjnt2")] +[node name="entity_11_actor_table" parent="FuncGodotMap" unique_id=765308215 instance=ExtResource("55_pjnt2")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -17.75, 1.25, -22) -[node name="entity_12_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_12_actor_door_1" parent="FuncGodotMap" unique_id=1932266869 instance=ExtResource("57_gw41l")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 17.75, 2, 1) -[node name="entity_13_actor_vendingmachine" parent="FuncGodotMap" instance=ExtResource("103_f1r4t")] +[node name="entity_13_actor_vendingmachine" parent="FuncGodotMap" unique_id=639536254 instance=ExtResource("103_f1r4t")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 12, 1.75, -8.5) -[node name="entity_14_actor_vendingmachine" parent="FuncGodotMap" instance=ExtResource("103_f1r4t")] +[node name="entity_14_actor_vendingmachine" parent="FuncGodotMap" unique_id=1920806476 instance=ExtResource("103_f1r4t")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 14.5, 1.75, -8.5) -[node name="entity_15_actor_table" parent="FuncGodotMap" instance=ExtResource("55_pjnt2")] +[node name="entity_15_actor_table" parent="FuncGodotMap" unique_id=1232278102 instance=ExtResource("55_pjnt2")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 19.75, 1.25, -33) -[node name="entity_16_actor_terminal_big" parent="FuncGodotMap" instance=ExtResource("24_6pj4r")] +[node name="entity_16_actor_terminal_big" parent="FuncGodotMap" unique_id=1046752804 instance=ExtResource("24_6pj4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.75, 1.75, -27) -[node name="entity_17_actor_terminal_big" parent="FuncGodotMap" instance=ExtResource("24_6pj4r")] +[node name="entity_17_actor_terminal_big" parent="FuncGodotMap" unique_id=1524119324 instance=ExtResource("24_6pj4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.75, 1.75, -28.5) -[node name="entity_18_actor_terminal_big" parent="FuncGodotMap" instance=ExtResource("24_6pj4r")] +[node name="entity_18_actor_terminal_big" parent="FuncGodotMap" unique_id=185848739 instance=ExtResource("24_6pj4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.75, 1.75, -19) -[node name="entity_19_actor_terminal_big" parent="FuncGodotMap" instance=ExtResource("24_6pj4r")] +[node name="entity_19_actor_terminal_big" parent="FuncGodotMap" unique_id=406380420 instance=ExtResource("24_6pj4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.75, 1.75, -17.5) -[node name="entity_20_actor_terminal_big" parent="FuncGodotMap" instance=ExtResource("24_6pj4r")] +[node name="entity_20_actor_terminal_big" parent="FuncGodotMap" unique_id=769973922 instance=ExtResource("24_6pj4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.75, 1.75, -30) -[node name="entity_21_actor_mainframe" parent="FuncGodotMap" instance=ExtResource("25_7ve4r")] +[node name="entity_21_actor_mainframe" parent="FuncGodotMap" unique_id=885545303 instance=ExtResource("25_7ve4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.5, 1.75, -31) -[node name="entity_22_actor_mainframe" parent="FuncGodotMap" instance=ExtResource("25_7ve4r")] +[node name="entity_22_actor_mainframe" parent="FuncGodotMap" unique_id=1017070785 instance=ExtResource("25_7ve4r")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 24.5, 1.75, -32) -[node name="entity_23_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_23_actor_door_1" parent="FuncGodotMap" unique_id=1675137300 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 15.5, 2, -2.25) GroupName = "break_room" -[node name="entity_24_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_24_actor_door_1" parent="FuncGodotMap" unique_id=1513876132 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 12.5, 2, -2.25) GroupName = "break_room" -[node name="entity_25_actor_table" parent="FuncGodotMap" instance=ExtResource("55_pjnt2")] +[node name="entity_25_actor_table" parent="FuncGodotMap" unique_id=1965398383 instance=ExtResource("55_pjnt2")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 13.25, 1.25, -8.5) -[node name="entity_26_actor_furniture_box" parent="FuncGodotMap" instance=ExtResource("32_yq870")] +[node name="entity_26_actor_furniture_box" parent="FuncGodotMap" unique_id=1303098978 instance=ExtResource("32_yq870")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 13.0625, 1.6875, -8.4375) Health = 10.0 -DamageResistances = Array[ExtResource("72_lfw22")]([]) ActivationType = 6 -[node name="entity_27_actor_furniture_can" parent="FuncGodotMap" instance=ExtResource("34_bt71f")] +[node name="entity_27_actor_furniture_can" parent="FuncGodotMap" unique_id=2010240578 instance=ExtResource("34_bt71f")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 12.625, 1.6875, -8.375) Health = 10.0 -DamageResistances = Array[ExtResource("72_lfw22")]([]) ActivationType = 6 -[node name="entity_28_actor_furniture_can" parent="FuncGodotMap" instance=ExtResource("34_bt71f")] +[node name="entity_28_actor_furniture_can" parent="FuncGodotMap" unique_id=663458304 instance=ExtResource("34_bt71f")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 13.375, 1.6875, -8.625) Health = 10.0 -DamageResistances = Array[ExtResource("72_lfw22")]([]) ActivationType = 6 -[node name="entity_29_actor_furniture_can" parent="FuncGodotMap" instance=ExtResource("34_bt71f")] +[node name="entity_29_actor_furniture_can" parent="FuncGodotMap" unique_id=487686505 instance=ExtResource("34_bt71f")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 13.5, 1.6875, -8.375) Health = 10.0 -DamageResistances = Array[ExtResource("72_lfw22")]([]) ActivationType = 6 -[node name="entity_30_actor_chair" parent="FuncGodotMap" instance=ExtResource("36_ggqig")] +[node name="entity_30_actor_chair" parent="FuncGodotMap" unique_id=2128341596 instance=ExtResource("36_ggqig")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.5, 1.5, -1) -[node name="entity_31_actor_chair" parent="FuncGodotMap" instance=ExtResource("36_ggqig")] +[node name="entity_31_actor_chair" parent="FuncGodotMap" unique_id=1441102115 instance=ExtResource("36_ggqig")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.5, 1.5, -2.5) -[node name="entity_32_actor_chair" parent="FuncGodotMap" instance=ExtResource("36_ggqig")] +[node name="entity_32_actor_chair" parent="FuncGodotMap" unique_id=576048386 instance=ExtResource("36_ggqig")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.5, 1.5, -4.5) -[node name="entity_33_actor_chair" parent="FuncGodotMap" instance=ExtResource("36_ggqig")] +[node name="entity_33_actor_chair" parent="FuncGodotMap" unique_id=1971616814 instance=ExtResource("36_ggqig")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1.5, -4.5) -[node name="entity_34_actor_chair" parent="FuncGodotMap" instance=ExtResource("36_ggqig")] +[node name="entity_34_actor_chair" parent="FuncGodotMap" unique_id=789299504 instance=ExtResource("36_ggqig")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1.5, -2.5) -[node name="entity_35_actor_chair" parent="FuncGodotMap" instance=ExtResource("36_ggqig")] +[node name="entity_35_actor_chair" parent="FuncGodotMap" unique_id=1807059701 instance=ExtResource("36_ggqig")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20, 1.5, -1) -[node name="entity_36_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_36_actor_door_1" parent="FuncGodotMap" unique_id=2022539882 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 29, 2, 2.75) -[node name="entity_37_actor_box_blue_tall" parent="FuncGodotMap" instance=ExtResource("74_g3cic")] +[node name="entity_37_actor_box_blue_tall" parent="FuncGodotMap" unique_id=1952744539 instance=ExtResource("74_g3cic")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.5, 1.5625, 0.5) Health = 10.0 ActivationType = 6 -[node name="entity_38_actor_box_blue_tall" parent="FuncGodotMap" instance=ExtResource("74_g3cic")] +[node name="entity_38_actor_box_blue_tall" parent="FuncGodotMap" unique_id=434680022 instance=ExtResource("74_g3cic")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 32.5, 1.5625, 0.5) Health = 10.0 ActivationType = 6 -[node name="entity_39_actor_ac_unit" parent="FuncGodotMap" instance=ExtResource("43_fdavl")] +[node name="entity_39_actor_ac_unit" parent="FuncGodotMap" unique_id=1138698916 instance=ExtResource("43_fdavl")] transform = Transform3D(1, 0, 1.7484555e-07, 0, 1, 0, -1.7484555e-07, 0, 1, 31, 1.5, 0.25) -[node name="entity_40_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_40_actor_door_1" parent="FuncGodotMap" unique_id=1218110680 instance=ExtResource("57_gw41l")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 33.75, 2, -2.5) -[node name="entity_41_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_41_actor_door_1" parent="FuncGodotMap" unique_id=1070794766 instance=ExtResource("57_gw41l")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 29.75, 2, -2.5) -[node name="entity_42_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_42_actor_door_1" parent="FuncGodotMap" unique_id=327369592 instance=ExtResource("57_gw41l")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 33.75, 2, -7) -[node name="entity_43_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_43_actor_door_1" parent="FuncGodotMap" unique_id=1451544178 instance=ExtResource("57_gw41l")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 29.75, 2, -7) -[node name="entity_44_actor_locker" parent="FuncGodotMap" instance=ExtResource("45_d8pfo")] +[node name="entity_44_actor_locker" parent="FuncGodotMap" unique_id=1145731906 instance=ExtResource("45_d8pfo")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 27.5, 1.75, 0.25) -[node name="entity_45_actor_locker" parent="FuncGodotMap" instance=ExtResource("45_d8pfo")] +[node name="entity_45_actor_locker" parent="FuncGodotMap" unique_id=629174171 instance=ExtResource("45_d8pfo")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 28.5, 1.75, 0.25) -[node name="entity_46_actor_locker" parent="FuncGodotMap" instance=ExtResource("45_d8pfo")] +[node name="entity_46_actor_locker" parent="FuncGodotMap" unique_id=529140693 instance=ExtResource("45_d8pfo")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 29.5, 1.75, 0.25) -[node name="entity_47_actor_locker" parent="FuncGodotMap" instance=ExtResource("45_d8pfo")] +[node name="entity_47_actor_locker" parent="FuncGodotMap" unique_id=275039747 instance=ExtResource("45_d8pfo")] transform = Transform3D(1.1924881e-08, 0, -1, 0, 1, 0, 1, 0, 1.1924881e-08, 26.25, 1.75, 1.25) -[node name="entity_48_marker_spawn_enemy_fairy_guard" type="Marker3D" parent="FuncGodotMap"] +[node name="entity_48_marker_spawn_enemy_fairy_guard" type="Marker3D" parent="FuncGodotMap" unique_id=1245868078] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.75, 1.375, 1.75) script = ExtResource("47_ibfjq") Enemy = ExtResource("48_ibfjq") @@ -1488,90 +1463,87 @@ AutoSpawn = true TargetName = &"" Billboard = true -[node name="entity_49_actor_controlpad" parent="FuncGodotMap" instance=ExtResource("49_aa4ws")] +[node name="entity_49_actor_controlpad" parent="FuncGodotMap" unique_id=1002114210 instance=ExtResource("49_aa4ws")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 11, 2.25, -2) TargetGroup = "break_room" -[node name="entity_50_actor_table" parent="FuncGodotMap" instance=ExtResource("55_pjnt2")] +[node name="entity_50_actor_table" parent="FuncGodotMap" unique_id=2018667745 instance=ExtResource("55_pjnt2")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 13.25, 1.25, -7.5) -[node name="entity_51_actor_table_002" parent="FuncGodotMap" instance=ExtResource("49_rllxc")] +[node name="entity_51_actor_table_002" parent="FuncGodotMap" unique_id=461697886 instance=ExtResource("49_rllxc")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 10.5, 1.25, -13.5) -[node name="entity_52_actor_table_002" parent="FuncGodotMap" instance=ExtResource("49_rllxc")] +[node name="entity_52_actor_table_002" parent="FuncGodotMap" unique_id=2051186777 instance=ExtResource("49_rllxc")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 13.5, 1.25, -14.5) -[node name="entity_53_actor_table" parent="FuncGodotMap" instance=ExtResource("55_pjnt2")] +[node name="entity_53_actor_table" parent="FuncGodotMap" unique_id=1017037216 instance=ExtResource("55_pjnt2")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 10.75, 1.25, -16.5) -[node name="entity_54_actor_table_004" parent="FuncGodotMap" instance=ExtResource("50_p30g5")] +[node name="entity_54_actor_table_004" parent="FuncGodotMap" unique_id=1244195355 instance=ExtResource("50_p30g5")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 8.5, 1.25, -15.5) -[node name="entity_55_actor_table_003" parent="FuncGodotMap" instance=ExtResource("51_fmfkd")] +[node name="entity_55_actor_table_003" parent="FuncGodotMap" unique_id=1288451225 instance=ExtResource("51_fmfkd")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 22, 1.25, -8.5) -[node name="entity_56_solid_bullet_permeable" type="StaticBody3D" parent="FuncGodotMap"] +[node name="entity_56_solid_bullet_permeable" type="StaticBody3D" parent="FuncGodotMap" unique_id=1165928359] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 6.25, 1.75, -7.5) collision_layer = 512 collision_mask = 0 -[node name="entity_56_mesh_instance" type="MeshInstance3D" parent="FuncGodotMap/entity_56_solid_bullet_permeable"] +[node name="entity_56_mesh_instance" type="MeshInstance3D" parent="FuncGodotMap/entity_56_solid_bullet_permeable" unique_id=824570741] layers = 2 mesh = SubResource("ArrayMesh_aoews") -[node name="entity_56_brush_0_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_56_solid_bullet_permeable"] +[node name="entity_56_brush_0_collision_shape" type="CollisionShape3D" parent="FuncGodotMap/entity_56_solid_bullet_permeable" unique_id=927449370] shape = SubResource("ConvexPolygonShape3D_27ahx") -[node name="entity_57_actor_emitter_wall" parent="FuncGodotMap" instance=ExtResource("53_xon24")] +[node name="entity_57_actor_emitter_wall" parent="FuncGodotMap" unique_id=706032959 instance=ExtResource("53_xon24")] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 1.125, 1.5, -7.5) EmitOnStart = false ActivationType = 6 -[node name="entity_58_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_58_actor_door_1" parent="FuncGodotMap" unique_id=1069093012 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 5, 2, -14.25) -[node name="entity_59_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_59_actor_door_1" parent="FuncGodotMap" unique_id=950115690 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 2, 2, -3.75) -[node name="entity_60_actor_door_1" parent="FuncGodotMap" instance=ExtResource("57_gw41l")] +[node name="entity_60_actor_door_1" parent="FuncGodotMap" unique_id=523991250 instance=ExtResource("57_gw41l")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -8, 2, -9.25) -[node name="entity_61_actor_table_002" parent="FuncGodotMap" instance=ExtResource("49_rllxc")] +[node name="entity_61_actor_table_002" parent="FuncGodotMap" unique_id=1633605684 instance=ExtResource("49_rllxc")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -1.5, 1.25, -3) -[node name="entity_62_actor_terminal" parent="FuncGodotMap" instance=ExtResource("61_5o6gw")] +[node name="entity_62_actor_terminal" parent="FuncGodotMap" unique_id=479132659 instance=ExtResource("61_5o6gw")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -1.5, 1.75, -3) TimelineName = &"BBS_Test" -[node name="Enemies" type="Node3D" parent="."] +[node name="entity_63_actor_emitter_floor" parent="FuncGodotMap" unique_id=886317390 instance=ExtResource("55_vqi8m")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -8.25, 1.25, -6.25) +Script = ExtResource("56_xon24") +ActivationGroup = "laser_test_trap" +EmitOnStart = false +ActivationType = 6 -[node name="Laser" type="Area3D" parent="Enemies"] +[node name="entity_64_actor_controlpad" parent="FuncGodotMap" unique_id=467203367 instance=ExtResource("49_aa4ws")] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -6.25, 2.25, -8.75) +TargetGroup = "laser_test_trap" + +[node name="Enemies" type="Node3D" parent="." unique_id=1680920051] + +[node name="Laser" parent="Enemies" unique_id=1958871738 instance=ExtResource("55_fmfkd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.2024536, 1.4951285, -7.521042) -script = ExtResource("51_p30g5") -Config = SubResource("Resource_awu2v") -[node name="MeshInstance3D" type="MeshInstance3D" parent="Enemies/Laser"] -transform = Transform3D(0.06, 0, 0, 0, 1, 0, 0, 0, 0.06, 0, 0, 0) -material_override = SubResource("ShaderMaterial_fmfkd") -mesh = SubResource("CylinderMesh_tqorp") - -[node name="CollisionShape3D" type="CollisionShape3D" parent="Enemies/Laser"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25402832, -1.3364371, 7.310913) -shape = SubResource("CapsuleShape3D_tqorp") - -[node name="RayCast3D" type="RayCast3D" parent="Enemies/Laser"] - -[node name="ControlPad" parent="Enemies" node_paths=PackedStringArray("Target") instance=ExtResource("49_aa4ws")] +[node name="ControlPad" parent="Enemies" unique_id=1687772891 node_paths=PackedStringArray("Target") instance=ExtResource("49_aa4ws")] transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, -0.538147, 1.8759825, -8.929565) Target = NodePath("../LaserActivator") -[node name="LaserActivator" type="Node3D" parent="Enemies" node_paths=PackedStringArray("_laser")] +[node name="LaserActivator" type="Node3D" parent="Enemies" unique_id=1102732534] script = ExtResource("53_awu2v") -_laser = NodePath("../Laser") -[node name="Items" type="Node3D" parent="."] +[node name="Items" type="Node3D" parent="." unique_id=1552571962] -[node name="Sprite3D" type="Sprite3D" parent="Items"] +[node name="Sprite3D" type="Sprite3D" parent="Items" unique_id=1728846906] transform = Transform3D(0.70710677, -0.49999997, 0.49999997, 0, 0.70710677, 0.70710677, -0.70710677, -0.49999997, 0.49999997, 0.31903076, 2.4449463, 1.3727417) visible = false modulate = Color(1, 1, 1, 0.43529412) @@ -1579,11 +1551,11 @@ pixel_size = 0.05 texture_filter = 0 texture = ExtResource("106_fer1b") -[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."] +[node name="NavigationRegion3D" type="NavigationRegion3D" parent="." unique_id=185668920] visible = false navigation_mesh = SubResource("NavigationMesh_xhmq5") -[node name="ColorRect" type="ColorRect" parent="."] +[node name="ColorRect" type="ColorRect" parent="." unique_id=379885481] visible = false material = SubResource("ShaderMaterial_uwu65") anchors_preset = 15 diff --git a/Resources/BulletScripts/Basic_Enemy_Emitter_Spiral_Bullets.tres b/Resources/BulletScripts/Basic_Enemy_Emitter_Spiral_Bullets.tres index dc370c38..a1a1c528 100644 --- a/Resources/BulletScripts/Basic_Enemy_Emitter_Spiral_Bullets.tres +++ b/Resources/BulletScripts/Basic_Enemy_Emitter_Spiral_Bullets.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="BulletScript" load_steps=6 format=3 uid="uid://cmra7n6so1x4u"] +[gd_resource type="Resource" script_class="BulletScript" format=3 uid="uid://cmra7n6so1x4u"] [ext_resource type="Resource" uid="uid://dqnvesdj0dk3v" path="res://Resources/Bullets/simple_enemy_bullet.tres" id="1_lkipe"] [ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="2_omk5v"] diff --git a/Resources/BulletScripts/LaserTest_1.tres b/Resources/BulletScripts/LaserTest_1.tres new file mode 100644 index 00000000..403a9b3a --- /dev/null +++ b/Resources/BulletScripts/LaserTest_1.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="LaserPattern" format=3 uid="uid://cdurqf6rk3utj"] + +[ext_resource type="Resource" uid="uid://dgwsfxku5csp5" path="res://Resources/BulletScripts/Laser_Bullet_Resource_test.tres" id="1_22aun"] +[ext_resource type="Script" uid="uid://b5s5mjuk1rng5" path="res://Scripts/Resources/TimeModifier.cs" id="1_l746i"] +[ext_resource type="Script" uid="uid://ckcuhstelos4x" path="res://Scripts/AttackPatterns/LaserPattern.cs" id="2_22aun"] + +[resource] +script = ExtResource("2_22aun") +BulletResource = ExtResource("1_22aun") +bulletCount = 8 +duration = 5.0 +ShotsPerBurst = 1 +metadata/_custom_type_script = "uid://ckcuhstelos4x" diff --git a/Resources/BulletScripts/Laser_Bullet_Resource_test.tres b/Resources/BulletScripts/Laser_Bullet_Resource_test.tres new file mode 100644 index 00000000..62965a61 --- /dev/null +++ b/Resources/BulletScripts/Laser_Bullet_Resource_test.tres @@ -0,0 +1,18 @@ +[gd_resource type="Resource" script_class="BulletResource" format=3 uid="uid://dgwsfxku5csp5"] + +[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="1_0ejwi"] +[ext_resource type="PackedScene" uid="uid://bkv1sf54u3agr" path="res://Scenes/Weapons/Bullets/Laser_Bullet_3D.tscn" id="1_qd1t8"] +[ext_resource type="Script" uid="uid://5utr3255hbln" path="res://Scripts/Actors/3D/LaserConfig.cs" id="2_2g5bd"] + +[sub_resource type="Resource" id="Resource_5e6ih"] +script = ExtResource("2_2g5bd") +metadata/_custom_type_script = "uid://5utr3255hbln" + +[resource] +script = ExtResource("1_0ejwi") +BulletScene = ExtResource("1_qd1t8") +BulletSpeed = 0.0 +TimeModifiers = [] +IsLaser = true +LaserConfig = SubResource("Resource_5e6ih") +metadata/_custom_type_script = "uid://dslyrfcej3g2n" diff --git a/Resources/BulletScripts/Laser_Pattern_Test_1.tres b/Resources/BulletScripts/Laser_Pattern_Test_1.tres new file mode 100644 index 00000000..b5964271 --- /dev/null +++ b/Resources/BulletScripts/Laser_Pattern_Test_1.tres @@ -0,0 +1,9 @@ +[gd_resource type="Resource" script_class="BulletScript3D" format=3 uid="uid://bog816y8fx3w5"] + +[ext_resource type="Script" uid="uid://w8hcpu68ssq" path="res://Scripts/Resources/BulletScripts/BulletScript3D.cs" id="1_70ed4"] +[ext_resource type="Resource" uid="uid://cdurqf6rk3utj" path="res://Resources/BulletScripts/LaserTest_1.tres" id="1_kfu43"] + +[resource] +script = ExtResource("1_70ed4") +Patterns = Array[Object]([ExtResource("1_kfu43")]) +metadata/_custom_type_script = "uid://w8hcpu68ssq" diff --git a/Resources/Bullets/enemy_laser_3d.tres b/Resources/Bullets/enemy_laser_3d.tres new file mode 100644 index 00000000..1ba2363b --- /dev/null +++ b/Resources/Bullets/enemy_laser_3d.tres @@ -0,0 +1,33 @@ +[gd_resource type="Resource" script_class="BulletResource" load_steps=4 format=3 uid="uid://laser3d_example"] + +[ext_resource type="PackedScene" uid="uid://bkv1sf54u3agr" path="res://Scenes/Weapons/Bullets/Laser_Bullet_3D.tscn" id="1_laser_scene"] +[ext_resource type="Script" uid="uid://dslyrfcej3g2n" path="res://Scripts/Resources/BulletResource.cs" id="2_bullet_res"] +[ext_resource type="Script" uid="uid://5utr3255hbln" path="res://Scripts/Actors/3D/LaserConfig.cs" id="3_laser_config"] + +[sub_resource type="Resource" id="LaserConfig_example"] +script = ExtResource("3_laser_config") +MaxLength = 100.0 +WarningRadius = 0.025 +DamageRadius = 0.05 +WarningDuration = 0.5 +ExpansionDelay = 0.0 +ExpansionDuration = 0.2 +ActiveDuration = 2.0 +GeometryLayer = 1 +Damagelayer = 2 + +[resource] +script = ExtResource("2_bullet_res") +BulletScene = ExtResource("1_laser_scene") +BulletSpeed = 0.0 +BulletDamage = 10.0 +MaxDamage = 10.0 +Knockback = 0.0 +LifeTime = 3.0 +Owner = 2 +DamageType = 0 +GrazeValue = 0.5 +Attributes = 0 +TimeModifiers = [] +IsLaser = true +LaserConfig = SubResource("LaserConfig_example") diff --git a/Scenes/Weapons/Bullets/Laser_Bullet_3D.tscn b/Scenes/Weapons/Bullets/Laser_Bullet_3D.tscn new file mode 100644 index 00000000..1cb9b05e --- /dev/null +++ b/Scenes/Weapons/Bullets/Laser_Bullet_3D.tscn @@ -0,0 +1,47 @@ +[gd_scene format=3 uid="uid://bkv1sf54u3agr"] + +[ext_resource type="Script" path="res://Scripts/Weapons/LaserBullet3D.cs" id="1_laser_bullet"] +[ext_resource type="Script" uid="uid://5utr3255hbln" path="res://Scripts/Actors/3D/LaserConfig.cs" id="2_l0r7c"] +[ext_resource type="Shader" uid="uid://cd8n7vsgxkfib" path="res://Shaders/minimal_laser.gdshader" id="3_6ff8g"] + +[sub_resource type="Resource" id="Resource_awu2v"] +script = ExtResource("2_l0r7c") +MaxLength = 100.0 +WarningRadius = 0.025 +DamageRadius = 0.05 +WarningDuration = 0.5 +ExpansionDelay = 0.0 +ExpansionDuration = 0.2 +ActiveDuration = 1.0 +GeometryLayer = 1 +Damagelayer = 2 +metadata/_custom_type_script = "uid://5utr3255hbln" + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_fmfkd"] +render_priority = 0 +shader = ExtResource("3_6ff8g") +shader_parameter/beam_color = Color(1, 0.2, 0.2, 1) +shader_parameter/glow_radius = 0.2 +shader_parameter/noise_speed = 1.0 +shader_parameter/flicker_strength = 0.2 + +[sub_resource type="CylinderMesh" id="CylinderMesh_tqorp"] + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tqorp"] + +[node name="Laser" type="Area3D"] +script = ExtResource("1_laser_bullet") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(0.06, 0, 0, 0, 1, 0, 0, 0, 0.06, 0, 0, 0) +material_override = SubResource("ShaderMaterial_fmfkd") +mesh = SubResource("CylinderMesh_tqorp") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) +shape = SubResource("CapsuleShape3D_tqorp") + +[node name="RayCast3D" type="RayCast3D" parent="."] + +[connection signal="area_entered" from="." to="." method="_on_area_entered"] +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/Scripts/Actors/3D/LaserConfig.cs b/Scripts/Actors/3D/LaserConfig.cs index db3def13..1f628372 100644 --- a/Scripts/Actors/3D/LaserConfig.cs +++ b/Scripts/Actors/3D/LaserConfig.cs @@ -3,6 +3,7 @@ namespace Cirno.Scripts.Actors._3D; [GlobalClass] +[Tool] public partial class LaserConfig : Resource { [Export] public float MaxLength = 50f; diff --git a/Scripts/Actors/BulletSpawner3D.cs b/Scripts/Actors/BulletSpawner3D.cs index a4bb7f88..bdef2322 100644 --- a/Scripts/Actors/BulletSpawner3D.cs +++ b/Scripts/Actors/BulletSpawner3D.cs @@ -7,9 +7,15 @@ namespace Cirno.Scripts.Actors; public partial class BulletSpawner3D : Node3D { - public void SpawnBullet(BulletInfo bulletInfo, Vector3 position) { + // Check if this is a laser + if (bulletInfo.IsLaser && bulletInfo.LaserConfig != null) + { + SpawnLaser(bulletInfo, position); + return; + } + int count = bulletInfo.BulletCount; // Choose base direction (defaults to +X) @@ -66,5 +72,28 @@ public partial class BulletSpawner3D : Node3D } } + private void SpawnLaser(BulletInfo bulletInfo, Vector3 position) + { + // Lasers don't use bullet count/spread the same way + // Each laser is typically a single beam + LaserBullet3D laser = PoolingManager.Instance.SpawnBullet(bulletInfo.OriginalBulletResource); + laser.GlobalPosition = position; + + // Apply modifiers if present + if (bulletInfo.Modifier is not null) + { + bulletInfo = bulletInfo.Modifier.ModifyBullet(bulletInfo, 0, 1); + } + + laser.Initialize(bulletInfo); + + // Set the laser direction + Vector2 baseDirection = bulletInfo.Direction == Vector2.Zero + ? Vector2.Right + : bulletInfo.Direction.Normalized(); + + laser.SetDirection(baseDirection); + } + } \ No newline at end of file diff --git a/Scripts/AttackPatterns/LaserPattern.cs b/Scripts/AttackPatterns/LaserPattern.cs index f8a73a06..7a168dfd 100644 --- a/Scripts/AttackPatterns/LaserPattern.cs +++ b/Scripts/AttackPatterns/LaserPattern.cs @@ -1,17 +1,20 @@ -using Cirno.Scripts.Components; +using Cirno.Scripts.Actors; +using Cirno.Scripts.Components; +using Cirno.Scripts.Enums; +using Cirno.Scripts.Utils; using Godot; namespace Cirno.Scripts.AttackPatterns; [GlobalClass] [Tool] -public partial class LaserPattern : SpiralPattern +public partial class LaserPattern : ShootingPattern3D { [ExportGroup("Laser")][Export] public float SpawnDelay { get; set; } = 0.3f; // Delay before beam appears [ExportGroup("Laser")][Export] public float PreFireTime { get; set; } = 0.5f; // Time before laser becomes lethal [ExportGroup("Laser")][Export] public float LethalTime { get; set; } = 1.5f; // Time laser remains lethal [ExportGroup("Laser")][Export] public Color PreFireColor { get; set; } = new Color(1, 0, 0, 0.5f); // Thin red beam - [ExportGroup("Laser")][Export] public Color LethalColor { get; set; } = new Color(1, 0, 0, 1.0f); // Thicker beam + [ExportGroup("Laser")][Export] public Color LethalColor { get; set; } = Colors.Red; // Thicker beam protected override BulletInfo MakeBullet(Vector2 position, int count = 1, float spread = 0f, float rotationOffset = 0f) { @@ -26,4 +29,194 @@ public partial class LaserPattern : SpiralPattern return bf; } + + public override IPatternMachine MakeMachine(Node parent) + { + return new LaserPatternMachine(this, parent); + } + + public class LaserPatternMachine(LaserPattern pattern, Node parent) : IPatternMachine + { + public Node Parent => parent; + public IScriptHost3D ScriptHost { get; private set; } + private double _timer; + private double _burstTimer; + private BulletSpawner3D _spawner; + private ShootStatus _state = ShootStatus.Idle; + private int _burstBullets; + private int _currentBurstOffset; + + public void Start() + { + ScriptHost = Parent as IScriptHost3D; + + _timer = 0; + _burstBullets = pattern.ShotsPerBurst; + _burstTimer = pattern.burstInterval; + _spawner = parent.GetNode("BulletSpawner3D"); + + _state = pattern.Delay == 0 ? ShootStatus.Shooting : ShootStatus.Idle; + } + + public void UpdatePattern(double delta) + { + switch (_state) + { + case ShootStatus.Idle: + IdleUpdate(delta); + break; + case ShootStatus.Done: + return; + case ShootStatus.Shooting: + ShootingUpdate(delta); + break; + case ShootStatus.WaitingBurst: + WaitingBurstUpdate(delta); + break; + case ShootStatus.WaitingReload: + WaitingReloadUpdate(delta); + break; + } + + if (pattern.duration > -1 && _timer >= pattern.duration) + { + _state = ShootStatus.Done; + } + } + + private void IdleUpdate(double delta) + { + _timer += delta; + if (_timer >= pattern.Delay) + { + _state = ShootStatus.Shooting; + } + } + + private void WaitingBurstUpdate(double delta) + { + _timer += delta; + _burstTimer += delta; + + if (_burstTimer >= pattern.burstInterval) + { + _state = ShootStatus.Shooting; + } + } + + private void WaitingReloadUpdate(double delta) + { + _timer += delta; + _burstTimer += delta; + + if (_burstTimer >= pattern.BurstRate) + { + _burstBullets = pattern.ShotsPerBurst; + _state = ShootStatus.Shooting; + } + } + + private void ShootingUpdate(double delta) + { + _timer += delta; + _burstTimer = 0; + Shoot(); + _burstBullets--; + + if (_burstBullets <= 0) + { + if (pattern.LoopType == LoopType.PlayOnce) + { + _state = ShootStatus.Done; + return; + } + + _state = ShootStatus.WaitingReload; + _currentBurstOffset++; + } + else + { + _state = ShootStatus.WaitingBurst; + } + } + + private void Shoot() + { + if (pattern.BulletResource == null) + { + GD.PushError("LaserPattern: BulletResource is null! Cannot spawn laser."); + _state = ShootStatus.Done; + return; + } + + float angleOffset = pattern._rotationOffset + (float)(pattern.rotationSpeed * _timer) + + (float)pattern.BurstRotationSpeed * _currentBurstOffset; + + Vector2 direction = pattern.BulletResource.Direction; + + // Rotate with parent rotation + if (pattern.UseParentRotationOffset) + { + direction = direction.Rotated(-_spawner.GlobalRotation.Y + Mathf.DegToRad(90)); + } + + // Handle player targeting for 3D + if (pattern._targetPlayer && GameController.Instance.PlayerPosition.HasValue) + { + if (pattern._predictPlayer && GameController.Instance.PlayerVelocity.HasValue) + { + var predictedDirection = MathFunctions.PredictInterceptPosition( + _spawner.GlobalPosition.ToVector2(), + GameController.Instance.PlayerPosition.Value.ToVector2(), + GameController.Instance.PlayerVelocity.Value.ToVector2(), + pattern.BulletResource.BulletSpeed); + + if (predictedDirection.HasValue) + { + direction = (predictedDirection.Value - _spawner.GlobalPosition.ToVector2()).Normalized(); + } + } + else + { + direction = (GameController.Instance.PlayerPosition.Value.ToVector2() - + _spawner.GlobalPosition.ToVector2()).Normalized(); + } + } + + var spawnPosition = _spawner.GlobalPosition + pattern.EmitterOffset; + + // Create laser bullet with laser-specific properties + var bullet = pattern.MakeBullet( + spawnPosition.ToVector2(), + pattern.bulletCount, + pattern.spread, + angleOffset); + + bullet.Direction = direction; + + _spawner.SpawnBullet(bullet, spawnPosition); + } + + public bool IsComplete() + { + if (!pattern.WaitForCompletion) return _state is ShootStatus.Done; + if (_state is not ShootStatus.Done) return false; + + if (pattern.duration > -1) + { + return (_timer >= pattern.duration); + } + + return true; + } + + private enum ShootStatus + { + Idle, + Shooting, + WaitingBurst, + WaitingReload, + Done + } + } } \ No newline at end of file diff --git a/Scripts/Components/BulletInfo.cs b/Scripts/Components/BulletInfo.cs index b3632ebe..2cf0ef78 100644 --- a/Scripts/Components/BulletInfo.cs +++ b/Scripts/Components/BulletInfo.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Cirno.Scripts.Actors._3D; using Cirno.Scripts.Resources; using Cirno.Scripts.Utils; using Godot; @@ -39,10 +40,13 @@ public class BulletInfo(BulletResource originalBulletResource) #region Laser public bool IsLaser { get; set; } - public float SpawnDelay { get; set; } = 0.3f; // Delay before beam appears - public float PreFireTime { get; set; } = 0.5f; // Time before laser becomes lethal - public float LethalTime { get; set; } = 1.5f; // Time laser remains lethal - public Color PreFireColor { get; set; } = new Color(1, 0, 0, 0.5f); // Thin red beam - public Color LethalColor { get; set; } = new Color(1, 0, 0, 1.0f); // Thicker beam + public LaserConfig LaserConfig { get; set; } // For 3D lasers + + // 2D Laser properties (legacy support) + public float SpawnDelay { get; set; } = 0.3f; + public float PreFireTime { get; set; } = 0.5f; + public float LethalTime { get; set; } = 1.5f; + public Color PreFireColor { get; set; } = new Color(1, 0, 0, 0.5f); + public Color LethalColor { get; set; } = new Color(1, 0, 0, 1.0f); #endregion } \ No newline at end of file diff --git a/Scripts/Resources/BulletResource.cs b/Scripts/Resources/BulletResource.cs index ad3490e4..5ba62568 100644 --- a/Scripts/Resources/BulletResource.cs +++ b/Scripts/Resources/BulletResource.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Cirno.Scripts.Actors._3D; using Cirno.Scripts.Components; using Cirno.Scripts.Utils; using Godot; @@ -32,6 +33,11 @@ public partial class BulletResource : Resource [Export] public BulletCreationModifier Modifier; [Export] public Array TimeModifiers; + + // Laser-specific properties + [ExportGroup("Laser Settings")] + [Export] public bool IsLaser { get; set; } + [Export] public LaserConfig LaserConfig { get; set; } public BulletInfo MakeBullet(Vector2 position, int count = 1, float spread = 0f, float rotationOffset = 0f) { @@ -59,6 +65,8 @@ public partial class BulletResource : Resource //Grazeable = Attributes.HasFlag(BulletFlags.Grazeable), GrazeValue = GrazeValue, Attributes = Attributes, + IsLaser = IsLaser, + LaserConfig = LaserConfig // TimeModifiers = TimeModifiers?.Where(mod => mod is TimeModifier).Cast().Select(m => new ModifierWrapper() // { // TimeModifier = m, diff --git a/Scripts/Weapons/LaserBullet3D.cs b/Scripts/Weapons/LaserBullet3D.cs index 6aee5d2e..cc4db447 100644 --- a/Scripts/Weapons/LaserBullet3D.cs +++ b/Scripts/Weapons/LaserBullet3D.cs @@ -1,6 +1,404 @@ -namespace Cirno.Scripts.Weapons; +using Cirno.Scripts.Actors._3D; +using Cirno.Scripts.Components; +using Cirno.Scripts.Controllers; +using Cirno.Scripts.Utils; +using Godot; -public partial class LaserBullet3D : Bullet3D +namespace Cirno.Scripts.Weapons; + +/// +/// Laser implementation that conforms to the IBullet interface. +/// Wraps the Laser class functionality to integrate with the bullet system. +/// +public partial class LaserBullet3D : Area3D, IBullet { - //private line3d -} \ No newline at end of file + private BulletInfo _bulletInfo; + + public float Speed { get; set; } + public BulletOwner BulletOwner => _bulletInfo?.Owner ?? BulletOwner.None; + public float Damage => _bulletInfo?.Damage ?? 1; + public DamageType DamageType => _bulletInfo?.DamageType ?? DamageType.Neutral; + public BulletInfo BulletInfo => _bulletInfo; + public bool IsGrazed { get; set; } + public bool IsFrozen { get; private set; } + public bool Enabled { get; private set; } + + private Vector2 _direction = Vector2.Right; + private double _elapsedTime; + + private MeshInstance3D _mesh; + private CollisionShape3D _collision; + private RayCast3D _ray; + private ShaderMaterial _beamMaterial; + private float _currentRadius; + private Laser.LaserState _state = Laser.LaserState.Inactive; + private float _stateTimer; + private Vector3 _origin; + private Vector3 _laserDirection; + private float _currentLength; + + [Signal] + public delegate void OnDestroyEventHandler(); + + [Signal] + public delegate void InitializedEventHandler(); + + public override void _Ready() + { + _mesh = GetNode("MeshInstance3D"); + _collision = GetNode("CollisionShape3D"); + _ray = GetNode("RayCast3D"); + _beamMaterial = _mesh.MaterialOverride as ShaderMaterial; + } + + public void Initialize(BulletInfo bulletInfo) + { + _bulletInfo = bulletInfo; + _elapsedTime = 0f; + _direction = bulletInfo.Direction.Normalized(); + + IsGrazed = false; + IsFrozen = false; + + // Setup laser from direction + _origin = GlobalPosition; + _laserDirection = new Vector3(_direction.X, 0, _direction.Y).Normalized(); + + if (_bulletInfo.LaserConfig != null) + { + _ray.CollisionMask = _bulletInfo.LaserConfig.GeometryLayer; + } + + ChangeCollisionStateDeferred(true); + + StartLaser(); + EmitSignal(SignalName.Initialized); + } + + private void StartLaser() + { + _mesh.Scale = Vector3.One; + _collision.Scale = Vector3.One; + + _stateTimer = 0f; + _state = _bulletInfo.LaserConfig.WarningDuration > 0 + ? Laser.LaserState.Warning + : Laser.LaserState.Expanding; + + UpdateVisualOrientation(); + SetRadius(_bulletInfo.LaserConfig.WarningRadius); + } + + public void Enable() + { + Enabled = true; + Show(); + if (_collision != null) + { + _collision.SetDeferred(CollisionShape3D.PropertyName.Disabled, false); + } + } + + public void Disable(bool hideSprite = true) + { + Enabled = false; + if (hideSprite) + { + Hide(); + } + if (_collision != null) + { + _collision.SetDeferred(CollisionShape3D.PropertyName.Disabled, true); + } + } + + public void Graze() + { + if (!Enabled) return; + IsGrazed = true; + } + + public void RotateBullet(float degrees) + { + float radians = Mathf.DegToRad(degrees); + _direction = _direction.Rotated(radians).Normalized(); + _laserDirection = new Vector3(_direction.X, 0, _direction.Y).Normalized(); + UpdateVisualOrientation(); + } + + public void RotateSpriteDegrees(float degrees) + { + // Lasers don't rotate sprite independently + RotateBullet(degrees); + } + + public void RotateSprite(float radians) + { + // Lasers don't rotate sprite independently + RotateBullet(Mathf.RadToDeg(radians)); + } + + public void FacePlayer() + { + if (GameController.Instance.PlayerPosition.HasValue) + { + _direction = (GameController.Instance.PlayerPosition.Value.ToVector2() - GlobalPosition.ToVector2()).Normalized(); + _laserDirection = new Vector3(_direction.X, 0, _direction.Y).Normalized(); + UpdateVisualOrientation(); + } + } + + public void SetDirection(Vector2 direction) + { + _direction = direction.Normalized(); + _laserDirection = new Vector3(_direction.X, 0, _direction.Y).Normalized(); + UpdateVisualOrientation(); + } + + public bool CanHit(BulletOwner bulletOwner, BulletOwner targetGroup) + { + if (bulletOwner == BulletOwner.None || targetGroup == BulletOwner.None) + { + return true; + } + return bulletOwner != targetGroup; + } + + public void RequestCollisionDestruction() + { + // Lasers typically don't get destroyed on collision + if (_bulletInfo.DestroyOnCollision) + { + Destroy(); + } + } + + public void Freeze() + { + IsFrozen = true; + EmitSignal(SignalName.OnDestroy); + PoolingManager.Instance.DisableBullet(this); + } + + public override void _Process(double delta) + { + if (!Enabled) return; + + _elapsedTime += delta; + + if (_elapsedTime >= _bulletInfo.LifeTime) + { + Destroy(); + return; + } + + if (_state == Laser.LaserState.Finished) + return; + + _stateTimer += (float)delta; + + UpdateRaycast(); + UpdateBeam(); + + switch (_state) + { + case Laser.LaserState.Warning: + if (_stateTimer >= _bulletInfo.LaserConfig.WarningDuration) + TransitionTo(Laser.LaserState.Expanding); + break; + + case Laser.LaserState.Expanding: + HandleExpansion(); + break; + + case Laser.LaserState.Active: + if (_bulletInfo.LaserConfig.ActiveDuration >= 0 && + _stateTimer >= _bulletInfo.LaserConfig.ActiveDuration) + TransitionTo(Laser.LaserState.Finished); + break; + } + } + + private void TransitionTo(Laser.LaserState next) + { + _state = next; + _stateTimer = 0f; + + switch (next) + { + case Laser.LaserState.Expanding: + if (_bulletInfo.LaserConfig.ExpansionDuration <= 0f) + { + SetRadius(_bulletInfo.LaserConfig.DamageRadius); + EnableCollision(); + TransitionTo(Laser.LaserState.Active); + } + break; + + case Laser.LaserState.Active: + EnableCollision(); + SetRadius(_bulletInfo.LaserConfig.DamageRadius); + break; + + case Laser.LaserState.Finished: + Destroy(); + break; + } + } + + private void HandleExpansion() + { + if (_stateTimer < _bulletInfo.LaserConfig.ExpansionDelay) + return; + + var t = Mathf.Clamp( + (_stateTimer - _bulletInfo.LaserConfig.ExpansionDelay) / + Mathf.Max(_bulletInfo.LaserConfig.ExpansionDuration, 0.001f), + 0f, 1f + ); + + var radius = Mathf.Lerp(_bulletInfo.LaserConfig.WarningRadius, + _bulletInfo.LaserConfig.DamageRadius, t); + SetRadius(radius); + + if (t >= 1f) + TransitionTo(Laser.LaserState.Active); + } + + private void UpdateRaycast() + { + _ray.TargetPosition = _laserDirection * _bulletInfo.LaserConfig.MaxLength; + _ray.ForceRaycastUpdate(); + + _currentLength = _ray.IsColliding() + ? GlobalPosition.DistanceTo(_ray.GetCollisionPoint()) + : _bulletInfo.LaserConfig.MaxLength; + } + + private void UpdateVisualOrientation() + { + Basis look = Basis.LookingAt(_laserDirection, Vector3.Up); + Basis correction = new Basis(Vector3.Right, Mathf.Pi / 2f); + Basis finalBasis = look * correction; + + _mesh.Basis = finalBasis; + _collision.Basis = finalBasis; + } + + private void UpdateBeam() + { + if (_mesh.Mesh is CylinderMesh cyl) + cyl.Height = _currentLength; + + if (_collision.Shape is CapsuleShape3D capsule) + capsule.Height = _currentLength; + + Vector3 center = _origin + _laserDirection * (_currentLength * 0.5f); + + Transform3D meshXform = _mesh.GlobalTransform; + meshXform.Origin = center; + _mesh.GlobalTransform = meshXform; + + Transform3D colXform = _collision.GlobalTransform; + colXform.Origin = center; + _collision.GlobalTransform = colXform; + } + + private void SetRadius(float radius) + { + _currentRadius = radius; + + if (_mesh.Mesh is CylinderMesh cyl) + { + cyl.TopRadius = radius; + cyl.BottomRadius = radius; + } + + if (_collision.Shape is CapsuleShape3D capsule) + capsule.Radius = radius; + + UpdateMaterial(); + } + + private void EnableCollision() + { + ChangeCollisionStateDeferred(false); + } + + private void ChangeCollisionStateDeferred(bool value) + { + _collision.SetDeferred(CollisionShape3D.PropertyName.Disabled, value); + } + + private void UpdateMaterial() + { + if (_beamMaterial == null) + return; + + _beamMaterial.SetShaderParameter("beam_length", _currentLength); + _beamMaterial.SetShaderParameter("beam_radius", _currentRadius); + + switch (_state) + { + case Laser.LaserState.Warning: + _beamMaterial.SetShaderParameter("beam_color", new Color(1f, 1f, 0.2f)); + _beamMaterial.SetShaderParameter("intensity", 0.5f); + break; + + case Laser.LaserState.Active: + _beamMaterial.SetShaderParameter("beam_color", new Color(1f, 0.2f, 0.2f)); + _beamMaterial.SetShaderParameter("intensity", 1.0f); + break; + } + } + + public bool IsPointInsideBeam(Vector3 worldPoint) + { + if (_state != Laser.LaserState.Active) + return false; + + Vector3 local = worldPoint - _origin; + float projection = local.Dot(_laserDirection); + + if (projection < 0 || projection > _currentLength) + return false; + + Vector3 closestPoint = _origin + _laserDirection * projection; + float distanceSq = worldPoint.DistanceSquaredTo(closestPoint); + + float radius = _bulletInfo.LaserConfig.DamageRadius; + return distanceSq <= radius * radius; + } + + private void _on_area_entered(Area3D area) + { + if (!Enabled || _state != Laser.LaserState.Active) return; + + if (area.IsInGroup("Destroyable") && area is IDestructible destructible && + CanHit(BulletOwner, destructible.BulletGroup)) + { + destructible.Hit(Damage, DamageType); + RequestCollisionDestruction(); + } + } + + private void _on_body_entered(Node3D body) + { + if (!Enabled || _state != Laser.LaserState.Active) return; + + if (body.IsInGroup("Destroyable") && body is IDestructible destructible && + CanHit(BulletOwner, destructible.BulletGroup)) + { + destructible.Hit(Damage, DamageType); + RequestCollisionDestruction(); + } + } + + private void Destroy() + { + EmitSignal(SignalName.OnDestroy); + PoolingManager.Instance.DisableBullet(this); + } +} + +