Browse Source

bunch of fixes based on feedback, adding changelog

galo 1 year ago
parent
commit
749556eabe
12 changed files with 323 additions and 189 deletions
  1. 26 5
      Health.gd
  2. 10 0
      Health.tscn
  3. 5 0
      PowerUpControl.gd
  4. 9 1
      bacteria.gd
  5. 47 0
      effects/xp.tscn
  6. 1 0
      enemy.gd
  7. 195 169
      enemy.tscn
  8. 12 12
      fadein.gd
  9. 12 0
      hitanim.gd
  10. 1 0
      main.tscn
  11. 1 0
      particles.tscn
  12. 4 2
      spawner.gd

+ 26 - 5
Health.gd

@@ -13,6 +13,7 @@ var hpmult = 1.0
 var buff = 0
 
 func _physics_process(delta):
+	$Label.text = str(health)
 	buff += 1
 	if fmod(buff,regen_time*60) == 00:
 #		print('regen')
@@ -22,20 +23,40 @@ func _physics_process(delta):
 var vulnerable = true
 
 func _damage(dmg, effect, caller):
+	if health > health_max: health = health_max
+	
 	if vulnerable:
+		
 		health -= dmg * hpmult
 		health = min(health,health_max)
 		emit_signal('damage', dmg)
 #		print('dmg to ' + str(get_path()) + " : " + str(health) + " : " +str(dmg))
-		if health <= 0:
+		if health <= 0 and once:
+			once = false
 			emit_signal('die')
+			if xpparticles: xpanim(caller)
+			yield(Timergen.createtime(self,1.0),'timeout')
 			caller._expgain(get_parent().exppt)
 		effect_processor(effect)
 		if has_node(progressbar):
 			get_node(progressbar).set_value( health )
 			get_node(progressbar).set_max( health_max )
 			get_node(text).set_text( str(int(health)) )
-		if dmg > 0 : invutime()
+		if dmg > 0 : 
+			invutime()
+			print(get_parent().name + ' entity health is : ' + str(health))
+
+export var xpparticles = false
+var xp = preload("res://effects/xp.tscn")
+var xporbs = 5
+var once = true
+
+func xpanim(caller):
+	for x in xporbs:
+		var new = xp.instance()
+		new.caller = caller.get_parent()
+		get_parent().get_parent().add_child(new)
+		new.glob_pos = global_position
 
 var chance = 0.0
 var invutime = 2.5
@@ -50,9 +71,9 @@ func invutime():
 		vulnerable = true
 		get_parent().modulate.b = 1
 	else:
-		get_parent().modulate.r = 10
-		yield(Timergen.createtime(self,0.25),'timeout')
-		get_parent().modulate.r = 1
+		get_parent().modulate = Color(10,10,10)
+		yield(Timergen.createtime(self,0.1),'timeout')
+		get_parent().modulate = Color(1,1,1)
 
 
 func _expgain(arg):

+ 10 - 0
Health.tscn

@@ -4,3 +4,13 @@
 
 [node name="Health" type="Node2D"]
 script = ExtResource( 1 )
+
+[node name="Label" type="Label" parent="."]
+visible = false
+margin_left = -20.0
+margin_top = -61.0
+margin_right = 20.0
+margin_bottom = -47.0
+text = "100"
+align = 1
+valign = 1

+ 5 - 0
PowerUpControl.gd

@@ -78,6 +78,8 @@ func _on_ItemList_item_activated(index):
 	elif $Control/VSeparator/Label.text == 'put on slot:':
 		print(index)
 		var dict2 = dict + str(index)
+#		if not Powerups.has(dict2): return
+#		if not Powerups.has(dict): return
 		if Powerups.dict[dict2] == Powerups[dict][power]:
 			print('upgrading power')
 			Powerups[dict][power]['level'] += 1
@@ -88,10 +90,13 @@ func _on_ItemList_item_activated(index):
 		print(dict2)
 		print(power)
 #		get_tree().paused = false
+		emit_signal('close_menu')
 		Engine.time_scale = 1
 		$Control2.hide()
 	pass # Replace with function body.
 
+signal close_menu
+
 var buff1 = 0
 var buff2 = 0
 

+ 9 - 1
bacteria.gd

