Compare commits

..

1 Commits

Author SHA1 Message Date
HumanoidSandvichDispenser 4de81c9a63
Merge 79e42d5b02 into b8a5e641b6 2024-06-04 22:12:29 -07:00
234 changed files with 3187 additions and 21023 deletions

View File

@ -17,9 +17,3 @@ 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

Binary file not shown.

View File

@ -1,19 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 743 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 416 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

After

Width:  |  Height:  |  Size: 783 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

After

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 775 B

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,34 +0,0 @@
[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

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,34 +0,0 @@
[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

View File

@ -0,0 +1,48 @@
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;
}
}
}

View File

@ -0,0 +1,25 @@
[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="."]

View File

@ -1,47 +0,0 @@
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);
}
}

View File

@ -3,9 +3,7 @@
[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"]
collision_layer = 256 priority = 5.0
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="."]

View File

@ -3,8 +3,6 @@
[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="."]

View File

@ -1,70 +0,0 @@
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);
}
}
}

View File

@ -10,6 +10,9 @@ 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
{ {
@ -106,7 +109,7 @@ public partial class Doc : Boss
if (name == "Doc") if (name == "Doc")
{ {
IsActive = true; IsActive = true;
Inventory.SelectedItem = GetNode<Items.Item>("%DocLance"); Inventory.SelectedItem = Lance;
} }
}; };
@ -119,7 +122,7 @@ public partial class Doc : Boss
if (this.GetWorld().CurrentPlayer.IsAlive && !IsActive) if (this.GetWorld().CurrentPlayer.IsAlive && !IsActive)
{ {
IsActive = true; IsActive = true;
Inventory.SelectedItem = GetNode<Items.Item>("%DocLance"); Inventory.SelectedItem = Lance;
} }
}; };
} }

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=72 format=3 uid="uid://d2skjvvx6fal0"] [gd_scene load_steps=70 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,7 +38,6 @@
[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
@ -328,21 +327,6 @@ 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 = {
@ -568,16 +552,14 @@ size = Vector2(16, 19)
[sub_resource type="CircleShape2D" id="CircleShape2D_8hwat"] [sub_resource type="CircleShape2D" id="CircleShape2D_8hwat"]
radius = 16.0 radius = 16.0
[sub_resource type="CircleShape2D" id="CircleShape2D_kap5k"] [node name="Doc" type="CharacterBody2D" node_paths=PackedStringArray("Lance", "BossStateMachine", "DefaultSelectedItem", "ThinkerStateMachine", "Stats", "Sprite", "Inventory", "StateMachine", "Hurtbox")]
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")
@ -700,9 +682,8 @@ 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("ProjectileDetection", "NPC")] [node name="DashDefensive" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("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("../..")
@ -779,9 +760,6 @@ 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
@ -807,8 +785,14 @@ script = ExtResource("8_r8ejq")
Hotbar = [] Hotbar = []
Items = [] Items = []
[node name="DocLance" parent="Inventory" instance=ExtResource("24_2es2r")] [node name="DocLance" parent="Inventory" node_paths=PackedStringArray("Hitbox", "AnimationPlayer", "ParryParticles", "StateMachine", "Anchor", "HandAnchor") 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")]
@ -823,13 +807,5 @@ 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"]

View File

@ -152,7 +152,6 @@ 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")

View File

@ -364,11 +364,13 @@ 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
gravity = Vector3(0, 0, 0) orbit_velocity_min = 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
@ -403,7 +405,6 @@ 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")
@ -440,6 +441,7 @@ 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")]
@ -448,6 +450,7 @@ 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("../..")
@ -527,17 +530,15 @@ 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_paths=PackedStringArray("Hotbar")] [node name="Inventory" type="Node2D" parent="."]
position = Vector2(0, -4) position = Vector2(0, -4)
script = ExtResource("17_sjq8t") script = ExtResource("17_sjq8t")
Hotbar = []
[node name="ProjectileSpawner" parent="Inventory" node_paths=PackedStringArray("StateMachine") instance=ExtResource("17_dmlbb")] [node name="ProjectileSpawner" parent="Inventory" 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")]

View File

@ -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="CircleShape2D" id="CircleShape2D_umi1b"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"]
radius = 4.0 size = Vector2(8, 8)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1gjgc"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_1gjgc"]
size = Vector2(12, 16) size = Vector2(12, 16)
@ -290,7 +290,6 @@ 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="."]
@ -417,7 +416,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, 4) position = Vector2(-0.5, 4)
rotation = 6.28319 rotation = 6.28319
[node name="Node2D" type="Node2D" parent="Sprites"] [node name="Node2D" type="Node2D" parent="Sprites"]
@ -430,7 +429,7 @@ offset = Vector2(0, -12)
hframes = 7 hframes = 7
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_umi1b") shape = SubResource("RectangleShape2D_bfqew")
[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")

View File

@ -104,17 +104,19 @@ 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 (var character in World.Instance.CurrentMap.GetCharacters()) foreach (Node node in GetParent().GetChildren())
{ {
bool isFriendly = ((IFaction)character).AlignsWith(this); if (node is Character character)
if (isFriendly || !character.IsAlive) {
bool isFriendly = character.Faction == Faction;
if (isFriendly || character.Health <= 0)
{ {
continue; continue;
} }
float score = 0; float score = 0;
score += GlobalPosition.DistanceSquaredTo(character.GlobalPosition); score -= Position.DistanceTo(character.Position);
if (score < bestScore) if (score < bestScore)
{ {
@ -122,7 +124,7 @@ public partial class NPC : Character
bestChar = character; bestChar = character;
} }
} }
}
return bestChar; return bestChar;
} }

View File

@ -36,9 +36,6 @@ 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; }
@ -78,17 +75,6 @@ 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);
@ -252,6 +238,7 @@ 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;

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=77 format=3 uid="uid://b2254pup8k161"] [gd_scene load_steps=74 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,18 +27,16 @@
[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="Resource" uid="uid://cl7jvdu2lnv2d" path="res://Items/Weapons/Sword.tres" id="33_3qyfl"] [ext_resource type="PackedScene" uid="uid://cgg0sfm2qeiwn" path="res://Items/Weapons/Bow.tscn" id="31_mofvy"]
[ext_resource type="Resource" uid="uid://cjsh0dcgbfn77" path="res://Items/Weapons/Bow.tres" id="34_70ron"] [ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"]
[ext_resource type="Resource" uid="uid://iqe6rgnb3jur" path="res://Items/Weapons/Pugio.tres" id="35_4pap1"] [ext_resource type="PackedScene" uid="uid://5y1acxl4j4n7" path="res://Items/Weapons/Pugio.tscn" id="32_6ffmm"]
[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")
@ -46,12 +44,6 @@ 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"
@ -602,14 +594,6 @@ 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")
@ -781,7 +765,6 @@ 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
@ -836,8 +819,34 @@ 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 = [null, null, null] Hotbar = [NodePath("Sword"), NodePath("Bow"), NodePath("Pugio")]
Items = Array[Object]([ExtResource("33_3qyfl"), ExtResource("34_70ron"), ExtResource("35_4pap1")]) InventoryMap = {
"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
@ -866,12 +875,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)
energy = 0.2 blend_mode = 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("38_6udj8") texture = ExtResource("15_3hahh")
texture_scale = 0.5 height = 10.0
[node name="DamageTime" type="Node" parent="."] [node name="DamageTime" type="Node" parent="."]
script = ExtResource("15_4xl06") script = ExtResource("15_4xl06")

View File

@ -174,7 +174,6 @@ 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")

View File

@ -91,6 +91,11 @@ 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

View File

@ -17,9 +17,11 @@ 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
gravity = Vector3(0, 0, 0) orbit_velocity_min = 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")

View File

@ -59,13 +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...");
if (!navmesh.IsBaking())
{
navmesh.BakeNavigationPolygon(); navmesh.BakeNavigationPolygon();
} }
} }
} }
}
public virtual void Open() public virtual void Open()
{ {

View File

@ -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": [1.0, 0.0] "values": [0.5, 0.0]
} }
[sub_resource type="AnimationLibrary" id="AnimationLibrary_g3m4l"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_g3m4l"]
@ -105,7 +105,6 @@ 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")
@ -120,7 +119,6 @@ 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"]

View File

@ -1,60 +1,59 @@
[gd_scene load_steps=13 format=3 uid="uid://c1w7t6irnohfx"] [gd_scene load_steps=12 format=3 uid="uid://c1w7t6irnohfx"]
[ext_resource type="Texture2D" uid="uid://cyfyelyq3o15s" path="res://Assets/Sprites/Misc/torch-fire.png" id="1_gnoxc"] [ext_resource type="Texture2D" uid="uid://har1bd5u4dq3" path="res://Assets/Sprites/Misc/torch.png" id="1_14bgb"]
[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_vnjya"] [sub_resource type="AtlasTexture" id="AtlasTexture_js1l1"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(0, 0, 8, 8) region = Rect2(0, 0, 8, 12)
[sub_resource type="AtlasTexture" id="AtlasTexture_l2emm"] [sub_resource type="AtlasTexture" id="AtlasTexture_gdxtl"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(8, 0, 8, 8) region = Rect2(8, 0, 8, 12)
[sub_resource type="AtlasTexture" id="AtlasTexture_03weu"] [sub_resource type="AtlasTexture" id="AtlasTexture_da7fw"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(16, 0, 8, 8) region = Rect2(16, 0, 8, 12)
[sub_resource type="AtlasTexture" id="AtlasTexture_1fqw1"] [sub_resource type="AtlasTexture" id="AtlasTexture_rpccx"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(24, 0, 8, 8) region = Rect2(24, 0, 8, 12)
[sub_resource type="AtlasTexture" id="AtlasTexture_sj1bi"] [sub_resource type="AtlasTexture" id="AtlasTexture_crwu1"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(32, 0, 8, 8) region = Rect2(32, 0, 8, 12)
[sub_resource type="AtlasTexture" id="AtlasTexture_1xpxx"] [sub_resource type="AtlasTexture" id="AtlasTexture_r3kxc"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(40, 0, 8, 8) region = Rect2(40, 0, 8, 12)
[sub_resource type="AtlasTexture" id="AtlasTexture_dxfgw"] [sub_resource type="AtlasTexture" id="AtlasTexture_225la"]
atlas = ExtResource("1_gnoxc") atlas = ExtResource("1_14bgb")
region = Rect2(48, 0, 8, 8) region = Rect2(48, 0, 8, 12)
[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_vnjya") "texture": SubResource("AtlasTexture_js1l1")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_l2emm") "texture": SubResource("AtlasTexture_gdxtl")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_03weu") "texture": SubResource("AtlasTexture_da7fw")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_1fqw1") "texture": SubResource("AtlasTexture_rpccx")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_sj1bi") "texture": SubResource("AtlasTexture_crwu1")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_1xpxx") "texture": SubResource("AtlasTexture_r3kxc")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_dxfgw") "texture": SubResource("AtlasTexture_225la")
}], }],
"loop": true, "loop": true,
"name": &"default", "name": &"default",
@ -65,25 +64,18 @@ animations = [{
radius = 4.0 radius = 4.0
[node name="Torch" type="Node2D"] [node name="Torch" type="Node2D"]
y_sort_enabled = true
[node name="Sprites" type="Node2D" parent="."] [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
texture_filter = 1
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Sprites"] position = Vector2(0, -10)
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.811765, 0.537255, 1) color = Color(1, 0.976471, 0.92549, 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)

View File

@ -1,96 +1,94 @@
[gd_scene load_steps=18 format=3 uid="uid://ceadk7pam7vab"] [gd_scene load_steps=16 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_dtmd3"] [sub_resource type="AtlasTexture" id="AtlasTexture_ikvnd"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(0, 0, 12, 14) region = Rect2(0, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_irtpk"] [sub_resource type="AtlasTexture" id="AtlasTexture_b7wal"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(12, 0, 12, 14) region = Rect2(12, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_0gb20"] [sub_resource type="AtlasTexture" id="AtlasTexture_68y2k"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(24, 0, 12, 14) region = Rect2(24, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_5uhdg"] [sub_resource type="AtlasTexture" id="AtlasTexture_eib4d"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(36, 0, 12, 14) region = Rect2(36, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_e4moo"] [sub_resource type="AtlasTexture" id="AtlasTexture_7q5cd"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(48, 0, 12, 14) region = Rect2(48, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_soja6"] [sub_resource type="AtlasTexture" id="AtlasTexture_k8jtr"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(60, 0, 12, 14) region = Rect2(60, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_sn741"] [sub_resource type="AtlasTexture" id="AtlasTexture_egan1"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(72, 0, 12, 14) region = Rect2(72, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_r825r"] [sub_resource type="AtlasTexture" id="AtlasTexture_eymjc"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(84, 0, 12, 14) region = Rect2(84, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_75y5m"] [sub_resource type="AtlasTexture" id="AtlasTexture_go3ky"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(96, 0, 12, 14) region = Rect2(96, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_l8r4c"] [sub_resource type="AtlasTexture" id="AtlasTexture_rvq52"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(108, 0, 12, 14) region = Rect2(108, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_7gxo8"] [sub_resource type="AtlasTexture" id="AtlasTexture_cjdtb"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(120, 0, 12, 14) region = Rect2(120, 0, 12, 24)
[sub_resource type="AtlasTexture" id="AtlasTexture_60wov"] [sub_resource type="AtlasTexture" id="AtlasTexture_vi5xh"]
atlas = ExtResource("2_a6lwn") atlas = ExtResource("1_dlkl0")
region = Rect2(132, 0, 12, 14) region = Rect2(132, 0, 12, 24)
[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_dtmd3") "texture": SubResource("AtlasTexture_ikvnd")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_irtpk") "texture": SubResource("AtlasTexture_b7wal")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_0gb20") "texture": SubResource("AtlasTexture_68y2k")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_5uhdg") "texture": SubResource("AtlasTexture_eib4d")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_e4moo") "texture": SubResource("AtlasTexture_7q5cd")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_soja6") "texture": SubResource("AtlasTexture_k8jtr")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_sn741") "texture": SubResource("AtlasTexture_egan1")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_r825r") "texture": SubResource("AtlasTexture_eymjc")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_75y5m") "texture": SubResource("AtlasTexture_go3ky")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_l8r4c") "texture": SubResource("AtlasTexture_rvq52")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_7gxo8") "texture": SubResource("AtlasTexture_cjdtb")
}, { }, {
"duration": 1.0, "duration": 1.0,
"texture": SubResource("AtlasTexture_60wov") "texture": SubResource("AtlasTexture_vi5xh")
}], }],
"loop": true, "loop": true,
"name": &"default", "name": &"default",
@ -99,26 +97,15 @@ 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_progress = 0.557817 frame = 9
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
@ -126,13 +113,3 @@ 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

View File

@ -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 && IsInstanceValid(CharacterTarget)) if (CharacterTarget is not null)
{ {
var pos = CharacterTarget.GlobalPosition; var pos = CharacterTarget.GlobalPosition;
var desired = GlobalPosition.DirectionTo(pos); var desired = GlobalPosition.DirectionTo(pos);

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=25 format=3 uid="uid://1y5r6sklwgrp"] [gd_scene load_steps=24 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,20 +10,17 @@
[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, 1.992, 0, 0.334, 1, 2, 2, 2, 1) colors = PackedColorArray(0.996078, 0, 0.164706, 0, 0.996045, 0, 0.166638, 1, 1, 1, 1, 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, 2, 2, 2, 1) colors = PackedColorArray(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 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)
@ -135,14 +132,11 @@ 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)
@ -154,11 +148,9 @@ 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")

View File

@ -36,9 +36,6 @@ 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);

