mirror of
https://codeberg.org/sunder/sunder.git
synced 2026-03-08 03:10:26 +00:00
42 lines
1.5 KiB
GDScript
42 lines
1.5 KiB
GDScript
extends "res://scenes/multiplayer/match/scripts/mode.gd"
|
|
|
|
var match:Match
|
|
|
|
func setup(p_match:Match) -> void:
|
|
var flag:Flag = Flag.instantiate()
|
|
p_match.objective_spawner.add_child(flag)
|
|
var spawn := p_match.map.get_spawn_position("objectives")
|
|
flag.global_position = spawn
|
|
flag.respawn_timer.timeout.connect(func() -> void:
|
|
if spawn:
|
|
flag.waypoint.text = ""
|
|
flag.global_position = spawn
|
|
flag.state = flag.FlagState.ON_STAND
|
|
)
|
|
p_match.teams.add_teams(["rabbit", "chasers"])
|
|
flag.grabbed.connect(
|
|
func(carry:FlagHolder) -> void:
|
|
carry.owner.hud.objective_label.set_visible(true)
|
|
p_match.switch_team(carry.owner.peer_id, "rabbit")
|
|
flag.respawn_timer.stop()
|
|
)
|
|
flag.dropped.connect(
|
|
func(carry:FlagHolder) -> void:
|
|
carry.owner.hud.objective_label.set_visible(false)
|
|
p_match.switch_team(carry.owner.peer_id, "chasers")
|
|
flag.respawn_timer.start()
|
|
)
|
|
p_match.scoreboard.add_child(
|
|
RabbitScoringComponent.new(p_match.scoreboard, flag))
|
|
p_match.scoreboard.add_child(
|
|
DeathmatchScoringComponent.new(p_match.scoreboard, p_match.player_spawner))
|
|
|
|
p_match.player_spawner.child_entered_tree.connect(func(player:Player) -> void:
|
|
p_match.teams["chasers"].add(player.peer_id, player.username)
|
|
player.damage.connect(_rabbit_damage_handler)
|
|
)
|
|
|
|
func _rabbit_damage_handler(source: Node, target: Node, amount: float) -> void:
|
|
assert(target.find_children("*", "Health"))
|
|
if source == target or source.team_id != target.team_id:
|
|
target.health.damage.rpc(amount, source.peer_id)
|