@@ -76,11 +76,12 @@ func _on_Health_die():
 
 var xpmult = 1.0
 signal level_up
+signal menuclose
 
 func _on_hitbox_gotxp(arg):
 	totalxp += arg * xpmult
 	currentxp += arg * xpmult
-	if currentxp > nextxp:
+	while currentxp > nextxp:
 		currentxp -= nextxp
 		emit_signal("level_up")
 		nextxp += 5
@@ -91,3 +92,10 @@ func _on_hitbox_gotxp(arg):
 	$CanvasLayer/ProgressBar2.set_value( currentxp )
 	$CanvasLayer/ProgressBar2.set_max( nextxp )
 	pass # Replace with function body.
+
+
+
+func _on_PowerUpControl_close_menu():
+#	_on_hitbox_gotxp(0)
+	print('close menu')
+	pass # Replace with function body.

+ 47 - 0
effects/xp.tscn

@@ -0,0 +1,47 @@
+[gd_scene load_steps=4 format=2]
+
+[ext_resource path="res://icon.png" type="Texture" id=1]
+
+[sub_resource type="Curve" id=2]
+_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ]
+
+[sub_resource type="GDScript" id=1]
+script/source = "extends CPUParticles2D
+
+
+# Declare member variables here. Examples:
+# var a = 2
+# var b = \"text\"
+
+var glob_pos = Vector2()
+var motion = Vector2()
+var speed = 100
+
+# Called when the node enters the scene tree for the first time.
+func _ready():
+	var rot = rand_range(0,TAU)
+	motion = Vector2(sin(rot), cos(rot)) * speed
+	yield(Timergen.createtime(self,1.0),'timeout')
+	emitting = false
+	yield(Timergen.createtime(self,0.2),'timeout')
+	queue_free()
+	pass # Replace with function body.
+
+var caller = null
+var progres = 0
+
+func _physics_process(delta):
+	if is_instance_valid(caller):
+		glob_pos += motion * delta
+		progres += delta
+		global_position = lerp(glob_pos,caller.global_position,progres)
+"
+
+[node name="CPUParticles2D" type="CPUParticles2D"]
+lifetime = 0.2
+local_coords = false
+texture = ExtResource( 1 )
+gravity = Vector2( 0, 0 )
+scale_amount = 0.25
+scale_amount_curve = SubResource( 2 )
+script = SubResource( 1 )

+ 1 - 0
enemy.gd

@@ -18,6 +18,7 @@ func _ready():
 	while array[0] == 'RESET':
 		array.shuffle()
 	$types.play(array[0])
+	name = array[0]
 	pass # Replace with function body.
 
 func _physics_process(delta):

+ 195 - 169
enemy.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=35 format=2]
+[gd_scene load_steps=36 format=2]
 
 [ext_resource path="res://sprite/BesouroDourado/BesouroDourado.png" type="Texture" id=1]
 [ext_resource path="res://Health.tscn" type="PackedScene" id=2]
@@ -20,8 +20,10 @@
 [ext_resource path="res://sprite/DinoBonzinho/DinoBonzinhoPerna.png" type="Texture" id=18]
 [ext_resource path="res://sprite/Escorpiao/EscorpiaoPerna.png" type="Texture" id=19]
 [ext_resource path="res://sprite/BesouroDourado/BesouroDouradoBraco.png" type="Texture" id=20]
+[ext_resource path="res://hitanim.gd" type="Script" id=21]
 
 [sub_resource type="RectangleShape2D" id=1]
+extents = Vector2( 60, 60 )
 
 [sub_resource type="Shader" id=12]
 code = "shader_type canvas_item;
@@ -49,138 +51,6 @@ shader_param/rotation2 = -1.57
 
 [sub_resource type="Animation" id=14]
 length = 0.001
