galo 2 years ago
parent
commit
d476161b8f

+ 2 - 2
.import/Untitledcxz.png-65da0d5ef82f00bd0a0d1a18cb710f50.md5

@@ -1,3 +1,3 @@
-source_md5="7a648df462c18476b0da7973bb207b88"
-dest_md5="aa1b7ae3a77ccfc7b1abe1bc4a80cac4"
+source_md5="bb5f544496fbbdf30004868134fa85ab"
+dest_md5="388dc9cf6b5912d7abe5985db42bd35c"
 

BIN
.import/Untitledcxz.png-65da0d5ef82f00bd0a0d1a18cb710f50.stex


+ 20 - 4
Client.gd

@@ -50,10 +50,26 @@ func send_input(arg):
 
 remote func player_position(arg):
 	for id in arg.keys():
-		var node = $players.get_node(str(id))
-		node.flip_h = node.global_position.x > arg[id].x
-		node.global_position = arg[id]
+		if $players.has_node(str(id)):
+			var node = $players.get_node(str(id))
+			if node.global_position.x != arg[id].x:
+				node.scale.x = -1 if node.global_position.x > arg[id].x else 1
+			node.global_position = arg[id]
 
 remote func player_animation(arg):
 	for id in arg.keys():
-		$players.get_node(str(id)).animation  = arg[id]
+		if $players.has_node(str(id)):
+			$players.get_node(str(id)).animation  = arg[id]
+
+remote func enemies_position(arg):
+	if has_node('enemies'):
+		for i in $enemies.get_children():
+			i.hide()
+		for id in arg.keys().size():
+			var node = $enemies.get_child(id)
+			node.global_position = arg[arg.keys()[id]][0]
+			node.animation = arg[arg.keys()[id]][1]
+			node.show()
+
+remote func attack_anim(arg):
+	$players.get_node( str(api.get_network_unique_id()) ).get_node('weapon/AnimationPlayer').play(arg)

+ 5 - 3
Enemy.gd

@@ -1,12 +1,14 @@
 extends KinematicBody2D
 
 var vida = 2
-var speed = 50
+var speed = 35
+var type = 'goblin'
 
 func damage(arg):
-	print('dmg')
 	vida += arg
-	if vida == 0:queue_free()
+	if vida == 0:
+		get_parent().death_count()
+		queue_free()
 
 var motion = Vector2()
 var target

+ 5 - 1
Enemy.tscn

@@ -1,6 +1,7 @@
-[gd_scene load_steps=3 format=2]
+[gd_scene load_steps=4 format=2]
 
 [ext_resource path="res://Enemy.gd" type="Script" id=1]
+[ext_resource path="res://damage_enemy.tscn" type="PackedScene" id=2]
 
 [sub_resource type="RectangleShape2D" id=1]
 
@@ -9,5 +10,8 @@ collision_layer = 4
 collision_mask = 4
 script = ExtResource( 1 )
 
+[node name="damage_enemy" parent="." instance=ExtResource( 2 )]
+damage = -10
+
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 shape = SubResource( 1 )

+ 9 - 1
Server.gd

@@ -26,7 +26,7 @@ var playerphsyics = preload('res://playerphysics.tscn')
 func conn(arg):
 	print('client connected, id: ' + str(arg))
 	yield(get_tree(),"physics_frame")
-	rpc_id(arg,'ping')
+	rpc_id(0,'ping')
 	print('clients connected: ' + str(custom_multiplayer.get_network_connected_peers().size()))
 	var instance = playerphsyics.instance()
 	instance.name = str(arg)
@@ -55,3 +55,11 @@ func _physics_process(delta):
 	for i in $players.get_children():
 		animation_datachunk[i.name] = i.animation
 	rpc_id(0, 'player_animation', animation_datachunk)
+	
+	var enemies_datachunk = {}
+	for i in $enemies.get_children():
+		enemies_datachunk[i.name] = [i.global_position, i.type]
+	rpc_id(0, 'enemies_position', enemies_datachunk)
+
+remote func player_anim(attack,arg):
+	rpc_id(int(name), 'attack_anim', attack)

BIN
art/Untitledcxz.png


BIN
art/Untitledcxz.png~


