Colours and practise dummy

This commit is contained in:
Twirpytherobot
2025-11-29 18:10:23 +00:00
parent ddc1522174
commit fab47fb1e0
11 changed files with 467 additions and 37 deletions
+35 -11
View File
@@ -348,12 +348,27 @@ func get_texture_from_name(skin_color: SkinColor) -> CompressedTexture2D:
@rpc("any_peer", "reliable")
func set_player_skin(skin_name: SkinColor) -> void:
var texture = get_texture_from_name(skin_name)
# Check if we're using the LilguyRigged model
if _body is LilguyBody:
# Use hue-based color system for Lilguy
var hue = _get_hue_from_skin_color(skin_name)
_body.set_character_color(hue)
else:
# Use texture-based system for 3DGodotRobot
var texture = get_texture_from_name(skin_name)
set_mesh_texture(_bottom_mesh, texture)
set_mesh_texture(_chest_mesh, texture)
set_mesh_texture(_face_mesh, texture)
set_mesh_texture(_limbs_head_mesh, texture)
set_mesh_texture(_bottom_mesh, texture)
set_mesh_texture(_chest_mesh, texture)
set_mesh_texture(_face_mesh, texture)
set_mesh_texture(_limbs_head_mesh, texture)
## Convert SkinColor enum to hue value (0.0 to 1.0)
func _get_hue_from_skin_color(skin_color: SkinColor) -> float:
match skin_color:
SkinColor.BLUE: return 0.6 # Blue hue
SkinColor.GREEN: return 0.33 # Green hue
SkinColor.RED: return 0.0 # Red hue
SkinColor.YELLOW: return 0.16 # Yellow hue
_: return 0.6 # Default to blue
func set_mesh_texture(mesh_instance: MeshInstance3D, texture: CompressedTexture2D) -> void:
if mesh_instance:
@@ -435,16 +450,25 @@ func _server_apply_damage(target_name: String, damage: float, attacker_id: int,
if not multiplayer.is_server():
return
# Get the target from the players container
var level = get_tree().get_current_scene()
if not level or not level.has_node("PlayersContainer"):
if not level:
return
var players_container = level.get_node("PlayersContainer")
if not players_container.has_node(target_name):
return
var target = null
var target = players_container.get_node(target_name)
# Check players container first
if level.has_node("PlayersContainer"):
var players_container = level.get_node("PlayersContainer")
if players_container.has_node(target_name):
target = players_container.get_node(target_name)
# If not found in players, check enemies container
if not target and level.has_node("EnemiesContainer"):
var enemies_container = level.get_node("EnemiesContainer")
if enemies_container.has_node(target_name):
target = enemies_container.get_node(target_name)
# Apply damage if target found
if target and target is BaseUnit:
target.take_damage(damage, attacker_id, knockback, attacker_pos)