View File

@ -1,5 +1,4 @@
using Godot; using Godot;
using IEnumerableNode = System.Collections.Generic.IEnumerable<Godot.Node>;
namespace SupaLidlGame.Extensions; namespace SupaLidlGame.Extensions;
@ -56,13 +55,4 @@ 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);
}
}
} }

View File

@ -11,11 +11,10 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
[Export] [Export]
public Array<Item> Hotbar { get; private set; } public Array<Item> Hotbar { get; private set; }
public Array<int> HotbarToItemIndexMap { get; set; } = new(); [Export]
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]
@ -63,12 +62,6 @@ 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)
@ -76,7 +69,6 @@ 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)
@ -119,6 +111,8 @@ 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;
} }
@ -162,47 +156,6 @@ 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)
@ -239,21 +192,6 @@ 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);
} }

View File

@ -65,15 +65,4 @@ public abstract partial class Item : Node2D
{ {
} }
public virtual void Remove()
{
if (IsUsing)
{
Deuse();
}
Unequip(CharacterOwner);
QueueFree();
}
} }

View File

@ -1,5 +1,4 @@
using Godot; using Godot;
using SupaLidlGame.Extensions;
namespace SupaLidlGame.Items.Weapons; namespace SupaLidlGame.Items.Weapons;
@ -9,47 +8,19 @@ public partial class Bow : ProjectileSpawner
protected Area2D _ignitionArea; protected Area2D _ignitionArea;
protected override Entities.Projectile SpawnProjectile(Scenes.Map map, protected override void SpawnProjectile(Scenes.Map map,
Vector2 direction, float velocityModifier = 1) Vector2 direction, float velocityModifier = 1)
{ {
var projectile = base.SpawnProjectile(map, direction, velocityModifier); 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");
var onAreaEntered = (Area2D area) => _ignitionArea.AreaEntered += (Area2D area) =>
{ {
if (!_isOnFire) _isOnFire = false;
{
var flame = GetNode<AnimatedSprite2D>("%Flame");
flame.Visible = true;
flame.GetNode<AudioStreamPlayer2D>("Ignite")
.OnWorld()
.PlayOneShot();
_isOnFire = true;
}
}; };
_ignitionArea.Connect(
Area2D.SignalName.AreaEntered,
Callable.From(onAreaEntered));
} }
} }