+ 4 - 1
damage.gd

@@ -1,8 +1,11 @@
 extends Area2D
+
+export var damage = -1
+
 func _on_Timer_timeout():
 	queue_free()
 	pass # Replace with function body.
 
 func _on_damage_player_body_entered(area):
-	area.damage(-1)
+	area.damage( damage)
 	pass # Replace with function body.

+ 14 - 0
damage_enemy.tscn

@@ -0,0 +1,14 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://damage.gd" type="Script" id=1]
+
+[sub_resource type="RectangleShape2D" id=1]
+
+[node name="damage_enemy" type="Area2D"]
+collision_layer = 0
+collision_mask = 2147483650
+script = ExtResource( 1 )
+
+[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
+shape = SubResource( 1 )
+[connection signal="body_entered" from="." to="." method="_on_damage_player_body_entered"]

+ 0 - 32
enemie/goblin.tscn

@@ -1,32 +0,0 @@
-[gd_scene load_steps=7 format=2]
-
-[ext_resource path="res://art/Untitledcxz.png" type="Texture" id=1]
-
-[sub_resource type="AtlasTexture" id=4]
-atlas = ExtResource( 1 )
-region = Rect2( 0, 0, 150, 150 )
-
-[sub_resource type="AtlasTexture" id=5]
-atlas = ExtResource( 1 )
-region = Rect2( 150, 0, 150, 150 )
-
-[sub_resource type="AtlasTexture" id=6]
-atlas = ExtResource( 1 )
-region = Rect2( 300, 0, 150, 150 )
-
-[sub_resource type="AtlasTexture" id=7]
-atlas = ExtResource( 1 )
-region = Rect2( 450, 0, 150, 150 )
-
-[sub_resource type="SpriteFrames" id=3]
-animations = [ {
-"frames": [ SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ) ],
-"loop": true,
-"name": "default",
-"speed": 5.0
-} ]
-
-[node name="goblin" type="AnimatedSprite"]
-frames = SubResource( 3 )
-frame = 2
-playing = true

+ 55 - 0
enemie/monster.tscn

@@ -0,0 +1,55 @@
+[gd_scene load_steps=8 format=2]
+
+[ext_resource path="res://art/Untitledcxz.png" type="Texture" id=1]
+
+[sub_resource type="AtlasTexture" id=9]
+atlas = ExtResource( 1 )
+region = Rect2( 0, 0, 112, 113 )
+
+[sub_resource type="AtlasTexture" id=10]
+atlas = ExtResource( 1 )
+region = Rect2( 112, 0, 112, 113 )
+
+[sub_resource type="AtlasTexture" id=11]
+atlas = ExtResource( 1 )
+region = Rect2( 224, 0, 112, 113 )
+
+[sub_resource type="AtlasTexture" id=12]
+atlas = ExtResource( 1 )
+region = Rect2( 336, 0, 112, 113 )
+
+[sub_resource type="SpriteFrames" id=3]
+animations = [ {
+"frames": [ SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ],
+"loop": true,
+"name": "goblin",
+"speed": 5.0
+} ]
+
+[sub_resource type="GDScript" id=8]
+script/source = "extends AnimatedSprite
+
+
+# Declare member variables here. Examples:
+# var a = 2
+# var b = \"text\"
+
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+	speed_scale = rand_range(0.8,1.2)
+	pass # Replace with function body.
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+#func _process(delta):
+#	pass
+"
+
+[node name="monster" type="AnimatedSprite"]
+visible = false
+frames = SubResource( 3 )
+animation = "goblin"
+frame = 1
+playing = true
+script = SubResource( 8 )

+ 18 - 0
enemiessprite.gd

@@ -0,0 +1,18 @@
+extends Node
+
+
+# Declare member variables here. Examples:
+# var a = 2
+# var b = "text"
+var sprite = preload('res://enemie/monster.tscn')
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+	for i in 1024:
+		add_child(sprite.instance())
+	pass # Replace with function body.
+
+
+# Called every frame. 'delta' is the elapsed time since the previous frame.
+#func _process(delta):
+#	pass

+ 4 - 2
main.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=8 format=2]
 
 [ext_resource path="res://Client.gd" type="Script" id=1]
 [ext_resource path="res://Server.gd" type="Script" id=2]