-tracks/0/type = "value"
-tracks/0/path = NodePath("Sprite:flip_v")
-tracks/0/interp = 1
-tracks/0/loop_wrap = true
-tracks/0/imported = false
-tracks/0/enabled = true
-tracks/0/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ false ]
-}
-tracks/1/type = "value"
-tracks/1/path = NodePath("Sprite:material:shader_param/rotation2")
-tracks/1/interp = 1
-tracks/1/loop_wrap = true
-tracks/1/imported = false
-tracks/1/enabled = true
-tracks/1/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ -1.57 ]
-}
-tracks/2/type = "value"
-tracks/2/path = NodePath("Sprite/Sprite2:texture")
-tracks/2/interp = 1
-tracks/2/loop_wrap = true
-tracks/2/imported = false
-tracks/2/enabled = true
-tracks/2/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ ExtResource( 20 ) ]
-}
-tracks/3/type = "value"
-tracks/3/path = NodePath("Sprite/Sprite2:position")
-tracks/3/interp = 1
-tracks/3/loop_wrap = true
-tracks/3/imported = false
-tracks/3/enabled = true
-tracks/3/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ Vector2( 14, -1 ) ]
-}
-tracks/4/type = "value"
-tracks/4/path = NodePath("Sprite/Sprite3:texture")
-tracks/4/interp = 1
-tracks/4/loop_wrap = true
-tracks/4/imported = false
-tracks/4/enabled = true
-tracks/4/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ ExtResource( 17 ) ]
-}
-tracks/5/type = "value"
-tracks/5/path = NodePath("Sprite/Sprite3:position")
-tracks/5/interp = 1
-tracks/5/loop_wrap = true
-tracks/5/imported = false
-tracks/5/enabled = true
-tracks/5/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ Vector2( -14, -1 ) ]
-}
-tracks/6/type = "value"
-tracks/6/path = NodePath("Sprite/Sprite4:position")
-tracks/6/interp = 1
-tracks/6/loop_wrap = true
-tracks/6/imported = false
-tracks/6/enabled = true
-tracks/6/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ Vector2( -34, -1 ) ]
-}
-tracks/7/type = "value"
-tracks/7/path = NodePath("Sprite/Sprite4:texture")
-tracks/7/interp = 1
-tracks/7/loop_wrap = true
-tracks/7/imported = false
-tracks/7/enabled = true
-tracks/7/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ ExtResource( 17 ) ]
-}
-tracks/8/type = "value"
-tracks/8/path = NodePath("Sprite/Sprite4:visible")
-tracks/8/interp = 1
-tracks/8/loop_wrap = true
-tracks/8/imported = false
-tracks/8/enabled = true
-tracks/8/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ true ]
-}
-tracks/9/type = "value"
-tracks/9/path = NodePath("Sprite/Sprite3:visible")
-tracks/9/interp = 1
-tracks/9/loop_wrap = true
-tracks/9/imported = false
-tracks/9/enabled = true
-tracks/9/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ true ]
-}
-tracks/10/type = "value"
-tracks/10/path = NodePath("Sprite/Sprite2:visible")
-tracks/10/interp = 1
-tracks/10/loop_wrap = true
-tracks/10/imported = false
-tracks/10/enabled = true
-tracks/10/keys = {
-"times": PoolRealArray( 0 ),
-"transitions": PoolRealArray( 1 ),
-"update": 0,
-"values": [ true ]
-}
 
 [sub_resource type="Animation" id=5]
 resource_name = "besourodourado"
@@ -194,7 +64,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 150 ]
+"values": [ 250 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -206,7 +76,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 500 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -254,7 +124,7 @@ tracks/5/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 5 ]
+"values": [ 10 ]
 }
 tracks/6/type = "value"
 tracks/6/path = NodePath("Health:health_max")
@@ -266,7 +136,7 @@ tracks/6/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 20 ]
+"values": [ 1 ]
 }
 tracks/7/type = "value"
 tracks/7/path = NodePath("Sprite:modulate")
@@ -424,6 +294,30 @@ tracks/19/keys = {
 "update": 1,
 "values": [ true ]
 }
+tracks/20/type = "value"
+tracks/20/path = NodePath("hitbox:apc")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ 5.0 ]
+}
+tracks/21/type = "value"
+tracks/21/path = NodePath("CollisionShape2D:shape:extents")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 5, 5 ) ]
+}
 
 [sub_resource type="Animation" id=4]
 resource_name = "dinobonzinho"
@@ -437,7 +331,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ -150 ]
+"values": [ -200 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -449,7 +343,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 50 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -509,7 +403,7 @@ tracks/6/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 20 ]
+"values": [ 100 ]
 }
 tracks/7/type = "value"
 tracks/7/path = NodePath("Sprite:modulate")
