Compare commits
	
		
			44 Commits 
		
	
	
		
			4de81c9a63
			...
			24b5dc09d0
		
	
	| 
						 | 
					@ -16,4 +16,10 @@ I can write english pretty good but since It is not my mothertounge I will make
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The dark room was clouded with smoke as the 1st lieutenant entered the room. He walked slowly , trying to avoid the big clouds, towards the black desk where a man in black cape was sitting and enjoying his last cigar.
 | 
					The dark room was clouded with smoke as the 1st lieutenant entered the room. He walked slowly , trying to avoid the big clouds, towards the black desk where a man in black cape was sitting and enjoying his last cigar.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=> END
 | 
					=> END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~ wall_writing
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"Life's not fair. Get a grip." -- Doc, The Two Time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					=> END
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="mp3"
 | 
				
			||||||
 | 
					type="AudioStreamMP3"
 | 
				
			||||||
 | 
					uid="uid://bskrlh73x1sgp"
 | 
				
			||||||
 | 
					path="res://.godot/imported/doc-summon.mp3-ebe66881fc8469c2b9dc405db43209d0.mp3str"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sounds/doc-summon.mp3"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/doc-summon.mp3-ebe66881fc8469c2b9dc405db43209d0.mp3str"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					loop=false
 | 
				
			||||||
 | 
					loop_offset=0
 | 
				
			||||||
 | 
					bpm=0
 | 
				
			||||||
 | 
					beat_count=0
 | 
				
			||||||
 | 
					bar_beats=4
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://xgy5gihyxgih"
 | 
				
			||||||
 | 
					path="res://.godot/imported/fire-32x32.png-6317a2b0efbef8c9d4ff90f6384746c6.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/fire-32x32.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/fire-32x32.png-6317a2b0efbef8c9d4ff90f6384746c6.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 743 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://c1garalf1clsp"
 | 
				
			||||||
 | 
					path="res://.godot/imported/flame-large.png-41b172a8bfc9c186ab97a98ae0c5a459.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/flame-large.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/flame-large.png-41b172a8bfc9c186ab97a98ae0c5a459.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 379 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://dj1vsctgh1scr"
 | 
				
			||||||
 | 
					path="res://.godot/imported/flame.png-e7b2d4c51e3e9c0041d6294e9c805c89.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/flame.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/flame.png-e7b2d4c51e3e9c0041d6294e9c805c89.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 92 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://bitpf645g0prl"
 | 
				
			||||||
 | 
					path="res://.godot/imported/torch-base.png-d14e78df3788bf6d3a9565b574d6c1a1.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/torch-base.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/torch-base.png-d14e78df3788bf6d3a9565b574d6c1a1.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 379 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://cyfyelyq3o15s"
 | 
				
			||||||
 | 
					path="res://.godot/imported/torch-fire.png-a9f51cf7273c726b68014cb26a31d54c.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/torch-fire.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/torch-fire.png-a9f51cf7273c726b68014cb26a31d54c.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 379 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://i5ksh8i0q48o"
 | 
				
			||||||
 | 
					path="res://.godot/imported/torch-lamp-base-back.png-a6c17eff02f04f493c4e495a2d662d5a.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/torch-lamp-base-back.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/torch-lamp-base-back.png-a6c17eff02f04f493c4e495a2d662d5a.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 416 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://ca0htndnsb38k"
 | 
				
			||||||
 | 
					path="res://.godot/imported/torch-lamp-base.png-03b38ecb41ff35cadec5aeaad2c98e38.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Misc/torch-lamp-base.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/torch-lamp-base.png-03b38ecb41ff35cadec5aeaad2c98e38.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 783 B After Width: | Height: | Size: 810 B  | 
| 
		 Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 148 B  | 
| 
		 After Width: | Height: | Size: 596 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://dlxiybkk75imp"
 | 
				
			||||||
 | 
					path="res://.godot/imported/tree-leaves-dark-0.png-c0a1d8978753948673d83a622b613796.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Props/tree-leaves-dark-0.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/tree-leaves-dark-0.png-c0a1d8978753948673d83a622b613796.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 775 B  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://022r5gtr5ut5"
 | 
				
			||||||
 | 
					path="res://.godot/imported/tree-leaves-dark-1.png-e500a7048d53ad3769f9fb33e7139e3a.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Props/tree-leaves-dark-1.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/tree-leaves-dark-1.png-e500a7048d53ad3769f9fb33e7139e3a.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 1.8 KiB  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://fb2cpwplhe7o"
 | 
				
			||||||
 | 
					path="res://.godot/imported/tree-leaves-dark-2.png-e3e4a859dde5c7535113533f8a9eb51d.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/Props/tree-leaves-dark-2.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/tree-leaves-dark-2.png-e3e4a859dde5c7535113533f8a9eb51d.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 4.8 KiB  | 
| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://bth1v3dyuqwg6"
 | 
				
			||||||
 | 
					path="res://.godot/imported/arena-tileset-new.png-be9f2f14aeaee34d9c3f67ae1188e672.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"vram_texture": false
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://Assets/Sprites/arena-tileset-new.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/arena-tileset-new.png-be9f2f14aeaee34d9c3f67ae1188e672.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=0
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=false
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=1
 | 
				
			||||||
| 
						 | 
					@ -1,48 +0,0 @@
 | 
				
			||||||