@@ -6,6 +6,7 @@
 [ext_resource path="res://ping.gd" type="Script" id=4]
 [ext_resource path="res://Input.gd" type="Script" id=5]
 [ext_resource path="res://spawner.gd" type="Script" id=6]
+[ext_resource path="res://enemiessprite.gd" type="Script" id=7]
 
 [node name="Node" type="Node"]
 
@@ -39,7 +40,8 @@ script = ExtResource( 5 )
 
 [node name="players" type="Node" parent="Client"]
 
-[node name="entities" type="Node" parent="Client"]
+[node name="enemies" type="Node" parent="Client"]
+script = ExtResource( 7 )
 
 [node name="Database" type="Node" parent="."]
 script = ExtResource( 3 )

+ 2 - 0
playerphysics.gd

@@ -16,6 +16,7 @@ var vida = 100
 
 func damage(arg):
 	vida += arg
+	print(vida)
 
 var sidebuffer = true
 
@@ -25,6 +26,7 @@ func melee():
 		var newdmg = damage.instance()
 		newdmg.global_position = global_position + (Vector2(70,0) if sidebuffer else Vector2(-70,0))
 		get_node('../../dmgbox').add_child(newdmg)
+		get_node('../..').player_anim('melee',name)
 
 func _physics_process(delta):
 	if motion.x != 0: sidebuffer = motion.x > 0

+ 2 - 0
playerphysics.tscn

@@ -6,6 +6,8 @@
 
 [node name="KinematicBody2D" type="KinematicBody2D"]
 position = Vector2( 320, 180 )
+collision_layer = 2
+collision_mask = 0
 script = ExtResource( 1 )
 
 [node name="CollisionShape2D" type="CollisionShape2D" parent="."]

+ 48 - 42
playersprite.tscn

@@ -1,133 +1,139 @@
-[gd_scene load_steps=31 format=2]
+[gd_scene load_steps=32 format=2]
 
 [ext_resource path="res://art/1/character 1__Idle.png" type="Texture" id=1]
 [ext_resource path="res://art/1/character 1__WALK.png" type="Texture" id=2]
 [ext_resource path="res://art/1/character 1__roll.png" type="Texture" id=3]
+[ext_resource path="res://weapons/sword1.tscn" type="PackedScene" id=4]
 
 [sub_resource type="AtlasTexture" id=1]
-atlas = ExtResource( 3 )
+atlas = ExtResource( 1 )
 region = Rect2( 0, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=2]
-atlas = ExtResource( 3 )
+atlas = ExtResource( 1 )
 region = Rect2( 120, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=3]
-atlas = ExtResource( 3 )
+atlas = ExtResource( 1 )
 region = Rect2( 240, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=4]
-atlas = ExtResource( 3 )
+atlas = ExtResource( 1 )
 region = Rect2( 360, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=5]
 atlas = ExtResource( 3 )
-region = Rect2( 480, 0, 120, 80 )
+region = Rect2( 0, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=6]
 atlas = ExtResource( 3 )
-region = Rect2( 600, 0, 120, 80 )
+region = Rect2( 120, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=7]
 atlas = ExtResource( 3 )
-region = Rect2( 720, 0, 120, 80 )
+region = Rect2( 240, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=8]
 atlas = ExtResource( 3 )
-region = Rect2( 840, 0, 120, 80 )
+region = Rect2( 360, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=9]
 atlas = ExtResource( 3 )
-region = Rect2( 960, 0, 120, 80 )
+region = Rect2( 480, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=10]
 atlas = ExtResource( 3 )
-region = Rect2( 1080, 0, 120, 80 )
+region = Rect2( 600, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=11]
 atlas = ExtResource( 3 )
-region = Rect2( 1200, 0, 120, 80 )
+region = Rect2( 720, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=12]
 atlas = ExtResource( 3 )
