extends Resource var player_owner: RigidBody = null const bullet_damage: int = 35 var can_fire: bool = true var pistol_scene: Spatial = null var reloading: bool = false const name: String = "PISTOL" const trfrm = Transform(Vector3(-0.476,2.762,-0.515), Vector3(-1.095,0.299,2.614), Vector3(2.588,0.634,1.011),Vector3(-0.232,0.644,0.006)) func _init(): pistol_scene = preload("res://scenes/weapons/pistol.tscn").instance() pistol_scene.set_visible(false) func init(owner): player_owner = owner player_owner.add_weapon_vm(pistol_scene, trfrm) func select() -> void: if can_fire: pistol_scene.get_node("AnimationPlayer").play("idle") player_owner.rpc("anim_event", {"VMANIMPLAY" : "pistol_idle_vm"}) pistol_scene.set_visible(true) func deselect() -> bool: if reloading: return false pistol_scene.set_visible(false) return true func reload() -> void: if can_fire or reloading: return reloading = true player_owner.rpc("anim_event", {"VMANIMPLAY" : "pistol_reload_vm"}) pistol_scene.get_node("PistolReload").play() yield(player_owner.get_tree().create_timer(2.7), "timeout") pistol_scene.get_node("AnimationPlayer").play("reset") can_fire = true reloading = false func attack1(): if !can_fire: return can_fire = false pistol_scene.get_node("AnimationPlayer").play("fire") player_owner.rpc("anim_event", {"VMANIMPLAY" : "pistol_fire_vm"}) yield(player_owner.get_tree().create_timer(0.05), "timeout") player_owner.gun_ray.force_raycast_update() if player_owner.gun_ray.is_colliding(): var hit = player_owner.gun_ray.get_collider() if hit.has_method("damage"): hit.rpc("damage", bullet_damage, {"type":"PIERCE", "attacker_net_id" : player_owner.get_network_master(), "attacker_name": player_owner.name, "weapon_name" : " pistol"}) else: var puff = preload("res://particles/DirtPuff.tscn").instance() player_owner.world.add_child(puff) puff.global_transform.origin = player_owner.gun_ray.get_collision_point() puff.look_at(player_owner.gun_ray.get_collision_point() + player_owner.gun_ray.get_collision_normal(), Vector3.UP) if hit.has_method("net_apply_impulse"): hit.rpc("net_apply_impulse", -150*player_owner.melee_ray.global_transform.basis.z) func mouse_input(_m1: float, _m3: float, m2: float) -> void: pass