View File

@ -1,75 +1,15 @@
[gd_scene load_steps=29 format=3 uid="uid://cgg0sfm2qeiwn"] [gd_scene load_steps=17 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/Bow.cs" id="1_ikgu2"] [ext_resource type="Script" path="res://Items/Weapons/ProjectileSpawner.cs" id="1_76bur"]
[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"
@ -85,101 +25,6 @@ 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"
@ -211,20 +56,8 @@ 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_j5qtq"] [sub_resource type="Animation" id="Animation_bejvb"]
resource_name = "fire" resource_name = "fire"
tracks/0/type = "value" tracks/0/type = "value"
tracks/0/imported = false tracks/0/imported = false
@ -253,30 +86,6 @@ 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"
@ -296,9 +105,8 @@ 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_j5qtq"), "fire": SubResource("Animation_bejvb"),
"idle": SubResource("Animation_riv7t") "idle": SubResource("Animation_riv7t")
} }
@ -306,29 +114,27 @@ _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_ikgu2") script = ExtResource("1_76bur")
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", "AltFireState", "Weapon", "AnimationPlayer")] [node name="Idle" type="Node" parent="StateMachine" node_paths=PackedStringArray("FireState", "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"
@ -348,14 +154,6 @@ 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)
@ -368,25 +166,6 @@ 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")