-region = Rect2( 1320, 0, 120, 80 )
+region = Rect2( 840, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=13]
-atlas = ExtResource( 2 )
-region = Rect2( 0, 0, 120, 80 )
+atlas = ExtResource( 3 )
+region = Rect2( 960, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=14]
-atlas = ExtResource( 2 )
-region = Rect2( 120, 0, 120, 80 )
+atlas = ExtResource( 3 )
+region = Rect2( 1080, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=15]
-atlas = ExtResource( 2 )
-region = Rect2( 240, 0, 120, 80 )
+atlas = ExtResource( 3 )
+region = Rect2( 1200, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=16]
-atlas = ExtResource( 2 )
-region = Rect2( 360, 0, 120, 80 )
+atlas = ExtResource( 3 )
+region = Rect2( 1320, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=17]
 atlas = ExtResource( 2 )
-region = Rect2( 480, 0, 120, 80 )
+region = Rect2( 0, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=18]
 atlas = ExtResource( 2 )
-region = Rect2( 600, 0, 120, 80 )
+region = Rect2( 120, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=19]
 atlas = ExtResource( 2 )
-region = Rect2( 720, 0, 120, 80 )
+region = Rect2( 240, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=20]
 atlas = ExtResource( 2 )
-region = Rect2( 840, 0, 120, 80 )
+region = Rect2( 360, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=21]
 atlas = ExtResource( 2 )
-region = Rect2( 960, 0, 120, 80 )
+region = Rect2( 480, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=22]
 atlas = ExtResource( 2 )
-region = Rect2( 1080, 0, 120, 80 )
+region = Rect2( 600, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=23]
-atlas = ExtResource( 1 )
-region = Rect2( 0, 0, 120, 80 )
+atlas = ExtResource( 2 )
+region = Rect2( 720, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=24]
-atlas = ExtResource( 1 )
-region = Rect2( 120, 0, 120, 80 )
+atlas = ExtResource( 2 )
+region = Rect2( 840, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=25]
-atlas = ExtResource( 1 )
-region = Rect2( 240, 0, 120, 80 )
+atlas = ExtResource( 2 )
+region = Rect2( 960, 0, 120, 80 )
 
 [sub_resource type="AtlasTexture" id=26]
-atlas = ExtResource( 1 )
-region = Rect2( 360, 0, 120, 80 )
+atlas = ExtResource( 2 )
+region = Rect2( 1080, 0, 120, 80 )
 
 [sub_resource type="SpriteFrames" id=27]
 animations = [ {
-"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ) ],
+"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 2 ), SubResource( 3 ) ],
+"loop": true,
+"name": "idle",
+"speed": 4.0
+}, {
+"frames": [ SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ],
 "loop": true,
 "name": "roll",
 "speed": 15.0
 }, {
-"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ) ],
+"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ) ],
 "loop": true,
 "name": "walk",
 "speed": 15.0
-}, {
-"frames": [ SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ), SubResource( 24 ), SubResource( 25 ) ],
-"loop": true,
-"name": "idle",
-"speed": 4.0
 } ]
 
 [node name="playersprite" type="AnimatedSprite"]
 frames = SubResource( 27 )
 animation = "idle"
+frame = 2
 playing = true
 offset = Vector2( 3.72692, -21.0081 )
+
+[node name="weapon" parent="." instance=ExtResource( 4 )]
+position = Vector2( 0, -8.0534 )
+scale = Vector2( 0.75, 0.75 )

+ 23 - 0
project.godot

@@ -28,6 +28,29 @@ window/size/test_height=720
 window/stretch/mode="viewport"
 window/stretch/aspect="keep"
 
+[input]
+
+w={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null)
+ ]
+}
+a={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null)
+ ]
+}
+s={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null)
+ ]
+}
+d={
+"deadzone": 0.5,
+"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null)
+ ]
+}
+
 [layer_names]
 
 2d_physics/layer_1="physics"

+ 5 - 0
spawner.gd

@@ -12,3 +12,8 @@ func _ready():
 			instance.global_position = Vector2(sin(rot), cos(rot)) * 640
 			add_child(instance)
 		yield(get_tree().create_timer(10.0),"timeout")
+
+var counter = 0
+
+func death_count():
+	counter += 1

+ 29 - 15
weapons/sword1.tscn

@@ -16,8 +16,8 @@ shader = SubResource( 1 )
 atlas = ExtResource( 2 )
 region = Rect2( 41, 31, 48, 67 )
 