using Godot;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace SupaLidlGame.BoundingBoxes;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public partial class CameraBounds : Node2D
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    [Export]
 | 
					 | 
				
			||||||
    public Area2D Trigger { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //[Export]
 | 
					 | 
				
			||||||
    //public Rect2I Bounds { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Export]
 | 
					 | 
				
			||||||
    public Marker2D TopLeft { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Export]
 | 
					 | 
				
			||||||
    public Marker2D BottomRight { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public override void _Ready()
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        Trigger.BodyEntered += OnBodyEntered;
 | 
					 | 
				
			||||||
        Trigger.BodyExited += OnBodyExited;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void OnBodyEntered(Node2D body)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (body is Characters.Player player)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var camera = player.Camera;
 | 
					 | 
				
			||||||
            var rect = new Rect2I();
 | 
					 | 
				
			||||||
            rect.Position = (Vector2I)TopLeft.GlobalPosition;
 | 
					 | 
				
			||||||
            rect.End = (Vector2I)BottomRight.GlobalPosition;
 | 
					 | 
				
			||||||
            camera.SetCameraBounds(rect);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void OnBodyExited(Node2D body)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (body is Characters.Player player)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            var camera = player.Camera;
 | 
					 | 
				
			||||||
            camera.LimitLeft = int.MinValue;
 | 
					 | 
				
			||||||
            camera.LimitTop = int.MinValue;
 | 
					 | 
				
			||||||
            camera.LimitRight = int.MaxValue;
 | 
					 | 
				
			||||||
            camera.LimitBottom = int.MaxValue;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,25 +0,0 @@
 | 
				
			||||||
[gd_scene load_steps=3 format=3 uid="uid://malbos18dh7l"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[ext_resource type="Script" path="res://BoundingBoxes/CameraBounds.cs" id="1_vaknk"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_b2lli"]
 | 
					 | 
				
			||||||
size = Vector2(256, 272)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="CameraBounds" type="Node2D" node_paths=PackedStringArray("Trigger", "TopLeft", "BottomRight")]
 | 
					 | 
				
			||||||
script = ExtResource("1_vaknk")
 | 
					 | 
				
			||||||
Trigger = NodePath("Area2D")
 | 
					 | 
				
			||||||
TopLeft = NodePath("TopLeft")
 | 
					 | 
				
			||||||
BottomRight = NodePath("BottomRight")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Area2D" type="Area2D" parent="."]
 | 
					 | 
				
			||||||
collision_layer = 0
 | 
					 | 
				
			||||||
collision_mask = 4
 | 
					 | 
				
			||||||
monitorable = false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
 | 
					 | 
				
			||||||
shape = SubResource("RectangleShape2D_b2lli")
 | 
					 | 
				
			||||||
debug_color = Color(0.631373, 0.345098, 1, 0.419608)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="TopLeft" type="Marker2D" parent="."]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="BottomRight" type="Marker2D" parent="."]
 | 
					 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					using Godot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace SupaLidlGame.BoundingBoxes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class CameraTrigger : Area2D
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Node Camera { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public int EnablePriority { get; set; } = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public int DisablePriority { get; set; } = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void _Ready()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Connect(SignalName.BodyEntered, new Callable(this, nameof(OnBodyEntered)));
 | 
				
			||||||
 | 
					        Connect(SignalName.BodyExited, new Callable(this, nameof(OnBodyExited)));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void _EnterTree()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (!Camera.Get("tween_on_load").AsBool())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var tween = Camera.Get("tween_resource").AsGodotObject();
 | 
				
			||||||
 | 
					            double duration = tween.Get("duration").AsDouble();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // HACK: manually set this field to interrupt tween when the
 | 
				
			||||||
 | 
					            // trigger enters the scene, which happens when the scene is loaded
 | 
				
			||||||
 | 
					            // from the cache
 | 
				
			||||||
 | 
					            Camera.SetDeferred("_has_tweened", true);
 | 
				
			||||||
 | 
					            GD.Print("set tween");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void OnBodyEntered(Node2D node)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Camera.Set("priority", EnablePriority);
 | 
				
			||||||
 | 
					        Camera.Set("follow_target", node);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void OnBodyExited(Node2D node)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Camera.Set("priority", DisablePriority);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,9 @@
 | 
				
			||||||
[ext_resource type="Script" path="res://BoundingBoxes/Hitbox.cs" id="1_44i8j"]
 | 
					[ext_resource type="Script" path="res://BoundingBoxes/Hitbox.cs" id="1_44i8j"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hitbox" type="Area2D"]
 | 
					[node name="Hitbox" type="Area2D"]
 | 
				
			||||||
priority = 5.0
 | 
					collision_layer = 256
 | 
				
			||||||
 | 
					collision_mask = 769
 | 
				
			||||||
 | 
					priority = 5
 | 
				
			||||||
script = ExtResource("1_44i8j")
 | 
					script = ExtResource("1_44i8j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
					[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,8 @@
 | 
				
			||||||
[ext_resource type="Script" path="res://BoundingBoxes/Hurtbox.cs" id="1_ov1ss"]
 | 
					[ext_resource type="Script" path="res://BoundingBoxes/Hurtbox.cs" id="1_ov1ss"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hurtbox" type="Area2D"]
 | 
					[node name="Hurtbox" type="Area2D"]
 | 
				
			||||||
 | 
					collision_layer = 512
 | 
				
			||||||
 | 
					collision_mask = 769
 | 
				
			||||||
script = ExtResource("1_ov1ss")
 | 
					script = ExtResource("1_ov1ss")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
					[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,70 @@
 | 
				
			||||||
 | 
					using Godot;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace SupaLidlGame.BoundingBoxes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class OcclusionTrigger : Area2D
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public double FadeDuration { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Godot.Collections.Array<string> Groups { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Tween _tween = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void _Ready()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Connect(SignalName.BodyEntered, new Callable(this, nameof(OnBodyEntered)));
 | 
				
			||||||
 | 
					        Connect(SignalName.BodyExited, new Callable(this, nameof(OnBodyExited)));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private IEnumerable<CanvasItem> GetCanvasItems()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        IEnumerable<IEnumerable<CanvasItem>> pack()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            foreach (string group in Groups)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var nodes = GetTree().GetNodesInGroup(group)
 | 
				
			||||||
 | 
					                    .OfType<CanvasItem>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                yield return nodes;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return pack().SelectMany(e => e);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void OnBodyEntered(Node2D _)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (IsInstanceValid(_tween))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _tween.Kill();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _tween = GetTree().CreateTween();
 | 
				
			||||||
 | 
					        _tween.SetParallel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        foreach (var node in GetCanvasItems())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _tween.TweenProperty(node, "modulate", Colors.Transparent, FadeDuration);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void OnBodyExited(Node2D _)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (IsInstanceValid(_tween))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _tween.Kill();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _tween = GetTree().CreateTween();
 | 
				
			||||||
 | 
					        _tween.SetParallel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        foreach (var node in GetCanvasItems())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _tween.TweenProperty(node, "modulate", Colors.White, FadeDuration);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -10,9 +10,6 @@ public partial class Doc : Boss
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public AnimationPlayer MiscAnimation { get; set; }
 | 
					    public AnimationPlayer MiscAnimation { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					 | 
				
			||||||
    public Items.Weapons.Sword Lance { get; set; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public override bool IsActive
 | 
					    public override bool IsActive
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
| 
						 | 
					@ -109,7 +106,7 @@ public partial class Doc : Boss
 | 
				
			||||||
            if (name == "Doc")
 | 
					            if (name == "Doc")
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                IsActive = true;
 | 
					                IsActive = true;
 | 
				
			||||||
                Inventory.SelectedItem = Lance;
 | 
					                Inventory.SelectedItem = GetNode<Items.Item>("%DocLance");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -122,7 +119,7 @@ public partial class Doc : Boss
 | 
				
			||||||
            if (this.GetWorld().CurrentPlayer.IsAlive && !IsActive)
 | 
					            if (this.GetWorld().CurrentPlayer.IsAlive && !IsActive)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                IsActive = true;
 | 
					                IsActive = true;
 | 
				
			||||||
                Inventory.SelectedItem = Lance;
 | 
					                Inventory.SelectedItem = GetNode<Items.Item>("%DocLance");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
[gd_scene load_steps=70 format=3 uid="uid://d2skjvvx6fal0"]
 | 
					[gd_scene load_steps=72 format=3 uid="uid://d2skjvvx6fal0"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://Characters/Doc.cs" id="2_3elet"]
 | 
					[ext_resource type="Script" path="res://Characters/Doc.cs" id="2_3elet"]
 | 
				
			||||||
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_5jxom"]
 | 
					[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_5jxom"]
 | 
				
			||||||
| 
						 | 
					@ -38,6 +38,7 @@
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://p7oijq6dbvvk" path="res://Items/Weapons/DocLance.tscn" id="24_2es2r"]
 | 
					[ext_resource type="PackedScene" uid="uid://p7oijq6dbvvk" path="res://Items/Weapons/DocLance.tscn" id="24_2es2r"]
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://cqj44je3mvk60" path="res://Assets/Sounds/rauuul.wav" id="26_js7p2"]
 | 
					[ext_resource type="AudioStream" uid="uid://cqj44je3mvk60" path="res://Assets/Sounds/rauuul.wav" id="26_js7p2"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://dldnp8eunxj3q" path="res://BoundingBoxes/InteractionTrigger.tscn" id="33_08dyq"]
 | 
					[ext_resource type="PackedScene" uid="uid://dldnp8eunxj3q" path="res://BoundingBoxes/InteractionTrigger.tscn" id="33_08dyq"]
 | 
				
			||||||
 | 
					[ext_resource type="AudioStream" uid="uid://bskrlh73x1sgp" path="res://Assets/Sounds/doc-summon.mp3" id="34_g57b0"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7n7iy"]
 | 
					[sub_resource type="ShaderMaterial" id="ShaderMaterial_7n7iy"]
 | 
				
			||||||
resource_local_to_scene = true
 | 
					resource_local_to_scene = true
 | 
				
			||||||
| 
						 | 
					@ -327,6 +328,21 @@ tracks/2/keys = {
 | 
				
			||||||
"update": 0,
 | 
					"update": 0,
 | 
				
			||||||
"values": [Vector2(1.5, 0.75), Vector2(1, 1)]
 | 
					"values": [Vector2(1.5, 0.75), Vector2(1, 1)]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					tracks/3/type = "audio"
 | 
				
			||||||
 | 
					tracks/3/imported = false
 | 
				
			||||||
 | 
					tracks/3/enabled = true
 | 
				
			||||||
 | 
					tracks/3/path = NodePath("../Effects/SummonCry")
 | 
				
			||||||
 | 
					tracks/3/interp = 1
 | 
				
			||||||
 | 
					tracks/3/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/3/keys = {
 | 
				
			||||||
 | 
					"clips": [{
 | 
				
			||||||
 | 
					"end_offset": 1.1,
 | 
				
			||||||
 | 
					"start_offset": 0.4,
 | 
				
			||||||
 | 
					"stream": ExtResource("34_g57b0")
 | 
				
			||||||
 | 
					}],
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/3/use_blend = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_rpply"]
 | 
					[sub_resource type="AnimationLibrary" id="AnimationLibrary_rpply"]
 | 
				
			||||||
_data = {
 | 
					_data = {
 | 
				
			||||||
| 
						 | 
					@ -552,14 +568,16 @@ size = Vector2(16, 19)
 | 
				
			||||||
[sub_resource type="CircleShape2D" id="CircleShape2D_8hwat"]
 | 
					[sub_resource type="CircleShape2D" id="CircleShape2D_8hwat"]
 | 
				
			||||||
radius = 16.0
 | 
					radius = 16.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Doc" type="CharacterBody2D" node_paths=PackedStringArray("Lance", "BossStateMachine", "DefaultSelectedItem", "ThinkerStateMachine", "Stats", "Sprite", "Inventory", "StateMachine", "Hurtbox")]
 | 
					[sub_resource type="CircleShape2D" id="CircleShape2D_kap5k"]
 | 
				
			||||||
 | 
					radius = 48.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Doc" type="CharacterBody2D" node_paths=PackedStringArray("BossStateMachine", "DefaultSelectedItem", "ThinkerStateMachine", "Stats", "Sprite", "Inventory", "StateMachine", "Hurtbox")]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
texture_filter = 3
 | 
					texture_filter = 3
 | 
				
			||||||
material = SubResource("ShaderMaterial_7n7iy")
 | 
					material = SubResource("ShaderMaterial_7n7iy")
 | 
				
			||||||
collision_layer = 10
 | 
					collision_layer = 10
 | 
				
			||||||
collision_mask = 17
 | 
					collision_mask = 17
 | 
				
			||||||
script = ExtResource("2_3elet")
 | 
					script = ExtResource("2_3elet")
 | 
				
			||||||
Lance = NodePath("Inventory/DocLance")
 | 
					 | 
				
			||||||
BossStateMachine = NodePath("BossStateMachine")
 | 
					BossStateMachine = NodePath("BossStateMachine")
 | 
				
			||||||
BossName = "Doc, The Two-Time"
 | 
					BossName = "Doc, The Two-Time"
 | 
				
			||||||
Music = ExtResource("3_qnxmu")
 | 
					Music = ExtResource("3_qnxmu")
 | 
				
			||||||
| 
						 | 
					@ -682,8 +700,9 @@ InitialState = NodePath("Attack")
 | 
				
			||||||
script = ExtResource("21_ij3bp")
 | 
					script = ExtResource("21_ij3bp")
 | 
				
			||||||
NPC = NodePath("../..")
 | 
					NPC = NodePath("../..")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="DashDefensive" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("NPC")]
 | 
					[node name="DashDefensive" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("ProjectileDetection", "NPC")]
 | 
				
			||||||
script = ExtResource("20_12htp")
 | 
					script = ExtResource("20_12htp")
 | 
				
			||||||
 | 
					ProjectileDetection = NodePath("../../ProjectileDetection")
 | 
				
			||||||
MaxDistanceToTarget = 256.0
 | 
					MaxDistanceToTarget = 256.0
 | 
				
			||||||
UseItemDistance = 64.0
 | 
					UseItemDistance = 64.0
 | 
				
			||||||
NPC = NodePath("../..")
 | 
					NPC = NodePath("../..")
 | 
				
			||||||
| 
						 | 
					@ -760,6 +779,9 @@ attenuation = 0.5
 | 
				
			||||||
[node name="HurtSound" type="AudioStreamPlayer2D" parent="Effects"]
 | 
					[node name="HurtSound" type="AudioStreamPlayer2D" parent="Effects"]
 | 
				
			||||||
stream = ExtResource("9_stm0e")
 | 
					stream = ExtResource("9_stm0e")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="SummonCry" type="AudioStreamPlayer2D" parent="Effects"]
 | 
				
			||||||
 | 
					attenuation = 4.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Sprite" type="Sprite2D" parent="."]
 | 
					[node name="Sprite" type="Sprite2D" parent="."]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
use_parent_material = true
 | 
					use_parent_material = true
 | 
				
			||||||
| 
						 | 
					@ -785,14 +807,8 @@ script = ExtResource("8_r8ejq")
 | 
				
			||||||
Hotbar = []
 | 
					Hotbar = []
 | 
				
			||||||
Items = []
 | 
					Items = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="DocLance" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") instance=ExtResource("24_2es2r")]
 | 
					[node name="DocLance" parent="Inventory" instance=ExtResource("24_2es2r")]
 | 
				
			||||||
unique_name_in_owner = true
 | 
					unique_name_in_owner = true
 | 
				
			||||||
Hitbox = NodePath("Hitbox")
 | 
					 | 
				
			||||||
AnimationPlayer = NodePath("AnimationPlayer")
 | 
					 | 
				
			||||||
ParryParticles = NodePath("Anchor/Node2D/Sprite2D/ParryParticles")
 | 
					 | 
				
			||||||
StateMachine = NodePath("State")
 | 
					 | 
				
			||||||
Anchor = NodePath("Anchor")
 | 
					 | 
				
			||||||
HandAnchor = NodePath("Anchor/Node2D/Sprite2D/Hand")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="InteractionTrigger" parent="." instance=ExtResource("33_08dyq")]
 | 
					[node name="InteractionTrigger" parent="." instance=ExtResource("33_08dyq")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -807,5 +823,13 @@ offset_bottom = -14.0
 | 
				
			||||||
[node name="Label" parent="InteractionTrigger/Popup" index="0"]
 | 
					[node name="Label" parent="InteractionTrigger/Popup" index="0"]
 | 
				
			||||||
text = "Duel"
 | 
					text = "Duel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="ProjectileDetection" type="Area2D" parent="."]
 | 
				
			||||||
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					collision_layer = 0
 | 
				
			||||||
 | 
					collision_mask = 256
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CollisionShape2D" type="CollisionShape2D" parent="ProjectileDetection"]
 | 
				
			||||||
 | 
					shape = SubResource("CircleShape2D_kap5k")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[editable path="Hurtbox"]
 | 
					[editable path="Hurtbox"]
 | 
				
			||||||
[editable path="InteractionTrigger"]
 | 
					[editable path="InteractionTrigger"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -152,6 +152,7 @@ Sprite = NodePath("Sprites/Node2D/Character")
 | 
				
			||||||
Inventory = NodePath("Inventory")
 | 
					Inventory = NodePath("Inventory")
 | 
				
			||||||
StateMachine = NodePath("StateMachine")
 | 
					StateMachine = NodePath("StateMachine")
 | 
				
			||||||
Hurtbox = NodePath("Hurtbox")
 | 
					Hurtbox = NodePath("Hurtbox")
 | 
				
			||||||
 | 
					Faction = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Stats" type="Node" parent="."]
 | 
					[node name="Stats" type="Node" parent="."]
 | 
				
			||||||
script = ExtResource("9_bxrs2")
 | 
					script = ExtResource("9_bxrs2")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -364,13 +364,11 @@ curve = SubResource("Curve_30p4b")
 | 
				
			||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_qdhau"]
 | 
					[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_qdhau"]
 | 
				
			||||||
particle_flag_disable_z = true
 | 
					particle_flag_disable_z = true
 | 
				
			||||||
spread = 180.0
 | 
					spread = 180.0
 | 
				
			||||||
gravity = Vector3(0, 0, 0)
 | 
					 | 
				
			||||||
initial_velocity_min = 32.0
 | 
					initial_velocity_min = 32.0
 | 
				
			||||||
initial_velocity_max = 32.0
 | 
					initial_velocity_max = 32.0
 | 
				
			||||||
angular_velocity_min = 90.0
 | 
					angular_velocity_min = 90.0
 | 
				
			||||||
angular_velocity_max = 90.0
 | 
					angular_velocity_max = 90.0
 | 
				
			||||||
orbit_velocity_min = 0.0
 | 
					gravity = Vector3(0, 0, 0)
 | 
				
			||||||
orbit_velocity_max = 0.0
 | 
					 | 
				
			||||||
linear_accel_min = -64.0
 | 
					linear_accel_min = -64.0
 | 
				
			||||||
linear_accel_max = -32.0
 | 
					linear_accel_max = -32.0
 | 
				
			||||||
tangential_accel_min = 8.0
 | 
					tangential_accel_min = 8.0
 | 
				
			||||||
| 
						 | 
					@ -405,6 +403,7 @@ Sprite = NodePath("Sprites/Node2D/Character")
 | 
				
			||||||
Inventory = NodePath("Inventory")
 | 
					Inventory = NodePath("Inventory")
 | 
				
			||||||
StateMachine = NodePath("StateMachine")
 | 
					StateMachine = NodePath("StateMachine")
 | 
				
			||||||
Hurtbox = NodePath("Hurtbox")
 | 
					Hurtbox = NodePath("Hurtbox")
 | 
				
			||||||
 | 
					Faction = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
 | 
					[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
 | 
				
			||||||
script = ExtResource("3_lj2a2")
 | 
					script = ExtResource("3_lj2a2")
 | 
				
			||||||
| 
						 | 
					@ -441,7 +440,6 @@ MaxDistanceToTarget = 128.0
 | 
				
			||||||
UseItemDistance = 128.0
 | 
					UseItemDistance = 128.0
 | 
				
			||||||
PassiveState = NodePath("../Pursue")
 | 
					PassiveState = NodePath("../Pursue")
 | 
				
			||||||
PursueState = NodePath("../Pursue")
 | 
					PursueState = NodePath("../Pursue")
 | 
				
			||||||
PursueOnLineOfSight = false
 | 
					 | 
				
			||||||
NPC = NodePath("../..")
 | 
					NPC = NodePath("../..")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Idle" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("PursueState", "NavigationAgent", "NPC")]
 | 
					[node name="Idle" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("PursueState", "NavigationAgent", "NPC")]
 | 
				
			||||||
| 
						 | 
					@ -450,7 +448,6 @@ PursueState = NodePath("../Pursue")
 | 
				
			||||||
MinTargetDistance = 32.0
 | 
					MinTargetDistance = 32.0
 | 
				
			||||||
PursueOnLineOfSight = true
 | 
					PursueOnLineOfSight = true
 | 
				
			||||||
MinLineOfSightDistance = 128.0
 | 
					MinLineOfSightDistance = 128.0
 | 
				
			||||||
ShouldReturnToOriginalPosition = true
 | 
					 | 
				
			||||||
NavigationAgent = NodePath("../../NavigationAgent2D")
 | 
					NavigationAgent = NodePath("../../NavigationAgent2D")
 | 
				
			||||||
NPC = NodePath("../..")
 | 
					NPC = NodePath("../..")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -530,15 +527,17 @@ hframes = 6
 | 
				
			||||||
position = Vector2(0, -4)
 | 
					position = Vector2(0, -4)
 | 
				
			||||||
shape = SubResource("RectangleShape2D_bfqew")
 | 
					shape = SubResource("RectangleShape2D_bfqew")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Inventory" type="Node2D" parent="."]
 | 
					[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
				
			||||||
position = Vector2(0, -4)
 | 
					position = Vector2(0, -4)
 | 
				
			||||||
script = ExtResource("17_sjq8t")
 | 
					script = ExtResource("17_sjq8t")
 | 
				
			||||||
 | 
					Hotbar = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="ProjectileSpawner" parent="Inventory" instance=ExtResource("17_dmlbb")]
 | 
					[node name="ProjectileSpawner" parent="Inventory" node_paths=PackedStringArray("StateMachine") instance=ExtResource("17_dmlbb")]
 | 
				
			||||||
Projectile = ExtResource("18_lwg36")
 | 
					Projectile = ExtResource("18_lwg36")
 | 
				
			||||||
ShouldOverrideProjectileDamage = false
 | 
					ShouldOverrideProjectileDamage = false
 | 
				
			||||||
ShouldOverrideVelocity = false
 | 
					ShouldOverrideVelocity = false
 | 
				
			||||||
ShouldRotate = false
 | 
					ShouldRotate = false
 | 
				
			||||||
 | 
					StateMachine = NodePath("StateMachine")
 | 
				
			||||||
UseTime = 2.0
 | 
					UseTime = 2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hurtbox" parent="." instance=ExtResource("18_ajs2x")]
 | 
					[node name="Hurtbox" parent="." instance=ExtResource("18_ajs2x")]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -268,8 +268,8 @@ scale_curve = SubResource("CurveTexture_5uulw")
 | 
				
			||||||
color = Color(1, 0, 0, 1)
 | 
					color = Color(1, 0, 0, 1)
 | 
				
			||||||
color_ramp = SubResource("GradientTexture1D_iyaih")
 | 
					color_ramp = SubResource("GradientTexture1D_iyaih")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"]
 | 
					[sub_resource type="CircleShape2D" id="CircleShape2D_umi1b"]
 | 
				
			||||||
size = Vector2(8, 8)
 | 
					radius = 4.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1gjgc"]
 | 
					[sub_resource type="RectangleShape2D" id="RectangleShape2D_1gjgc"]
 | 
				
			||||||
size = Vector2(12, 16)
 | 
					size = Vector2(12, 16)
 | 
				
			||||||
| 
						 | 
					@ -290,6 +290,7 @@ Sprite = NodePath("Sprites/Node2D/Character")
 | 
				
			||||||
Inventory = NodePath("Inventory")
 | 
					Inventory = NodePath("Inventory")
 | 
				
			||||||
StateMachine = NodePath("StateMachine")
 | 
					StateMachine = NodePath("StateMachine")
 | 
				
			||||||
Hurtbox = NodePath("Hurtbox")
 | 
					Hurtbox = NodePath("Hurtbox")
 | 
				
			||||||
 | 
					Faction = 2
 | 
				
			||||||
metadata/_edit_vertical_guides_ = []
 | 
					metadata/_edit_vertical_guides_ = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Stats" type="Node" parent="."]
 | 
					[node name="Stats" type="Node" parent="."]
 | 
				
			||||||
| 
						 | 
					@ -416,7 +417,7 @@ stream = ExtResource("15_w7mkq")
 | 
				
			||||||
unique_name_in_owner = true
 | 
					unique_name_in_owner = true
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
use_parent_material = true
 | 
					use_parent_material = true
 | 
				
			||||||
position = Vector2(-0.5, 4)
 | 
					position = Vector2(0, 4)
 | 
				
			||||||
rotation = 6.28319
 | 
					rotation = 6.28319
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Node2D" type="Node2D" parent="Sprites"]
 | 
					[node name="Node2D" type="Node2D" parent="Sprites"]
 | 
				
			||||||
| 
						 | 
					@ -429,7 +430,7 @@ offset = Vector2(0, -12)
 | 
				
			||||||
hframes = 7
 | 
					hframes = 7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
					[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
				
			||||||
shape = SubResource("RectangleShape2D_bfqew")
 | 
					shape = SubResource("CircleShape2D_umi1b")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
					[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
				
			||||||
script = ExtResource("17_5rur0")
 | 
					script = ExtResource("17_5rur0")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,27 +104,25 @@ public partial class NPC : Character
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        float bestScore = float.MaxValue;
 | 
					        float bestScore = float.MaxValue;
 | 
				
			||||||
        Character bestChar = null;
 | 
					        Character bestChar = null;
 | 
				
			||||||
        // NOTE: this relies on all Characters being under the Entities node
 | 
					
 | 
				
			||||||
        foreach (Node node in GetParent().GetChildren())
 | 
					        foreach (var character in World.Instance.CurrentMap.GetCharacters())
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (node is Character character)
 | 
					            bool isFriendly = ((IFaction)character).AlignsWith(this);
 | 
				
			||||||
 | 
					            if (isFriendly || !character.IsAlive)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                bool isFriendly = character.Faction == Faction;
 | 
					                continue;
 | 
				
			||||||
                if (isFriendly || character.Health <= 0)
 | 
					            }
 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    continue;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                float score = 0;
 | 
					            float score = 0;
 | 
				
			||||||
                score -= Position.DistanceTo(character.Position);
 | 
					            score += GlobalPosition.DistanceSquaredTo(character.GlobalPosition);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (score < bestScore)
 | 
					            if (score < bestScore)
 | 
				
			||||||
                {
 | 
					            {
 | 
				
			||||||
                    bestScore = score;
 | 
					                bestScore = score;
 | 
				
			||||||
                    bestChar = character;
 | 
					                bestChar = character;
 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return bestChar;
 | 
					        return bestChar;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,9 @@ public sealed partial class Player : Character
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public PlayerCamera Camera { get; set; }
 | 
					    public PlayerCamera Camera { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public GodotObject PCamera { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Marker2D DirectionMarker { get; private set; }
 | 
					    public Marker2D DirectionMarker { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -75,6 +78,17 @@ public sealed partial class Player : Character
 | 
				
			||||||
        Inventory.SelectedIndex = 0;
 | 
					        Inventory.SelectedIndex = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void _EnterTree()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // HACK: instantly move camera to player when switching to a scene
 | 
				
			||||||
 | 
					        // with another PhantomCamera2D
 | 
				
			||||||
 | 
					        var tween = GetNode<GodotObject>("PCamera")
 | 
				
			||||||
 | 
					            .Get("tween_resource")
 | 
				
			||||||
 | 
					            .AsGodotObject();
 | 
				
			||||||
 | 
					        tween.Set("duration", 0);
 | 
				
			||||||
 | 
					        tween.SetDeferred("duration", 1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Process(double delta)
 | 
					    public override void _Process(double delta)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        base._Process(delta);
 | 
					        base._Process(delta);
 | 
				
			||||||
| 
						 | 
					@ -238,7 +252,6 @@ public sealed partial class Player : Character
 | 
				
			||||||
        switch (inputMethod)
 | 
					        switch (inputMethod)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            case State.Global.InputMethod.Joystick:
 | 
					            case State.Global.InputMethod.Joystick:
 | 
				
			||||||
                GD.Print(joystick);
 | 
					 | 
				
			||||||
                if (joystick.IsZeroApprox())
 | 
					                if (joystick.IsZeroApprox())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    return Direction;
 | 
					                    return Direction;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
[gd_scene load_steps=74 format=3 uid="uid://b2254pup8k161"]
 | 
					[gd_scene load_steps=77 format=3 uid="uid://b2254pup8k161"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
 | 
					[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
 | 
				
			||||||
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
 | 
					[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
 | 
				
			||||||
| 
						 | 
					@ -27,16 +27,18 @@
 | 
				
			||||||
[ext_resource type="Script" path="res://BoundingBoxes/InteractionRay.cs" id="13_hs3u1"]
 | 
					[ext_resource type="Script" path="res://BoundingBoxes/InteractionRay.cs" id="13_hs3u1"]
 | 
				
			||||||
[ext_resource type="Script" path="res://State/Character/PlayerHealState.cs" id="13_t103m"]
 | 
					[ext_resource type="Script" path="res://State/Character/PlayerHealState.cs" id="13_t103m"]
 | 
				
			||||||
[ext_resource type="Script" path="res://State/Character/PlayerMaxLevelState.cs" id="14_1sn10"]
 | 
					[ext_resource type="Script" path="res://State/Character/PlayerMaxLevelState.cs" id="14_1sn10"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://d1ukste16yq6v" path="res://Assets/Sprites/Particles/player-light.png" id="15_3hahh"]
 | 
					 | 
				
			||||||
[ext_resource type="Script" path="res://Utils/DamageTime.cs" id="15_4xl06"]
 | 
					[ext_resource type="Script" path="res://Utils/DamageTime.cs" id="15_4xl06"]
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://st8qgqiygy5a" path="res://Assets/Sounds/electricity.wav" id="15_61bua"]
 | 
					[ext_resource type="AudioStream" uid="uid://st8qgqiygy5a" path="res://Assets/Sounds/electricity.wav" id="15_61bua"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://ce0ph4wk0ylra" path="res://UI/TargetTracer.tscn" id="22_hxi53"]
 | 
					[ext_resource type="PackedScene" uid="uid://ce0ph4wk0ylra" path="res://UI/TargetTracer.tscn" id="22_hxi53"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="22_uefct"]
 | 
					[ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="22_uefct"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://bcgm3r168qjn3" path="res://Assets/Sprites/Particles/cast-effect.png" id="24_njn4h"]
 | 
					[ext_resource type="Texture2D" uid="uid://bcgm3r168qjn3" path="res://Assets/Sprites/Particles/cast-effect.png" id="24_njn4h"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="27_mndpv"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="28_6gq8l"]
 | 
				
			||||||
[ext_resource type="Script" path="res://Items/PlayerInventory.cs" id="30_y2wmw"]
 | 
					[ext_resource type="Script" path="res://Items/PlayerInventory.cs" id="30_y2wmw"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cgg0sfm2qeiwn" path="res://Items/Weapons/Bow.tscn" id="31_mofvy"]
 | 
					[ext_resource type="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="33_3qyfl"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"]
 | 
					[ext_resource type="Resource" uid="uid://cjsh0dcgbfn77" path="res://Items/Weapons/Bow.tres" id="34_70ron"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://5y1acxl4j4n7" path="res://Items/Weapons/Pugio.tscn" id="32_6ffmm"]
 | 
					[ext_resource type="Resource" uid="uid://iqe6rgnb3jur" path="res://Items/Weapons/Pugio.tres" id="35_4pap1"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="38_6udj8"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"]
 | 
					[sub_resource type="ShaderMaterial" id="ShaderMaterial_h78y7"]
 | 
				
			||||||
shader = ExtResource("2_ngsgt")
 | 
					shader = ExtResource("2_ngsgt")
 | 
				
			||||||
| 
						 | 
					@ -44,6 +46,12 @@ shader_parameter/color = Vector4(1, 1, 1, 1)
 | 
				
			||||||
shader_parameter/intensity = 0.0
 | 
					shader_parameter/intensity = 0.0
 | 
				
			||||||
shader_parameter/alpha_modulate = 1.0
 | 
					shader_parameter/alpha_modulate = 1.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Resource" id="Resource_535hq"]
 | 
				
			||||||
 | 
					script = ExtResource("28_6gq8l")
 | 
				
			||||||
 | 
					duration = 1.0
 | 
				
			||||||
 | 
					transition = 0
 | 
				
			||||||
 | 
					ease = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_imqdv"]
 | 
					[sub_resource type="Animation" id="Animation_imqdv"]
 | 
				
			||||||
length = 0.001
 | 
					length = 0.001
 | 
				
			||||||
tracks/0/type = "value"
 | 
					tracks/0/type = "value"
 | 
				
			||||||
| 
						 | 
					@ -594,6 +602,14 @@ StateMachine = NodePath("StateMachine")
 | 
				
			||||||
Hurtbox = NodePath("Hurtbox")
 | 
					Hurtbox = NodePath("Hurtbox")
 | 
				
			||||||
Faction = 1
 | 
					Faction = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="PCamera" type="Node2D" parent="."]
 | 
				
			||||||
 | 
					script = ExtResource("27_mndpv")
 | 
				
			||||||
 | 
					priority = 1
 | 
				
			||||||
 | 
					follow_mode = 2
 | 
				
			||||||
 | 
					zoom = Vector2(4, 4)
 | 
				
			||||||
 | 
					tween_resource = SubResource("Resource_535hq")
 | 
				
			||||||
 | 
					draw_limits = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Stats" type="Node" parent="."]
 | 
					[node name="Stats" type="Node" parent="."]
 | 
				
			||||||
script = ExtResource("4_06oya")
 | 
					script = ExtResource("4_06oya")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -765,6 +781,7 @@ stream = ExtResource("12_vvem5")
 | 
				
			||||||
unique_name_in_owner = true
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Camera2D" parent="." instance=ExtResource("4_ym125")]
 | 
					[node name="Camera2D" parent="." instance=ExtResource("4_ym125")]
 | 
				
			||||||
 | 
					enabled = false
 | 
				
			||||||
zoom = Vector2(4, 4)
 | 
					zoom = Vector2(4, 4)
 | 
				
			||||||
position_smoothing_speed = 8.0
 | 
					position_smoothing_speed = 8.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -819,34 +836,8 @@ horizontal_alignment = 1
 | 
				
			||||||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
					[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
script = ExtResource("30_y2wmw")
 | 
					script = ExtResource("30_y2wmw")
 | 
				
			||||||
Hotbar = [NodePath("Sword"), NodePath("Bow"), NodePath("Pugio")]
 | 
					Hotbar = [null, null, null]
 | 
				
			||||||
InventoryMap = {
 | 
					Items = Array[Object]([ExtResource("33_3qyfl"), ExtResource("34_70ron"), ExtResource("35_4pap1")])
 | 
				
			||||||
"equip_1": 0,
 | 
					 | 
				
			||||||
"equip_2": 1,
 | 
					 | 
				
			||||||
"equip_3": 2
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Bow" parent="Inventory" node_paths=PackedStringArray("StateMachine") instance=ExtResource("31_mofvy")]
 | 
					 | 
				
			||||||
visible = false
 | 
					 | 
				
			||||||
StateMachine = NodePath("StateMachine")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Sword" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") instance=ExtResource("31_ql4as")]
 | 
					 | 
				
			||||||
visible = false
 | 
					 | 
				
			||||||
Hitbox = NodePath("Hitbox")
 | 
					 | 
				
			||||||
AnimationPlayer = NodePath("AnimationPlayer")
 | 
					 | 
				
			||||||
ParryParticles = NodePath("Anchor/Node2D/Sprite2D/ParryParticles")
 | 
					 | 
				
			||||||
StateMachine = NodePath("State")
 | 
					 | 
				
			||||||
Anchor = NodePath("Anchor")
 | 
					 | 
				
			||||||
HandAnchor = NodePath("Anchor/Node2D/Sprite2D/Hand")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Pugio" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") instance=ExtResource("32_6ffmm")]
 | 
					 | 
				
			||||||
visible = false
 | 
					 | 
				
			||||||
Hitbox = NodePath("Hitbox")
 | 
					 | 
				
			||||||
AnimationPlayer = NodePath("AnimationPlayer")
 | 
					 | 
				
			||||||
ParryParticles = NodePath("Anchor/Node2D/Sprite2D/ParryParticles")
 | 
					 | 
				
			||||||
StateMachine = NodePath("State")
 | 
					 | 
				
			||||||
Anchor = NodePath("Anchor")
 | 
					 | 
				
			||||||
HandAnchor = NodePath("Anchor/Node2D/Sprite2D/Hand")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")]
 | 
					[node name="Hurtbox" parent="." node_paths=PackedStringArray("InvincibilityTimer") instance=ExtResource("9_avyu4")]
 | 
				
			||||||
visible = false
 | 
					visible = false
 | 
				
			||||||
| 
						 | 
					@ -875,12 +866,12 @@ script = ExtResource("13_hs3u1")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="PointLight2D" type="PointLight2D" parent="."]
 | 
					[node name="PointLight2D" type="PointLight2D" parent="."]
 | 
				
			||||||
position = Vector2(0, -4)
 | 
					position = Vector2(0, -4)
 | 
				
			||||||
blend_mode = 2
 | 
					energy = 0.2
 | 
				
			||||||
shadow_enabled = true
 | 
					shadow_enabled = true
 | 
				
			||||||
shadow_filter = 2
 | 
					shadow_filter = 2
 | 
				
			||||||
shadow_filter_smooth = 3.0
 | 
					shadow_filter_smooth = 3.0
 | 
				
			||||||
texture = ExtResource("15_3hahh")
 | 
					texture = ExtResource("38_6udj8")
 | 
				
			||||||
height = 10.0
 | 
					texture_scale = 0.5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="DamageTime" type="Node" parent="."]
 | 
					[node name="DamageTime" type="Node" parent="."]
 | 
				
			||||||
script = ExtResource("15_4xl06")
 | 
					script = ExtResource("15_4xl06")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -174,6 +174,7 @@ Sprite = NodePath("Sprites/Sprite2D")
 | 
				
			||||||
Inventory = NodePath("Inventory")
 | 
					Inventory = NodePath("Inventory")
 | 
				
			||||||
StateMachine = NodePath("StateMachine")
 | 
					StateMachine = NodePath("StateMachine")
 | 
				
			||||||
Hurtbox = NodePath("Hurtbox")
 | 
					Hurtbox = NodePath("Hurtbox")
 | 
				
			||||||
 | 
					Faction = 4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
 | 
					[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
 | 
				
			||||||
script = ExtResource("2_dhles")
 | 
					script = ExtResource("2_dhles")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,11 +91,6 @@ public class Parser
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else if (token.Type == TokenType.Grouping)
 | 
					        else if (token.Type == TokenType.Grouping)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (token.Value == ")")
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                throw new InterpreterException("Unexpected )",
 | 
					 | 
				
			||||||
                    token.Line, token.Column);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (prev is LiteralExpression l)
 | 
					            if (prev is LiteralExpression l)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                // this is a function call
 | 
					                // this is a function call
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,11 +17,9 @@ gradient = SubResource("Gradient_uqfn8")
 | 
				
			||||||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_yg5po"]
 | 
					[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_yg5po"]
 | 
				
			||||||
particle_flag_disable_z = true
 | 
					particle_flag_disable_z = true
 | 
				
			||||||
direction = Vector3(-1, 0, 0)
 | 
					direction = Vector3(-1, 0, 0)
 | 
				
			||||||
gravity = Vector3(0, 0, 0)
 | 
					 | 
				
			||||||
initial_velocity_min = 4.0
 | 
					initial_velocity_min = 4.0
 | 
				
			||||||
initial_velocity_max = 8.0
 | 
					initial_velocity_max = 8.0
 | 
				
			||||||
orbit_velocity_min = 0.0
 | 
					gravity = Vector3(0, 0, 0)
 | 
				
			||||||
orbit_velocity_max = 0.0
 | 
					 | 
				
			||||||
scale_min = 2.0
 | 
					scale_min = 2.0
 | 
				
			||||||
scale_max = 2.0
 | 
					scale_max = 2.0
 | 
				
			||||||
color_ramp = SubResource("GradientTexture1D_te0n4")
 | 
					color_ramp = SubResource("GradientTexture1D_te0n4")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,10 @@ public partial class DynamicDoor : StaticBody2D
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                // rebake navmesh so NPCs can correctly travel conditionally
 | 
					                // rebake navmesh so NPCs can correctly travel conditionally
 | 
				
			||||||
                GD.Print("Dynamic door updated; rebaking navmeshes...");
 | 
					                GD.Print("Dynamic door updated; rebaking navmeshes...");
 | 
				
			||||||
                navmesh.BakeNavigationPolygon();
 | 
					                if (!navmesh.IsBaking())
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    navmesh.BakeNavigationPolygon();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -85,7 +85,7 @@ tracks/2/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0, 0.7),
 | 
					"times": PackedFloat32Array(0, 0.7),
 | 
				
			||||||
"transitions": PackedFloat32Array(1, 1),
 | 
					"transitions": PackedFloat32Array(1, 1),
 | 
				
			||||||
"update": 0,
 | 
					"update": 0,
 | 
				
			||||||
"values": [0.5, 0.0]
 | 
					"values": [1.0, 0.0]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_g3m4l"]
 | 
					[sub_resource type="AnimationLibrary" id="AnimationLibrary_g3m4l"]
 | 
				
			||||||
| 
						 | 
					@ -105,6 +105,7 @@ ProjectileName = "Lightning"
 | 
				
			||||||
Hitbox = NodePath("Hitbox")
 | 
					Hitbox = NodePath("Hitbox")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
 | 
					[node name="Sprite2D" type="Sprite2D" parent="."]
 | 
				
			||||||
 | 
					modulate = Color(4, 4, 4, 1)
 | 
				
			||||||
material = SubResource("CanvasItemMaterial_3bsa7")
 | 
					material = SubResource("CanvasItemMaterial_3bsa7")
 | 
				
			||||||
position = Vector2(0, 8)
 | 
					position = Vector2(0, 8)
 | 
				
			||||||
texture = ExtResource("1_bf8ae")
 | 
					texture = ExtResource("1_bf8ae")
 | 
				
			||||||
| 
						 | 
					@ -119,6 +120,7 @@ libraries = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hitbox" parent="." instance=ExtResource("3_vlt1v")]
 | 
					[node name="Hitbox" parent="." instance=ExtResource("3_vlt1v")]
 | 
				
			||||||
collision_layer = 0
 | 
					collision_layer = 0
 | 
				
			||||||
 | 
					priority = 5
 | 
				
			||||||
Damage = 20.0
 | 
					Damage = 20.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape2D" parent="Hitbox" index="0"]
 | 
					[node name="CollisionShape2D" parent="Hitbox" index="0"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,59 +1,60 @@
 | 
				
			||||||
[gd_scene load_steps=12 format=3 uid="uid://c1w7t6irnohfx"]
 | 
					[gd_scene load_steps=13 format=3 uid="uid://c1w7t6irnohfx"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://har1bd5u4dq3" path="res://Assets/Sprites/Misc/torch.png" id="1_14bgb"]
 | 
					[ext_resource type="Texture2D" uid="uid://cyfyelyq3o15s" path="res://Assets/Sprites/Misc/torch-fire.png" id="1_gnoxc"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://bitpf645g0prl" path="res://Assets/Sprites/Misc/torch-base.png" id="2_cwgtj"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="2_hotvd"]
 | 
					[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="2_hotvd"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_js1l1"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_vnjya"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(0, 0, 8, 12)
 | 
					region = Rect2(0, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_gdxtl"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_l2emm"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(8, 0, 8, 12)
 | 
					region = Rect2(8, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_da7fw"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_03weu"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(16, 0, 8, 12)
 | 
					region = Rect2(16, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rpccx"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_1fqw1"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(24, 0, 8, 12)
 | 
					region = Rect2(24, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_crwu1"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_sj1bi"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(32, 0, 8, 12)
 | 
					region = Rect2(32, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_r3kxc"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_1xpxx"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(40, 0, 8, 12)
 | 
					region = Rect2(40, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_225la"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_dxfgw"]
 | 
				
			||||||
atlas = ExtResource("1_14bgb")
 | 
					atlas = ExtResource("1_gnoxc")
 | 
				
			||||||
region = Rect2(48, 0, 8, 12)
 | 
					region = Rect2(48, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="SpriteFrames" id="SpriteFrames_gf7ku"]
 | 
					[sub_resource type="SpriteFrames" id="SpriteFrames_gf7ku"]
 | 
				
			||||||
animations = [{
 | 
					animations = [{
 | 
				
			||||||
"frames": [{
 | 
					"frames": [{
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_js1l1")
 | 
					"texture": SubResource("AtlasTexture_vnjya")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_gdxtl")
 | 
					"texture": SubResource("AtlasTexture_l2emm")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_da7fw")
 | 
					"texture": SubResource("AtlasTexture_03weu")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_rpccx")
 | 
					"texture": SubResource("AtlasTexture_1fqw1")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_crwu1")
 | 
					"texture": SubResource("AtlasTexture_sj1bi")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_r3kxc")
 | 
					"texture": SubResource("AtlasTexture_1xpxx")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_225la")
 | 
					"texture": SubResource("AtlasTexture_dxfgw")
 | 
				
			||||||
}],
 | 
					}],
 | 
				
			||||||
"loop": true,
 | 
					"loop": true,
 | 
				
			||||||
"name": &"default",
 | 
					"name": &"default",
 | 
				
			||||||
| 
						 | 
					@ -64,18 +65,25 @@ animations = [{
 | 
				
			||||||
radius = 4.0
 | 
					radius = 4.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Torch" type="Node2D"]
 | 
					[node name="Torch" type="Node2D"]
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
 | 
					[node name="Sprites" type="Node2D" parent="."]
 | 
				
			||||||
texture_filter = 1
 | 
					
 | 
				
			||||||
position = Vector2(0, -10)
 | 
					[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Sprites"]
 | 
				
			||||||
 | 
					modulate = Color(3.5, 3.5, 3, 1)
 | 
				
			||||||
 | 
					position = Vector2(0, -14)
 | 
				
			||||||
sprite_frames = SubResource("SpriteFrames_gf7ku")
 | 
					sprite_frames = SubResource("SpriteFrames_gf7ku")
 | 
				
			||||||
autoplay = "default"
 | 
					autoplay = "default"
 | 
				
			||||||
frame_progress = 0.337799
 | 
					frame_progress = 0.337799
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Sprite2D" type="Sprite2D" parent="Sprites"]
 | 
				
			||||||
 | 
					position = Vector2(0, -8)
 | 
				
			||||||
 | 
					texture = ExtResource("2_cwgtj")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="PointLight2D" type="PointLight2D" parent="."]
 | 
					[node name="PointLight2D" type="PointLight2D" parent="."]
 | 
				
			||||||
color = Color(1, 0.976471, 0.92549, 1)
 | 
					color = Color(1, 0.811765, 0.537255, 1)
 | 
				
			||||||
 | 
					energy = 1.2
 | 
				
			||||||
blend_mode = 2
 | 
					blend_mode = 2
 | 
				
			||||||
shadow_enabled = true
 | 
					 | 
				
			||||||
shadow_filter_smooth = 3.0
 | 
					shadow_filter_smooth = 3.0
 | 
				
			||||||
texture = ExtResource("2_hotvd")
 | 
					texture = ExtResource("2_hotvd")
 | 
				
			||||||
offset = Vector2(0, 2)
 | 
					offset = Vector2(0, 2)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,94 +1,96 @@
 | 
				
			||||||
[gd_scene load_steps=16 format=3 uid="uid://ceadk7pam7vab"]
 | 
					[gd_scene load_steps=18 format=3 uid="uid://ceadk7pam7vab"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://cyldr0ck3yfrp" path="res://Assets/Sprites/Misc/torch-lamp.png" id="1_dlkl0"]
 | 
					 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="2_0xpf8"]
 | 
					[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="2_0xpf8"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://c1garalf1clsp" path="res://Assets/Sprites/Misc/flame-large.png" id="2_a6lwn"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://ca0htndnsb38k" path="res://Assets/Sprites/Misc/torch-lamp-base.png" id="2_bq1kw"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://i5ksh8i0q48o" path="res://Assets/Sprites/Misc/torch-lamp-base-back.png" id="3_vh465"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_ikvnd"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_dtmd3"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(0, 0, 12, 24)
 | 
					region = Rect2(0, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_b7wal"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_irtpk"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(12, 0, 12, 24)
 | 
					region = Rect2(12, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_68y2k"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_0gb20"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(24, 0, 12, 24)
 | 
					region = Rect2(24, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eib4d"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_5uhdg"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(36, 0, 12, 24)
 | 
					region = Rect2(36, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_7q5cd"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_e4moo"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(48, 0, 12, 24)
 | 
					region = Rect2(48, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_k8jtr"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_soja6"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(60, 0, 12, 24)
 | 
					region = Rect2(60, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_egan1"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_sn741"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(72, 0, 12, 24)
 | 
					region = Rect2(72, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_eymjc"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_r825r"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(84, 0, 12, 24)
 | 
					region = Rect2(84, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_go3ky"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_75y5m"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(96, 0, 12, 24)
 | 
					region = Rect2(96, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_rvq52"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_l8r4c"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(108, 0, 12, 24)
 | 
					region = Rect2(108, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_cjdtb"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_7gxo8"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(120, 0, 12, 24)
 | 
					region = Rect2(120, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_vi5xh"]
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_60wov"]
 | 
				
			||||||
atlas = ExtResource("1_dlkl0")
 | 
					atlas = ExtResource("2_a6lwn")
 | 
				
			||||||
region = Rect2(132, 0, 12, 24)
 | 
					region = Rect2(132, 0, 12, 14)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="SpriteFrames" id="SpriteFrames_gf7ku"]
 | 
					[sub_resource type="SpriteFrames" id="SpriteFrames_gf7ku"]
 | 
				
			||||||
animations = [{
 | 
					animations = [{
 | 
				
			||||||
"frames": [{
 | 
					"frames": [{
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_ikvnd")
 | 
					"texture": SubResource("AtlasTexture_dtmd3")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_b7wal")
 | 
					"texture": SubResource("AtlasTexture_irtpk")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_68y2k")
 | 
					"texture": SubResource("AtlasTexture_0gb20")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_eib4d")
 | 
					"texture": SubResource("AtlasTexture_5uhdg")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_7q5cd")
 | 
					"texture": SubResource("AtlasTexture_e4moo")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_k8jtr")
 | 
					"texture": SubResource("AtlasTexture_soja6")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_egan1")
 | 
					"texture": SubResource("AtlasTexture_sn741")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_eymjc")
 | 
					"texture": SubResource("AtlasTexture_r825r")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_go3ky")
 | 
					"texture": SubResource("AtlasTexture_75y5m")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_rvq52")
 | 
					"texture": SubResource("AtlasTexture_l8r4c")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_cjdtb")
 | 
					"texture": SubResource("AtlasTexture_7gxo8")
 | 
				
			||||||
}, {
 | 
					}, {
 | 
				
			||||||
"duration": 1.0,
 | 
					"duration": 1.0,
 | 
				
			||||||
"texture": SubResource("AtlasTexture_vi5xh")
 | 
					"texture": SubResource("AtlasTexture_60wov")
 | 
				
			||||||
}],
 | 
					}],
 | 
				
			||||||
"loop": true,
 | 
					"loop": true,
 | 
				
			||||||
"name": &"default",
 | 
					"name": &"default",
 | 
				
			||||||
| 
						 | 
					@ -97,15 +99,26 @@ animations = [{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TorchLamp" type="Node2D"]
 | 
					[node name="TorchLamp" type="Node2D"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Sprite2D2" type="Sprite2D" parent="."]
 | 
				
			||||||
 | 
					texture = ExtResource("3_vh465")
 | 
				
			||||||
 | 
					centered = false
 | 
				
			||||||
 | 
					offset = Vector2(-6, -16)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
 | 
					[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
 | 
				
			||||||
 | 
					modulate = Color(2.5, 2, 2, 1)
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
texture_filter = 1
 | 
					texture_filter = 1
 | 
				
			||||||
 | 
					position = Vector2(0, -6)
 | 
				
			||||||
sprite_frames = SubResource("SpriteFrames_gf7ku")
 | 
					sprite_frames = SubResource("SpriteFrames_gf7ku")
 | 
				
			||||||
autoplay = "default"
 | 
					autoplay = "default"
 | 
				
			||||||
frame = 9
 | 
					frame_progress = 0.557817
 | 
				
			||||||
frame_progress = 0.966501
 | 
					 | 
				
			||||||
offset = Vector2(0, -12)
 | 
					offset = Vector2(0, -12)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Sprite2D" type="Sprite2D" parent="."]
 | 
				
			||||||
 | 
					texture = ExtResource("2_bq1kw")
 | 
				
			||||||
 | 
					centered = false
 | 
				
			||||||
 | 
					offset = Vector2(-6, -16)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="PointLight2D" type="PointLight2D" parent="."]
 | 
					[node name="PointLight2D" type="PointLight2D" parent="."]
 | 
				
			||||||
color = Color(1, 0.811765, 0.537255, 1)
 | 
					color = Color(1, 0.811765, 0.537255, 1)
 | 
				
			||||||
energy = 1.2
 | 
					energy = 1.2
 | 
				
			||||||
| 
						 | 
					@ -113,3 +126,13 @@ blend_mode = 2
 | 
				
			||||||
shadow_filter_smooth = 3.0
 | 
					shadow_filter_smooth = 3.0
 | 
				
			||||||
texture = ExtResource("2_0xpf8")
 | 
					texture = ExtResource("2_0xpf8")
 | 
				
			||||||
texture_scale = 0.25
 | 
					texture_scale = 0.25
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="PointLight2D2" type="PointLight2D" parent="."]
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					color = Color(1, 0.811765, 0.537255, 1)
 | 
				
			||||||
 | 
					energy = 1.2
 | 
				
			||||||
 | 
					blend_mode = 2
 | 
				
			||||||
 | 
					range_item_cull_mask = 8
 | 
				
			||||||
 | 
					shadow_filter_smooth = 3.0
 | 
				
			||||||
 | 
					texture = ExtResource("2_0xpf8")
 | 
				
			||||||
 | 
					texture_scale = 0.25
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ public partial class UnwantedFrequency : Projectile, Utils.ITarget
 | 
				
			||||||
        TrailPosition.Position = new Vector2(0, 4 * Mathf.Sin(radians));
 | 
					        TrailPosition.Position = new Vector2(0, 4 * Mathf.Sin(radians));
 | 
				
			||||||
        TrailPosition2.Position = -TrailPosition.Position;
 | 
					        TrailPosition2.Position = -TrailPosition.Position;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (CharacterTarget is not null)
 | 
					        if (CharacterTarget is not null && IsInstanceValid(CharacterTarget))
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var pos = CharacterTarget.GlobalPosition;
 | 
					            var pos = CharacterTarget.GlobalPosition;
 | 
				
			||||||
            var desired = GlobalPosition.DirectionTo(pos);
 | 
					            var desired = GlobalPosition.DirectionTo(pos);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
[gd_scene load_steps=24 format=3 uid="uid://1y5r6sklwgrp"]
 | 
					[gd_scene load_steps=25 format=3 uid="uid://1y5r6sklwgrp"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://Entities/UnwantedFrequency.cs" id="1_6sbe0"]
 | 
					[ext_resource type="Script" path="res://Entities/UnwantedFrequency.cs" id="1_6sbe0"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://du5vhccg75nrq" path="res://BoundingBoxes/Hitbox.tscn" id="2_gxtvd"]
 | 
					[ext_resource type="PackedScene" uid="uid://du5vhccg75nrq" path="res://BoundingBoxes/Hitbox.tscn" id="2_gxtvd"]
 | 
				
			||||||
| 
						 | 
					@ -10,17 +10,20 @@
 | 
				
			||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_30y8q"]
 | 
					[sub_resource type="RectangleShape2D" id="RectangleShape2D_30y8q"]
 | 
				
			||||||
size = Vector2(8, 8)
 | 
					size = Vector2(8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_dhurx"]
 | 
				
			||||||
 | 
					light_mode = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Curve" id="Curve_eu273"]
 | 
					[sub_resource type="Curve" id="Curve_eu273"]
 | 
				
			||||||
_data = [Vector2(0.0618557, 0), 0.0, 0.0, 0, 0, Vector2(0.489691, 1), 0.0, 0.0, 0, 0]
 | 
					_data = [Vector2(0.0618557, 0), 0.0, 0.0, 0, 0, Vector2(0.489691, 1), 0.0, 0.0, 0, 0]
 | 
				
			||||||
point_count = 2
 | 
					point_count = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Gradient" id="Gradient_dyqhb"]
 | 
					[sub_resource type="Gradient" id="Gradient_dyqhb"]
 | 
				
			||||||
offsets = PackedFloat32Array(0.00662252, 0.715232, 1)
 | 
					offsets = PackedFloat32Array(0.00662252, 0.715232, 1)
 | 
				
			||||||
colors = PackedColorArray(0.996078, 0, 0.164706, 0, 0.996045, 0, 0.166638, 1, 1, 1, 1, 1)
 | 
					colors = PackedColorArray(0.996078, 0, 0.164706, 0, 1.992, 0, 0.334, 1, 2, 2, 2, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Gradient" id="Gradient_m1y6u"]
 | 
					[sub_resource type="Gradient" id="Gradient_m1y6u"]
 | 
				
			||||||
offsets = PackedFloat32Array(0.00662252, 0.715232, 1)
 | 
					offsets = PackedFloat32Array(0.00662252, 0.715232, 1)
 | 
				
			||||||
colors = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1)
 | 
					colors = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Gradient" id="Gradient_2q0ut"]
 | 
					[sub_resource type="Gradient" id="Gradient_2q0ut"]
 | 
				
			||||||
offsets = PackedFloat32Array(0.525926, 0.740741, 1)
 | 
					offsets = PackedFloat32Array(0.525926, 0.740741, 1)
 | 
				
			||||||
| 
						 | 
					@ -132,11 +135,14 @@ Knockback = 324.0
 | 
				
			||||||
shape = SubResource("RectangleShape2D_30y8q")
 | 
					shape = SubResource("RectangleShape2D_30y8q")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TrailRotation" type="Node2D" parent="."]
 | 
					[node name="TrailRotation" type="Node2D" parent="."]
 | 
				
			||||||
 | 
					material = SubResource("CanvasItemMaterial_dhurx")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TrailPosition" type="Node2D" parent="TrailRotation"]
 | 
					[node name="TrailPosition" type="Node2D" parent="TrailRotation"]
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Trail" parent="TrailRotation/TrailPosition" instance=ExtResource("3_67uhs")]
 | 
					[node name="Trail" parent="TrailRotation/TrailPosition" instance=ExtResource("3_67uhs")]
 | 
				
			||||||
self_modulate = Color(2, 2, 2, 1)
 | 
					self_modulate = Color(2, 2, 2, 1)
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
width = 2.0
 | 
					width = 2.0
 | 
				
			||||||
width_curve = SubResource("Curve_eu273")
 | 
					width_curve = SubResource("Curve_eu273")
 | 
				
			||||||
default_color = Color(1, 0.0862745, 0.207843, 1)
 | 
					default_color = Color(1, 0.0862745, 0.207843, 1)
 | 
				
			||||||
| 
						 | 
					@ -148,9 +154,11 @@ MaximumPoints = 64
 | 
				
			||||||
Frequency = 30
 | 
					Frequency = 30
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TrailPosition2" type="Node2D" parent="TrailRotation"]
 | 
					[node name="TrailPosition2" type="Node2D" parent="TrailRotation"]
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Trail" parent="TrailRotation/TrailPosition2" instance=ExtResource("3_67uhs")]
 | 
					[node name="Trail" parent="TrailRotation/TrailPosition2" instance=ExtResource("3_67uhs")]
 | 
				
			||||||
self_modulate = Color(2, 2, 2, 1)
 | 
					self_modulate = Color(2, 2, 2, 1)
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
width = 2.0
 | 
					width = 2.0
 | 
				
			||||||
width_curve = SubResource("Curve_eu273")
 | 
					width_curve = SubResource("Curve_eu273")
 | 
				
			||||||
gradient = SubResource("Gradient_m1y6u")
 | 
					gradient = SubResource("Gradient_m1y6u")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,9 @@ public partial class EventBus : Node
 | 
				
			||||||
    [Signal]
 | 
					    [Signal]
 | 
				
			||||||
    public delegate void PlayerStunEventHandler();
 | 
					    public delegate void PlayerStunEventHandler();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Signal]
 | 
				
			||||||
 | 
					    public delegate void PlayerOpenInventoryEventHandler(Items.Inventory inventory);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Signal]
 | 
					    [Signal]
 | 
				
			||||||
    public delegate void RegisteredBossEventHandler(Characters.Boss boss);
 | 
					    public delegate void RegisteredBossEventHandler(Characters.Boss boss);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
using Godot;
 | 
					using Godot;
 | 
				
			||||||
 | 
					using IEnumerableNode = System.Collections.Generic.IEnumerable<Godot.Node>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace SupaLidlGame.Extensions;
 | 
					namespace SupaLidlGame.Extensions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -55,4 +56,13 @@ public static class NodeExtensions
 | 
				
			||||||
        return node.GetNode<UI.UIController>("/root/BaseUI/" +
 | 
					        return node.GetNode<UI.UIController>("/root/BaseUI/" +
 | 
				
			||||||
            "SubViewportContainer/UIViewport/CanvasLayer/MainUILayer/Main");
 | 
					            "SubViewportContainer/UIViewport/CanvasLayer/MainUILayer/Main");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static IEnumerableNode GetChildrenEnumerable(this Node node)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        int childCount = node.GetChildCount();
 | 
				
			||||||
 | 
					        for (int i = 0; i < childCount; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            yield return node.GetChild(i);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,10 +11,11 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Array<Item> Hotbar { get; private set; }
 | 
					    public Array<Item> Hotbar { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    public Array<int> HotbarToItemIndexMap { get; set; } = new();
 | 
				
			||||||
    public Array<ItemMetadata> Items { get; private set; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Array<ItemMetadata> Items { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Dictionary<string, int> InventoryMap { get; set; }
 | 
					    public Dictionary<string, int> InventoryMap { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Signal]
 | 
					    [Signal]
 | 
				
			||||||
| 
						 | 
					@ -62,6 +63,12 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public bool IsUsingItem => SelectedItem?.IsUsing ?? false;
 | 
					    public bool IsUsingItem => SelectedItem?.IsUsing ?? false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Inventory()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        HotbarToItemIndexMap.Resize(HotbarCapacity);
 | 
				
			||||||
 | 
					        HotbarToItemIndexMap.Fill(-1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Ready()
 | 
					    public override void _Ready()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (Hotbar is null)
 | 
					        if (Hotbar is null)
 | 
				
			||||||
| 
						 | 
					@ -69,6 +76,7 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
            // instantiating a new array will prevent characters from
 | 
					            // instantiating a new array will prevent characters from
 | 
				
			||||||
            // sharing inventories
 | 
					            // sharing inventories
 | 
				
			||||||
            Hotbar = new();
 | 
					            Hotbar = new();
 | 
				
			||||||
 | 
					            Hotbar.Resize(HotbarCapacity);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (Items is null)
 | 
					        if (Items is null)
 | 
				
			||||||
| 
						 | 
					@ -111,8 +119,6 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        EmitSignal(SignalName.EquippedItem, prevItem, _selectedItem);
 | 
					        EmitSignal(SignalName.EquippedItem, prevItem, _selectedItem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        GD.Print($"Inventory: {index} is new selected index.");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -156,6 +162,47 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
        return item;
 | 
					        return item;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Item SetHotbarIndexToItemIndex(int hotbarIndex, int itemIndex)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        HotbarToItemIndexMap[hotbarIndex] = itemIndex;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (itemIndex >= 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return SetHotbarIndexToItem(hotbarIndex, Items[itemIndex]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Item SetHotbarIndexToItem(int index, ItemMetadata metadata)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        var oldItem = Hotbar[index];
 | 
				
			||||||
 | 
					        Item newItem = null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (IsInstanceValid(oldItem))
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            oldItem?.QueueFree();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (metadata is not null)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            newItem = metadata.Instance.Instantiate<Item>();
 | 
				
			||||||
 | 
					            AddChild(newItem);
 | 
				
			||||||
 | 
					            Hotbar[index] = newItem;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (SelectedIndex == index)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // equip item if the hotbar index we are setting is selected
 | 
				
			||||||
 | 
					            EquipIndex(index);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var bus = Events.EventBus.Instance;
 | 
				
			||||||
 | 
					        bus.EmitSignal(Events.EventBus.SignalName.PlayerInventoryUpdate, this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return newItem;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Item AddItem(Item item)
 | 
					    public Item AddItem(Item item)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if (Hotbar.Count >= HotbarCapacity)
 | 
					        if (Hotbar.Count >= HotbarCapacity)
 | 
				
			||||||
| 
						 | 
					@ -192,6 +239,21 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public bool Remove(ItemMetadata item)
 | 
					    public bool Remove(ItemMetadata item)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        int indexInInventory = Items.IndexOf(item);
 | 
				
			||||||
 | 
					        if (indexInInventory < 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // remove instances of item from hotbar
 | 
				
			||||||
 | 
					        int indexInHotbar = HotbarToItemIndexMap.IndexOf(indexInInventory);
 | 
				
			||||||
 | 
					        if (indexInHotbar >= 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            HotbarToItemIndexMap[indexInHotbar] = -1;
 | 
				
			||||||
 | 
					            Hotbar[indexInHotbar].QueueFree();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Items[indexInInventory] = null;
 | 
				
			||||||
        return Items.Remove(item);
 | 
					        return Items.Remove(item);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,4 +65,15 @@ public abstract partial class Item : Node2D
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public virtual void Remove()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (IsUsing)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Deuse();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Unequip(CharacterOwner);
 | 
				
			||||||
 | 
					        QueueFree();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
using Godot;
 | 
					using Godot;
 | 
				
			||||||
 | 
					using SupaLidlGame.Extensions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace SupaLidlGame.Items.Weapons;
 | 
					namespace SupaLidlGame.Items.Weapons;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,19 +9,47 @@ public partial class Bow : ProjectileSpawner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected Area2D _ignitionArea;
 | 
					    protected Area2D _ignitionArea;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected override void SpawnProjectile(Scenes.Map map,
 | 
					    protected override Entities.Projectile SpawnProjectile(Scenes.Map map,
 | 
				
			||||||
        Vector2 direction, float velocityModifier = 1)
 | 
					        Vector2 direction, float velocityModifier = 1)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        base.SpawnProjectile(map, direction, velocityModifier);
 | 
					        var projectile = base.SpawnProjectile(map, direction, velocityModifier);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (_isOnFire)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var flame = GetNode<AnimatedSprite2D>("%Flame");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var newFlame = flame.Duplicate() as Node2D;
 | 
				
			||||||
 | 
					            projectile.AddChild(newFlame);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            newFlame.Position = Vector2.Zero;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            flame.Visible = false;
 | 
				
			||||||
 | 
					            // TODO: instead of doing 1.5x damage, create an "On Fire" debuff
 | 
				
			||||||
 | 
					            projectile.Hitbox.Damage *= 1.5f;
 | 
				
			||||||
 | 
					            _isOnFire = false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return projectile;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Ready()
 | 
					    public override void _Ready()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        base._Ready();
 | 
					        base._Ready();
 | 
				
			||||||
        _ignitionArea = GetNode<Area2D>("IgnitionArea");
 | 
					        _ignitionArea = GetNode<Area2D>("IgnitionArea");
 | 
				
			||||||
        _ignitionArea.AreaEntered += (Area2D area) =>
 | 
					        var onAreaEntered = (Area2D area) =>
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _isOnFire = false;
 | 
					            if (!_isOnFire)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var flame = GetNode<AnimatedSprite2D>("%Flame");
 | 
				
			||||||
 | 
					                flame.Visible = true;
 | 
				
			||||||
 | 
					                flame.GetNode<AudioStreamPlayer2D>("Ignite")
 | 
				
			||||||
 | 
					                    .OnWorld()
 | 
				
			||||||
 | 
					                    .PlayOneShot();
 | 
				
			||||||
 | 
					                _isOnFire = true;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					        _ignitionArea.Connect(
 | 
				
			||||||
 | 
					            Area2D.SignalName.AreaEntered,
 | 
				
			||||||
 | 
					            Callable.From(onAreaEntered));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,15 +1,75 @@
 | 
				
			||||||
[gd_scene load_steps=17 format=3 uid="uid://cgg0sfm2qeiwn"]
 | 
					[gd_scene load_steps=29 format=3 uid="uid://cgg0sfm2qeiwn"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://dam6aigkw8xs" path="res://Assets/Sprites/Items/bow-and-arrow.png" id="1_1ghvv"]
 | 
					[ext_resource type="Texture2D" uid="uid://dam6aigkw8xs" path="res://Assets/Sprites/Items/bow-and-arrow.png" id="1_1ghvv"]
 | 
				
			||||||
[ext_resource type="Script" path="res://Items/Weapons/ProjectileSpawner.cs" id="1_76bur"]
 | 
					[ext_resource type="Script" path="res://Items/Weapons/Bow.cs" id="1_ikgu2"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cjiftn2suskla" path="res://Entities/Arrow.tscn" id="2_mvw0j"]
 | 
					[ext_resource type="PackedScene" uid="uid://cjiftn2suskla" path="res://Entities/Arrow.tscn" id="2_mvw0j"]
 | 
				
			||||||
[ext_resource type="Resource" uid="uid://cjsh0dcgbfn77" path="res://Items/Weapons/Bow.tres" id="3_j7q7r"]
 | 
					 | 
				
			||||||
[ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="3_pg4gy"]
 | 
					[ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="3_pg4gy"]
 | 
				
			||||||
[ext_resource type="Script" path="res://State/Weapon/RangedIdleState.cs" id="3_uxif8"]
 | 
					[ext_resource type="Script" path="res://State/Weapon/RangedIdleState.cs" id="3_uxif8"]
 | 
				
			||||||
[ext_resource type="Script" path="res://State/Weapon/RangedFireState.cs" id="4_moo4d"]
 | 
					[ext_resource type="Script" path="res://State/Weapon/RangedFireState.cs" id="4_moo4d"]
 | 
				
			||||||
[ext_resource type="Script" path="res://State/Weapon/RangedChargeState.cs" id="5_k8y6f"]
 | 
					[ext_resource type="Script" path="res://State/Weapon/RangedChargeState.cs" id="5_k8y6f"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://State/Weapon/BowAltState.cs" id="7_l73rl"]
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://bkekgj4gu7fw4" path="res://Assets/Sounds/bow-draw.wav" id="7_t07v0"]
 | 
					[ext_resource type="AudioStream" uid="uid://bkekgj4gu7fw4" path="res://Assets/Sounds/bow-draw.wav" id="7_t07v0"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://coarr28adgo1u" path="res://Assets/Sprites/Particles/point-light.png" id="9_tk6lc"]
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://cwy4giq8eod5g" path="res://Assets/Sounds/bow-release.wav" id="9_v051g"]
 | 
					[ext_resource type="AudioStream" uid="uid://cwy4giq8eod5g" path="res://Assets/Sounds/bow-release.wav" id="9_v051g"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://dj1vsctgh1scr" path="res://Assets/Sprites/Misc/flame.png" id="9_xwcvy"]
 | 
				
			||||||
 | 
					[ext_resource type="AudioStream" uid="uid://braj74by0oowo" path="res://Assets/Sounds/fire-burst-flash.wav" id="11_65ega"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_5af70"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(0, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_bct7o"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(8, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_fhtjn"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(16, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_si88l"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(24, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_ap5vw"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(32, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_uad0p"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(40, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AtlasTexture" id="AtlasTexture_cxv2f"]
 | 
				
			||||||
 | 
					atlas = ExtResource("9_xwcvy")
 | 
				
			||||||
 | 
					region = Rect2(48, 0, 8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="SpriteFrames" id="SpriteFrames_b2khh"]
 | 
				
			||||||
 | 
					animations = [{
 | 
				
			||||||
 | 
					"frames": [{
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_5af70")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_bct7o")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_fhtjn")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_si88l")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_ap5vw")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_uad0p")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"duration": 1.0,
 | 
				
			||||||
 | 
					"texture": SubResource("AtlasTexture_cxv2f")
 | 
				
			||||||
 | 
					}],
 | 
				
			||||||
 | 
					"loop": true,
 | 
				
			||||||
 | 
					"name": &"default",
 | 
				
			||||||
 | 
					"speed": 10.0
 | 
				
			||||||
 | 
					}]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_h0fti"]
 | 
					[sub_resource type="Animation" id="Animation_h0fti"]
 | 
				
			||||||
resource_name = "RESET"
 | 
					resource_name = "RESET"
 | 
				
			||||||
| 
						 | 
					@ -25,6 +85,101 @@ tracks/0/keys = {
 | 
				
			||||||
"update": 1,
 | 
					"update": 1,
 | 
				
			||||||
"values": [0]
 | 
					"values": [0]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					tracks/1/type = "value"
 | 
				
			||||||
 | 
					tracks/1/imported = false
 | 
				
			||||||
 | 
					tracks/1/enabled = true
 | 
				
			||||||
 | 
					tracks/1/path = NodePath("Anchor/Flame:position")
 | 
				
			||||||
 | 
					tracks/1/interp = 1
 | 
				
			||||||
 | 
					tracks/1/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/1/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector2(15, -4)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/2/type = "value"
 | 
				
			||||||
 | 
					tracks/2/imported = false
 | 
				
			||||||
 | 
					tracks/2/enabled = true
 | 
				
			||||||
 | 
					tracks/2/path = NodePath("Anchor/Flame:visible")
 | 
				
			||||||
 | 
					tracks/2/interp = 1
 | 
				
			||||||
 | 
					tracks/2/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/2/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 1,
 | 
				
			||||||
 | 
					"values": [false]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Animation" id="Animation_bejvb"]
 | 
				
			||||||
 | 
					resource_name = "alt_fire"
 | 
				
			||||||
 | 
					step = 0.05
 | 
				
			||||||
 | 
					tracks/0/type = "value"
 | 
				
			||||||
 | 
					tracks/0/imported = false
 | 
				
			||||||
 | 
					tracks/0/enabled = true
 | 
				
			||||||
 | 
					tracks/0/path = NodePath("Anchor/Sprite2D:frame")
 | 
				
			||||||
 | 
					tracks/0/interp = 1
 | 
				
			||||||
 | 
					tracks/0/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/0/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1),
 | 
				
			||||||
 | 
					"update": 1,
 | 
				
			||||||
 | 
					"values": [0, 5, 0, 5, 0, 5, 0, 5, 0]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/1/type = "audio"
 | 
				
			||||||
 | 
					tracks/1/imported = false
 | 
				
			||||||
 | 
					tracks/1/enabled = true
 | 
				
			||||||
 | 
					tracks/1/path = NodePath("AudioStreamPlayer2D")
 | 
				
			||||||
 | 
					tracks/1/interp = 1
 | 
				
			||||||
 | 
					tracks/1/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/1/keys = {
 | 
				
			||||||
 | 
					"clips": [{
 | 
				
			||||||
 | 
					"end_offset": 0.0,
 | 
				
			||||||
 | 
					"start_offset": 0.03,
 | 
				
			||||||
 | 
					"stream": ExtResource("9_v051g")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"end_offset": 0.0,
 | 
				
			||||||
 | 
					"start_offset": 0.03,
 | 
				
			||||||
 | 
					"stream": ExtResource("9_v051g")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"end_offset": 0.0,
 | 
				
			||||||
 | 
					"start_offset": 0.03,
 | 
				
			||||||
 | 
					"stream": ExtResource("9_v051g")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"end_offset": 0.0,
 | 
				
			||||||
 | 
					"start_offset": 0.03,
 | 
				
			||||||
 | 
					"stream": ExtResource("9_v051g")
 | 
				
			||||||
 | 
					}, {
 | 
				
			||||||
 | 
					"end_offset": 0.0,
 | 
				
			||||||
 | 
					"start_offset": 0.03,
 | 
				
			||||||
 | 
					"stream": ExtResource("9_v051g")
 | 
				
			||||||
 | 
					}],
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.1998, 0.3996, 0.5994, 0.7992)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/1/use_blend = true
 | 
				
			||||||
 | 
					tracks/2/type = "value"
 | 
				
			||||||
 | 
					tracks/2/imported = false
 | 
				
			||||||
 | 
					tracks/2/enabled = true
 | 
				
			||||||
 | 
					tracks/2/path = NodePath("Anchor/Flame:position")
 | 
				
			||||||
 | 
					tracks/2/interp = 1
 | 
				
			||||||
 | 
					tracks/2/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/2/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector2(15, -4)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/3/type = "value"
 | 
				
			||||||
 | 
					tracks/3/imported = false
 | 
				
			||||||
 | 
					tracks/3/enabled = true
 | 
				
			||||||
 | 
					tracks/3/path = NodePath("Anchor/Flame:visible")
 | 
				
			||||||
 | 
					tracks/3/interp = 1
 | 
				
			||||||
 | 
					tracks/3/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/3/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 1,
 | 
				
			||||||
 | 
					"values": [false]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_8qr8x"]
 | 
					[sub_resource type="Animation" id="Animation_8qr8x"]
 | 
				
			||||||
resource_name = "charge"
 | 
					resource_name = "charge"
 | 
				
			||||||
| 
						 | 
					@ -56,8 +211,20 @@ tracks/1/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0)
 | 
					"times": PackedFloat32Array(0)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
tracks/1/use_blend = true
 | 
					tracks/1/use_blend = true
 | 
				
			||||||
 | 
					tracks/2/type = "value"
 | 
				
			||||||
 | 
					tracks/2/imported = false
 | 
				
			||||||
 | 
					tracks/2/enabled = true
 | 
				
			||||||
 | 
					tracks/2/path = NodePath("Anchor/Flame:position")
 | 
				
			||||||
 | 
					tracks/2/interp = 1
 | 
				
			||||||
 | 
					tracks/2/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/2/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
 | 
				
			||||||
 | 
					"update": 1,
 | 
				
			||||||
 | 
					"values": [Vector2(15, -4), Vector2(14, -4), Vector2(13, -4), Vector2(12, -4), Vector2(11, -4), Vector2(9, -4)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_bejvb"]
 | 
					[sub_resource type="Animation" id="Animation_j5qtq"]
 | 
				
			||||||
resource_name = "fire"
 | 
					resource_name = "fire"
 | 
				
			||||||
tracks/0/type = "value"
 | 
					tracks/0/type = "value"
 | 
				
			||||||
tracks/0/imported = false
 | 
					tracks/0/imported = false
 | 
				
			||||||
| 
						 | 
					@ -86,6 +253,30 @@ tracks/1/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0)
 | 
					"times": PackedFloat32Array(0)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
tracks/1/use_blend = true
 | 
					tracks/1/use_blend = true
 | 
				
			||||||
 | 
					tracks/2/type = "value"
 | 
				
			||||||
 | 
					tracks/2/imported = false
 | 
				
			||||||
 | 
					tracks/2/enabled = true
 | 
				
			||||||
 | 
					tracks/2/path = NodePath("Anchor/Flame:position")
 | 
				
			||||||
 | 
					tracks/2/interp = 1
 | 
				
			||||||
 | 
					tracks/2/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/2/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector2(15, -4)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/3/type = "value"
 | 
				
			||||||
 | 
					tracks/3/imported = false
 | 
				
			||||||
 | 
					tracks/3/enabled = true
 | 
				
			||||||
 | 
					tracks/3/path = NodePath("Anchor/Flame:visible")
 | 
				
			||||||
 | 
					tracks/3/interp = 1
 | 
				
			||||||
 | 
					tracks/3/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/3/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 1,
 | 
				
			||||||
 | 
					"values": [false]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_riv7t"]
 | 
					[sub_resource type="Animation" id="Animation_riv7t"]
 | 
				
			||||||
resource_name = "idle"
 | 
					resource_name = "idle"
 | 
				
			||||||
| 
						 | 
					@ -105,8 +296,9 @@ tracks/0/keys = {
 | 
				
			||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_5vx8d"]
 | 
					[sub_resource type="AnimationLibrary" id="AnimationLibrary_5vx8d"]
 | 
				
			||||||
_data = {
 | 
					_data = {
 | 
				
			||||||
"RESET": SubResource("Animation_h0fti"),
 | 
					"RESET": SubResource("Animation_h0fti"),
 | 
				
			||||||
 | 
					"alt_fire": SubResource("Animation_bejvb"),
 | 
				
			||||||
"charge": SubResource("Animation_8qr8x"),
 | 
					"charge": SubResource("Animation_8qr8x"),
 | 
				
			||||||
"fire": SubResource("Animation_bejvb"),
 | 
					"fire": SubResource("Animation_j5qtq"),
 | 
				
			||||||
"idle": SubResource("Animation_riv7t")
 | 
					"idle": SubResource("Animation_riv7t")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,27 +306,29 @@ _data = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Bow" type="Node2D" node_paths=PackedStringArray("StateMachine")]
 | 
					[node name="Bow" type="Node2D" node_paths=PackedStringArray("StateMachine")]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
script = ExtResource("1_76bur")
 | 
					script = ExtResource("1_ikgu2")
 | 
				
			||||||
Projectile = ExtResource("2_mvw0j")
 | 
					Projectile = ExtResource("2_mvw0j")
 | 
				
			||||||
ChargeTime = 0.5
 | 
					ChargeTime = 0.5
 | 
				
			||||||
StateMachine = NodePath("StateMachine")
 | 
					StateMachine = NodePath("StateMachine")
 | 
				
			||||||
Damage = 20.0
 | 
					Damage = 20.0
 | 
				
			||||||
UseTime = 0.5
 | 
					UseTime = 0.5
 | 
				
			||||||
 | 
					UseAltTime = 0.2
 | 
				
			||||||
Knockback = 64.0
 | 
					Knockback = 64.0
 | 
				
			||||||
InitialVelocity = 200.0
 | 
					InitialVelocity = 200.0
 | 
				
			||||||
ShouldFreezeAngleOnUse = false
 | 
					ShouldFreezeAngleOnUse = false
 | 
				
			||||||
PlayerLevelGain = 1.0
 | 
					PlayerLevelGain = 1.0
 | 
				
			||||||
Metadata = ExtResource("3_j7q7r")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState")]
 | 
					[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState")]
 | 
				
			||||||
script = ExtResource("3_pg4gy")
 | 
					script = ExtResource("3_pg4gy")
 | 
				
			||||||
InitialState = NodePath("Idle")
 | 
					InitialState = NodePath("Idle")
 | 
				
			||||||
UsedItemStates = Array[NodePath]([NodePath("Charge"), NodePath("Fire")])
 | 
					UsedItemStates = Array[NodePath]([NodePath("Charge"), NodePath("Fire")])
 | 
				
			||||||
 | 
					UsedItemAltStates = Array[NodePath]([NodePath("AltFire")])
 | 
				
			||||||
DeusedItemStates = Array[NodePath]([NodePath("Idle")])
 | 
					DeusedItemStates = Array[NodePath]([NodePath("Idle")])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("FireState", "Weapon", "AnimationPlayer")]
 | 
					[node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("FireState", "AltFireState", "Weapon", "AnimationPlayer")]
 | 
				
			||||||
script = ExtResource("3_uxif8")
 | 
					script = ExtResource("3_uxif8")
 | 
				
			||||||
FireState = NodePath("../Charge")
 | 
					FireState = NodePath("../Charge")
 | 
				
			||||||
 | 
					AltFireState = NodePath("../AltFire")
 | 
				
			||||||
Weapon = NodePath("../..")
 | 
					Weapon = NodePath("../..")
 | 
				
			||||||
AnimationPlayer = NodePath("../../AnimationPlayer")
 | 
					AnimationPlayer = NodePath("../../AnimationPlayer")
 | 
				
			||||||
AnimationKey = "idle"
 | 
					AnimationKey = "idle"
 | 
				
			||||||
| 
						 | 
					@ -154,6 +348,14 @@ IdleState = NodePath("../Idle")
 | 
				
			||||||
AnimationPlayer = NodePath("../../AnimationPlayer")
 | 
					AnimationPlayer = NodePath("../../AnimationPlayer")
 | 
				
			||||||
AnimationKey = "fire"
 | 
					AnimationKey = "fire"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="AltFire" type="Node" parent="StateMachine" node_paths=PackedStringArray("Bow", "IdleState", "AnimationPlayer")]
 | 
				
			||||||
 | 
					script = ExtResource("7_l73rl")
 | 
				
			||||||
 | 
					Bow = NodePath("../..")
 | 
				
			||||||
 | 
					IdleState = NodePath("../Idle")
 | 
				
			||||||
 | 
					AnimationPlayer = NodePath("../../AnimationPlayer")
 | 
				
			||||||
 | 
					AnimationKey = "alt_fire"
 | 
				
			||||||
 | 
					AngleDeviation = 30.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Anchor" type="Node2D" parent="."]
 | 
					[node name="Anchor" type="Node2D" parent="."]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
position = Vector2(0, 4)
 | 
					position = Vector2(0, 4)
 | 
				
			||||||
| 
						 | 
					@ -166,6 +368,25 @@ centered = false
 | 
				
			||||||
offset = Vector2(-8, -16)
 | 
					offset = Vector2(-8, -16)
 | 
				
			||||||
hframes = 8
 | 
					hframes = 8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Flame" type="AnimatedSprite2D" parent="Anchor"]
 | 
				
			||||||
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					visible = false
 | 
				
			||||||
 | 
					modulate = Color(3, 3, 3, 1)
 | 
				
			||||||
 | 
					position = Vector2(15, -4)
 | 
				
			||||||
 | 
					sprite_frames = SubResource("SpriteFrames_b2khh")
 | 
				
			||||||
 | 
					autoplay = "default"
 | 
				
			||||||
 | 
					frame_progress = 0.1652
 | 
				
			||||||
 | 
					offset = Vector2(0, -4)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="PointLight2D" type="PointLight2D" parent="Anchor/Flame"]
 | 
				
			||||||
 | 
					color = Color(1, 0.8, 0.701961, 1)
 | 
				
			||||||
 | 
					energy = 0.5
 | 
				
			||||||
 | 
					texture = ExtResource("9_tk6lc")
 | 
				
			||||||
 | 
					texture_scale = 0.13
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Ignite" type="AudioStreamPlayer2D" parent="Anchor/Flame"]
 | 
				
			||||||
 | 
					stream = ExtResource("11_65ega")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 | 
					[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 | 
				
			||||||
libraries = {
 | 
					libraries = {
 | 
				
			||||||
"": SubResource("AnimationLibrary_5vx8d")
 | 
					"": SubResource("AnimationLibrary_5vx8d")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,7 +33,7 @@ public partial class ProjectileSpawner : Ranged
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected virtual void SpawnProjectile(Scenes.Map map,
 | 
					    protected virtual Entities.Projectile SpawnProjectile(Scenes.Map map,
 | 
				
			||||||
        Vector2 direction, float velocityModifier = 1)
 | 
					        Vector2 direction, float velocityModifier = 1)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        var projectile = map.SpawnEntity<Entities.Projectile>(Projectile);
 | 
					        var projectile = map.SpawnEntity<Entities.Projectile>(Projectile);
 | 
				
			||||||
| 
						 | 
					@ -70,6 +70,7 @@ public partial class ProjectileSpawner : Ranged
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return projectile;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void Attack()
 | 
					    public override void Attack()
 | 
				
			||||||
| 
						 | 
					@ -85,6 +86,12 @@ public partial class ProjectileSpawner : Ranged
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Vector2 target = Character.Target.Normalized();
 | 
					        Vector2 target = Character.Target.Normalized();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (AngleDeviation > 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            float angle = (GD.Randf() - 0.5f) * AngleDeviation;
 | 
				
			||||||
 | 
					            target = target.Rotated(Mathf.DegToRad(angle));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (CharacterRecoil > 0)
 | 
					        if (CharacterRecoil > 0)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Character.ApplyImpulse(-target * CharacterRecoil);
 | 
					            Character.ApplyImpulse(-target * CharacterRecoil);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
[gd_scene load_steps=30 format=3 uid="uid://5y1acxl4j4n7"]
 | 
					[gd_scene load_steps=29 format=3 uid="uid://5y1acxl4j4n7"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://Items/Weapons/Sword.cs" id="1_mai31"]
 | 
					[ext_resource type="Script" path="res://Items/Weapons/Sword.cs" id="1_mai31"]
 | 
				
			||||||
[ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="2_5ramr"]
 | 
					[ext_resource type="Script" path="res://State/Weapon/WeaponStateMachine.cs" id="2_5ramr"]
 | 
				
			||||||
| 
						 | 
					@ -19,11 +19,6 @@
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://qvthq6tppp63" path="res://Assets/Sounds/whoosh.wav" id="12_a8o3x"]
 | 
					[ext_resource type="AudioStream" uid="uid://qvthq6tppp63" path="res://Assets/Sounds/whoosh.wav" id="12_a8o3x"]
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://c4n7ioxpukdwi" path="res://Assets/Sounds/parry.wav" id="13_t5wmj"]
 | 
					[ext_resource type="AudioStream" uid="uid://c4n7ioxpukdwi" path="res://Assets/Sounds/parry.wav" id="13_t5wmj"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Environment" id="Environment_72txp"]
 | 
					 | 
				
			||||||
background_mode = 3
 | 
					 | 
				
			||||||
glow_enabled = true
 | 
					 | 
				
			||||||
glow_hdr_threshold = 1.42
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="Animation" id="Animation_b7327"]
 | 
					[sub_resource type="Animation" id="Animation_b7327"]
 | 
				
			||||||
length = 0.001
 | 
					length = 0.001
 | 
				
			||||||
tracks/0/type = "value"
 | 
					tracks/0/type = "value"
 | 
				
			||||||
| 
						 | 
					@ -382,9 +377,6 @@ IdleState = NodePath("../Idle")
 | 
				
			||||||
UseState = NodePath("../Anticipate")
 | 
					UseState = NodePath("../Anticipate")
 | 
				
			||||||
BlockAnimKey = "block"
 | 
					BlockAnimKey = "block"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
 | 
					 | 
				
			||||||
environment = SubResource("Environment_72txp")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Anchor" type="Node2D" parent="."]
 | 
					[node name="Anchor" type="Node2D" parent="."]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
rotation = 3.14159
 | 
					rotation = 3.14159
 | 
				
			||||||
| 
						 | 
					@ -420,7 +412,6 @@ libraries = {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hitbox" parent="." instance=ExtResource("9_qimey")]
 | 
					[node name="Hitbox" parent="." instance=ExtResource("9_qimey")]
 | 
				
			||||||
priority = 5
 | 
					 | 
				
			||||||
IsDisabled = true
 | 
					IsDisabled = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape2D" parent="Hitbox" index="0"]
 | 
					[node name="CollisionShape2D" parent="Hitbox" index="0"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,12 +29,24 @@ public abstract partial class Ranged : Weapon
 | 
				
			||||||
        base.Use();
 | 
					        base.Use();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void UseAlt()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        StateMachine.UseAlt();
 | 
				
			||||||
 | 
					        base.Use();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void Deuse()
 | 
					    public override void Deuse()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        StateMachine.Deuse();
 | 
					        StateMachine.Deuse();
 | 
				
			||||||
        base.Deuse();
 | 
					        base.Deuse();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void DeuseAlt()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        StateMachine.DeuseAlt();
 | 
				
			||||||
 | 
					        base.Deuse();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Process(double delta)
 | 
					    public override void _Process(double delta)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        StateMachine.Process(delta);
 | 
					        StateMachine.Process(delta);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,9 +65,9 @@ tracks/0/path = NodePath("Anchor:position")
 | 
				
			||||||
tracks/0/interp = 1
 | 
					tracks/0/interp = 1
 | 
				
			||||||
tracks/0/loop_wrap = true
 | 
					tracks/0/loop_wrap = true
 | 
				
			||||||
tracks/0/keys = {
 | 
					tracks/0/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0, 0.5),
 | 
					"times": PackedFloat32Array(0, 0.2),
 | 
				
			||||||
"transitions": PackedFloat32Array(1, 1),
 | 
					"transitions": PackedFloat32Array(1, 1),
 | 
				
			||||||
"update": 1,
 | 
					"update": 0,
 | 
				
			||||||
"values": [Vector2(-4, 0), Vector2(0, 0)]
 | 
					"values": [Vector2(-4, 0), Vector2(0, 0)]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
tracks/1/type = "audio"
 | 
					tracks/1/type = "audio"
 | 
				
			||||||
| 
						 | 
					@ -92,10 +92,10 @@ tracks/2/path = NodePath("Anchor:rotation")
 | 
				
			||||||
tracks/2/interp = 1
 | 
					tracks/2/interp = 1
 | 
				
			||||||
tracks/2/loop_wrap = true
 | 
					tracks/2/loop_wrap = true
 | 
				
			||||||
tracks/2/keys = {
 | 
					tracks/2/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0, 1, 1.5),
 | 
					"times": PackedFloat32Array(0, 0.1, 1, 1.5),
 | 
				
			||||||
"transitions": PackedFloat32Array(1, 1, 1),
 | 
					"transitions": PackedFloat32Array(1, 1, 1, 1),
 | 
				
			||||||
"update": 0,
 | 
					"update": 0,
 | 
				
			||||||
"values": [6.28319, 6.28319, 0.0]
 | 
					"values": [6.19592, 6.28319, 6.28319, 0.0]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
tracks/3/type = "audio"
 | 
					tracks/3/type = "audio"
 | 
				
			||||||
tracks/3/imported = false
 | 
					tracks/3/imported = false
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -206,6 +206,11 @@ public partial class Sword : Weapon, IParryable
 | 
				
			||||||
                    this);
 | 
					                    this);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (Hitbox.Hits.Count > 0)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Character.ApplyImpulse(-Character.Target.Normalized() * Knockback);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void AttemptParry(Weapon otherWeapon)
 | 
					    public void AttemptParry(Weapon otherWeapon)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
[gd_scene load_steps=26 format=3 uid="uid://dvqap2uhcah63"]
 | 
					[gd_scene load_steps=25 format=3 uid="uid://dvqap2uhcah63"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://Items/Weapons/Sword.cs" id="1_mlo73"]
 | 
					[ext_resource type="Script" path="res://Items/Weapons/Sword.cs" id="1_mlo73"]
 | 
				
			||||||
[ext_resource type="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="2_atd4f"]
 | 
					[ext_resource type="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="2_atd4f"]
 | 
				
			||||||
| 
						 | 
					@ -16,11 +16,6 @@
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://cmvh6pc71ir1m" path="res://Assets/Sprites/sword-swing-large.png" id="10_672jv"]
 | 
					[ext_resource type="Texture2D" uid="uid://cmvh6pc71ir1m" path="res://Assets/Sprites/sword-swing-large.png" id="10_672jv"]
 | 
				
			||||||
[ext_resource type="AudioStream" uid="uid://qvthq6tppp63" path="res://Assets/Sounds/whoosh.wav" id="10_mfnl7"]
 | 
					[ext_resource type="AudioStream" uid="uid://qvthq6tppp63" path="res://Assets/Sounds/whoosh.wav" id="10_mfnl7"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Environment" id="Environment_72txp"]
 | 
					 | 
				
			||||||
background_mode = 3
 | 
					 | 
				
			||||||
glow_enabled = true
 | 
					 | 
				
			||||||
glow_hdr_threshold = 1.42
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="Curve" id="Curve_4cxtp"]
 | 
					[sub_resource type="Curve" id="Curve_4cxtp"]
 | 
				
			||||||
_data = [Vector2(0.00687286, 1), 0.0, 0.0, 0, 0, Vector2(0.879725, 0.190909), -2.93145, -2.93145, 0, 0, Vector2(1, 0.0454545), 0.0483926, 0.0, 0, 0]
 | 
					_data = [Vector2(0.00687286, 1), 0.0, 0.0, 0, 0, Vector2(0.879725, 0.190909), -2.93145, -2.93145, 0, 0, Vector2(1, 0.0454545), 0.0483926, 0.0, 0, 0]
 | 
				
			||||||
point_count = 3
 | 
					point_count = 3
 | 
				
			||||||
| 
						 | 
					@ -103,6 +98,18 @@ tracks/5/keys = {
 | 
				
			||||||
"update": 1,
 | 
					"update": 1,
 | 
				
			||||||
"values": [true]
 | 
					"values": [true]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					tracks/6/type = "value"
 | 
				
			||||||
 | 
					tracks/6/imported = false
 | 
				
			||||||
 | 
					tracks/6/enabled = true
 | 
				
			||||||
 | 
					tracks/6/path = NodePath("SwingSprite:position")
 | 
				
			||||||
 | 
					tracks/6/interp = 1
 | 
				
			||||||
 | 
					tracks/6/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/6/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector2(0, 0)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_ameas"]
 | 
					[sub_resource type="Animation" id="Animation_ameas"]
 | 
				
			||||||
resource_name = "anticipate"
 | 
					resource_name = "anticipate"
 | 
				
			||||||
| 
						 | 
					@ -173,7 +180,7 @@ tracks/0/path = NodePath("Anchor:rotation")
 | 
				
			||||||
tracks/0/interp = 1
 | 
					tracks/0/interp = 1
 | 
				
			||||||
tracks/0/loop_wrap = true
 | 
					tracks/0/loop_wrap = true
 | 
				
			||||||
tracks/0/keys = {
 | 
					tracks/0/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0, 0.15, 0.35),
 | 
					"times": PackedFloat32Array(0, 0.1, 0.35),
 | 
				
			||||||
"transitions": PackedFloat32Array(1, 1, 1),
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
"update": 1,
 | 
					"update": 1,
 | 
				
			||||||
"values": [-1.5708, 1.5708, 1.5708]
 | 
					"values": [-1.5708, 1.5708, 1.5708]
 | 
				
			||||||
| 
						 | 
					@ -209,10 +216,10 @@ tracks/3/path = NodePath("Anchor/Node2D:rotation")
 | 
				
			||||||
tracks/3/interp = 1
 | 
					tracks/3/interp = 1
 | 
				
			||||||
tracks/3/loop_wrap = true
 | 
					tracks/3/loop_wrap = true
 | 
				
			||||||
tracks/3/keys = {
 | 
					tracks/3/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0, 0.15),
 | 
					"times": PackedFloat32Array(0.1),
 | 
				
			||||||
"transitions": PackedFloat32Array(1, 1),
 | 
					"transitions": PackedFloat32Array(1),
 | 
				
			||||||
"update": 1,
 | 
					"update": 1,
 | 
				
			||||||
"values": [0.0, 2.35619]
 | 
					"values": [2.35619]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
tracks/4/type = "method"
 | 
					tracks/4/type = "method"
 | 
				
			||||||
tracks/4/imported = false
 | 
					tracks/4/imported = false
 | 
				
			||||||
| 
						 | 
					@ -235,10 +242,34 @@ tracks/5/path = NodePath("Anchor/Node2D/Sprite2D:visible")
 | 
				
			||||||
tracks/5/interp = 1
 | 
					tracks/5/interp = 1
 | 
				
			||||||
tracks/5/loop_wrap = true
 | 
					tracks/5/loop_wrap = true
 | 
				
			||||||
tracks/5/keys = {
 | 
					tracks/5/keys = {
 | 
				
			||||||
"times": PackedFloat32Array(0, 0.35),
 | 
					"times": PackedFloat32Array(0, 0.1, 0.35),
 | 
				
			||||||
"transitions": PackedFloat32Array(1, 1),
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
"update": 1,
 | 
					"update": 1,
 | 
				
			||||||
"values": [true, false]
 | 
					"values": [false, true, false]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/6/type = "value"
 | 
				
			||||||
 | 
					tracks/6/imported = false
 | 
				
			||||||
 | 
					tracks/6/enabled = true
 | 
				
			||||||
 | 
					tracks/6/path = NodePath("SwingSprite:modulate")
 | 
				
			||||||
 | 
					tracks/6/interp = 1
 | 
				
			||||||
 | 
					tracks/6/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/6/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.2, 0.35),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Color(2, 2, 2, 1), Color(2, 2, 2, 1), Color(2, 2, 2, 0)]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					tracks/7/type = "value"
 | 
				
			||||||
 | 
					tracks/7/imported = false
 | 
				
			||||||
 | 
					tracks/7/enabled = true
 | 
				
			||||||
 | 
					tracks/7/path = NodePath("SwingSprite:position")
 | 
				
			||||||
 | 
					tracks/7/interp = 1
 | 
				
			||||||
 | 
					tracks/7/loop_wrap = true
 | 
				
			||||||
 | 
					tracks/7/keys = {
 | 
				
			||||||
 | 
					"times": PackedFloat32Array(0, 0.2, 0.35),
 | 
				
			||||||
 | 
					"transitions": PackedFloat32Array(1, 1, 1),
 | 
				
			||||||
 | 
					"update": 0,
 | 
				
			||||||
 | 
					"values": [Vector2(0, 0), Vector2(0, 0), Vector2(2, 0)]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="Animation" id="Animation_pclfs"]
 | 
					[sub_resource type="Animation" id="Animation_pclfs"]
 | 
				
			||||||
| 
						 | 
					@ -344,9 +375,6 @@ script = ExtResource("5_hmisb")
 | 
				
			||||||
Sword = NodePath("../..")
 | 
					Sword = NodePath("../..")
 | 
				
			||||||
IdleState = NodePath("../Idle")
 | 
					IdleState = NodePath("../Idle")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
 | 
					 | 
				
			||||||
environment = SubResource("Environment_72txp")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Anchor" type="Node2D" parent="."]
 | 
					[node name="Anchor" type="Node2D" parent="."]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
rotation = -1.5708
 | 
					rotation = -1.5708
 | 
				
			||||||
| 
						 | 
					@ -389,7 +417,6 @@ libraries = {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Hitbox" parent="." instance=ExtResource("3_up3ob")]
 | 
					[node name="Hitbox" parent="." instance=ExtResource("3_up3ob")]
 | 
				
			||||||
priority = 5
 | 
					 | 
				
			||||||
IsDisabled = true
 | 
					IsDisabled = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CollisionShape2D" parent="Hitbox" index="0"]
 | 
					[node name="CollisionShape2D" parent="Hitbox" index="0"]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -111,6 +111,7 @@ offset_bottom = -8.0
 | 
				
			||||||
text = "Activate"
 | 
					text = "Activate"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Sprite2D" type="Sprite2D" parent="."]
 | 
					[node name="Sprite2D" type="Sprite2D" parent="."]
 | 
				
			||||||
 | 
					position = Vector2(0, -4)
 | 
				
			||||||
texture = ExtResource("3_pgkt4")
 | 
					texture = ExtResource("3_pgkt4")
 | 
				
			||||||
centered = false
 | 
					centered = false
 | 
				
			||||||
offset = Vector2(-2, -8)
 | 
					offset = Vector2(-2, -8)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,13 +1,10 @@
 | 
				
			||||||
[gd_scene load_steps=4 format=3 uid="uid://hm3ek8vqt1d4"]
 | 
					[gd_scene load_steps=3 format=3 uid="uid://hm3ek8vqt1d4"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://dwbrymm3ud5xu" path="res://Assets/Sprites/Props/bookshelf.png" id="1_cnrpk"]
 | 
					[ext_resource type="Texture2D" uid="uid://dwbrymm3ud5xu" path="res://Assets/Sprites/Props/bookshelf.png" id="1_cnrpk"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_wc4oe"]
 | 
					[sub_resource type="RectangleShape2D" id="RectangleShape2D_wc4oe"]
 | 
				
			||||||
size = Vector2(28, 8)
 | 
					size = Vector2(28, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_tsfmt"]
 | 
					 | 
				
			||||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Bookshelf" type="StaticBody2D"]
 | 
					[node name="Bookshelf" type="StaticBody2D"]
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,18 +26,17 @@ vframes = 2
 | 
				
			||||||
frame = 9
 | 
					frame = 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TopLeft" type="Sprite2D" parent="."]
 | 
					[node name="TopLeft" type="Sprite2D" parent="."]
 | 
				
			||||||
position = Vector2(-16, -16)
 | 
					position = Vector2(-16, 0)
 | 
				
			||||||
texture = ExtResource("1_cnrpk")
 | 
					texture = ExtResource("1_cnrpk")
 | 
				
			||||||
centered = false
 | 
					centered = false
 | 
				
			||||||
offset = Vector2(0, -16)
 | 
					offset = Vector2(0, -32)
 | 
				
			||||||
hframes = 8
 | 
					hframes = 8
 | 
				
			||||||
vframes = 2
 | 
					vframes = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TopRight" type="Sprite2D" parent="."]
 | 
					[node name="TopRight" type="Sprite2D" parent="."]
 | 
				
			||||||
position = Vector2(0, -16)
 | 
					 | 
				
			||||||
texture = ExtResource("1_cnrpk")
 | 
					texture = ExtResource("1_cnrpk")
 | 
				
			||||||
centered = false
 | 
					centered = false
 | 
				
			||||||
offset = Vector2(0, -16)
 | 
					offset = Vector2(0, -32)
 | 
				
			||||||
hframes = 8
 | 
					hframes = 8
 | 
				
			||||||
vframes = 2
 | 
					vframes = 2
 | 
				
			||||||
frame = 1
 | 
					frame = 1
 | 
				
			||||||
| 
						 | 
					@ -48,6 +44,3 @@ frame = 1
 | 
				
			||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
					[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
				
			||||||
position = Vector2(0, -4)
 | 
					position = Vector2(0, -4)
 | 
				
			||||||
shape = SubResource("RectangleShape2D_wc4oe")
 | 
					shape = SubResource("RectangleShape2D_wc4oe")
 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."]
 | 
					 | 
				
			||||||
navigation_polygon = SubResource("NavigationPolygon_tsfmt")
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,9 +7,8 @@ Forsen-related game
 | 
				
			||||||
## Building
 | 
					## Building
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> [!IMPORTANT]
 | 
					> [!IMPORTANT]
 | 
				
			||||||
> This is currently being developed with Godot 4.3 dev 3 snapshot, which
 | 
					> This is currently being developed with Godot 4.3 beta 1, which > includes
 | 
				
			||||||
> includes a fix for C# generics causing problems and resetting properties to
 | 
					a fix for C# generics causing problems and resetting properties to > null.
 | 
				
			||||||
> null.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Requires .NET version >=7.0.
 | 
					Requires .NET version >=7.0.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,45 +10,62 @@ physics_layer_1/collision_mask = 0
 | 
				
			||||||
[sub_resource type="Environment" id="Environment_pxx66"]
 | 
					[sub_resource type="Environment" id="Environment_pxx66"]
 | 
				
			||||||
background_mode = 3
 | 
					background_mode = 3
 | 
				
			||||||
glow_enabled = true
 | 
					glow_enabled = true
 | 
				
			||||||
glow_hdr_threshold = 1.4
 | 
					glow_hdr_threshold = 1.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="TileMap" type="TileMap" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
 | 
					[node name="TileMap" type="Node2D" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
 | 
				
			||||||
process_mode = 1
 | 
					process_mode = 1
 | 
				
			||||||
y_sort_enabled = true
 | 
					y_sort_enabled = true
 | 
				
			||||||
texture_filter = 3
 | 
					texture_filter = 3
 | 
				
			||||||
tile_set = SubResource("TileSet_18c7j")
 | 
					 | 
				
			||||||
format = 2
 | 
					 | 
				
			||||||
layer_0/name = "z-index 0"
 | 
					 | 
				
			||||||
layer_0/y_sort_enabled = true
 | 
					 | 
				
			||||||
layer_1/name = "z-index -1"
 | 
					 | 
				
			||||||
layer_1/y_sort_enabled = true
 | 
					 | 
				
			||||||
layer_1/z_index = -1
 | 
					 | 
				
			||||||
layer_1/tile_data = PackedInt32Array()
 | 
					 | 
				
			||||||
layer_2/name = "z-index -1 (under)"
 | 
					 | 
				
			||||||
layer_2/y_sort_enabled = true
 | 
					 | 
				
			||||||
layer_2/z_index = -1
 | 
					 | 
				
			||||||
layer_2/tile_data = PackedInt32Array()
 | 
					 | 
				
			||||||
layer_3/name = "z-index -2"
 | 
					 | 
				
			||||||
layer_3/y_sort_enabled = true
 | 
					 | 
				
			||||||
layer_3/z_index = -2
 | 
					 | 
				
			||||||
layer_3/tile_data = PackedInt32Array()
 | 
					 | 
				
			||||||
layer_4/name = "z-index -3"
 | 
					 | 
				
			||||||
layer_4/y_sort_enabled = true
 | 
					 | 
				
			||||||
layer_4/z_index = -3
 | 
					 | 
				
			||||||
layer_4/tile_data = PackedInt32Array()
 | 
					 | 
				
			||||||
layer_5/name = "Lower 1"
 | 
					 | 
				
			||||||
layer_5/z_index = -4
 | 
					 | 
				
			||||||
layer_5/tile_data = PackedInt32Array()
 | 
					 | 
				
			||||||
layer_6/name = "z-index 0 (walls)"
 | 
					 | 
				
			||||||
layer_6/y_sort_enabled = true
 | 
					 | 
				
			||||||
layer_6/y_sort_origin = -8
 | 
					 | 
				
			||||||
layer_6/tile_data = PackedInt32Array()
 | 
					 | 
				
			||||||
script = ExtResource("2_4m0a1")
 | 
					script = ExtResource("2_4m0a1")
 | 
				
			||||||
Entities = NodePath("Entities")
 | 
					Entities = NodePath("Entities")
 | 
				
			||||||
Areas = NodePath("Areas")
 | 
					Areas = NodePath("Areas")
 | 
				
			||||||
Spawners = NodePath("Spawners")
 | 
					Spawners = NodePath("Spawners")
 | 
				
			||||||
Markers = NodePath("Markers")
 | 
					Markers = NodePath("Markers")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Layers" type="Node2D" parent="."]
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index 0" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					texture_filter = 3
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index -1" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					z_index = -1
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index -1 (under)" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					z_index = -1
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index -2" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					z_index = -2
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index -3" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					z_index = -3
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index -4" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					z_index = -4
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="z-index 0 (walls)" type="TileMapLayer" parent="Layers"]
 | 
				
			||||||
 | 
					y_sort_enabled = true
 | 
				
			||||||
 | 
					use_parent_material = true
 | 
				
			||||||
 | 
					tile_set = SubResource("TileSet_18c7j")
 | 
				
			||||||
 | 
					y_sort_origin = -8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
 | 
					[node name="CanvasModulate" type="CanvasModulate" parent="."]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Props" type="Node2D" parent="."]
 | 
					[node name="Props" type="Node2D" parent="."]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
[gd_scene load_steps=3 format=3 uid="uid://1pb3mpmrl7lc"]
 | 
					[gd_scene load_steps=4 format=3 uid="uid://1pb3mpmrl7lc"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Script" path="res://Utils/World.cs" id="1_1k6ew"]
 | 
					[ext_resource type="Script" path="res://Utils/World.cs" id="1_1k6ew"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://c271rdjhd1gfo" path="res://UI/Base.tscn" id="2_mm0qt"]
 | 
					[ext_resource type="PackedScene" uid="uid://c271rdjhd1gfo" path="res://UI/Base.tscn" id="2_mm0qt"]
 | 
				
			||||||
 | 
					[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="3_ge4f0"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="World" type="Node2D" node_paths=PackedStringArray("MusicPlayer")]
 | 
					[node name="World" type="Node2D" node_paths=PackedStringArray("MusicPlayer")]
 | 
				
			||||||
process_mode = 3
 | 
					process_mode = 3
 | 
				
			||||||
| 
						 | 
					@ -24,3 +25,8 @@ mouse_filter = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
 | 
					[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
 | 
				
			||||||
bus = &"Music"
 | 
					bus = &"Music"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Camera2D" type="Camera2D" parent="."]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
 | 
				
			||||||
 | 
					script = ExtResource("3_ge4f0")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,10 @@
 | 
				
			||||||
using Godot;
 | 
					using Godot;
 | 
				
			||||||
using SupaLidlGame.Extensions;
 | 
					using SupaLidlGame.Extensions;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace SupaLidlGame.Scenes;
 | 
					namespace SupaLidlGame.Scenes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public partial class Map : TileMap
 | 
					public partial class Map : Node2D
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Node2D Entities { get; set; }
 | 
					    public Node2D Entities { get; set; }
 | 
				
			||||||
| 
						 | 
					@ -71,6 +72,17 @@ public partial class Map : TileMap
 | 
				
			||||||
        GetNode<Audio.AudioManager>("/root/AudioManager").PlayBackground(Music);
 | 
					        GetNode<Audio.AudioManager>("/root/AudioManager").PlayBackground(Music);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public IEnumerable<Characters.Character> GetCharacters()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach (var child in Entities.GetChildren())
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (child is Characters.Character c)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                yield return c;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Node SpawnEntity(PackedScene scene)
 | 
					    public Node SpawnEntity(PackedScene scene)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        var instance = scene.Instantiate();
 | 
					        var instance = scene.Instantiate();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					[gd_resource type="Environment" load_steps=3 format=3 uid="uid://bl15544uvuppq"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Gradient" id="Gradient_u5tnr"]
 | 
				
			||||||
 | 
					offsets = PackedFloat32Array(0, 0.933649, 1)
 | 
				
			||||||
 | 
					colors = PackedColorArray(0, 0, 0, 1, 0.938186, 0.874428, 0.818076, 1, 1, 1, 1, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="GradientTexture1D" id="GradientTexture1D_ri0vy"]
 | 
				
			||||||
 | 
					gradient = SubResource("Gradient_u5tnr")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					background_mode = 3
 | 
				
			||||||
 | 
					glow_enabled = true
 | 
				
			||||||
 | 
					glow_intensity = 4.0
 | 
				
			||||||
 | 
					adjustment_enabled = true
 | 
				
			||||||
 | 
					adjustment_saturation = 0.75
 | 
				
			||||||
 | 
					adjustment_color_correction = SubResource("GradientTexture1D_ri0vy")
 | 
				
			||||||
| 
						 | 
					@ -1,25 +1,17 @@
 | 
				
			||||||
[gd_resource type="TileSet" load_steps=12 format=3 uid="uid://l61kbx31ug4p"]
 | 
					[gd_resource type="TileSet" load_steps=14 format=3 uid="uid://l61kbx31ug4p"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://b0yiy7w8nxmas" path="res://Assets/Sprites/arena-tileset.png" id="1_kud44"]
 | 
					[ext_resource type="Texture2D" uid="uid://b0yiy7w8nxmas" path="res://Assets/Sprites/arena-tileset.png" id="1_kud44"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://j1ekk1ppenm4" path="res://Assets/Sprites/grass-tileset.png" id="2_lihbs"]
 | 
					[ext_resource type="Texture2D" uid="uid://j1ekk1ppenm4" path="res://Assets/Sprites/grass-tileset.png" id="2_lihbs"]
 | 
				
			||||||
[ext_resource type="Texture2D" uid="uid://udgjrcaexuaq" path="res://Assets/Sprites/Props/arena-arches.png" id="3_hbylw"]
 | 
					[ext_resource type="Texture2D" uid="uid://udgjrcaexuaq" path="res://Assets/Sprites/Props/arena-arches.png" id="3_hbylw"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://bth1v3dyuqwg6" path="res://Assets/Sprites/arena-tileset-new.png" id="4_n70qi"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7lhug"]
 | 
					[sub_resource type="NavigationPolygon" id="NavigationPolygon_7s0wj"]
 | 
				
			||||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					 | 
				
			||||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
 | 
					 | 
				
			||||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
 | 
					 | 
				
			||||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
					source_geometry_group_name = &"navigation_polygon_source_group"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_d0snv"]
 | 
					[sub_resource type="NavigationPolygon" id="NavigationPolygon_7vkqx"]
 | 
				
			||||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					 | 
				
			||||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
 | 
					 | 
				
			||||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
 | 
					 | 
				
			||||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
					source_geometry_group_name = &"navigation_polygon_source_group"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_m43r7"]
 | 
					[sub_resource type="NavigationPolygon" id="NavigationPolygon_pxj45"]
 | 
				
			||||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					 | 
				
			||||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
 | 
					 | 
				
			||||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
 | 
					 | 
				
			||||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
					source_geometry_group_name = &"navigation_polygon_source_group"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="CanvasTexture" id="CanvasTexture_3n6aa"]
 | 
					[sub_resource type="CanvasTexture" id="CanvasTexture_3n6aa"]
 | 
				
			||||||
| 
						 | 
					@ -30,8 +22,6 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
0:0/0 = 0
 | 
					0:0/0 = 0
 | 
				
			||||||
0:0/0/terrain_set = 0
 | 
					0:0/0/terrain_set = 0
 | 
				
			||||||
0:0/0/terrain = 0
 | 
					0:0/0/terrain = 0
 | 
				
			||||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:0/0/terrains_peering_bit/right_side = 0
 | 
					0:0/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
0:0/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					0:0/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
0:0/0/terrains_peering_bit/bottom_side = 0
 | 
					0:0/0/terrains_peering_bit/bottom_side = 0
 | 
				
			||||||
| 
						 | 
					@ -40,12 +30,10 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
0:0/0/terrains_peering_bit/top_left_corner = 0
 | 
					0:0/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
0:0/0/terrains_peering_bit/top_side = 0
 | 
					0:0/0/terrains_peering_bit/top_side = 0
 | 
				
			||||||
0:0/0/terrains_peering_bit/top_right_corner = 0
 | 
					0:0/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
					0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
1:1/0 = 0
 | 
					1:1/0 = 0
 | 
				
			||||||
1:1/0/terrain_set = 0
 | 
					1:1/0/terrain_set = 0
 | 
				
			||||||
1:1/0/terrain = 0
 | 
					1:1/0/terrain = 0
 | 
				
			||||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:1/0/terrains_peering_bit/right_side = 0
 | 
					1:1/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
1:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					1:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
1:1/0/terrains_peering_bit/bottom_side = 0
 | 
					1:1/0/terrains_peering_bit/bottom_side = 0
 | 
				
			||||||
| 
						 | 
					@ -54,12 +42,10 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
1:1/0/terrains_peering_bit/top_left_corner = 0
 | 
					1:1/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
1:1/0/terrains_peering_bit/top_side = 0
 | 
					1:1/0/terrains_peering_bit/top_side = 0
 | 
				
			||||||
1:1/0/terrains_peering_bit/top_right_corner = 0
 | 
					1:1/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
					1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
2:1/0 = 0
 | 
					2:1/0 = 0
 | 
				
			||||||
2:1/0/terrain_set = 0
 | 
					2:1/0/terrain_set = 0
 | 
				
			||||||
2:1/0/terrain = 1
 | 
					2:1/0/terrain = 1
 | 
				
			||||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
2:1/0/terrains_peering_bit/right_side = 1
 | 
					2:1/0/terrains_peering_bit/right_side = 1
 | 
				
			||||||
2:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					2:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
| 
						 | 
					@ -71,17 +57,14 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
2:1/0/terrains_peering_bit/top_right_corner = 1
 | 
					2:1/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
2:2/0 = 0
 | 
					2:2/0 = 0
 | 
				
			||||||
2:2/0/terrain_set = 0
 | 
					2:2/0/terrain_set = 0
 | 
				
			||||||
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 8, 0, 8, 8, -8, 8)
 | 
					2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 8, 0, 8, 8, -8, 8)
 | 
				
			||||||
2:2/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					2:2/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
2:2/0/terrains_peering_bit/bottom_side = 1
 | 
					2:2/0/terrains_peering_bit/bottom_side = 1
 | 
				
			||||||
2:2/0/terrains_peering_bit/bottom_left_corner = 1
 | 
					2:2/0/terrains_peering_bit/bottom_left_corner = 1
 | 
				
			||||||
 | 
					2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
1:0/0 = 0
 | 
					1:0/0 = 0
 | 
				
			||||||
1:0/0/terrain_set = 0
 | 
					1:0/0/terrain_set = 0
 | 
				
			||||||
1:0/0/terrain = 0
 | 
					1:0/0/terrain = 0
 | 
				
			||||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:0/0/terrains_peering_bit/right_side = 0
 | 
					1:0/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
1:0/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					1:0/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
1:0/0/terrains_peering_bit/bottom_side = 0
 | 
					1:0/0/terrains_peering_bit/bottom_side = 0
 | 
				
			||||||
| 
						 | 
					@ -90,12 +73,10 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
1:0/0/terrains_peering_bit/top_left_corner = 0
 | 
					1:0/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
1:0/0/terrains_peering_bit/top_side = 0
 | 
					1:0/0/terrains_peering_bit/top_side = 0
 | 
				
			||||||
1:0/0/terrains_peering_bit/top_right_corner = 0
 | 
					1:0/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
					1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
0:1/0 = 0
 | 
					0:1/0 = 0
 | 
				
			||||||
0:1/0/terrain_set = 0
 | 
					0:1/0/terrain_set = 0
 | 
				
			||||||
0:1/0/terrain = 0
 | 
					0:1/0/terrain = 0
 | 
				
			||||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:1/0/terrains_peering_bit/right_side = 0
 | 
					0:1/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
0:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					0:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
0:1/0/terrains_peering_bit/bottom_side = 0
 | 
					0:1/0/terrains_peering_bit/bottom_side = 0
 | 
				
			||||||
| 
						 | 
					@ -104,59 +85,35 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
0:1/0/terrains_peering_bit/top_left_corner = 0
 | 
					0:1/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
0:1/0/terrains_peering_bit/top_side = 0
 | 
					0:1/0/terrains_peering_bit/top_side = 0
 | 
				
			||||||
0:1/0/terrains_peering_bit/top_right_corner = 0
 | 
					0:1/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
					0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
0:2/0 = 0
 | 
					0:2/0 = 0
 | 
				
			||||||
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:3/0 = 0
 | 
					0:3/0 = 0
 | 
				
			||||||
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:3/0 = 0
 | 
					1:3/0 = 0
 | 
				
			||||||
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:2/0 = 0
 | 
					1:2/0 = 0
 | 
				
			||||||
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
1:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:0/0 = 0
 | 
					2:0/0 = 0
 | 
				
			||||||
2:0/0/terrain_set = 0
 | 
					2:0/0/terrain_set = 0
 | 
				
			||||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
2:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_m43r7")
 | 
					 | 
				
			||||||
3:0/0 = 0
 | 
					3:0/0 = 0
 | 
				
			||||||
3:0/0/terrain_set = 0
 | 
					3:0/0/terrain_set = 0
 | 
				
			||||||
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
3:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_m43r7")
 | 
					 | 
				
			||||||
4:0/0 = 0
 | 
					4:0/0 = 0
 | 
				
			||||||
4:0/0/terrain_set = 0
 | 
					4:0/0/terrain_set = 0
 | 
				
			||||||
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
5:0/0 = 0
 | 
					5:0/0 = 0
 | 
				
			||||||
5:0/0/terrain_set = 0
 | 
					5:0/0/terrain_set = 0
 | 
				
			||||||
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
6:0/0 = 0
 | 
					6:0/0 = 0
 | 
				
			||||||
6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:1/0 = 0
 | 
					6:1/0 = 0
 | 
				
			||||||
6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
5:1/0 = 0
 | 
					5:1/0 = 0
 | 
				
			||||||
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
4:1/0 = 0
 | 
					4:1/0 = 0
 | 
				
			||||||
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
3:1/0 = 0
 | 
					3:1/0 = 0
 | 
				
			||||||
3:1/0/terrain_set = 0
 | 
					3:1/0/terrain_set = 0
 | 
				
			||||||
3:1/0/terrain = 1
 | 
					3:1/0/terrain = 1
 | 
				
			||||||
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
3:1/0/terrains_peering_bit/right_side = 1
 | 
					3:1/0/terrains_peering_bit/right_side = 1
 | 
				
			||||||
3:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					3:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
| 
						 | 
					@ -168,74 +125,53 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
3:1/0/terrains_peering_bit/top_right_corner = 1
 | 
					3:1/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
3:2/0 = 0
 | 
					3:2/0 = 0
 | 
				
			||||||
3:2/0/terrain_set = 0
 | 
					3:2/0/terrain_set = 0
 | 
				
			||||||
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 0, -8, 0)
 | 
					3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 0, -8, 0)
 | 
				
			||||||
3:2/0/terrains_peering_bit/top_left_corner = 0
 | 
					3:2/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
3:2/0/terrains_peering_bit/top_side = 0
 | 
					3:2/0/terrains_peering_bit/top_side = 0
 | 
				
			||||||
3:2/0/terrains_peering_bit/top_right_corner = 0
 | 
					3:2/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
 | 
					3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
3:3/0 = 0
 | 
					3:3/0 = 0
 | 
				
			||||||
3:3/0/terrain_set = 0
 | 
					3:3/0/terrain_set = 0
 | 
				
			||||||
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, -8, 8, -8, 8, 8, 0, 8)
 | 
					3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, -8, 8, -8, 8, 8, 0, 8)
 | 
				
			||||||
3:3/0/terrains_peering_bit/right_side = 0
 | 
					3:3/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
3:3/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					3:3/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
3:3/0/terrains_peering_bit/top_right_corner = 1
 | 
					3:3/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
2:3/0 = 0
 | 
					2:3/0 = 0
 | 
				
			||||||
2:3/0/terrain_set = 0
 | 
					2:3/0/terrain_set = 0
 | 
				
			||||||
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 8, -8, 8)
 | 
					2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 8, -8, 8)
 | 
				
			||||||
2:3/0/terrains_peering_bit/bottom_left_corner = 0
 | 
					2:3/0/terrains_peering_bit/bottom_left_corner = 0
 | 
				
			||||||
2:3/0/terrains_peering_bit/left_side = 0
 | 
					2:3/0/terrains_peering_bit/left_side = 0
 | 
				
			||||||
2:3/0/terrains_peering_bit/top_left_corner = 1
 | 
					2:3/0/terrains_peering_bit/top_left_corner = 1
 | 
				
			||||||
4:3/0 = 0
 | 
					4:3/0 = 0
 | 
				
			||||||
4:3/0/terrain_set = 0
 | 
					4:3/0/terrain_set = 0
 | 
				
			||||||
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 0, 0, 0, 0, -8)
 | 
					4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 0, 0, 0, 0, -8)
 | 
				
			||||||
4:3/0/terrains_peering_bit/top_right_corner = 0
 | 
					4:3/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
4:2/0 = 0
 | 
					4:2/0 = 0
 | 
				
			||||||
4:2/0/terrain_set = 0
 | 
					4:2/0/terrain_set = 0
 | 
				
			||||||
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, 0, 8, 0, 8, 8, 0, 8)
 | 
					4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, 0, 8, 0, 8, 8, 0, 8)
 | 
				
			||||||
4:2/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					4:2/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
 | 
					4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
5:2/0 = 0
 | 
					5:2/0 = 0
 | 
				
			||||||
5:2/0/terrain_set = 0
 | 
					5:2/0/terrain_set = 0
 | 
				
			||||||
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 0, 0, 0, 8, -8, 8)
 | 
					5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 0, 0, 0, 8, -8, 8)
 | 
				
			||||||
5:2/0/terrains_peering_bit/bottom_left_corner = 1
 | 
					5:2/0/terrains_peering_bit/bottom_left_corner = 1
 | 
				
			||||||
 | 
					5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
5:3/0 = 0
 | 
					5:3/0 = 0
 | 
				
			||||||
5:3/0/terrain_set = 0
 | 
					5:3/0/terrain_set = 0
 | 
				
			||||||
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 0, -8, 0)
 | 
					5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 0, -8, 0)
 | 
				
			||||||
5:3/0/terrains_peering_bit/top_left_corner = 0
 | 
					5:3/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
6:3/0 = 0
 | 
					6:3/0 = 0
 | 
				
			||||||
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:2/0 = 0
 | 
					6:2/0 = 0
 | 
				
			||||||
6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
6:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:2/0 = 0
 | 
					7:2/0 = 0
 | 
				
			||||||
7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
7:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:3/0 = 0
 | 
					7:3/0 = 0
 | 
				
			||||||
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:0/size_in_atlas = Vector2i(1, 2)
 | 
					7:0/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
7:0/0 = 0
 | 
					7:0/0 = 0
 | 
				
			||||||
7:0/0/texture_origin = Vector2i(0, 8)
 | 
					7:0/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -5, 8, -5, 8, 4, 4, 8, -4, 8, -8, 4)
 | 
					7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -5, 8, -5, 8, 4, 4, 8, -4, 8, -8, 4)
 | 
				
			||||||
0:4/0 = 0
 | 
					0:4/0 = 0
 | 
				
			||||||
0:4/0/terrain_set = 0
 | 
					0:4/0/terrain_set = 0
 | 
				
			||||||
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
0:4/0/terrains_peering_bit/bottom_left_corner = 0
 | 
					0:4/0/terrains_peering_bit/bottom_left_corner = 0
 | 
				
			||||||
0:4/0/terrains_peering_bit/left_side = 0
 | 
					0:4/0/terrains_peering_bit/left_side = 0
 | 
				
			||||||
| 
						 | 
					@ -244,8 +180,6 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
0:4/0/terrains_peering_bit/top_right_corner = 0
 | 
					0:4/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
0:5/0 = 0
 | 
					0:5/0 = 0
 | 
				
			||||||
0:5/0/terrain_set = 0
 | 
					0:5/0/terrain_set = 0
 | 
				
			||||||
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
0:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					0:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
0:5/0/terrains_peering_bit/bottom_side = 1
 | 
					0:5/0/terrains_peering_bit/bottom_side = 1
 | 
				
			||||||
| 
						 | 
					@ -254,8 +188,6 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
0:5/0/terrains_peering_bit/top_left_corner = 0
 | 
					0:5/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
1:5/0 = 0
 | 
					1:5/0 = 0
 | 
				
			||||||
1:5/0/terrain_set = 0
 | 
					1:5/0/terrain_set = 0
 | 
				
			||||||
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
1:5/0/terrains_peering_bit/right_side = 0
 | 
					1:5/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
1:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					1:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
| 
						 | 
					@ -264,8 +196,6 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
1:5/0/terrains_peering_bit/top_right_corner = 0
 | 
					1:5/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
1:4/0 = 0
 | 
					1:4/0 = 0
 | 
				
			||||||
1:4/0/terrain_set = 0
 | 
					1:4/0/terrain_set = 0
 | 
				
			||||||
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
1:4/0/terrains_peering_bit/right_side = 0
 | 
					1:4/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
1:4/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					1:4/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
| 
						 | 
					@ -275,100 +205,61 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
2:4/size_in_atlas = Vector2i(1, 3)
 | 
					2:4/size_in_atlas = Vector2i(1, 3)
 | 
				
			||||||
2:4/0 = 0
 | 
					2:4/0 = 0
 | 
				
			||||||
2:4/0/texture_origin = Vector2i(0, 16)
 | 
					2:4/0/texture_origin = Vector2i(0, 16)
 | 
				
			||||||
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:4/size_in_atlas = Vector2i(2, 2)
 | 
					3:4/size_in_atlas = Vector2i(2, 2)
 | 
				
			||||||
3:4/0 = 0
 | 
					3:4/0 = 0
 | 
				
			||||||
3:4/0/texture_origin = Vector2i(8, 9)
 | 
					3:4/0/texture_origin = Vector2i(8, 9)
 | 
				
			||||||
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:4/size_in_atlas = Vector2i(2, 2)
 | 
					5:4/size_in_atlas = Vector2i(2, 2)
 | 
				
			||||||
5:4/0 = 0
 | 
					5:4/0 = 0
 | 
				
			||||||
5:4/0/texture_origin = Vector2i(8, 9)
 | 
					5:4/0/texture_origin = Vector2i(8, 9)
 | 
				
			||||||
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:4/size_in_atlas = Vector2i(1, 2)
 | 
					7:4/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
7:4/0 = 0
 | 
					7:4/0 = 0
 | 
				
			||||||
7:4/0/texture_origin = Vector2i(0, 8)
 | 
					7:4/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:6/0 = 0
 | 
					3:6/0 = 0
 | 
				
			||||||
3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
4:6/0 = 0
 | 
					4:6/0 = 0
 | 
				
			||||||
4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
4:7/0 = 0
 | 
					4:7/0 = 0
 | 
				
			||||||
4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
3:7/0 = 0
 | 
					3:7/0 = 0
 | 
				
			||||||
3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
10:1/0 = 0
 | 
					10:1/0 = 0
 | 
				
			||||||
10:1/0/terrain_set = 1
 | 
					10:1/0/terrain_set = 1
 | 
				
			||||||
10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
10:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
					 | 
				
			||||||
11:1/0 = 0
 | 
					11:1/0 = 0
 | 
				
			||||||
11:1/0/terrain_set = 1
 | 
					11:1/0/terrain_set = 1
 | 
				
			||||||
11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					11:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
11:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
11:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
					 | 
				
			||||||
11:2/0 = 0
 | 
					11:2/0 = 0
 | 
				
			||||||
11:2/0/terrain_set = 1
 | 
					11:2/0/terrain_set = 1
 | 
				
			||||||
11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
11:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
					 | 
				
			||||||
10:2/0 = 0
 | 
					10:2/0 = 0
 | 
				
			||||||
10:2/0/terrain_set = 1
 | 
					10:2/0/terrain_set = 1
 | 
				
			||||||
10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					10:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
10:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
10:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
					 | 
				
			||||||
8:1/0 = 0
 | 
					8:1/0 = 0
 | 
				
			||||||
8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
8:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
8:2/0 = 0
 | 
					8:2/0 = 0
 | 
				
			||||||
8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					8:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
8:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
9:1/0 = 0
 | 
					9:1/0 = 0
 | 
				
			||||||
9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					9:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
9:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
9:2/0 = 0
 | 
					9:2/0 = 0
 | 
				
			||||||
9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					9:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
				
			||||||
9:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
9:5/0 = 0
 | 
					9:5/0 = 0
 | 
				
			||||||
9:5/0/terrain_set = 1
 | 
					9:5/0/terrain_set = 1
 | 
				
			||||||
9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
9:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
9:5/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					9:5/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
10:5/0 = 0
 | 
					10:5/0 = 0
 | 
				
			||||||
10:5/0/terrain_set = 1
 | 
					10:5/0/terrain_set = 1
 | 
				
			||||||
10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
10:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
10:5/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					10:5/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
10:5/0/terrains_peering_bit/bottom_side = 0
 | 
					10:5/0/terrains_peering_bit/bottom_side = 0
 | 
				
			||||||
10:5/0/terrains_peering_bit/bottom_left_corner = 0
 | 
					10:5/0/terrains_peering_bit/bottom_left_corner = 0
 | 
				
			||||||
11:5/0 = 0
 | 
					11:5/0 = 0
 | 
				
			||||||
11:5/0/terrain_set = 1
 | 
					11:5/0/terrain_set = 1
 | 
				
			||||||
11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
11:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
11:5/0/terrains_peering_bit/bottom_left_corner = 0
 | 
					11:5/0/terrains_peering_bit/bottom_left_corner = 0
 | 
				
			||||||
11:6/0 = 0
 | 
					11:6/0 = 0
 | 
				
			||||||
11:6/0/terrain_set = 1
 | 
					11:6/0/terrain_set = 1
 | 
				
			||||||
11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
11:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
11:6/0/terrains_peering_bit/bottom_left_corner = 0
 | 
					11:6/0/terrains_peering_bit/bottom_left_corner = 0
 | 
				
			||||||
11:6/0/terrains_peering_bit/left_side = 0
 | 
					11:6/0/terrains_peering_bit/left_side = 0
 | 
				
			||||||
11:6/0/terrains_peering_bit/top_left_corner = 0
 | 
					11:6/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
10:6/0 = 0
 | 
					10:6/0 = 0
 | 
				
			||||||
10:6/0/terrain_set = 1
 | 
					10:6/0/terrain_set = 1
 | 
				
			||||||
10:6/0/terrain = 0
 | 
					10:6/0/terrain = 0
 | 
				
			||||||
10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
10:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
10:6/0/terrains_peering_bit/right_side = 0
 | 
					10:6/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
10:6/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					10:6/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
10:6/0/terrains_peering_bit/bottom_side = 0
 | 
					10:6/0/terrains_peering_bit/bottom_side = 0
 | 
				
			||||||
| 
						 | 
					@ -379,52 +270,37 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
10:6/0/terrains_peering_bit/top_right_corner = 0
 | 
					10:6/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
9:6/0 = 0
 | 
					9:6/0 = 0
 | 
				
			||||||
9:6/0/terrain_set = 1
 | 
					9:6/0/terrain_set = 1
 | 
				
			||||||
9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
9:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
9:6/0/terrains_peering_bit/right_side = 0
 | 
					9:6/0/terrains_peering_bit/right_side = 0
 | 
				
			||||||
9:6/0/terrains_peering_bit/bottom_right_corner = 0
 | 
					9:6/0/terrains_peering_bit/bottom_right_corner = 0
 | 
				
			||||||
9:6/0/terrains_peering_bit/top_right_corner = 0
 | 
					9:6/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
 | 
					9:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_pxj45")
 | 
				
			||||||
9:7/0 = 0
 | 
					9:7/0 = 0
 | 
				
			||||||
9:7/0/terrain_set = 1
 | 
					9:7/0/terrain_set = 1
 | 
				
			||||||
9:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
9:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
9:7/0/terrains_peering_bit/top_right_corner = 0
 | 
					9:7/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
10:7/0 = 0
 | 
					10:7/0 = 0
 | 
				
			||||||
10:7/0/terrain_set = 1
 | 
					10:7/0/terrain_set = 1
 | 
				
			||||||
10:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
10:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
10:7/0/terrains_peering_bit/top_left_corner = 0
 | 
					10:7/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
10:7/0/terrains_peering_bit/top_side = 0
 | 
					10:7/0/terrains_peering_bit/top_side = 0
 | 
				
			||||||
10:7/0/terrains_peering_bit/top_right_corner = 0
 | 
					10:7/0/terrains_peering_bit/top_right_corner = 0
 | 
				
			||||||
11:7/0 = 0
 | 
					11:7/0 = 0
 | 
				
			||||||
11:7/0/terrain_set = 1
 | 
					11:7/0/terrain_set = 1
 | 
				
			||||||
11:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
11:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
11:7/0/terrains_peering_bit/top_left_corner = 0
 | 
					11:7/0/terrains_peering_bit/top_left_corner = 0
 | 
				
			||||||
12:5/0 = 0
 | 
					12:5/0 = 0
 | 
				
			||||||
12:5/0/terrain_set = 1
 | 
					12:5/0/terrain_set = 1
 | 
				
			||||||
12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
12:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
12:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					12:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
13:5/0 = 0
 | 
					13:5/0 = 0
 | 
				
			||||||
13:5/0/terrain_set = 1
 | 
					13:5/0/terrain_set = 1
 | 
				
			||||||
13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
13:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
13:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					13:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
13:5/0/terrains_peering_bit/bottom_side = 1
 | 
					13:5/0/terrains_peering_bit/bottom_side = 1
 | 
				
			||||||
13:5/0/terrains_peering_bit/bottom_left_corner = 1
 | 
					13:5/0/terrains_peering_bit/bottom_left_corner = 1
 | 
				
			||||||
14:6/0 = 0
 | 
					14:6/0 = 0
 | 
				
			||||||
14:6/0/terrain_set = 1
 | 
					14:6/0/terrain_set = 1
 | 
				
			||||||
14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
14:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
14:6/0/terrains_peering_bit/bottom_left_corner = 1
 | 
					14:6/0/terrains_peering_bit/bottom_left_corner = 1
 | 
				
			||||||
14:6/0/terrains_peering_bit/left_side = 1
 | 
					14:6/0/terrains_peering_bit/left_side = 1
 | 
				
			||||||
14:6/0/terrains_peering_bit/top_left_corner = 1
 | 
					14:6/0/terrains_peering_bit/top_left_corner = 1
 | 
				
			||||||
13:6/0 = 0
 | 
					13:6/0 = 0
 | 
				
			||||||
13:6/0/terrain_set = 1
 | 
					13:6/0/terrain_set = 1
 | 
				
			||||||
13:6/0/terrain = 1
 | 
					13:6/0/terrain = 1
 | 
				
			||||||
13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
13:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
13:6/0/terrains_peering_bit/right_side = 1
 | 
					13:6/0/terrains_peering_bit/right_side = 1
 | 
				
			||||||
13:6/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					13:6/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
13:6/0/terrains_peering_bit/bottom_side = 1
 | 
					13:6/0/terrains_peering_bit/bottom_side = 1
 | 
				
			||||||
| 
						 | 
					@ -435,70 +311,43 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
				
			||||||
13:6/0/terrains_peering_bit/top_right_corner = 1
 | 
					13:6/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
12:6/0 = 0
 | 
					12:6/0 = 0
 | 
				
			||||||
12:6/0/terrain_set = 1
 | 
					12:6/0/terrain_set = 1
 | 
				
			||||||
12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
12:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
12:6/0/terrains_peering_bit/right_side = 1
 | 
					12:6/0/terrains_peering_bit/right_side = 1
 | 
				
			||||||
12:6/0/terrains_peering_bit/bottom_right_corner = 1
 | 
					12:6/0/terrains_peering_bit/bottom_right_corner = 1
 | 
				
			||||||
12:6/0/terrains_peering_bit/top_right_corner = 1
 | 
					12:6/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
12:7/0 = 0
 | 
					12:7/0 = 0
 | 
				
			||||||
12:7/0/terrain_set = 1
 | 
					12:7/0/terrain_set = 1
 | 
				
			||||||
12:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
12:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
12:7/0/terrains_peering_bit/top_right_corner = 1
 | 
					12:7/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
13:7/0 = 0
 | 
					13:7/0 = 0
 | 
				
			||||||
13:7/0/terrain_set = 1
 | 
					13:7/0/terrain_set = 1
 | 
				
			||||||
13:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
13:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
13:7/0/terrains_peering_bit/top_left_corner = 1
 | 
					13:7/0/terrains_peering_bit/top_left_corner = 1
 | 
				
			||||||
13:7/0/terrains_peering_bit/top_side = 1
 | 
					13:7/0/terrains_peering_bit/top_side = 1
 | 
				
			||||||
13:7/0/terrains_peering_bit/top_right_corner = 1
 | 
					13:7/0/terrains_peering_bit/top_right_corner = 1
 | 
				
			||||||
14:7/0 = 0
 | 
					14:7/0 = 0
 | 
				
			||||||
14:7/0/terrain_set = 1
 | 
					14:7/0/terrain_set = 1
 | 
				
			||||||
14:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
14:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
14:7/0/terrains_peering_bit/top_left_corner = 1
 | 
					14:7/0/terrains_peering_bit/top_left_corner = 1
 | 
				
			||||||
14:5/0 = 0
 | 
					14:5/0 = 0
 | 
				
			||||||
14:5/0/terrain_set = 1
 | 
					14:5/0/terrain_set = 1
 | 
				
			||||||
14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
14:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
14:5/0/terrains_peering_bit/bottom_left_corner = 1
 | 
					14:5/0/terrains_peering_bit/bottom_left_corner = 1
 | 
				
			||||||
5:7/0 = 0
 | 
					5:7/0 = 0
 | 
				
			||||||
5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
5:6/0 = 0
 | 
					5:6/0 = 0
 | 
				
			||||||
5:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
6:6/0 = 0
 | 
					6:6/0 = 0
 | 
				
			||||||
6:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
6:7/0 = 0
 | 
					6:7/0 = 0
 | 
				
			||||||
6:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
7:7/0 = 0
 | 
					7:7/0 = 0
 | 
				
			||||||
7:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					7:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7vkqx")
 | 
				
			||||||
8:7/0 = 0
 | 
					8:7/0 = 0
 | 
				
			||||||
8:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
8:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
8:6/0 = 0
 | 
					8:6/0 = 0
 | 
				
			||||||
8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
8:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
					8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
12:0/0 = 0
 | 
					12:0/0 = 0
 | 
				
			||||||
12:0/0/y_sort_origin = 8
 | 
					12:0/0/y_sort_origin = 8
 | 
				
			||||||
12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
12:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
 | 
					12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
 | 
				
			||||||
13:0/0 = 0
 | 
					13:0/0 = 0
 | 
				
			||||||
13:0/0/y_sort_origin = 8
 | 
					13:0/0/y_sort_origin = 8
 | 
				
			||||||
13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
13:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
 | 
					13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_que0c"]
 | 
					[sub_resource type="NavigationPolygon" id="NavigationPolygon_que0c"]
 | 
				
			||||||
| 
						 | 
					@ -510,213 +359,271 @@ source_geometry_group_name = &"navigation_polygon_source_group"
 | 
				
			||||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mdfpe"]
 | 
					[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mdfpe"]
 | 
				
			||||||
texture = ExtResource("2_lihbs")
 | 
					texture = ExtResource("2_lihbs")
 | 
				
			||||||
0:0/0 = 0
 | 
					0:0/0 = 0
 | 
				
			||||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
1:0/0 = 0
 | 
					1:0/0 = 0
 | 
				
			||||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
2:0/0 = 0
 | 
					2:0/0 = 0
 | 
				
			||||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
3:0/0 = 0
 | 
					3:0/0 = 0
 | 
				
			||||||
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
4:0/0 = 0
 | 
					4:0/0 = 0
 | 
				
			||||||
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
5:0/0 = 0
 | 
					5:0/0 = 0
 | 
				
			||||||
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					5:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
6:0/0 = 0
 | 
					6:0/0 = 0
 | 
				
			||||||
6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					6:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
7:0/0 = 0
 | 
					7:0/0 = 0
 | 
				
			||||||
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					7:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
7:1/0 = 0
 | 
					7:1/0 = 0
 | 
				
			||||||
7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					7:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
7:2/0 = 0
 | 
					7:2/0 = 0
 | 
				
			||||||
7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
7:3/0 = 0
 | 
					7:3/0 = 0
 | 
				
			||||||
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					7:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
7:4/0 = 0
 | 
					7:4/0 = 0
 | 
				
			||||||
7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
7:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
7:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					7:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
6:4/0 = 0
 | 
					6:4/0 = 0
 | 
				
			||||||
6:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					6:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
5:4/0 = 0
 | 
					5:4/0 = 0
 | 
				
			||||||
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					5:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
4:4/0 = 0
 | 
					4:4/0 = 0
 | 
				
			||||||
4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					4:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
3:4/0 = 0
 | 
					3:4/0 = 0
 | 
				
			||||||
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					3:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
2:4/0 = 0
 | 
					2:4/0 = 0
 | 
				
			||||||
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					2:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
1:4/0 = 0
 | 
					1:4/0 = 0
 | 
				
			||||||
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					1:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
0:4/0 = 0
 | 
					0:4/0 = 0
 | 
				
			||||||
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:4/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					0:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
0:3/0 = 0
 | 
					0:3/0 = 0
 | 
				
			||||||
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
1:2/0 = 0
 | 
					1:2/0 = 0
 | 
				
			||||||
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
1:1/0 = 0
 | 
					1:1/0 = 0
 | 
				
			||||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
0:1/0 = 0
 | 
					0:1/0 = 0
 | 
				
			||||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
0:2/0 = 0
 | 
					0:2/0 = 0
 | 
				
			||||||
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					0:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
2:3/0 = 0
 | 
					2:3/0 = 0
 | 
				
			||||||
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
3:3/0 = 0
 | 
					3:3/0 = 0
 | 
				
			||||||
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
1:3/0 = 0
 | 
					1:3/0 = 0
 | 
				
			||||||
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
2:2/0 = 0
 | 
					2:2/0 = 0
 | 
				
			||||||
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
3:1/0 = 0
 | 
					3:1/0 = 0
 | 
				
			||||||
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					3:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
4:1/0 = 0
 | 
					4:1/0 = 0
 | 
				
			||||||
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					4:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
2:1/0 = 0
 | 
					2:1/0 = 0
 | 
				
			||||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					2:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
4:2/0 = 0
 | 
					4:2/0 = 0
 | 
				
			||||||
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
5:2/0 = 0
 | 
					5:2/0 = 0
 | 
				
			||||||
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
3:2/0 = 0
 | 
					3:2/0 = 0
 | 
				
			||||||
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
3:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
6:3/0 = 0
 | 
					6:3/0 = 0
 | 
				
			||||||
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					6:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
5:3/0 = 0
 | 
					5:3/0 = 0
 | 
				
			||||||
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					5:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
4:3/0 = 0
 | 
					4:3/0 = 0
 | 
				
			||||||
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
4:3/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
4:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					4:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
6:2/0 = 0
 | 
					6:2/0 = 0
 | 
				
			||||||
6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:2/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
6:1/0 = 0
 | 
					6:1/0 = 0
 | 
				
			||||||
6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
6:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
6:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					6:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
5:1/0 = 0
 | 
					5:1/0 = 0
 | 
				
			||||||
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
5:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
5:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
					5:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
				
			||||||
0:5/0 = 0
 | 
					0:5/0 = 0
 | 
				
			||||||
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:5/0 = 0
 | 
					1:5/0 = 0
 | 
				
			||||||
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:6/0 = 0
 | 
					0:6/0 = 0
 | 
				
			||||||
0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:7/0 = 0
 | 
					0:7/0 = 0
 | 
				
			||||||
0:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:7/0 = 0
 | 
					1:7/0 = 0
 | 
				
			||||||
1:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:6/0 = 0
 | 
					1:6/0 = 0
 | 
				
			||||||
1:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:6/0 = 0
 | 
					2:6/0 = 0
 | 
				
			||||||
2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:6/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:5/0 = 0
 | 
					2:5/0 = 0
 | 
				
			||||||
2:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:5/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:7/0 = 0
 | 
					2:7/0 = 0
 | 
				
			||||||
2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:7/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u4tjf"]
 | 
					[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u4tjf"]
 | 
				
			||||||
texture = ExtResource("3_hbylw")
 | 
					texture = ExtResource("3_hbylw")
 | 
				
			||||||
0:0/0 = 0
 | 
					0:0/0 = 0
 | 
				
			||||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:0/0 = 0
 | 
					1:0/0 = 0
 | 
				
			||||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:0/0 = 0
 | 
					2:0/0 = 0
 | 
				
			||||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
2:0/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
0:1/0 = 0
 | 
					0:1/0 = 0
 | 
				
			||||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
0:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
1:1/0 = 0
 | 
					1:1/0 = 0
 | 
				
			||||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					 | 
				
			||||||
1:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					 | 
				
			||||||
2:1/0 = 0
 | 
					2:1/0 = 0
 | 
				
			||||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
					
 | 
				
			||||||
2:1/0/physics_layer_0/angular_velocity = 0.0
 | 
					[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_45tin"]
 | 
				
			||||||
 | 
					texture = ExtResource("4_n70qi")
 | 
				
			||||||
 | 
					0:0/0 = 0
 | 
				
			||||||
 | 
					1:0/0 = 0
 | 
				
			||||||
 | 
					4:0/0 = 0
 | 
				
			||||||
 | 
					4:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:0/0 = 0
 | 
				
			||||||
 | 
					5:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					6:0/0 = 0
 | 
				
			||||||
 | 
					6:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					8:0/0 = 0
 | 
				
			||||||
 | 
					9:0/0 = 0
 | 
				
			||||||
 | 
					10:0/0 = 0
 | 
				
			||||||
 | 
					11:0/0 = 0
 | 
				
			||||||
 | 
					12:0/0 = 0
 | 
				
			||||||
 | 
					13:0/0 = 0
 | 
				
			||||||
 | 
					0:1/0 = 0
 | 
				
			||||||
 | 
					1:1/0 = 0
 | 
				
			||||||
 | 
					4:1/0 = 0
 | 
				
			||||||
 | 
					4:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:1/0 = 0
 | 
				
			||||||
 | 
					5:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					6:1/0 = 0
 | 
				
			||||||
 | 
					6:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					7:1/0 = 0
 | 
				
			||||||
 | 
					7:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					8:1/0 = 0
 | 
				
			||||||
 | 
					8:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					9:1/0 = 0
 | 
				
			||||||
 | 
					9:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					9:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					10:1/0 = 0
 | 
				
			||||||
 | 
					11:1/0 = 0
 | 
				
			||||||
 | 
					2:2/0 = 0
 | 
				
			||||||
 | 
					2:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:2/0 = 0
 | 
				
			||||||
 | 
					3:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:2/0 = 0
 | 
				
			||||||
 | 
					4:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:2/0 = 0
 | 
				
			||||||
 | 
					5:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					6:2/0 = 0
 | 
				
			||||||
 | 
					6:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					6:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					7:2/0 = 0
 | 
				
			||||||
 | 
					7:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					7:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					8:2/0 = 0
 | 
				
			||||||
 | 
					8:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					8:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					9:2/0 = 0
 | 
				
			||||||
 | 
					9:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					9:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					10:2/0 = 0
 | 
				
			||||||
 | 
					11:2/0 = 0
 | 
				
			||||||
 | 
					0:3/0 = 0
 | 
				
			||||||
 | 
					0:3/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					1:3/0 = 0
 | 
				
			||||||
 | 
					1:3/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					2:3/0 = 0
 | 
				
			||||||
 | 
					2:3/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					3:3/0 = 0
 | 
				
			||||||
 | 
					3:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:3/0 = 0
 | 
				
			||||||
 | 
					4:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					8:3/0 = 0
 | 
				
			||||||
 | 
					0:4/0 = 0
 | 
				
			||||||
 | 
					0:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:4/0 = 0
 | 
				
			||||||
 | 
					2:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:4/0 = 0
 | 
				
			||||||
 | 
					3:4/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:4/0 = 0
 | 
				
			||||||
 | 
					4:4/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:4/0 = 0
 | 
				
			||||||
 | 
					5:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					6:4/0 = 0
 | 
				
			||||||
 | 
					6:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					6:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					0:5/0 = 0
 | 
				
			||||||
 | 
					0:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					1:5/0 = 0
 | 
				
			||||||
 | 
					1:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:5/0 = 0
 | 
				
			||||||
 | 
					2:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:5/0 = 0
 | 
				
			||||||
 | 
					4:5/0 = 0
 | 
				
			||||||
 | 
					5:3/0 = 0
 | 
				
			||||||
 | 
					5:3/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					6:3/0 = 0
 | 
				
			||||||
 | 
					6:3/0/y_sort_origin = 12
 | 
				
			||||||
 | 
					0:6/0 = 0
 | 
				
			||||||
 | 
					0:7/0 = 0
 | 
				
			||||||
 | 
					1:7/0 = 0
 | 
				
			||||||
 | 
					2:7/0 = 0
 | 
				
			||||||
 | 
					1:6/0 = 0
 | 
				
			||||||
 | 
					2:6/0 = 0
 | 
				
			||||||
 | 
					2:1/0 = 0
 | 
				
			||||||
 | 
					2:0/0 = 0
 | 
				
			||||||
 | 
					3:0/0 = 0
 | 
				
			||||||
 | 
					3:1/0 = 0
 | 
				
			||||||
 | 
					13:5/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					13:5/0 = 0
 | 
				
			||||||
 | 
					13:5/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
 | 
					13:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					13:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					12:4/size_in_atlas = Vector2i(1, 3)
 | 
				
			||||||
 | 
					12:4/0 = 0
 | 
				
			||||||
 | 
					12:4/0/texture_origin = Vector2i(0, 16)
 | 
				
			||||||
 | 
					12:4/0/y_sort_origin = -2
 | 
				
			||||||
 | 
					10:3/0 = 0
 | 
				
			||||||
 | 
					10:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					11:3/0 = 0
 | 
				
			||||||
 | 
					11:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					12:2/0 = 0
 | 
				
			||||||
 | 
					12:3/0 = 0
 | 
				
			||||||
 | 
					13:3/0 = 0
 | 
				
			||||||
 | 
					13:2/0 = 0
 | 
				
			||||||
 | 
					12:1/0 = 0
 | 
				
			||||||
 | 
					13:1/0 = 0
 | 
				
			||||||
 | 
					14:2/0 = 0
 | 
				
			||||||
 | 
					8:5/0 = 0
 | 
				
			||||||
 | 
					7:5/0 = 0
 | 
				
			||||||
 | 
					9:4/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					9:4/0 = 0
 | 
				
			||||||
 | 
					9:4/0/texture_origin = Vector2i(0, -8)
 | 
				
			||||||
 | 
					10:4/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					10:4/0 = 0
 | 
				
			||||||
 | 
					10:4/0/texture_origin = Vector2i(0, -8)
 | 
				
			||||||
 | 
					8:4/0 = 0
 | 
				
			||||||
 | 
					11:4/0 = 0
 | 
				
			||||||
 | 
					14:4/size_in_atlas = Vector2i(1, 3)
 | 
				
			||||||
 | 
					14:4/0 = 0
 | 
				
			||||||
 | 
					14:4/0/texture_origin = Vector2i(0, 16)
 | 
				
			||||||
 | 
					14:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					14:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:6/0 = 0
 | 
				
			||||||
 | 
					3:7/0 = 0
 | 
				
			||||||
 | 
					4:6/0 = 0
 | 
				
			||||||
 | 
					7:4/0 = 0
 | 
				
			||||||
 | 
					15:4/size_in_atlas = Vector2i(1, 3)
 | 
				
			||||||
 | 
					15:4/0 = 0
 | 
				
			||||||
 | 
					15:4/0/texture_origin = Vector2i(0, 16)
 | 
				
			||||||
 | 
					15:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					15:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[resource]
 | 
					[resource]
 | 
				
			||||||
occlusion_layer_0/light_mask = 1
 | 
					occlusion_layer_0/light_mask = 1
 | 
				
			||||||
| 
						 | 
					@ -735,3 +642,4 @@ navigation_layer_0/layers = 1
 | 
				
			||||||
sources/0 = SubResource("TileSetAtlasSource_fcd6d")
 | 
					sources/0 = SubResource("TileSetAtlasSource_fcd6d")
 | 
				
			||||||
sources/1 = SubResource("TileSetAtlasSource_mdfpe")
 | 
					sources/1 = SubResource("TileSetAtlasSource_mdfpe")
 | 
				
			||||||
sources/2 = SubResource("TileSetAtlasSource_u4tjf")
 | 
					sources/2 = SubResource("TileSetAtlasSource_u4tjf")
 | 
				
			||||||
 | 
					sources/3 = SubResource("TileSetAtlasSource_45tin")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,211 @@
 | 
				
			||||||
 | 
					[gd_resource type="TileSet" load_steps=7 format=3 uid="uid://dkis3rb4n62cu"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://c70cn53osy56w" path="res://Assets/Sprites/dev-tileset.png" id="1_nk7yv"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://lnyd6osxcu0g" path="res://Assets/Sprites/Props/tree-autumn-cluster-tiles.png" id="2_j2hod"]
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://ccqfwgjkerta5" path="res://Assets/Sprites/grass-tileset-dark.png" id="3_dmva5"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s1h2f"]
 | 
				
			||||||
 | 
					texture = ExtResource("1_nk7yv")
 | 
				
			||||||
 | 
					0:0/0 = 0
 | 
				
			||||||
 | 
					1:0/0 = 0
 | 
				
			||||||
 | 
					2:0/0 = 0
 | 
				
			||||||
 | 
					3:0/0 = 0
 | 
				
			||||||
 | 
					0:1/0 = 0
 | 
				
			||||||
 | 
					1:1/0 = 0
 | 
				
			||||||
 | 
					2:1/0 = 0
 | 
				
			||||||
 | 
					3:1/0 = 0
 | 
				
			||||||
 | 
					0:2/0 = 0
 | 
				
			||||||
 | 
					1:2/0 = 0
 | 
				
			||||||
 | 
					2:2/0 = 0
 | 
				
			||||||
 | 
					3:2/0 = 0
 | 
				
			||||||
 | 
					0:3/0 = 0
 | 
				
			||||||
 | 
					0:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:3/0 = 0
 | 
				
			||||||
 | 
					1:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:3/0 = 0
 | 
				
			||||||
 | 
					2:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:4/0 = 0
 | 
				
			||||||
 | 
					0:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 8, -8, 8, 8, 4, 8)
 | 
				
			||||||
 | 
					1:4/0 = 0
 | 
				
			||||||
 | 
					1:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:4/0 = 0
 | 
				
			||||||
 | 
					2:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
 | 
				
			||||||
 | 
					0:5/0 = 0
 | 
				
			||||||
 | 
					0:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.5, -8, 8, -8, 8, -4, 4, -4)
 | 
				
			||||||
 | 
					1:5/0 = 0
 | 
				
			||||||
 | 
					1:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -4, -8, -4)
 | 
				
			||||||
 | 
					2:5/0 = 0
 | 
				
			||||||
 | 
					2:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, -4, -8, -4)
 | 
				
			||||||
 | 
					3:5/0 = 0
 | 
				
			||||||
 | 
					3:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:5/0 = 0
 | 
				
			||||||
 | 
					4:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:5/0 = 0
 | 
				
			||||||
 | 
					5:5/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:4/0 = 0
 | 
				
			||||||
 | 
					4:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 4, 8, 8, 8, 8, -8)
 | 
				
			||||||
 | 
					3:4/0 = 0
 | 
				
			||||||
 | 
					3:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
 | 
				
			||||||
 | 
					4:3/0 = 0
 | 
				
			||||||
 | 
					4:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:3/0 = 0
 | 
				
			||||||
 | 
					3:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:2/0 = 0
 | 
				
			||||||
 | 
					5:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:1/0 = 0
 | 
				
			||||||
 | 
					4:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:0/0 = 0
 | 
				
			||||||
 | 
					4:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:0/0 = 0
 | 
				
			||||||
 | 
					5:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:1/0 = 0
 | 
				
			||||||
 | 
					5:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					4:2/0 = 0
 | 
				
			||||||
 | 
					4:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:4/0 = 0
 | 
				
			||||||
 | 
					5:4/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 8, -8, 8, 8, 4, 8)
 | 
				
			||||||
 | 
					5:3/0 = 0
 | 
				
			||||||
 | 
					5:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_tw0o1"]
 | 
				
			||||||
 | 
					texture = ExtResource("2_j2hod")
 | 
				
			||||||
 | 
					0:0/0 = 0
 | 
				
			||||||
 | 
					0:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					1:0/0 = 0
 | 
				
			||||||
 | 
					1:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:0/0 = 0
 | 
				
			||||||
 | 
					2:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:0/0 = 0
 | 
				
			||||||
 | 
					3:0/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					0:1/0 = 0
 | 
				
			||||||
 | 
					0:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					1:1/0 = 0
 | 
				
			||||||
 | 
					1:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:1/0 = 0
 | 
				
			||||||
 | 
					2:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:1/0 = 0
 | 
				
			||||||
 | 
					3:1/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					0:2/0 = 0
 | 
				
			||||||
 | 
					0:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					1:2/0 = 0
 | 
				
			||||||
 | 
					1:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:2/0 = 0
 | 
				
			||||||
 | 
					2:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:2/0 = 0
 | 
				
			||||||
 | 
					3:2/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					0:3/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					0:3/0 = 0
 | 
				
			||||||
 | 
					0:3/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
 | 
					0:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					1:3/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					1:3/0 = 0
 | 
				
			||||||
 | 
					1:3/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
 | 
					1:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					2:3/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					2:3/0 = 0
 | 
				
			||||||
 | 
					2:3/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
 | 
					2:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					3:3/size_in_atlas = Vector2i(1, 2)
 | 
				
			||||||
 | 
					3:3/0 = 0
 | 
				
			||||||
 | 
					3:3/0/texture_origin = Vector2i(0, 8)
 | 
				
			||||||
 | 
					3:3/0/y_sort_origin = 8
 | 
				
			||||||
 | 
					3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:0/0 = 0
 | 
				
			||||||
 | 
					4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:0/0 = 0
 | 
				
			||||||
 | 
					5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:1/0 = 0
 | 
				
			||||||
 | 
					5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:1/0 = 0
 | 
				
			||||||
 | 
					4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:2/0 = 0
 | 
				
			||||||
 | 
					4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:2/0 = 0
 | 
				
			||||||
 | 
					5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					5:3/0 = 0
 | 
				
			||||||
 | 
					5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					4:3/0 = 0
 | 
				
			||||||
 | 
					4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w8vpx"]
 | 
				
			||||||
 | 
					texture = ExtResource("3_dmva5")
 | 
				
			||||||
 | 
					0:0/0 = 0
 | 
				
			||||||
 | 
					1:0/0 = 0
 | 
				
			||||||
 | 
					1:1/0 = 0
 | 
				
			||||||
 | 
					2:1/0 = 0
 | 
				
			||||||
 | 
					3:2/0 = 0
 | 
				
			||||||
 | 
					4:2/0 = 0
 | 
				
			||||||
 | 
					4:3/0 = 0
 | 
				
			||||||
 | 
					5:3/0 = 0
 | 
				
			||||||
 | 
					0:1/0 = 0
 | 
				
			||||||
 | 
					0:2/0 = 0
 | 
				
			||||||
 | 
					0:3/0 = 0
 | 
				
			||||||
 | 
					0:4/0 = 0
 | 
				
			||||||
 | 
					0:5/0 = 0
 | 
				
			||||||
 | 
					1:5/0 = 0
 | 
				
			||||||
 | 
					1:6/0 = 0
 | 
				
			||||||
 | 
					2:6/0 = 0
 | 
				
			||||||
 | 
					0:6/0 = 0
 | 
				
			||||||
 | 
					0:7/0 = 0
 | 
				
			||||||
 | 
					1:7/0 = 0
 | 
				
			||||||
 | 
					2:7/0 = 0
 | 
				
			||||||
 | 
					2:5/0 = 0
 | 
				
			||||||
 | 
					1:2/0 = 0
 | 
				
			||||||
 | 
					1:3/0 = 0
 | 
				
			||||||
 | 
					2:3/0 = 0
 | 
				
			||||||
 | 
					3:3/0 = 0
 | 
				
			||||||
 | 
					1:4/0 = 0
 | 
				
			||||||
 | 
					6:3/0 = 0
 | 
				
			||||||
 | 
					2:4/0 = 0
 | 
				
			||||||
 | 
					3:4/0 = 0
 | 
				
			||||||
 | 
					4:4/0 = 0
 | 
				
			||||||
 | 
					2:2/0 = 0
 | 
				
			||||||
 | 
					5:4/0 = 0
 | 
				
			||||||
 | 
					6:4/0 = 0
 | 
				
			||||||
 | 
					7:4/0 = 0
 | 
				
			||||||
 | 
					7:3/0 = 0
 | 
				
			||||||
 | 
					2:0/0 = 0
 | 
				
			||||||
 | 
					3:0/0 = 0
 | 
				
			||||||
 | 
					4:0/0 = 0
 | 
				
			||||||
 | 
					5:0/0 = 0
 | 
				
			||||||
 | 
					6:0/0 = 0
 | 
				
			||||||
 | 
					7:0/0 = 0
 | 
				
			||||||
 | 
					7:1/0 = 0
 | 
				
			||||||
 | 
					6:2/0 = 0
 | 
				
			||||||
 | 
					5:2/0 = 0
 | 
				
			||||||
 | 
					4:1/0 = 0
 | 
				
			||||||
 | 
					3:1/0 = 0
 | 
				
			||||||
 | 
					6:1/0 = 0
 | 
				
			||||||
 | 
					7:2/0 = 0
 | 
				
			||||||
 | 
					5:1/0 = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					physics_layer_0/collision_layer = 1
 | 
				
			||||||
 | 
					sources/0 = SubResource("TileSetAtlasSource_s1h2f")
 | 
				
			||||||
 | 
					sources/3 = SubResource("TileSetAtlasSource_w8vpx")
 | 
				
			||||||
 | 
					sources/1 = SubResource("TileSetAtlasSource_tw0o1")
 | 
				
			||||||
| 
						 | 
					@ -23,17 +23,14 @@ public abstract partial class PlayerState : CharacterState
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (@event.IsActionPressed("equip_1"))
 | 
					            if (@event.IsActionPressed("equip_1"))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //inventory.SelectedItem = inventory.GetItemByMap("equip_1");
 | 
					 | 
				
			||||||
                inventory.SelectedIndex = 0;
 | 
					                inventory.SelectedIndex = 0;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (@event.IsActionPressed("equip_2"))
 | 
					            else if (@event.IsActionPressed("equip_2"))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //inventory.SelectedItem = inventory.GetItemByMap("equip_2");
 | 
					 | 
				
			||||||
                inventory.SelectedIndex = 1;
 | 
					                inventory.SelectedIndex = 1;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (@event.IsActionPressed("equip_3"))
 | 
					            else if (@event.IsActionPressed("equip_3"))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                //inventory.SelectedItem = inventory.GetItemByMap("equip_3");
 | 
					 | 
				
			||||||
                inventory.SelectedIndex = 2;
 | 
					                inventory.SelectedIndex = 2;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (@event.IsActionPressed("next_item"))
 | 
					            else if (@event.IsActionPressed("next_item"))
 | 
				
			||||||
| 
						 | 
					@ -58,6 +55,13 @@ public abstract partial class PlayerState : CharacterState
 | 
				
			||||||
                    return MaxLevelState;
 | 
					                    return MaxLevelState;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (@event.IsActionPressed("inventory"))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var bus = Events.EventBus.Instance;
 | 
				
			||||||
 | 
					                bus.EmitSignal(Events.EventBus.SignalName.PlayerOpenInventory,
 | 
				
			||||||
 | 
					                    player.Inventory);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return base.UnhandledInput(@event);
 | 
					        return base.UnhandledInput(@event);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,7 +3,7 @@ using SupaLidlGame.Utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace SupaLidlGame.State.Global;
 | 
					namespace SupaLidlGame.State.Global;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public partial class GlobalState : Node
 | 
					public partial class GlobalState : Node, ISave
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Progression Progression { get; set; }
 | 
					    public Progression Progression { get; set; }
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,10 @@ public partial class GlobalState : Node
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public Stats Stats { get; set; }
 | 
					    public Stats Stats { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private ulong _saveTimeElapsed = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ulong TimeElapsed => _saveTimeElapsed + Godot.Time.GetTicksMsec();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static GlobalState Instance { get; private set; }
 | 
					    public static GlobalState Instance { get; private set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
| 
						 | 
					@ -76,6 +80,20 @@ public partial class GlobalState : Node
 | 
				
			||||||
        Progression = save.Progression;
 | 
					        Progression = save.Progression;
 | 
				
			||||||
        MapState = save.MapState;
 | 
					        MapState = save.MapState;
 | 
				
			||||||
        Stats = save.Stats;
 | 
					        Stats = save.Stats;
 | 
				
			||||||
 | 
					        _saveTimeElapsed = save.TimeElapsed; // use as offset
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var inventory = World.Instance.CurrentPlayer.Inventory;
 | 
				
			||||||
 | 
					        inventory.Items = Stats.Items;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (int i = 0; i < Stats.HotbarToItemIndexMap.Count; i++)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            int itemIndex = Stats.HotbarToItemIndexMap[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (itemIndex >= 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                inventory.SetHotbarIndexToItemIndex(i, itemIndex);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void ExportToSave(Save save)
 | 
					    public void ExportToSave(Save save)
 | 
				
			||||||
| 
						 | 
					@ -83,5 +101,10 @@ public partial class GlobalState : Node
 | 
				
			||||||
        save.Progression = Progression;
 | 
					        save.Progression = Progression;
 | 
				
			||||||
        save.MapState = MapState;
 | 
					        save.MapState = MapState;
 | 
				
			||||||
        save.Stats = Stats;
 | 
					        save.Stats = Stats;
 | 
				
			||||||
 | 
					        save.TimeElapsed = TimeElapsed; // update time elapsed when saving
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var inventory = World.Instance.CurrentPlayer.Inventory;
 | 
				
			||||||
 | 
					        Stats.Items = inventory.Items;
 | 
				
			||||||
 | 
					        Stats.HotbarToItemIndexMap = inventory.HotbarToItemIndexMap;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -54,4 +54,14 @@ public partial class MapState : Resource
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Variant Get(string key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return this[key];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void Set(string key, Variant value)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        this[key] = value;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
using Godot;
 | 
					using Godot;
 | 
				
			||||||
 | 
					using Godot.Collections;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace SupaLidlGame.State.Global;
 | 
					namespace SupaLidlGame.State.Global;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,4 +14,10 @@ public partial class Stats : Resource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [Export]
 | 
					    [Export]
 | 
				
			||||||
    public int DeathCount { get; set; } = 0;
 | 
					    public int DeathCount { get; set; } = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Array<Items.ItemMetadata> Items { get; set; } = new();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Array<int> HotbarToItemIndexMap { get; set; } = new();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,24 +15,39 @@ public partial class DocExitState : NPCState
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private double _currentDuration = 0;
 | 
					    private double _currentDuration = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private bool _hasPlayedExitAnim = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private bool _previouslyCouldAttack = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override NPCState Enter(IState<NPCState> previousState)
 | 
					    public override NPCState Enter(IState<NPCState> previousState)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        _currentDuration = Duration;
 | 
					        _currentDuration = Duration;
 | 
				
			||||||
        TelegraphAnimationPlayer.Play("exit_out");
 | 
					 | 
				
			||||||
        NPC.ShouldMove = false;
 | 
					        NPC.ShouldMove = false;
 | 
				
			||||||
 | 
					        _hasPlayedExitAnim = false;
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void Exit(IState<NPCState> nextState)
 | 
					    public override void Exit(IState<NPCState> nextState)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        NPC.CanAttack = _previouslyCouldAttack;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override NPCState Process(double delta)
 | 
					    public override NPCState Process(double delta)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        if ((_currentDuration -= delta) <= 0)
 | 
					        if (!NPC.Inventory.IsUsingItem)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return TelegraphState;
 | 
					            if (!_hasPlayedExitAnim)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                _hasPlayedExitAnim = true;
 | 
				
			||||||
 | 
					                _previouslyCouldAttack = NPC.CanAttack;
 | 
				
			||||||
 | 
					                NPC.CanAttack = false;
 | 
				
			||||||
 | 
					                TelegraphAnimationPlayer.Play("exit_out");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if ((_currentDuration -= delta) <= 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return TelegraphState;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,8 +33,19 @@ public partial class DocTelegraphState : NPCState
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        do
 | 
					        do
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            float randX = GD.RandRange(-112, 112);
 | 
					            float randX = GD.RandRange(32, 112);
 | 
				
			||||||
            float randY = GD.RandRange(-112, 112);
 | 
					            float randY = GD.RandRange(32, 112);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (GD.Randi() % 2 == 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                randX = -randX;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (GD.Randi() % 2 == 0)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                randY = -randY;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            randVec = new Vector2(randX, randY);
 | 
					            randVec = new Vector2(randX, randY);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        while (randVec.DistanceSquaredTo(player.GlobalPosition) < 9216);
 | 
					        while (randVec.DistanceSquaredTo(player.GlobalPosition) < 9216);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,14 +9,52 @@ public partial class DashDefensive : AttackState
 | 
				
			||||||
    protected bool _dashedAway = false;
 | 
					    protected bool _dashedAway = false;
 | 
				
			||||||
    protected State.Character.CharacterDashState _dashState;
 | 
					    protected State.Character.CharacterDashState _dashState;
 | 
				
			||||||
    protected float _originalDashModifier;
 | 
					    protected float _originalDashModifier;
 | 
				
			||||||
 | 
					    private Callable _dodgeCallable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Area2D ProjectileDetection { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override void _Ready()
 | 
					    public override void _Ready()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        _dashState = NPC.StateMachine.FindChildOfType<CharacterDashState>();
 | 
					        _dashState = NPC.StateMachine.FindChildOfType<CharacterDashState>();
 | 
				
			||||||
        _originalDashModifier = _dashState.VelocityModifier;
 | 
					        _originalDashModifier = _dashState.VelocityModifier;
 | 
				
			||||||
 | 
					        _dodgeCallable = new Callable(this, MethodName.DodgeProjectile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        base._Ready();
 | 
					        base._Ready();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override IState<ThinkerState> Enter(IState<ThinkerState> prev)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        ProjectileDetection?.Connect(Area2D.SignalName.AreaEntered,
 | 
				
			||||||
 | 
					            _dodgeCallable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return base.Enter(prev);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void Exit(IState<ThinkerState> prev)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        ProjectileDetection?.Disconnect(Area2D.SignalName.AreaEntered,
 | 
				
			||||||
 | 
					            _dodgeCallable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        base.Exit(prev);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void DodgeProjectile(Area2D area)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (area is BoundingBoxes.Hitbox hitbox)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (hitbox.GetOwner() is Entities.Projectile projectile)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GD.Print("changing direction");
 | 
				
			||||||
 | 
					                var direction = projectile.Direction;
 | 
				
			||||||
 | 
					                var dirToChar = projectile.GlobalPosition
 | 
				
			||||||
 | 
					                    .DirectionTo(NPC.GlobalPosition);
 | 
				
			||||||
 | 
					                var lateralDirection = Mathf.Sign(direction.Cross(dirToChar));
 | 
				
			||||||
 | 
					                DashTo(direction.Rotated(lateralDirection * Mathf.Pi / 2));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public override ThinkerState Think()
 | 
					    public override ThinkerState Think()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Characters.Character bestTarget = NPC.FindBestTarget();
 | 
					        Characters.Character bestTarget = NPC.FindBestTarget();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					using Godot;
 | 
				
			||||||
 | 
					using SupaLidlGame.Extensions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace SupaLidlGame.State.Weapon;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public partial class BowAltState : WeaponState
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public Items.Weapons.Bow Bow { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public RangedIdleState IdleState { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public AnimationPlayer AnimationPlayer { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public string AnimationKey { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public int MaxCount { get; set; } = 5;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [Export]
 | 
				
			||||||
 | 
					    public float AngleDeviation { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public float VelocityModifier { get; set; } = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Timer _timer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private int _count = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private float _oldDeviation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override IState<WeaponState> Enter(IState<WeaponState> prev)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //_timer = GetTree().CreateTimer(Weapon.UseAltTime);
 | 
				
			||||||
 | 
					        _timer = new Timer();
 | 
				
			||||||
 | 
					        _count = 1;
 | 
				
			||||||
 | 
					        _oldDeviation = Bow.ProjectileAngleDeviation;
 | 
				
			||||||
 | 
					        Bow.AngleDeviation = AngleDeviation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var timeout = () =>
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Bow.Attack(VelocityModifier);
 | 
				
			||||||
 | 
					            _count++;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Bow.Attack(VelocityModifier);
 | 
				
			||||||
 | 
					        Bow.UseDirection = Bow.Character.Target;
 | 
				
			||||||
 | 
					        AnimationPlayer?.TryPlay(AnimationKey);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _timer.Connect(Timer.SignalName.Timeout, Callable.From(timeout));
 | 
				
			||||||
 | 
					        AddChild(_timer);
 | 
				
			||||||
 | 
					        _timer.Start(Bow.UseAltTime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GD.Print("Entered alt fire state");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override WeaponState Process(double delta)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        if (_count >= MaxCount)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return IdleState;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public override void Exit(IState<WeaponState> nextState)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        _timer.QueueFree();
 | 
				
			||||||
 | 
					        Bow.AngleDeviation = _oldDeviation;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||