View File

@ -33,7 +33,7 @@ public partial class ProjectileSpawner : Ranged
} }
} }
protected virtual Entities.Projectile SpawnProjectile(Scenes.Map map, protected virtual void 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,7 +70,6 @@ public partial class ProjectileSpawner : Ranged
} }
} }
return projectile;
} }
public override void Attack() public override void Attack()
@ -86,12 +85,6 @@ 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);

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=29 format=3 uid="uid://5y1acxl4j4n7"] [gd_scene load_steps=30 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,6 +19,11 @@
[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"
@ -377,6 +382,9 @@ 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
@ -412,6 +420,7 @@ 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"]

View File

@ -29,24 +29,12 @@ 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);

View File

@ -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.2), "times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 0, "update": 1,
"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, 0.1, 1, 1.5), "times": PackedFloat32Array(0, 1, 1.5),
"transitions": PackedFloat32Array(1, 1, 1, 1), "transitions": PackedFloat32Array(1, 1, 1),
"update": 0, "update": 0,
"values": [6.19592, 6.28319, 6.28319, 0.0] "values": [6.28319, 6.28319, 0.0]
} }
tracks/3/type = "audio" tracks/3/type = "audio"
tracks/3/imported = false tracks/3/imported = false

View File

@ -206,11 +206,6 @@ 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)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=25 format=3 uid="uid://dvqap2uhcah63"] [gd_scene load_steps=26 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,6 +16,11 @@
[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
@ -98,18 +103,6 @@ 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"
@ -180,7 +173,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.1, 0.35), "times": PackedFloat32Array(0, 0.15, 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]
@ -216,10 +209,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.1), "times": PackedFloat32Array(0, 0.15),
"transitions": PackedFloat32Array(1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [2.35619] "values": [0.0, 2.35619]
} }
tracks/4/type = "method" tracks/4/type = "method"
tracks/4/imported = false tracks/4/imported = false
@ -242,34 +235,10 @@ 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.1, 0.35), "times": PackedFloat32Array(0, 0.35),
"transitions": PackedFloat32Array(1, 1, 1), "transitions": PackedFloat32Array(1, 1),
"update": 1, "update": 1,
"values": [false, true, false] "values": [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"]
@ -375,6 +344,9 @@ 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
@ -417,6 +389,7 @@ 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"]

View File

@ -111,7 +111,6 @@ 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)