-[sub_resource type="Animation" id=4]
-resource_name = "attack1"
+[sub_resource type="Animation" id=5]
+resource_name = "attack2"
 length = 0.5
 step = 0.05
 tracks/0/type = "value"
@@ -30,7 +30,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0, 0.15 ),
 "transitions": PoolRealArray( 1, 1 ),
 "update": 0,
-"values": [ -47.1622, 254.261 ]
+"values": [ 254.261, -47.1622 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath("txwkloma:position")
@@ -66,11 +66,11 @@ tracks/3/keys = {
 "times": PoolRealArray( 0, 0.15 ),
 "transitions": PoolRealArray( 1, 1 ),
 "update": 0,
-"values": [ Vector2( 24.7487, -25.1023 ), Vector2( -9.54593, 19.799 ) ]
+"values": [ Vector2( -9.54593, 19.799 ), Vector2( 24.7487, -25.1023 ) ]
 }
 
-[sub_resource type="Animation" id=5]
-resource_name = "attack2"
+[sub_resource type="Animation" id=28]
+resource_name = "melee"
 length = 0.5
 step = 0.05
 tracks/0/type = "value"
@@ -80,10 +80,10 @@ tracks/0/loop_wrap = true
 tracks/0/imported = false
 tracks/0/enabled = true
 tracks/0/keys = {
-"times": PoolRealArray( 0, 0.15 ),
+"times": PoolRealArray( 0, 0.35 ),
 "transitions": PoolRealArray( 1, 1 ),
 "update": 0,
-"values": [ 254.261, -47.1622 ]
+"values": [ -47.1622, 254.261 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath("txwkloma:position")
@@ -92,7 +92,7 @@ tracks/1/loop_wrap = true
 tracks/1/imported = false
 tracks/1/enabled = true
 tracks/1/keys = {
-"times": PoolRealArray( 0.05, 0.2 ),
+"times": PoolRealArray( 0.05, 0.25 ),
 "transitions": PoolRealArray( 1, 1 ),
 "update": 0,
 "values": [ Vector2( 0, 0 ), Vector2( 70, 0 ) ]
@@ -104,7 +104,7 @@ tracks/2/loop_wrap = true
 tracks/2/imported = false
 tracks/2/enabled = true
 tracks/2/keys = {
-"times": PoolRealArray( 0.05, 0.2 ),
+"times": PoolRealArray( 0.05, 0.25 ),
 "transitions": PoolRealArray( 1, 1 ),
 "update": 0,
 "values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ]
@@ -116,26 +116,40 @@ tracks/3/loop_wrap = true
 tracks/3/imported = false
 tracks/3/enabled = true
 tracks/3/keys = {
-"times": PoolRealArray( 0, 0.15 ),
+"times": PoolRealArray( 0, 0.35 ),
 "transitions": PoolRealArray( 1, 1 ),
 "update": 0,
-"values": [ Vector2( -9.54593, 19.799 ), Vector2( 24.7487, -25.1023 ) ]
+"values": [ Vector2( 24.7487, -25.1023 ), Vector2( -9.54593, 19.799 ) ]
+}
+tracks/4/type = "value"
+tracks/4/path = NodePath("RPG_Weapons:visible")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/keys = {
+"times": PoolRealArray( 0, 0.35 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 1,
+"values": [ true, false ]
 }
 
 [node name="weapon" type="Node2D"]
 
 [node name="RPG_Weapons" type="Sprite" parent="."]
 material = SubResource( 2 )
-position = Vector2( -9.54593, 19.799 )
-rotation = 4.43769
+position = Vector2( 5.15179, 0.555578 )
+rotation = 2.18305
 texture = SubResource( 3 )
 offset = Vector2( 0.754765, -30.8505 )
 region_rect = Rect2( 47, 35, 36, 68 )
 
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
-anims/attack1 = SubResource( 4 )
 anims/attack2 = SubResource( 5 )
+anims/melee = SubResource( 28 )
 
 [node name="txwkloma" type="Sprite" parent="."]
+modulate = Color( 1, 1, 1, 0.25 )
+position = Vector2( 52.5, 0 )
 scale = Vector2( 2, 2 )
 texture = ExtResource( 1 )