@@ -619,6 +513,18 @@ tracks/15/keys = {
 "update": 0,
 "values": [ Vector2( -12, -1 ) ]
 }
+tracks/16/type = "value"
+tracks/16/path = NodePath("CollisionShape2D:shape:extents")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 40, 40 ) ]
+}
 
 [sub_resource type="Animation" id=6]
 resource_name = "escorpiao"
@@ -632,7 +538,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 150 ]
+"values": [ 120 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -644,7 +550,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 300 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -692,7 +598,7 @@ tracks/5/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 5 ]
+"values": [ 20 ]
 }
 tracks/6/type = "value"
 tracks/6/path = NodePath("Health:health_max")
@@ -704,7 +610,7 @@ tracks/6/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 20 ]
+"values": [ 50 ]
 }
 tracks/7/type = "value"
 tracks/7/path = NodePath("Sprite:modulate")
@@ -862,6 +768,30 @@ tracks/19/keys = {
 "update": 1,
 "values": [ ExtResource( 19 ) ]
 }
+tracks/20/type = "value"
+tracks/20/path = NodePath("CollisionShape2D:shape:extents")
+tracks/20/interp = 1
+tracks/20/loop_wrap = true
+tracks/20/imported = false
+tracks/20/enabled = true
+tracks/20/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 40, 40 ) ]
+}
+tracks/21/type = "value"
+tracks/21/path = NodePath("hitbox:apc")
+tracks/21/interp = 1
+tracks/21/loop_wrap = true
+tracks/21/imported = false
+tracks/21/enabled = true
+tracks/21/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ 1.0 ]
+}
 
 [sub_resource type="Animation" id=7]
 resource_name = "ovomonstro"
@@ -875,7 +805,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 150 ]
+"values": [ 100 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -887,7 +817,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 1500 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -935,7 +865,7 @@ tracks/5/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 5 ]
+"values": [ 50 ]
 }
 tracks/6/type = "value"
 tracks/6/path = NodePath("Health:health_max")
@@ -947,7 +877,7 @@ tracks/6/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 20 ]
+"values": [ 400 ]
 }
 tracks/7/type = "value"
 tracks/7/path = NodePath("Sprite:modulate")
@@ -1057,6 +987,30 @@ tracks/15/keys = {
 "update": 0,
 "values": [ Vector2( -17, -3 ) ]
 }
+tracks/16/type = "value"
+tracks/16/path = NodePath("CollisionShape2D:shape:extents")
+tracks/16/interp = 1
+tracks/16/loop_wrap = true
+tracks/16/imported = false
+tracks/16/enabled = true
+tracks/16/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 60, 60 ) ]
+}
+tracks/17/type = "value"
+tracks/17/path = NodePath("hitbox:apc")
+tracks/17/interp = 1
+tracks/17/loop_wrap = true
+tracks/17/imported = false
+tracks/17/enabled = true
+tracks/17/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ 0.5 ]
+}
 
 [sub_resource type="Animation" id=8]
 resource_name = "redhat"
@@ -1070,7 +1024,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 150 ]
+"values": [ -150 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -1082,7 +1036,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 5 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -1142,7 +1096,7 @@ tracks/6/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 20 ]
+"values": [ 10 ]
 }
 tracks/7/type = "value"
 tracks/7/path = NodePath("Sprite:modulate")
@@ -1228,6 +1182,18 @@ tracks/13/keys = {
 "update": 1,
 "values": [ false ]
 }
+tracks/14/type = "value"
+tracks/14/path = NodePath("CollisionShape2D:shape:extents")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 10, 10 ) ]
+}
 
 [sub_resource type="Animation" id=9]
 resource_name = "traca"
@@ -1241,7 +1207,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ -150 ]
+"values": [ -200 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -1253,7 +1219,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 10 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -1313,7 +1279,7 @@ tracks/6/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 20 ]
+"values": [ 5 ]
 }
 tracks/7/type = "value"
 tracks/7/path = NodePath("Sprite:modulate")
@@ -1399,6 +1365,18 @@ tracks/13/keys = {
 "update": 1,
 "values": [ false ]
 }
