|
|
- extends "res://scripts/player.gd"
-
- var merge_power = .1
- var merged = null
-
- var old_layer
- var old_mask
-
- func _ready():
- # Called every time the node is added to the scene.
- # Initialization here
- pass
-
- func _process(delta):
- if not merged:
- 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:
- merge(col)
-
- func merge(other):
- hide()
- # Disable collisions
- old_layer = collision_layer
- old_mask = collision_mask
- collision_layer = 0
- collision_mask = 0
- if is_network_master():
- # Assume their PoV, but no control
- other.get_node("Yaw/Pitch/Camera").make_current()
- # Boost them!
- other.walk_speed *= (1 + merge_power)
- other.air_accel *= (1 + merge_power)
- merged = other
-
- func unmerge():
- show()
- # Re-enable collisions
- collision_layer = old_layer
- collision_mask = old_mask
- if is_network_master():
- get_node("Yaw/Pitch/Camera").make_current()
- # Undo the boost
- merged.walk_speed /= (1 + merge_power)
- merged.air_accel /= (1 + merge_power)
- merged = null
|