summaryrefslogtreecommitdiff
path: root/godot/scenes/weapons/rockets.gd
diff options
context:
space:
mode:
Diffstat (limited to 'godot/scenes/weapons/rockets.gd')
-rw-r--r--godot/scenes/weapons/rockets.gd68
1 files changed, 39 insertions, 29 deletions
diff --git a/godot/scenes/weapons/rockets.gd b/godot/scenes/weapons/rockets.gd
index c519fd6..5270186 100644
--- a/godot/scenes/weapons/rockets.gd
+++ b/godot/scenes/weapons/rockets.gd
@@ -1,37 +1,47 @@
-extends Node
+extends Resource
-var weapon_name = "ROCKETS"
-var player
-onready var world = get_tree().get_root().get_node("GAMEWORLD")
+var player_owner: RigidBody = null
+var can_throw: bool = true
+var rockets_scene: Spatial = null
-var ammo_full : int = 50
-var ammo : int
+var rockets_left: int = 5
-var reload_time :float= 1.0
-var cooldown_time : float = 0.0
+const name: String = "HANDS"
-func _ready():
- ammo = ammo_full
- player = get_parent()
+var trfrm = Transform ( Vector3(1.501,-0.142,-2.418), Vector3(-2.367,-0.693,-1.429),Vector3(-0.516,2.761,-0.483),Vector3(-0.206,0.639,-0.045))
-func _process(delta):
- if cooldown_time > 0.0:
- cooldown_time -= delta
+func _init():
+ rockets_scene = preload("res://scenes/weapons/rockets.tscn").instance()
+ rockets_scene.set_visible(false)
+
+func init(owner):
+ player_owner = owner
+ player_owner.add_weapon_vm(rockets_scene, trfrm)
+
+func select() -> void:
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "rockets_idle_vm"})
+ if rockets_left > 0: rockets_scene.set_visible(true)
+
+func deselect() -> bool:
+ if !can_throw and rockets_left > 0:
+ return false
+ rockets_scene.set_visible(false)
+ return true
func attack1():
- if cooldown_time <= 0.0 and ammo >= 1:
- ammo -= 1
- cooldown_time = reload_time
- rpc("add_rocket_to_scene", player.head.global_transform.basis, get_tree().get_network_unique_id())
-
-remotesync func add_rocket_to_scene(dir, id):
- var rocket = preload("res://scenes/ballistics/Rocket.tscn").instance()
- world.get_node("BALLISTICS").add_child(rocket, true)
- rocket.shooter = player.name + " (" + world.players_info[player.get_network_master()][0] + ")"
- rocket.shooter_id = id
- rocket.global_transform.origin = player.head.global_transform.origin
- rocket.global_transform.basis = Basis(-1*dir.z, dir.y, dir.x)
- rocket.add_collision_exception_with(player)
-
-func attack2():
+ if !can_throw:
+ return
+ can_throw = false
+ player_owner.rpc("anim_event", {"VMANIMPLAY" : "rockets_launch_vm"})
+ rockets_scene.get_node("AnimationPlayer").play("throw_animation")
+ yield(player_owner.get_tree().create_timer(1.43), "timeout")
+ rockets_left -= 1
+ player_owner.rpc("add_rocket_to_scene", rockets_scene.global_transform.origin, player_owner.head.global_transform.basis, player_owner.get_network_master())
+ yield(player_owner.get_tree().create_timer(1.6), "timeout")
+ if rockets_left > 0:
+ can_throw = true
+ else:
+ rockets_scene.set_visible(false)
+
+func mouse_input(_m1: float, _m3: float, m2: float) -> void:
pass