summaryrefslogtreecommitdiff
path: root/godot/scenes/weapons/hands.gd
diff options
context:
space:
mode:
Diffstat (limited to 'godot/scenes/weapons/hands.gd')
-rw-r--r--godot/scenes/weapons/hands.gd46
1 files changed, 46 insertions, 0 deletions
diff --git a/godot/scenes/weapons/hands.gd b/godot/scenes/weapons/hands.gd
new file mode 100644
index 0000000..567ff85
--- /dev/null
+++ b/godot/scenes/weapons/hands.gd
@@ -0,0 +1,46 @@
+extends Resource
+
+var player_owner: RigidBody = null
+const fist_damage: int = 15
+var can_swing: bool = true
+var blocking: bool = false
+
+const name: String = "HANDS"
+
+func init(owner):
+ player_owner = owner
+
+func deselect() -> bool:
+ if can_swing and !blocking:
+ return true
+ return false
+
+func select() -> void:
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "humanidle"})
+
+func attack1():
+ if !can_swing or blocking:
+ return
+ can_swing = false
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "humanpunch"})
+ yield(player_owner.get_tree().create_timer(0.45), "timeout")
+ if player_owner.melee_ray.is_colliding():
+ var hit = player_owner.melee_ray.get_collider()
+ player_owner.rpc("play_weapon_sound", "res://sounds/punch_generic.wav")
+ if hit.has_method("damage"):
+ hit.rpc("damage", fist_damage, "BLUNT", [player_owner.get_network_master(), player_owner.name], "using fists")
+ if hit.has_method("net_apply_impulse"):
+ hit.rpc("net_apply_impulse", -100*player_owner.melee_ray.global_transform.basis.z)
+ yield(player_owner.get_tree().create_timer(0.55), "timeout")
+ can_swing = true
+
+func mouse_input(_m1: float, _m3: float, m2: float) -> void:
+ if m2 > 0 and !blocking and can_swing:
+ blocking = true
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "raise_fists"})
+ elif blocking and m2 == 0:
+ blocking = false
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "lower_fists"})
+
+func can_pickup() -> bool:
+ return !blocking and can_swing