From 433e61257f900235b4d1f5b7b89cc4d62aa142d4 Mon Sep 17 00:00:00 2001
From: Luna <judahiii@gmail.com>
Date: Sun, 28 Jan 2018 01:54:59 -0500
Subject: [PATCH] Fix hero switch working globally

---
 scripts/player.gd | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/scripts/player.gd b/scripts/player.gd
index ed3ac1b..c4e3ecd 100644
--- a/scripts/player.gd
+++ b/scripts/player.gd
@@ -21,7 +21,7 @@ var switch_charge = 0
 var switch_charge_cap = 200 # While switching is always at 100, things like speed boost might go higher!
 var movement_charge = 0.15 # In percent per meter (except when heroes change that)
 
-const fall_height = -25
+const fall_height = -50
 
 var debug_node
 
@@ -157,20 +157,21 @@ func control_player(state):
 
 func _process(delta):
 	# All player code not caused by input, and not causing movement
-	var vel = get_linear_velocity()
-	switch_charge += movement_charge * vel.length() * delta
-	var switch_node = get_node("MasterOnly/SwitchCharge")
-	switch_node.set_text("%.f%%" % switch_charge)
-	if switch_charge >= 100:
-		# Let switch_charge keep building, because we use it for walk_speed and things
-		switch_node.set_text("100%% (%.f)\nQ - Switch hero" % switch_charge)
-	if switch_charge > switch_charge_cap:
-		# There is however a cap
-		switch_charge = switch_charge_cap
-
-	if get_translation().y < fall_height:
-		spawn()
-		switch_hero_interface()
+	if is_network_master():
+		var vel = get_linear_velocity()
+		switch_charge += movement_charge * vel.length() * delta
+		var switch_node = get_node("MasterOnly/SwitchCharge")
+		switch_node.set_text("%.f%%" % switch_charge)
+		if switch_charge >= 100:
+			# Let switch_charge keep building, because we use it for walk_speed and things
+			switch_node.set_text("100%% (%.f)\nQ - Switch hero" % switch_charge)
+		if switch_charge > switch_charge_cap:
+			# There is however a cap
+			switch_charge = switch_charge_cap
+
+		if get_translation().y < fall_height:
+			spawn()
+			switch_hero_interface()
 
 func switch_hero_interface():
 	# Interface needs the mouse!
@@ -189,7 +190,7 @@ func switch_hero_master():
 
 sync func switch_hero(hero):
 	var new_hero = load("res://scenes/heroes/%d.tscn" % hero).instance()
-	var net_id = get_tree().get_network_unique_id()
+	var net_id = int(get_name())
 	set_name("%d-delete" % net_id) # Can't have duplicate names
 	new_hero.set_name("%d" % net_id)
 	new_hero.set_network_master(net_id)