fix: a lot of networking bugs

This commit is contained in:
DottsGit
2026-06-06 19:26:22 -04:00
parent ff3e01a9e5
commit dbbfbef4a4
7 changed files with 194 additions and 109 deletions
+3 -3
View File
@@ -137,7 +137,7 @@ func _on_hit(result: Dictionary) -> void:
if not result.collider.has_method("take_damage"):
if result.collider is StaticBody3D or result.collider is CSGShape3D:
ImpactSpawner.spawn(get_tree(), "crater", result.position, result.normal, explosion_radius * 1.5)
elif not owner_player or owner_player.is_multiplayer_authority():
elif owner_player and owner_player.multiplayer.is_server():
result.collider.take_damage(damage, result.position, owner_player)
_explode(result.position)
destroy()
@@ -200,11 +200,11 @@ func _explode(pos: Vector3) -> void:
if col == owner_player and not can_self_damage:
# Skip self damage, but we still applied the knockback!
pass
elif not owner_player or owner_player.is_multiplayer_authority():
elif owner_player and owner_player.multiplayer.is_server():
col.take_damage(final_damage, target_pos, owner_player, dir * final_knockback)
# Broadcast Visual Explosion Effect to other peers
if owner_player and owner_player.has_method("server_play_explosion") and owner_player.multiplayer.has_multiplayer_peer() and owner_player.multiplayer.multiplayer_peer is not OfflineMultiplayerPeer:
if owner_player and owner_player.is_multiplayer_authority() and owner_player.has_method("server_play_explosion") and owner_player.multiplayer.has_multiplayer_peer() and owner_player.multiplayer.multiplayer_peer is not OfflineMultiplayerPeer:
owner_player.server_play_explosion.rpc_id(1, pos, explosion_radius)
# Local Visual Effect