32 lines
625 B
GDScript
32 lines
625 B
GDScript
@tool
|
|
extends Composer
|
|
class_name Weapon
|
|
|
|
@export var sprite: Texture2D:
|
|
set(val):
|
|
sprite = val
|
|
_check_compose()
|
|
|
|
@export var radius := 500.0
|
|
@export var damage := 1.0
|
|
@export var reload_time := 1.0
|
|
|
|
var __target: Unit
|
|
var __reload := 0.0
|
|
|
|
func _compose():
|
|
$sprite.texture = sprite
|
|
|
|
func _process(delta: float):
|
|
__reload -= delta
|
|
if __target != null and __reload < 0.0:
|
|
if __target.global_position.distance_to(global_position) <= radius:
|
|
fire(__target)
|
|
|
|
func set_target(target: Unit):
|
|
__target = target
|
|
|
|
func fire(target: Unit):
|
|
target.damage(damage)
|
|
__reload = reload_time * randf_range(0.9, 1.1)
|