+tracks/14/type = "value"
+tracks/14/path = NodePath("CollisionShape2D:shape:extents")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 20, 20 ) ]
+}
 
 [sub_resource type="Animation" id=10]
 resource_name = "wingedmouse"
@@ -1412,7 +1390,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 150 ]
+"values": [ -200 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -1424,7 +1402,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 5 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -1472,7 +1450,7 @@ tracks/5/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 5 ]
+"values": [ 0 ]
 }
 tracks/6/type = "value"
 tracks/6/path = NodePath("Health:health_max")
@@ -1570,6 +1548,18 @@ tracks/13/keys = {
 "update": 1,
 "values": [ false ]
 }
+tracks/14/type = "value"
+tracks/14/path = NodePath("CollisionShape2D:shape:extents")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 5, 5 ) ]
+}
 
 [sub_resource type="Animation" id=11]
 resource_name = "worn"
@@ -1583,7 +1573,7 @@ tracks/0/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ -150 ]
+"values": [ 200 ]
 }
 tracks/1/type = "value"
 tracks/1/path = NodePath(".:exppt")
@@ -1595,7 +1585,7 @@ tracks/1/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 15 ]
+"values": [ 10 ]
 }
 tracks/2/type = "value"
 tracks/2/path = NodePath(".:detectionzone")
@@ -1643,7 +1633,7 @@ tracks/5/keys = {
 "times": PoolRealArray( 0 ),
 "transitions": PoolRealArray( 1 ),
 "update": 1,
-"values": [ 0 ]
+"values": [ 5 ]
 }
 tracks/6/type = "value"
 tracks/6/path = NodePath("Health:health_max")
@@ -1741,6 +1731,30 @@ tracks/13/keys = {
 "update": 1,
 "values": [ false ]
 }
+tracks/14/type = "value"
+tracks/14/path = NodePath("CollisionShape2D:shape:extents")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Vector2( 60, 5 ) ]
+}
+tracks/15/type = "value"
+tracks/15/path = NodePath("hitbox:apc")
+tracks/15/interp = 1
+tracks/15/loop_wrap = true
+tracks/15/imported = false
+tracks/15/enabled = true
+tracks/15/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ 2.0 ]
+}
 
 [sub_resource type="Animation" id=15]
 length = 0.001