View File

@ -1,10 +1,13 @@
[gd_scene load_steps=3 format=3 uid="uid://hm3ek8vqt1d4"] [gd_scene load_steps=4 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
@ -26,17 +29,18 @@ vframes = 2
frame = 9 frame = 9
[node name="TopLeft" type="Sprite2D" parent="."] [node name="TopLeft" type="Sprite2D" parent="."]
position = Vector2(-16, 0) position = Vector2(-16, -16)
texture = ExtResource("1_cnrpk") texture = ExtResource("1_cnrpk")
centered = false centered = false
offset = Vector2(0, -32) offset = Vector2(0, -16)
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, -32) offset = Vector2(0, -16)
hframes = 8 hframes = 8
vframes = 2 vframes = 2
frame = 1 frame = 1
@ -44,3 +48,6 @@ 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")

View File

@ -7,8 +7,9 @@ Forsen-related game
## Building ## Building
> [!IMPORTANT] > [!IMPORTANT]
> This is currently being developed with Godot 4.3 beta 1, which > includes > This is currently being developed with Godot 4.3 dev 3 snapshot, which
a fix for C# generics causing problems and resetting properties to > null. > includes a fix for C# generics causing problems and resetting properties to
> null.
Requires .NET version >=7.0. Requires .NET version >=7.0.

