22 lines
789 B
GDScript
22 lines
789 B
GDScript
extends BTAction
|
|
class_name BTThrowWeapon
|
|
func tick(tick: Tick) -> int:
|
|
var npc = tick.actor
|
|
if npc.get_meta("agression") < 100.0:
|
|
return FAILED
|
|
var pattack = npc.get_meta("agression") / 1000.0
|
|
if pattack < randf():
|
|
return FAILED
|
|
npc.set_meta("weapon", false)
|
|
var dir = (global.player.global_transform.origin - npc.global_transform.origin).normalized()
|
|
var look = npc.global_transform.looking_at(global.player.global_transform.origin, Vector3(0, 1, 0))
|
|
npc.orientation.basis = npc.orientation.basis.slerp(look.basis, 3.0 * get_process_delta_time())
|
|
var v1 = Vector2(npc.orientation.basis[2].x, npc.orientation.basis[2].z).normalized()
|
|
var v2 = -Vector2(dir.x, dir.z).normalized()
|
|
|
|
if abs(v1.angle_to(v2)) < PI / 9.00:
|
|
npc.do_attack()
|
|
return OK
|
|
else:
|
|
return ERR_BUSY
|