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