View File

@ -10,62 +10,45 @@ 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.2 glow_hdr_threshold = 1.4
[node name="TileMap" type="Node2D" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")] [node name="TileMap" type="TileMap" 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="."]

View File

@ -1,8 +1,7 @@
[gd_scene load_steps=4 format=3 uid="uid://1pb3mpmrl7lc"] [gd_scene load_steps=3 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
@ -25,8 +24,3 @@ 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")

View File

@ -1,10 +1,9 @@
using Godot; using Godot;
using SupaLidlGame.Extensions; using SupaLidlGame.Extensions;
using System.Collections.Generic;
namespace SupaLidlGame.Scenes; namespace SupaLidlGame.Scenes;
public partial class Map : Node2D public partial class Map : TileMap
{ {
[Export] [Export]
public Node2D Entities { get; set; } public Node2D Entities { get; set; }
@ -72,17 +71,6 @@ public partial class Map : Node2D
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();

File diff suppressed because one or more lines are too long

View File

@ -1,16 +0,0 @@
[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")

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,25 @@
[gd_resource type="TileSet" load_steps=14 format=3 uid="uid://l61kbx31ug4p"] [gd_resource type="TileSet" load_steps=12 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_7s0wj"] [sub_resource type="NavigationPolygon" id="NavigationPolygon_7lhug"]
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_7vkqx"] [sub_resource type="NavigationPolygon" id="NavigationPolygon_d0snv"]
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_pxj45"] [sub_resource type="NavigationPolygon" id="NavigationPolygon_m43r7"]
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"]
@ -22,6 +30,8 @@ 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
@ -30,10 +40,12 @@ 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_7s0wj") 0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
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
@ -42,10 +54,12 @@ 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_7s0wj") 1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
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
@ -57,14 +71,17 @@ 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
@ -73,10 +90,12 @@ 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_7s0wj") 1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
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
@ -85,35 +104,59 @@ 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_7s0wj") 0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 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_m43r7")
3:0/0 = 0 3:0/0 = 0
3:0/0/terrain_set = 0 3:0/0/terrain_set = 0
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 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_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
@ -125,53 +168,74 @@ 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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
6:2/0/physics_layer_0/angular_velocity = 0.0
7:2/0 = 0 7:2/0 = 0
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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
@ -180,6 +244,8 @@ 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
@ -188,6 +254,8 @@ 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
@ -196,6 +264,8 @@ 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
@ -205,61 +275,100 @@ 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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
8:2/0/physics_layer_0/angular_velocity = 0.0
9:1/0 = 0 9:1/0 = 0
9:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
9:1/0/physics_layer_0/angular_velocity = 0.0
9:2/0 = 0 9:2/0 = 0
9:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj") 9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
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
@ -270,37 +379,52 @@ 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
@ -311,43 +435,70 @@ 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"]
@ -359,271 +510,213 @@ 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)
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_45tin"] 2:1/0/physics_layer_0/angular_velocity = 0.0
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
@ -642,4 +735,3 @@ 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")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,211 +0,0 @@
[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")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -23,14 +23,17 @@ 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"))
@ -55,13 +58,6 @@ 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);

View File

@ -3,7 +3,7 @@ using SupaLidlGame.Utils;
namespace SupaLidlGame.State.Global; namespace SupaLidlGame.State.Global;
public partial class GlobalState : Node, ISave public partial class GlobalState : Node
{ {
[Export] [Export]
public Progression Progression { get; set; } public Progression Progression { get; set; }
@ -14,10 +14,6 @@ public partial class GlobalState : Node, ISave
[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]
@ -80,20 +76,6 @@ public partial class GlobalState : Node, ISave
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)
@ -101,10 +83,5 @@ public partial class GlobalState : Node, ISave
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;
} }
} }

View File

@ -54,14 +54,4 @@ 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;
}
} }

View File

@ -1,5 +1,4 @@
using Godot; using Godot;
using Godot.Collections;
namespace SupaLidlGame.State.Global; namespace SupaLidlGame.State.Global;
@ -14,10 +13,4 @@ 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();
} }

View File

@ -15,40 +15,25 @@ 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 (!NPC.Inventory.IsUsingItem)
{
if (!_hasPlayedExitAnim)
{
_hasPlayedExitAnim = true;
_previouslyCouldAttack = NPC.CanAttack;
NPC.CanAttack = false;
TelegraphAnimationPlayer.Play("exit_out");
}
if ((_currentDuration -= delta) <= 0) if ((_currentDuration -= delta) <= 0)
{ {
return TelegraphState; return TelegraphState;
} }
}
return null; return null;
} }
} }

View File

@ -33,19 +33,8 @@ public partial class DocTelegraphState : NPCState
do do
{ {
float randX = GD.RandRange(32, 112); float randX = GD.RandRange(-112, 112);
float randY = GD.RandRange(32, 112); float randY = GD.RandRange(-112, 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);

View File

@ -9,52 +9,14 @@ 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();

View File

@ -1,75 +0,0 @@
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;
}
}

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