Files
tekton/scenes/player.tscn
adtpdn 15043b5655 feat: take_powerup VFX, rank fix, admin chat management
- Wire take_powerup AnimatedSprite3D on powerup pickup via add_powerup_from_item()
- Make take_powerup animation one-shot (loop: false)
- Fix rank Position label hidden at game start (visible = false, only shows when score > 0)
- Competition ranking for tied scores in main.gd
- Lobby Chat admin tab: system prefix, max messages, wipe, purge old, save config
- Chat Storage admin tab: list/browse/delete individual channel messages
- Backend RPCs: admin_get_chat_config, admin_set_chat_config, admin_purge_old_messages,
  admin_list_channel_messages, admin_delete_channel_message
- Chat config applied on lobby join (max_messages, prefix injection)
2026-06-19 17:13:24 +08:00

224 lines
8.2 KiB
Plaintext

[gd_scene format=3 uid="uid://1dbdbg3q5778"]
[ext_resource type="Script" uid="uid://c78jcadupsdro" path="res://scenes/player.gd" id="1_qecr4"]
[ext_resource type="PackedScene" uid="uid://5qdk1umx2rjf" path="res://assets/characters/Bob.glb" id="2_3e0d5"]
[ext_resource type="Texture2D" uid="uid://b4y41h16q6m34" path="res://assets/textures/bub.png" id="2_5w327"]
[ext_resource type="PackedScene" uid="uid://cfjx66gthp1c5" path="res://assets/characters/Masbro.glb" id="2_mjsl8"]
[ext_resource type="PackedScene" uid="uid://bfujakntxa0v6" path="res://assets/characters/Gatot.glb" id="4_3tlf6"]
[ext_resource type="PackedScene" uid="uid://cxvbrdybeglt5" path="res://assets/characters/Oldpop.glb" id="5_alfd1"]
[ext_resource type="AnimationLibrary" path="res://assets/characters/animations/animation-pack.res" id="6_5oq5w"]
[ext_resource type="Script" uid="uid://cwwwixc07jc86" path="res://scripts/bot_controller.gd" id="7_botctrl"]
[ext_resource type="FontFile" uid="uid://xnjx058n4tsw" path="res://assets/fonts/Nougat-ExtraBlack.ttf" id="8_y4r1p"]
[ext_resource type="SpriteFrames" uid="uid://bq8ifua64lag2" path="res://assets/graphics/vfx/effects/powerup.tres" id="10_d2wvv"]
[ext_resource type="SpriteFrames" uid="uid://7r0qbbm88vfy" path="res://assets/graphics/vfx/effects/animation-head.tres" id="10_y4r1p"]
[sub_resource type="TorusMesh" id="TorusMesh_ur7pv"]
inner_radius = 1.0
outer_radius = 0.8
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xqgey"]
albedo_color = Color(0.85, 0.085, 0.238, 1)
[sub_resource type="CapsuleMesh" id="CapsuleMesh_l8ldl"]
material = SubResource("StandardMaterial3D_xqgey")
[sub_resource type="SphereShape3D" id="SphereShape3D_3oo5r"]
radius = 0.4
[sub_resource type="FontVariation" id="FontVariation_q2tkp"]
spacing_glyph = 5
[node name="CharacterBody3D" type="CharacterBody3D" unique_id=1781925038]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 0)
collision_layer = 2
script = ExtResource("1_qecr4")
cell_size = Vector3(1, 1, 1)
use_diagonal_movement = true
[node name="Masbro" parent="." unique_id=1585899496 instance=ExtResource("2_mjsl8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false
[node name="Bob" parent="." unique_id=527434763 instance=ExtResource("2_3e0d5")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.484627, 0)
visible = false
[node name="Gatot" parent="." unique_id=1934435989 instance=ExtResource("4_3tlf6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
visible = false
[node name="Oldpop" parent="." unique_id=926683011 instance=ExtResource("5_alfd1")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.485, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1085499957]
root_node = NodePath("../Oldpop")
libraries/animation-pack = ExtResource("6_5oq5w")
[node name="CharacterPointer" type="MeshInstance3D" parent="." unique_id=1262762501]
transform = Transform3D(0.3535534, 0, 0.35355335, 0, 0.5, 0, -0.35355335, 0, 0.3535534, 0, -0.468462, 0)
visible = false
mesh = SubResource("TorusMesh_ur7pv")
skeleton = NodePath("")
[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=310474433]
visible = false
mesh = SubResource("CapsuleMesh_l8ldl")
[node name="CollisionShape3D" type="CollisionShape3D" parent="." unique_id=1430155562]
shape = SubResource("SphereShape3D_3oo5r")
[node name="Name" type="Label3D" parent="." unique_id=848046946]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.0281162, 0)
billboard = 1
no_depth_test = true
render_priority = 2
outline_render_priority = 1
text = "username"
font = ExtResource("8_y4r1p")
font_size = 48
outline_size = 26
uppercase = true
autowrap_mode = 2
[node name="Position" type="Label3D" parent="." unique_id=482425681]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.537, 0)
visible = false
billboard = 1
no_depth_test = true
render_priority = 2
outline_render_priority = 1
text = "1st"
font = ExtResource("8_y4r1p")
font_size = 62
outline_size = 26
autowrap_mode = 2
[node name="Bubble" type="Sprite3D" parent="." unique_id=1131454414]
transform = Transform3D(0.625, 0, 0, 0, 0.5, 0, 0, 0, 0.625, 0, 2.63593, 0)
visible = false
modulate = Color(0, 0, 0, 1)
billboard = 1
texture = ExtResource("2_5w327")
[node name="Message" type="Label3D" parent="Bubble" unique_id=598228184]
transform = Transform3D(1, 0, 0, 0, 1.25, 0, 0, 0, 1, 0, 0.00180054, 0)
billboard = 1
double_sided = false
no_depth_test = true
render_priority = 1
text = ". . . ."
font = SubResource("FontVariation_q2tkp")
font_size = 64
outline_size = 24
uppercase = true
autowrap_mode = 3
justification_flags = 171
width = 700.0
[node name="BotController" type="Node" parent="." unique_id=723259755]
script = ExtResource("7_botctrl")
[node name="take_powerup" type="AnimatedSprite3D" parent="." unique_id=1497442994]
transform = Transform3D(0.54, 0, 0, 0, 0.54, 0, 0, 0, 0.54, 0, 0.21994019, 0)
visible = false
modulate = Color(1, 1, 1, 0.8)
billboard = 2
no_depth_test = true
render_priority = 3
sprite_frames = ExtResource("10_d2wvv")
animation = &"take_powerup"
frame_progress = 0.5033338
[node name="skill_freeze" type="AnimatedSprite3D" parent="." unique_id=674916570]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 1.5653763, 0)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"freeze-initiator"
frame = 149
frame_progress = 1.0
[node name="skill_ghost" type="AnimatedSprite3D" parent="." unique_id=436351243]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 1.5653763, 0)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"ghost-initiator"
frame = 149
frame_progress = 1.0
[node name="skill_speed" type="AnimatedSprite3D" parent="." unique_id=374194236]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 1.5653763, 0)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"speed-initator"
frame = 149
frame_progress = 1.0
[node name="skill_wall" type="AnimatedSprite3D" parent="." unique_id=592755982]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 1.5653763, 0)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"wall-initiator"
[node name="scatter_knock" type="AnimatedSprite3D" parent="." unique_id=808896775]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 1.509958e-07, 0, -1.509958e-07, 0.5, 0, 1.5475016, 0.012766336)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"scatter_knock"
frame = 59
frame_progress = 1.0
[node name="floor_spawn_top" type="AnimatedSprite3D" parent="." unique_id=248195140]
transform = Transform3D(0.5, 0, 0, 0, -0.5, -7.54979e-08, 0, 7.54979e-08, -0.5, 0, 1.4714267, 0.02553294)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"floor_spawn_top"
frame = 23
frame_progress = 1.0
[node name="floor_spawn_bot" type="AnimatedSprite3D" parent="." unique_id=169253263]
transform = Transform3D(1.2, 0, 0, 0, -5.2453668e-08, -1.2, 0, 1.2, -5.2453668e-08, 0, -0.506722, -4.4299043e-08)
visible = false
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"floor_spawn_bot"
frame = 35
frame_progress = 1.0
[node name="receiver_skill_stunned" type="AnimatedSprite3D" parent="." unique_id=56953581]
transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0)
visible = false
billboard = 1
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"stunned-receiver"
frame = 59
frame_progress = 1.0
[node name="attack_mode_top" type="AnimatedSprite3D" parent="." unique_id=2002706555]
transform = Transform3D(0.5, 0, 0, 0, -2.1855694e-08, -0.5, 0, 0.5, -2.1855694e-08, 0, 1.5653763, 0)
visible = false
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"attack-mode-receiver-top"
[node name="attack_mode_bot" type="AnimatedSprite3D" parent="." unique_id=1320274503]
transform = Transform3D(1, 0, 0, 0, -4.371139e-08, -1, 0, 1, -4.371139e-08, 0, -0.6701627, 0)
visible = false
render_priority = 3
sprite_frames = ExtResource("10_y4r1p")
animation = &"attack-mode-receiver-bot"
frame = 31
frame_progress = 1.0