Added tesla jumps
This commit is contained in:
@@ -71,8 +71,8 @@ func _on_body_entered(body: Node2D) -> void:
|
||||
var health_component : Health = body.find_child("Health")
|
||||
if health_component and health_component.has_method("apply_damage"):
|
||||
health_component.apply_damage(damage)
|
||||
_process_hit_for_projectile()
|
||||
_process_hit_for_projectile(body)
|
||||
|
||||
|
||||
func _process_hit_for_projectile() -> void:
|
||||
func _process_hit_for_projectile(_collided_body: Node2D) -> void:
|
||||
queue_free()
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
class_name CannonProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
class_name GatlingProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
class_name LaserProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name LauncherProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name MinelayerProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
class_name PlasmaProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name RailgunProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
|
||||
@@ -24,7 +25,7 @@ func _update_sprite(velocity: Vector2) -> void:
|
||||
sprite_right.show()
|
||||
|
||||
|
||||
func _process_hit_for_projectile() -> void:
|
||||
func _process_hit_for_projectile(_collided_body: Node2D) -> void:
|
||||
if piercing == 0:
|
||||
queue_free()
|
||||
else:
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name ShrapnelProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
class_name TeslaProjectile
|
||||
extends AbstractProjectile
|
||||
|
||||
|
||||
@@ -10,11 +11,28 @@ extends AbstractProjectile
|
||||
@onready var jinkTimer : Timer = $JinkTimer
|
||||
|
||||
|
||||
var _collided_foes : Array[AbstractShip] = []
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
damage = damage.duplicate()
|
||||
super._ready()
|
||||
_start_jink_timer()
|
||||
|
||||
|
||||
func _process_hit_for_projectile(collided_body: Node2D) -> void:
|
||||
if collided_body is AbstractShip:
|
||||
_collided_foes.append(collided_body)
|
||||
|
||||
damage.value = floor(damage.value/2.0)
|
||||
|
||||
if damage.value == 0:
|
||||
queue_free()
|
||||
else:
|
||||
_apply_random_deviation()
|
||||
_start_jink_timer()
|
||||
|
||||
|
||||
func _start_jink_timer() -> void:
|
||||
var random_delay := randf_range(jink_min_delay, jink_max_delay)
|
||||
jinkTimer.start(random_delay)
|
||||
@@ -60,10 +78,16 @@ func _get_nearest_foe() -> AbstractShip:
|
||||
func _get_foes() -> Array[AbstractShip]:
|
||||
var foes : Array[AbstractShip] = []
|
||||
|
||||
if collide_enemies:
|
||||
foes.append_array(get_tree().get_nodes_in_group("enemies"))
|
||||
var flags_by_group : Dictionary[String, bool] = {
|
||||
"enemies": collide_enemies,
|
||||
"players": collide_players,
|
||||
}
|
||||
|
||||
if collide_players:
|
||||
foes.append_array(get_tree().get_nodes_in_group("players"))
|
||||
for group in flags_by_group:
|
||||
if not flags_by_group[group]: continue
|
||||
var nodes := get_tree().get_nodes_in_group(group)
|
||||
for node in nodes:
|
||||
if not node in _collided_foes:
|
||||
foes.append(node)
|
||||
|
||||
return foes
|
||||
|
||||
@@ -19,8 +19,8 @@ radius = 5.0
|
||||
collision_layer = 0
|
||||
collision_mask = 0
|
||||
script = ExtResource("2_q73is")
|
||||
jink_min_delay = 0.05
|
||||
jink_max_delay = 0.09999999999999999
|
||||
jink_min_delay = 0.02
|
||||
jink_max_delay = 0.05
|
||||
deviation_angle = 90
|
||||
no_deviation_distance = 50
|
||||
damage = SubResource("Resource_1121u")
|
||||
|
||||
Reference in New Issue
Block a user