A team game with an emphasis on movement (with no shooting), inspired by Overwatch and Zineth
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
1.8 KiB

extends "res://scripts/player.gd"
var merge_power = .1
var merged = null
var old_layer
var old_mask
var allow_merge_time = 0
var allow_merge_threshold = 0.4
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
func _process(delta):
if is_network_master():
allow_merge_time += delta
if not merged and allow_merge_time > allow_merge_threshold:
var cols = get_colliding_bodies()
for col in cols:
if col.is_in_group("player"):
var same_team = col.player_info.is_right_team == player_info.is_right_team
if same_team:
rpc("merge", col.get_name())
if merged and Input.is_action_just_pressed("hero_3_unmerge"):
rpc("unmerge")
sync func merge(node_name):
var other = get_node("/root/Level/Players").get_node(node_name)
hide()
print(other.get_name())
# Disable collisions
old_layer = collision_layer
old_mask = collision_mask
collision_layer = 0
collision_mask = 0
gravity_scale = 0
if is_network_master():
# Assume their PoV, but no control
other.get_node("Yaw/Pitch/Camera").make_current()
get_node("MasterOnly/Boosting").show()
if other.is_network_master():
var other_boosted = get_node("Boosted").duplicate()
other_boosted.show()
other.get_node("MasterOnly").add_child(other_boosted)
# Boost them!
other.walk_speed *= (1 + merge_power)
other.air_accel *= (1 + merge_power)
merged = other
sync func unmerge():
show()
gravity_scale = 1
# Re-enable collisions
collision_layer = old_layer
collision_mask = old_mask
if is_network_master():
get_node("Yaw/Pitch/Camera").make_current()
if merged.is_network_master():
merged.get_node("MasterOnly/Boosting").queue_free()
# Undo the boost
merged.walk_speed /= (1 + merge_power)
merged.air_accel /= (1 + merge_power)
merged = null