@@ -1847,7 +1861,9 @@ tracks/3/keys = {
 
 [node name="enemy" type="KinematicBody2D" groups=["enemy"]]
 script = ExtResource( 3 )
+speed = 100
 detectionzone = 256
+exppt = 1500
 
 [node name="particles" parent="." instance=ExtResource( 6 )]
 
@@ -1856,38 +1872,43 @@ shape = SubResource( 1 )
 
 [node name="Sprite" type="Sprite" parent="."]
 material = SubResource( 13 )
-texture = ExtResource( 1 )
+texture = ExtResource( 13 )
 
 [node name="Sprite2" type="Sprite" parent="Sprite"]
+visible = false
 material = SubResource( 13 )
 position = Vector2( 14, -1 )
-rotation = 0.179798
+rotation = 0.179799
 z_index = -1
 texture = ExtResource( 20 )
 
 [node name="Sprite3" type="Sprite" parent="Sprite"]
+visible = false
 material = SubResource( 13 )
 position = Vector2( -14, -1 )
 rotation = -0.154826
-scale = Vector2( 1, 1 )
 z_index = -1
 texture = ExtResource( 17 )
 
 [node name="Sprite4" type="Sprite" parent="Sprite"]
 material = SubResource( 13 )
-position = Vector2( -34, -1 )
+position = Vector2( -17, -3 )
 rotation = 0.232153
-scale = Vector2( 1, 1 )
 z_index = -1
-texture = ExtResource( 17 )
+texture = ExtResource( 16 )
 
 [node name="Health" parent="." instance=ExtResource( 2 )]
-health_max = 20
+health_max = 400
+xpparticles = true
 
 [node name="hitbox" parent="." instance=ExtResource( 4 )]
-z_index = -3
-dmg = 5
+z_index = -5
+dmg = 50
 affect = "player"
+apc = 0.5
+
+[node name="Target4" parent="hitbox" index="2"]
+visible = false
 
 [node name="types" type="AnimationPlayer" parent="."]
 anims/RESET = SubResource( 14 )
@@ -1912,6 +1933,9 @@ speed = 3.0
 script = ExtResource( 8 )
 nodepath = NodePath("../Sprite")
 
+[node name="hitanim" type="Node" parent="."]
+script = ExtResource( 21 )
+
 [node name="move" type="AnimationPlayer" parent="."]
 autoplay = "move"
 anims/RESET = SubResource( 15 )
@@ -1921,3 +1945,5 @@ anims/move = SubResource( 16 )
 [connection signal="die" from="Health" to="hitbox" method="hide"]
 [connection signal="die" from="Health" to="die" method="_on_Health_die"]
 [connection signal="die" from="Health" to="fadeout" method="set_physics_process" binds= [ true ]]
+
+[editable path="hitbox"]

+ 12 - 12
fadein.gd

@@ -5,15 +5,15 @@ onready var node = get_node(nodepath)
 var buffer : float
 
 var buff = 0
-
-func _ready():
-	node.scale.x = 0
-	node.scale.y = 0
-	node.modulate.a = 0
-
-func _physics_process(delta):
-	node.scale.x += delta
-	node.scale.y += delta
-	node.modulate.a += delta
-	buff += 1
-	if buff == 60: queue_free()
+#
+#func _ready():
+#	node.scale.x = 0
+#	node.scale.y = 0
+#	node.modulate.a = 0
+#
+#func _physics_process(delta):
+#	node.scale.x += delta
+#	node.scale.y += delta
+#	node.modulate.a += delta
+#	buff += 1
+#	if buff == 60: queue_free()

+ 12 - 0
hitanim.gd

@@ -0,0 +1,12 @@
+extends Node
+
+func _ready():
+	set_physics_process(false)
+
+var time = 1.0
+export(NodePath) var node
+
+func _physics_process(delta):
+	time -= delta
+#	get_node(node).modulate.r = lerp(get_node(node).modulate.r,1.0)
+	if time <= 0: set_physics_process(false)

+ 1 - 0
main.tscn

@@ -355,6 +355,7 @@ autoplay = true
 [connection signal="dieproxy" from="bacteria" to="restarter" method="_on_bacteria_dieproxy"]
 [connection signal="level_up" from="bacteria" to="PowerUpControl" method="_on_bacteria_level_up"]
 [connection signal="button_down" from="restarter/MarginContainer/VBoxContainer/Button" to="restarter" method="_on_Button_button_down"]
+[connection signal="close_menu" from="PowerUpControl" to="bacteria" method="_on_PowerUpControl_close_menu"]
 [connection signal="item_activated" from="PowerUpControl/Control/VSeparator/ItemList" to="PowerUpControl" method="_on_ItemList_item_activated"]
 [connection signal="item_activated" from="PowerUpControl/Control2/VSeparator/ItemList" to="PowerUpControl" method="_on_ItemList_item_activated"]
 [connection signal="button_down" from="PowerUpControl/Control2/VSeparator/Button" to="PowerUpControl" method="_on_Button_button_down"]

+ 1 - 0
particles.tscn

@@ -34,6 +34,7 @@ colors = PoolColorArray( 0.897509, 1, 0.841463, 0.158537, 0.386719, 1, 0.396301,
 
 [node name="particles" type="CPUParticles2D"]
 material = SubResource( 5 )
+z_index = -3
 amount = 16
 lifetime = 1.5
 local_coords = false

+ 4 - 2
spawner.gd

@@ -13,5 +13,7 @@ func _spawn():
 	var enemy = enemy_.instance()
 	add_child(enemy)
 	var play = get_tree().get_nodes_in_group('player')[0]
-	enemy.global_position.x = play.global_position.x + rand_range(-360,360)
-	enemy.global_position.y = play.global_position.y + rand_range(-640,640)
+#	enemy.global_position.x = play.global_position.x + rand_range(-360,360)
+#	enemy.global_position.y = play.global_position.y + rand_range(-640,640)
+	var rot = rand_range(0,TAU)
+	enemy.global_position = play.global_position + (Vector2(sin(rot),cos(rot))*640)