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