28 lines
588 B
GDScript
28 lines
588 B
GDScript
extends Area3D
|
|
|
|
@onready var particles : GPUParticles3D = %ParticleFX
|
|
var trap_owner : int
|
|
var damage : int
|
|
var time_remaining : float
|
|
|
|
|
|
func _ready() -> void:
|
|
particles.emitting = true
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
for body in get_overlapping_bodies():
|
|
body.poison(damage, 2.0)
|
|
time_remaining -= delta
|
|
if time_remaining <= 0:
|
|
queue_free()
|
|
|
|
func setup(owner, damage) -> void:
|
|
self.trap_owner = trap_owner
|
|
self.damage = damage
|
|
time_remaining = 2.0
|
|
|
|
func _on_body_entered(body: Node3D) -> void:
|
|
if body.can_hurt():
|
|
body.hurt(damage)
|
|
body.poison(damage, 2.0)
|