142 lines
3.9 KiB
GDScript
142 lines
3.9 KiB
GDScript
extends "res://Bad.gd"
|
|
|
|
signal flash
|
|
signal boss_health
|
|
|
|
var right_laser_alive = true
|
|
var left_laser_alive = true
|
|
|
|
var move_left = true
|
|
var move_down = true
|
|
|
|
var speed_multiplier = 3
|
|
|
|
var fight_started = false
|
|
|
|
func _ready():
|
|
speed = 0
|
|
position.x = 1200
|
|
starting_health = 2800
|
|
health = starting_health
|
|
$RightArm/BadLaser.independent = false
|
|
$RightArm/BadLaser.health_multi = 5
|
|
$LeftArm/BadLaser.independent = false
|
|
$LeftArm/BadLaser.health_multi = 5
|
|
$RightArm/BadLaser.fire_speed = 0
|
|
$LeftArm/BadLaser.fire_speed = 0
|
|
$RightArm/BadLaser/Rotatable.rotation_degrees = -45
|
|
|
|
# $RightArm/BadLaser.health = 10
|
|
# $LeftArm/BadLaser.health = 10
|
|
pass
|
|
|
|
func _process(delta):
|
|
#$RightArm/Forearm.rotate(delta/10)
|
|
# print(health)
|
|
wobble(delta)
|
|
# print(position.x)
|
|
|
|
if position.x < 903:
|
|
move_left = false
|
|
# health -= 25*delta
|
|
if !fight_started:
|
|
$LeftArm/AnimationPlayer.play("block")
|
|
$RightArm/AnimationPlayer.play("block")
|
|
fight_started = true
|
|
|
|
if move_left:
|
|
position.x -= delta*20
|
|
|
|
if $LeftArm/AnimationPlayer.assigned_animation == "retract" && $LeftArm/AnimationPlayer.current_animation != "retract":
|
|
$RightArm/BadLaser.fire_speed = 50
|
|
$LeftArm/BadLaser.fire_speed = 50
|
|
|
|
if health <= 2000:
|
|
if $LeftArm/AnimationPlayer.assigned_animation != "blockL" && $LeftArm/AnimationPlayer.assigned_animation != "spinoff":
|
|
$LeftArm/AnimationPlayer.play("blockL")
|
|
if $RightArm/AnimationPlayer.assigned_animation != "blockL" && $RightArm/AnimationPlayer.assigned_animation != "spinoff":
|
|
$RightArm/AnimationPlayer.play("blockL")
|
|
$RightArm/AnimationPlayer.seek(0.5)
|
|
if health <= 2500 && health > 2000:
|
|
if $LeftArm/AnimationPlayer.assigned_animation != "retract":
|
|
$LeftArm/AnimationPlayer.play("retract")
|
|
if $RightArm/AnimationPlayer.assigned_animation != "retract":
|
|
$RightArm/AnimationPlayer.play("retract")
|
|
|
|
# health -= delta*100
|
|
|
|
if right_laser_alive:
|
|
if $RightArm/BadLaser:
|
|
# $RightArm/BadLaser.health -= delta*30
|
|
if $RightArm/BadLaser.health <= 100:
|
|
$RightArm/BadLaser.fire_speed = 150
|
|
elif $RightArm/BadLaser/AnimatedSprite.frame != 1:
|
|
$RightArm/AnimationPlayer.play("spinoff")
|
|
$RightArm/BadLaser/AnimatedSprite.frame = 1
|
|
$RightArm/BadLaser.fire_speed = 0
|
|
$RightArm/BadLaser/Line2D.visible = false
|
|
|
|
if left_laser_alive:
|
|
if $LeftArm/BadLaser:
|
|
# $LeftArm/BadLaser.health -= delta*30
|
|
if $LeftArm/BadLaser.health <= 100:
|
|
$LeftArm/BadLaser.fire_speed = 150
|
|
elif $LeftArm/BadLaser/AnimatedSprite.frame != 1:
|
|
$LeftArm/AnimationPlayer.play("spinoff")
|
|
$LeftArm/BadLaser.fire_speed = 0
|
|
$LeftArm/BadLaser/AnimatedSprite.frame = 1
|
|
$LeftArm/BadLaser/Line2D.visible = false
|
|
|
|
func hit(who):
|
|
if fight_started:
|
|
health -= who.damage/(health_multi*3.5)
|
|
print("Rectangle Return: ", health)
|
|
if get_tree().is_network_server():
|
|
rpc("bossHealth", health)
|
|
emit_signal("boss_health", health, starting_health)
|
|
|
|
func _on_LeftBadLaser_dead(money):
|
|
if left_laser_alive:
|
|
left_laser_alive = false
|
|
|
|
func _on_RightBadLaser_dead(money):
|
|
if right_laser_alive:
|
|
right_laser_alive = false
|
|
|
|
func normalFireSpeed():
|
|
# $RightArm/BadLaser.fire_speed = 25
|
|
# $LeftArm/BadLaser.fire_speed = 25
|
|
$RightArm/BadLaser.fire_speed = 10
|
|
$LeftArm/BadLaser.fire_speed = 10
|
|
if get_tree().is_network_server():
|
|
rpc("bossHealth", health)
|
|
emit_signal("boss_health", health, starting_health)
|
|
|
|
func wobble(delta):
|
|
if position.y - 305 > 4:
|
|
move_down = false
|
|
if position.y - 305 <= -4:
|
|
move_down = true
|
|
|
|
if abs(position.y - 305) > 4:
|
|
speed_multiplier = 1
|
|
elif abs(position.y - 305) > 3:
|
|
speed_multiplier = 1
|
|
elif abs(position.y - 305) > 2:
|
|
speed_multiplier = 2
|
|
elif abs(position.y - 305) <= 2:
|
|
speed_multiplier = 3
|
|
|
|
if move_down:
|
|
if health > 1000:
|
|
position.y += delta*speed_multiplier
|
|
else:
|
|
if health > 1000:
|
|
position.y -= delta*speed_multiplier
|
|
|
|
func flash():
|
|
emit_signal("flash")
|
|
|
|
func _exit_tree():
|
|
$LeftArm/BadLaser.queue_free()
|
|
$RightArm/BadLaser.queue_free() |