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.

47 lines
1.1 KiB

  1. extends "res://scripts/player.gd"
  2. var merge_power = .1
  3. var merged = null
  4. var old_layer
  5. var old_mask
  6. func _ready():
  7. # Called every time the node is added to the scene.
  8. # Initialization here
  9. pass
  10. func _process(delta):
  11. if not merged:
  12. var cols = get_colliding_bodies()
  13. for col in cols:
  14. if col.is_in_group("player"):
  15. var same_team = col.player_info.is_right_team == player_info.is_right_team
  16. if same_team:
  17. merge(col)
  18. func merge(other):
  19. hide()
  20. # Disable collisions
  21. old_layer = collision_layer
  22. old_mask = collision_mask
  23. collision_layer = 0
  24. collision_mask = 0
  25. if is_network_master():
  26. # Assume their PoV, but no control
  27. other.get_node("Yaw/Pitch/Camera").make_current()
  28. # Boost them!
  29. other.walk_speed *= (1 + merge_power)
  30. other.air_accel *= (1 + merge_power)
  31. merged = other
  32. func unmerge():
  33. show()
  34. # Re-enable collisions
  35. collision_layer = old_layer
  36. collision_mask = old_mask
  37. if is_network_master():
  38. get_node("Yaw/Pitch/Camera").make_current()
  39. # Undo the boost
  40. merged.walk_speed /= (1 + merge_power)
  41. merged.air_accel /= (1 + merge_power)
  42. merged = null