This commit is contained in:
2026-06-04 00:07:22 +03:00
35 changed files with 799 additions and 396 deletions
+3
View File
@@ -13,3 +13,6 @@ Blender/preview/
# Test output (generated screenshots, frame strips) # Test output (generated screenshots, frame strips)
tests/output/ tests/output/
# Web export output
build/
-3
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/ANIM_publik_mees.glb-77ff7b15eaa09f6b7edf4365
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -4157,4 +4155,3 @@ _subresources={
} }
gltf/naming_version=2 gltf/naming_version=2
gltf/embedded_image_handling=1 gltf/embedded_image_handling=1
gltf/texture_map_mode=1
+5 -9
View File
@@ -1,11 +1,7 @@
extends AnimationPlayer extends Node3D
# Called when the node enters the scene tree for the first time. func _ready() -> void:
func _ready(): var anim := get_node_or_null(^"AnimationPlayer") as AnimationPlayer
current_animation="Juubeldab" if anim:
anim.play(&"Juubeldab")
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
+2 -3
View File
@@ -1,6 +1,5 @@
extends Node3D extends Node3D
func _ready(): func _ready() -> void:
var anim = get_node("scene/mees_plaksutab/ArmatureAction") $AnimationPlayer.play("ArmatureAction")
anim.play("animation")
-3
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/mees_plaksutab.glb-0ce4e4ee8c8f92069abfac9352
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -2101,4 +2099,3 @@ _subresources={
} }
gltf/naming_version=2 gltf/naming_version=2
gltf/embedded_image_handling=1 gltf/embedded_image_handling=1
gltf/texture_map_mode=1
-3
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/arena_placeholder_v01.glb-fc11365d8ec7ae6778e
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -42,4 +40,3 @@ materials/extract_path=""
_subresources={} _subresources={}
gltf/naming_version=0 gltf/naming_version=0
gltf/embedded_image_handling=1 gltf/embedded_image_handling=1
gltf/texture_map_mode=1
+1 -4
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/ANIM_publik_mees.blend-d47f9b6736ce083865e1f1
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -46,7 +44,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true blender/nodes/cameras=true
blender/nodes/custom_properties=true blender/nodes/custom_properties=true
blender/nodes/modifiers=1 blender/nodes/modifiers=1
blender/meshes/vertex_colors=1 blender/meshes/colors=false
blender/meshes/uvs=true blender/meshes/uvs=true
blender/meshes/normals=true blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false blender/meshes/export_geometry_nodes_instances=false
@@ -60,4 +58,3 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=2 gltf/naming_version=2
gltf/texture_map_mode=1
+1 -4
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/bull_v11.blend-0dd387f5e964c51fff069fa50a9998
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -46,7 +44,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true blender/nodes/cameras=true
blender/nodes/custom_properties=true blender/nodes/custom_properties=true
blender/nodes/modifiers=1 blender/nodes/modifiers=1
blender/meshes/vertex_colors=2 blender/meshes/colors=false
blender/meshes/uvs=true blender/meshes/uvs=true
blender/meshes/normals=true blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false blender/meshes/export_geometry_nodes_instances=false
@@ -60,4 +58,3 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=0 gltf/naming_version=0
gltf/texture_map_mode=1
+1 -4
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/matador_v01.blend-ca770df72393bcfc88aeadbf3f9
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -46,7 +44,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true blender/nodes/cameras=true
blender/nodes/custom_properties=true blender/nodes/custom_properties=true
blender/nodes/modifiers=1 blender/nodes/modifiers=1
blender/meshes/vertex_colors=2 blender/meshes/colors=false
blender/meshes/uvs=true blender/meshes/uvs=true
blender/meshes/normals=true blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false blender/meshes/export_geometry_nodes_instances=false
@@ -60,4 +58,3 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=0 gltf/naming_version=0
gltf/texture_map_mode=1
+1 -4
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/matador_v02.blend-78c935c19487a89cf2e8e43e696
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -46,7 +44,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true blender/nodes/cameras=true
blender/nodes/custom_properties=true blender/nodes/custom_properties=true
blender/nodes/modifiers=1 blender/nodes/modifiers=1
blender/meshes/vertex_colors=2 blender/meshes/colors=false
blender/meshes/uvs=true blender/meshes/uvs=true
blender/meshes/normals=true blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false blender/meshes/export_geometry_nodes_instances=false
@@ -60,4 +58,3 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=0 gltf/naming_version=0
gltf/texture_map_mode=1
-2
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/matador_v02.fbx-220033ca52e262349a727eddc79dc
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
+1 -4
View File
@@ -16,8 +16,6 @@ dest_files=["res://.godot/imported/publik_mees_v01.blend-bd82e3b38f4d34ceacdfadd
nodes/root_type="" nodes/root_type=""
nodes/root_name="" nodes/root_name=""
nodes/root_script=null nodes/root_script=null
mesh_library/use_node_names_as_mesh_names=false
array_mesh/deduplicate_surfaces=true
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
@@ -46,7 +44,7 @@ blender/nodes/punctual_lights=true
blender/nodes/cameras=true blender/nodes/cameras=true
blender/nodes/custom_properties=true blender/nodes/custom_properties=true
blender/nodes/modifiers=1 blender/nodes/modifiers=1
blender/meshes/vertex_colors=1 blender/meshes/colors=false
blender/meshes/uvs=true blender/meshes/uvs=true
blender/meshes/normals=true blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false blender/meshes/export_geometry_nodes_instances=false
@@ -60,4 +58,3 @@ blender/animation/limit_playback=true
blender/animation/always_sample=true blender/animation/always_sample=true
blender/animation/group_tracks=true blender/animation/group_tracks=true
gltf/naming_version=2 gltf/naming_version=2
gltf/texture_map_mode=1
+1
View File
@@ -36,3 +36,4 @@ script = ExtResource("2_camera_iso")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.655, 0.23) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.655, 0.23)
[editable path="bull_v10"] [editable path="bull_v10"]
+2 -8
View File
@@ -1,12 +1,6 @@
extends AnimationPlayer extends AnimationPlayer
# Called when the node enters the scene tree for the first time. func _ready() -> void:
func _ready():
current_animation="ArmatureAction"
speed_scale = randf_range(0.5, 1.5) speed_scale = randf_range(0.5, 1.5)
play("ArmatureAction")
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
+14 -8
View File
@@ -134,13 +134,14 @@ func _update_tail(delta: float) -> void:
var flat_speed: float = Vector2(_player.velocity.x, _player.velocity.z).length() var flat_speed: float = Vector2(_player.velocity.x, _player.velocity.z).length()
var wag_strength: float = lerpf(DP.f("tail_wag_idle"), 0.0, clampf(flat_speed / 3.0, 0.0, 1.0)) var wag_strength: float = lerpf(DP.f("tail_wag_idle"), 0.0, clampf(flat_speed / 3.0, 0.0, 1.0))
var wag_freq: float = DP.f("tail_wag_freq")
var time: float = Time.get_ticks_msec() / 1000.0 var time: float = Time.get_ticks_msec() / 1000.0
var basis_x: Vector3 = _bull.global_transform.basis.x
for i in range(1, _tail_world.size()): for i in range(1, _tail_world.size()):
var vel: Vector3 = (_tail_world[i] - _tail_prev[i]) * damping var vel: Vector3 = (_tail_world[i] - _tail_prev[i]) * damping
_tail_prev[i] = _tail_world[i] _tail_prev[i] = _tail_world[i]
var wag := _bull.global_transform.basis.x \ var wag := basis_x * sin(time * wag_freq + i * 0.5) * wag_strength
* sin(time * DP.f("tail_wag_freq") + i * 0.5) * wag_strength
_tail_world[i] = _tail_world[i] + vel + gravity * (delta * delta) + wag * delta _tail_world[i] = _tail_world[i] + vel + gravity * (delta * delta) + wag * delta
for i in range(1, _tail_world.size()): for i in range(1, _tail_world.size()):
@@ -167,16 +168,21 @@ func _apply_tail() -> void:
if _tail_world.is_empty(): if _tail_world.is_empty():
return return
for i in range(_tail_world.size()): var n := _tail_world.size()
var local_pos: Array[Vector3] = []
local_pos.resize(n)
for i in n:
local_pos[i] = _skeleton.to_local(_tail_world[i])
for i in n:
var idx: int = _tail_idx[i] var idx: int = _tail_idx[i]
var pos_skel: Vector3 = _skeleton.to_local(_tail_world[i]) var pos_skel: Vector3 = local_pos[i]
var point_dir_skel: Vector3 var point_dir_skel: Vector3
if i < _tail_world.size() - 1: if i < n - 1:
point_dir_skel = (_skeleton.to_local(_tail_world[i + 1]) - pos_skel).normalized() point_dir_skel = (local_pos[i + 1] - pos_skel).normalized()
else: else:
var prev_skel: Vector3 = _skeleton.to_local(_tail_world[i - 1]) point_dir_skel = (pos_skel - local_pos[i - 1]).normalized()
point_dir_skel = (pos_skel - prev_skel).normalized()
var rest_dir: Vector3 = _tail_rest_dir[i] var rest_dir: Vector3 = _tail_rest_dir[i]
var rest_t: Transform3D = _skeleton.get_bone_global_rest(idx) var rest_t: Transform3D = _skeleton.get_bone_global_rest(idx)
+11
View File
@@ -4,6 +4,7 @@ extends Camera3D
@export var horizontal_distance: float = 18.0 @export var horizontal_distance: float = 18.0
@export var horizontal_angle_deg: float = 45.0 @export var horizontal_angle_deg: float = 45.0
@export var ortho_size: float = 15.0 @export var ortho_size: float = 15.0
@export var ortho_size_max: float = 40.0
const _FLASH_DURATION: float = 0.30 const _FLASH_DURATION: float = 0.30
@@ -11,11 +12,13 @@ var _shake_amount: float = 0.0
var _shake_decay: float = 0.0 var _shake_decay: float = 0.0
var _flash_timer: float = 0.0 var _flash_timer: float = 0.0
var _flash_rect: ColorRect = null var _flash_rect: ColorRect = null
var _target_size: float = 0.0
func _ready() -> void: func _ready() -> void:
set_as_top_level(true) set_as_top_level(true)
projection = PROJECTION_ORTHOGONAL projection = PROJECTION_ORTHOGONAL
_target_size = ortho_size
size = ortho_size size = ortho_size
_setup_flash() _setup_flash()
@@ -31,7 +34,15 @@ func _setup_flash() -> void:
canvas.add_child(_flash_rect) canvas.add_child(_flash_rect)
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("zoom_in"):
_target_size = clamp(_target_size / 1.2, ortho_size, ortho_size_max)
if event.is_action_pressed("zoom_out"):
_target_size = clamp(_target_size * 1.2, ortho_size, ortho_size_max)
func _process(delta: float) -> void: func _process(delta: float) -> void:
size = lerpf(size, _target_size, delta * 10.0)
var angle_rad := deg_to_rad(horizontal_angle_deg) var angle_rad := deg_to_rad(horizontal_angle_deg)
var offset := Vector3( var offset := Vector3(
sin(angle_rad) * horizontal_distance, sin(angle_rad) * horizontal_distance,
+2 -2
View File
@@ -24,9 +24,9 @@ func _unhandled_input(event: InputEvent) -> void:
rotation.x = clamp(rotation.x, min_vert, max_vert) rotation.x = clamp(rotation.x, min_vert, max_vert)
if event.is_action_pressed("zoom_in"): if event.is_action_pressed("zoom_in"):
_desired_length = clamp(_desired_length - 1.0, min_zoom, max_zoom) _desired_length = clamp(_desired_length / 1.2, min_zoom, max_zoom)
if event.is_action_pressed("zoom_out"): if event.is_action_pressed("zoom_out"):
_desired_length = clamp(_desired_length + 1.0, min_zoom, max_zoom) _desired_length = clamp(_desired_length * 1.2, min_zoom, max_zoom)
if event.is_action_pressed("toggle_mouse_capture"): if event.is_action_pressed("toggle_mouse_capture"):
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
+21 -17
View File
@@ -22,13 +22,15 @@ func _register_all() -> void:
_reg_f("Movement", "thrust_min_angle", 15.0, 0.0, 90.0, 1.0) _reg_f("Movement", "thrust_min_angle", 15.0, 0.0, 90.0, 1.0)
_reg_f("Movement", "thrust_max_angle", 90.0, 0.0, 180.0, 1.0) _reg_f("Movement", "thrust_max_angle", 90.0, 0.0, 180.0, 1.0)
_reg_f("Movement", "thrust_charge_time", 0.5, 0.05, 2.0, 0.05) _reg_f("Movement", "thrust_charge_time", 0.5, 0.05, 2.0, 0.05)
_reg_f("Movement", "max_speed", 30.0, 2.0, 1000.0) _reg_f("Movement", "max_speed", 50.0, 2.0, 1000.0)
_reg_f("Movement", "roll_damping", 0.15, 0.01, 0.99, 0.01) _reg_f("Movement", "roll_damping", 0.15, 0.01, 0.99, 0.01)
_reg_f("Movement", "jump_velocity", 4.5, 1.0, 200.0) _reg_f("Movement", "jump_velocity", 4.5, 1.0, 200.0)
_reg_f("Movement", "visual_turn_speed", 12.0, 1.0, 200.0) _reg_f("Movement", "visual_turn_speed", 12.0, 1.0, 200.0)
_reg_f("Movement", "bounce_restitution", 0.55, 0.0, 2.0, 0.05) _reg_f("Movement", "bounce_restitution", 0.55, 0.0, 2.0, 0.05)
_reg_f("Movement", "bounce_min_impact", 1.0, 0.0, 20.0) _reg_f("Movement", "bounce_min_impact", 1.0, 0.0, 20.0)
_reg_f("Movement", "kick_impulse", 8.0, 1.0, 50.0) _reg_f("Movement", "wall_bounce_restitution", 0.6, 0.0, 1.5, 0.05)
_reg_f("Movement", "wall_min_bounce_speed", 6.0, 0.0, 30.0)
_reg_f("Movement", "kick_impulse", 8.0, 1.0, 50.0)
_reg_f("Movement", "kick_interval", 0.25, 0.05, 1.0, 0.01) _reg_f("Movement", "kick_interval", 0.25, 0.05, 1.0, 0.01)
_reg_f("Movement", "kick_vertical", 0.0, 0.0, 15.0) _reg_f("Movement", "kick_vertical", 0.0, 0.0, 15.0)
_reg_f("Movement", "kick_force_var", 0.2, 0.0, 1.0, 0.01) _reg_f("Movement", "kick_force_var", 0.2, 0.0, 1.0, 0.01)
@@ -57,10 +59,11 @@ func _register_all() -> void:
_reg_f("Tail", "tail_wag_freq", 4.0, 0.5, 15.0) _reg_f("Tail", "tail_wag_freq", 4.0, 0.5, 15.0)
_reg_f("Tail", "tail_wag_idle", 0.3, 0.0, 2.0, 0.05) _reg_f("Tail", "tail_wag_idle", 0.3, 0.0, 2.0, 0.05)
# ── Charge (both mouse buttons) ────────────────────────────────────────── # ── Charge (both mouse buttons) ──────────────────────────────────────────
_reg_f("Charge", "bull_charge_accel", 20.0, 1.0, 200.0) _reg_f("Charge", "bull_charge_accel", 80.0, 1.0, 400.0)
_reg_f("Charge", "bull_charge_max_speed", 22.0, 5.0, 100.0) _reg_f("Charge", "bull_charge_max_speed", 76.0, 5.0, 200.0)
_reg_f("Charge", "charge_head_pitch", 0.3, 0.0, 1.2, 0.01) _reg_f("Charge", "charge_ramp_time", 0.75, 0.1, 5.0, 0.05)
_reg_f("Charge", "charge_head_speed", 5.0, 0.5, 20.0) _reg_f("Charge", "charge_head_pitch", 0.3, 0.0, 1.2, 0.01)
_reg_f("Charge", "charge_head_speed", 5.0, 0.5, 20.0)
# ── Body ────────────────────────────────────────────────────────────────── # ── Body ──────────────────────────────────────────────────────────────────
_reg_f("Body", "body_tilt_fwd", 0.015, 0.0, 0.1, 0.001) _reg_f("Body", "body_tilt_fwd", 0.015, 0.0, 0.1, 0.001)
_reg_f("Body", "body_tilt_side", 0.01, 0.0, 0.1, 0.001) _reg_f("Body", "body_tilt_side", 0.01, 0.0, 0.1, 0.001)
@@ -83,7 +86,7 @@ func _register_all() -> void:
_reg_f("Camera", "cam_lerp_power", 6.0, 0.5, 30.0) _reg_f("Camera", "cam_lerp_power", 6.0, 0.5, 30.0)
_reg_f("Camera", "cam_sensitivity", 0.005, 0.001, 0.05, 0.001) _reg_f("Camera", "cam_sensitivity", 0.005, 0.001, 0.05, 0.001)
_reg_f("Camera", "cam_min_zoom", 3.5, 0.5, 20.0) _reg_f("Camera", "cam_min_zoom", 3.5, 0.5, 20.0)
_reg_f("Camera", "cam_max_zoom", 12.0, 2.0, 50.0) _reg_f("Camera", "cam_max_zoom", 40.0, 2.0, 80.0)
_reg_f("Camera", "cam_spring_length", 7.0, 1.0, 30.0) _reg_f("Camera", "cam_spring_length", 7.0, 1.0, 30.0)
_reg_f("Camera", "cam_min_vert_angle", -60.0, -90.0, 0.0, 1.0) _reg_f("Camera", "cam_min_vert_angle", -60.0, -90.0, 0.0, 1.0)
_reg_f("Camera", "cam_max_vert_angle", 45.0, 0.0, 90.0, 1.0) _reg_f("Camera", "cam_max_vert_angle", 45.0, 0.0, 90.0, 1.0)
@@ -94,16 +97,17 @@ func _register_all() -> void:
_reg_f("Matador", "mat_idle_min", 0.5, 0.0, 5.0, 0.1) _reg_f("Matador", "mat_idle_min", 0.5, 0.0, 5.0, 0.1)
_reg_f("Matador", "mat_idle_max", 2.5, 0.5, 10.0, 0.1) _reg_f("Matador", "mat_idle_max", 2.5, 0.5, 10.0, 0.1)
_reg_f("Matador", "mat_hit_threshold", 4.0, 1.0, 30.0) _reg_f("Matador", "mat_hit_threshold", 4.0, 1.0, 30.0)
_reg_f("Matador", "mat_ragdoll_impulse", 4.0, 0.5, 20.0) _reg_f("Matador", "mat_ragdoll_impulse", 6.0, 0.5, 20.0)
_reg_f("Matador", "mat_flee_range", 10.0, 2.0, 40.0) _reg_f("Matador", "mat_flee_range", 3.5, 2.0, 40.0)
_reg_f("Matador", "mat_flee_speed", 4.0, 0.5, 12.0) _reg_f("Matador", "mat_flee_speed", 2.5, 0.5, 12.0)
_reg_f("Matador", "mat_charge_speed", 6.0, 1.0, 30.0) _reg_f("Matador", "mat_charge_speed", 10.0, 1.0, 30.0)
_reg_f("Matador", "mat_brace_range", 8.0, 2.0, 20.0) _reg_f("Matador", "mat_brace_range", 5.0, 2.0, 20.0)
_reg_f("Matador", "mat_brace_duration", 0.4, 0.05, 1.5, 0.05) _reg_f("Matador", "mat_brace_duration", 0.7, 0.05, 1.5, 0.05)
_reg_f("Matador", "mat_commit_dist", 2.5, 0.5, 6.0, 0.1) _reg_f("Matador", "mat_commit_dist", 2.5, 0.5, 6.0, 0.1)
_reg_f("Matador", "mat_step_speed", 9.0, 2.0, 20.0) _reg_f("Matador", "mat_step_speed", 3.5, 2.0, 20.0)
_reg_f("Matador", "mat_step_duration", 0.35, 0.1, 1.0, 0.05) _reg_f("Matador", "mat_step_duration", 0.35, 0.1, 1.0, 0.05)
_reg_f("Matador", "mat_dodge_cooldown", 3.0, 0.5, 8.0, 0.25) _reg_f("Matador", "mat_dodge_cooldown", 5.0, 0.5, 12.0, 0.25)
_reg_f("Matador", "mat_dodge_chance", 0.25, 0.0, 1.0, 0.05)
# ── Debug ───────────────────────────────────────────────────────────────── # ── Debug ─────────────────────────────────────────────────────────────────
_reg_b("Debug", "show_collisions", false) _reg_b("Debug", "show_collisions", false)
Executable
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
set -euo pipefail
SERVER_USER="richard"
SERVER_HOST="192.168.1.168"
SERVER_PATH="/opt/bulloseum/data"
BUILD_DIR="build/web"
mkdir -p "$BUILD_DIR"
godot --headless --export-release "Web" "$BUILD_DIR/index.html"
gzip -kf "$BUILD_DIR/index.wasm"
scp "$BUILD_DIR/index.html" \
"$BUILD_DIR/index.js" \
"$BUILD_DIR/index.wasm.gz" \
"$BUILD_DIR/index.pck" \
"$BUILD_DIR/index.audio.worklet.js" \
"$BUILD_DIR/index.audio.position.worklet.js" \
"$BUILD_DIR/index.icon.png" \
"$BUILD_DIR/index.apple-touch-icon.png" \
"$BUILD_DIR/index.png" \
"$SERVER_USER@$SERVER_HOST:$SERVER_PATH/"
echo "deployed to $SERVER_HOST:$SERVER_PATH"
+38
View File
@@ -0,0 +1,38 @@
[preset.0]
name="Web"
platform="Web"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="build/web/index.html"
encryption_include_filters=""
encryption_exclude_filters=""
encrypt_pck=false
encrypt_directory=false
[preset.0.options]
custom_template/debug=""
custom_template/release=""
variant/extensions_support=false
variant/thread_support=true
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
html/export_icon=true
html/custom_html_shell=""
html/head_include=""
html/canvas_resize_policy=2
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false
progressive_web_app/offline_page=""
progressive_web_app/display=1
progressive_web_app/orientation=0
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color(0, 0, 0, 1)
+360
View File
@@ -0,0 +1,360 @@
extends CanvasLayer
const _GOLD := Color(1.00, 0.78, 0.22)
const _CREAM := Color(0.88, 0.83, 0.72)
const _MUTED := Color(0.65, 0.60, 0.48)
const _BG := Color(0.06, 0.04, 0.02, 0.78)
const _BADGE := Color(0.16, 0.10, 0.03, 0.90)
const _BORDER := Color(0.65, 0.48, 0.15, 0.55)
const ROUND_DURATION := 60.0
var _controls_visible: bool = true
var _timer_remaining: float = ROUND_DURATION
var _score: int = 0
var _round_active: bool = true
var _controls_panel: PanelContainer
var _timer_label: Label
var _score_label: Label
var _toggle_btn: Button
var _game_over_panel: Control
var _final_score_label: Label
var _spawner: Node
func _ready() -> void:
layer = 11
process_mode = Node.PROCESS_MODE_ALWAYS
_build()
_find_spawner.call_deferred()
func _find_spawner() -> void:
var spawners := get_tree().get_nodes_in_group(&"matador_spawn")
if not spawners.is_empty():
_spawner = spawners[0]
_spawner.matador_killed.connect(_on_matador_killed)
func _process(delta: float) -> void:
if not _round_active:
return
_timer_remaining = maxf(0.0, _timer_remaining - delta)
_update_timer_display()
if _timer_remaining <= 0.0:
_end_round()
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and not event.echo:
if event.physical_keycode == KEY_H:
_toggle_controls()
func _toggle_controls() -> void:
_controls_visible = not _controls_visible
_controls_panel.visible = _controls_visible
_toggle_btn.text = "Hide controls" if _controls_visible else "Show controls"
func _on_matador_killed() -> void:
if _round_active:
_score += 1
_update_score_display()
func _end_round() -> void:
_round_active = false
_final_score_label.text = "You killed %d matadors!" % _score
_game_over_panel.visible = true
get_tree().paused = true
func _on_continue_pressed() -> void:
_on_reset_pressed()
func _on_reset_pressed() -> void:
if get_tree().paused:
get_tree().paused = false
_game_over_panel.visible = false
_timer_remaining = ROUND_DURATION
_score = 0
_round_active = true
_update_timer_display()
_update_score_display()
if _spawner:
_spawner.reset_spawn()
func _update_timer_display() -> void:
var s := int(_timer_remaining)
_timer_label.text = "%d:%02d" % [s / 60, s % 60]
func _update_score_display() -> void:
_score_label.text = "Kills: %d" % _score
func _build() -> void:
_build_controls_panel()
_build_score_panel()
_build_game_over_overlay()
func _build_controls_panel() -> void:
_controls_panel = PanelContainer.new()
var bg := StyleBoxFlat.new()
bg.bg_color = _BG
bg.corner_radius_top_left = 7
bg.corner_radius_top_right = 7
bg.corner_radius_bottom_left = 7
bg.corner_radius_bottom_right = 7
bg.border_width_left = 1
bg.border_width_right = 1
bg.border_width_top = 1
bg.border_width_bottom = 1
bg.border_color = _BORDER
bg.content_margin_left = 14.0
bg.content_margin_right = 14.0
bg.content_margin_top = 10.0
bg.content_margin_bottom = 10.0
_controls_panel.add_theme_stylebox_override("panel", bg)
_controls_panel.anchor_left = 0.0
_controls_panel.anchor_top = 1.0
_controls_panel.anchor_right = 0.0
_controls_panel.anchor_bottom = 1.0
_controls_panel.grow_vertical = Control.GROW_DIRECTION_BEGIN
_controls_panel.offset_left = 20.0
_controls_panel.offset_bottom = -20.0
add_child(_controls_panel)
var vbox := VBoxContainer.new()
vbox.add_theme_constant_override("separation", 5)
_controls_panel.add_child(vbox)
_row(vbox, "WASD / Arrows", "Move (not intended)", _MUTED)
_row(vbox, "LMB (hold)", "Right horn", _CREAM)
_row(vbox, "RMB (hold)", "Left horn", _CREAM)
_row(vbox, "LMB + RMB", "Bull charge", _CREAM)
_row(vbox, "Scroll", "Zoom", _CREAM)
_row(vbox, "R", "Respawn matadors (cooldown)", _MUTED)
_row(vbox, "H", "Toggle controls", _MUTED)
func _build_score_panel() -> void:
var panel := PanelContainer.new()
var bg := StyleBoxFlat.new()
bg.bg_color = _BG
bg.corner_radius_top_left = 7
bg.corner_radius_top_right = 7
bg.corner_radius_bottom_left = 7
bg.corner_radius_bottom_right = 7
bg.border_width_left = 1
bg.border_width_right = 1
bg.border_width_top = 1
bg.border_width_bottom = 1
bg.border_color = _BORDER
bg.content_margin_left = 16.0
bg.content_margin_right = 16.0
bg.content_margin_top = 12.0
bg.content_margin_bottom = 12.0
panel.add_theme_stylebox_override("panel", bg)
panel.anchor_left = 1.0
panel.anchor_top = 0.0
panel.anchor_right = 1.0
panel.anchor_bottom = 0.0
panel.grow_horizontal = Control.GROW_DIRECTION_BEGIN
panel.grow_vertical = Control.GROW_DIRECTION_END
panel.offset_right = -20.0
panel.offset_top = 20.0
add_child(panel)
var vbox := VBoxContainer.new()
vbox.add_theme_constant_override("separation", 8)
panel.add_child(vbox)
_timer_label = Label.new()
_timer_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
_timer_label.add_theme_color_override("font_color", _GOLD)
_timer_label.add_theme_font_size_override("font_size", 32)
vbox.add_child(_timer_label)
_score_label = Label.new()
_score_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
_score_label.add_theme_color_override("font_color", _CREAM)
_score_label.add_theme_font_size_override("font_size", 16)
vbox.add_child(_score_label)
var sep := HSeparator.new()
var sep_style := StyleBoxFlat.new()
sep_style.bg_color = Color(0.65, 0.48, 0.15, 0.30)
sep_style.content_margin_top = 2.0
sep_style.content_margin_bottom = 2.0
sep.add_theme_stylebox_override("separator", sep_style)
vbox.add_child(sep)
var hbox := HBoxContainer.new()
hbox.add_theme_constant_override("separation", 8)
vbox.add_child(hbox)
_toggle_btn = _make_button("Hide controls")
_toggle_btn.pressed.connect(_toggle_controls)
hbox.add_child(_toggle_btn)
var reset_btn := _make_button("Reset")
reset_btn.pressed.connect(_on_reset_pressed)
hbox.add_child(reset_btn)
_update_timer_display()
_update_score_display()
func _build_game_over_overlay() -> void:
_game_over_panel = Control.new()
_game_over_panel.set_anchors_preset(Control.PRESET_FULL_RECT)
_game_over_panel.visible = false
_game_over_panel.process_mode = Node.PROCESS_MODE_ALWAYS
add_child(_game_over_panel)
var backdrop := ColorRect.new()
backdrop.set_anchors_preset(Control.PRESET_FULL_RECT)
backdrop.color = Color(0.0, 0.0, 0.0, 0.65)
_game_over_panel.add_child(backdrop)
var card := PanelContainer.new()
var card_bg := StyleBoxFlat.new()
card_bg.bg_color = Color(0.08, 0.05, 0.02, 0.95)
card_bg.corner_radius_top_left = 12
card_bg.corner_radius_top_right = 12
card_bg.corner_radius_bottom_left = 12
card_bg.corner_radius_bottom_right = 12
card_bg.border_width_left = 2
card_bg.border_width_right = 2
card_bg.border_width_top = 2
card_bg.border_width_bottom = 2
card_bg.border_color = _GOLD
card_bg.content_margin_left = 48.0
card_bg.content_margin_right = 48.0
card_bg.content_margin_top = 36.0
card_bg.content_margin_bottom = 36.0
card.add_theme_stylebox_override("panel", card_bg)
card.anchor_left = 0.5
card.anchor_top = 0.5
card.anchor_right = 0.5
card.anchor_bottom = 0.5
card.grow_horizontal = Control.GROW_DIRECTION_BOTH
card.grow_vertical = Control.GROW_DIRECTION_BOTH
_game_over_panel.add_child(card)
var vbox := VBoxContainer.new()
vbox.add_theme_constant_override("separation", 18)
vbox.alignment = BoxContainer.ALIGNMENT_CENTER
card.add_child(vbox)
var title := Label.new()
title.text = "TIME'S UP!"
title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
title.add_theme_color_override("font_color", _GOLD)
title.add_theme_font_size_override("font_size", 48)
vbox.add_child(title)
_final_score_label = Label.new()
_final_score_label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
_final_score_label.add_theme_color_override("font_color", _CREAM)
_final_score_label.add_theme_font_size_override("font_size", 24)
vbox.add_child(_final_score_label)
var continue_btn := _make_button("Continue")
continue_btn.custom_minimum_size = Vector2(160.0, 44.0)
continue_btn.process_mode = Node.PROCESS_MODE_ALWAYS
continue_btn.pressed.connect(_on_continue_pressed)
vbox.add_child(continue_btn)
func _make_button(label_text: String) -> Button:
var btn := Button.new()
btn.text = label_text
btn.process_mode = Node.PROCESS_MODE_ALWAYS
var normal := StyleBoxFlat.new()
normal.bg_color = Color(0.18, 0.12, 0.04, 0.90)
normal.corner_radius_top_left = 5
normal.corner_radius_top_right = 5
normal.corner_radius_bottom_left = 5
normal.corner_radius_bottom_right = 5
normal.border_width_left = 1
normal.border_width_right = 1
normal.border_width_top = 1
normal.border_width_bottom = 1
normal.border_color = _BORDER
normal.content_margin_left = 12.0
normal.content_margin_right = 12.0
normal.content_margin_top = 6.0
normal.content_margin_bottom = 6.0
var hover := StyleBoxFlat.new()
hover.bg_color = Color(0.30, 0.20, 0.06, 0.95)
hover.corner_radius_top_left = 5
hover.corner_radius_top_right = 5
hover.corner_radius_bottom_left = 5
hover.corner_radius_bottom_right = 5
hover.border_width_left = 1
hover.border_width_right = 1
hover.border_width_top = 1
hover.border_width_bottom = 1
hover.border_color = _GOLD
hover.content_margin_left = 12.0
hover.content_margin_right = 12.0
hover.content_margin_top = 6.0
hover.content_margin_bottom = 6.0
btn.add_theme_stylebox_override("normal", normal)
btn.add_theme_stylebox_override("hover", hover)
btn.add_theme_stylebox_override("pressed", hover)
btn.add_theme_color_override("font_color", _GOLD)
btn.add_theme_color_override("font_hover_color", _GOLD)
btn.add_theme_font_size_override("font_size", 12)
return btn
func _row(parent: VBoxContainer, key: String, desc: String, desc_color: Color) -> void:
var row := HBoxContainer.new()
row.add_theme_constant_override("separation", 10)
parent.add_child(row)
var badge := PanelContainer.new()
var bs := StyleBoxFlat.new()
bs.bg_color = _BADGE
bs.corner_radius_top_left = 3
bs.corner_radius_top_right = 3
bs.corner_radius_bottom_left = 3
bs.corner_radius_bottom_right = 3
bs.content_margin_left = 6.0
bs.content_margin_right = 6.0
bs.content_margin_top = 2.0
bs.content_margin_bottom = 2.0
badge.add_theme_stylebox_override("panel", bs)
badge.custom_minimum_size = Vector2(100.0, 0.0)
row.add_child(badge)
var key_lbl := Label.new()
key_lbl.text = key
key_lbl.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
key_lbl.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
key_lbl.add_theme_color_override("font_color", _GOLD)
key_lbl.add_theme_font_size_override("font_size", 12)
badge.add_child(key_lbl)
var desc_lbl := Label.new()
desc_lbl.text = desc
desc_lbl.vertical_alignment = VERTICAL_ALIGNMENT_CENTER
desc_lbl.add_theme_color_override("font_color", desc_color)
desc_lbl.add_theme_font_size_override("font_size", 12)
row.add_child(desc_lbl)
+94 -72
View File
@@ -7,6 +7,8 @@ extends CharacterBody3D
# RAGDOLL → hit by bull at speed # RAGDOLL → hit by bull at speed
enum State { WANDER, FLEE, BRACE, SIDESTEP, RAGDOLL } enum State { WANDER, FLEE, BRACE, SIDESTEP, RAGDOLL }
signal killed
var _state: State = State.WANDER var _state: State = State.WANDER
var _skeleton: Skeleton3D = null var _skeleton: Skeleton3D = null
var _sim: PhysicalBoneSimulator3D = null var _sim: PhysicalBoneSimulator3D = null
@@ -18,6 +20,10 @@ var _step_dir: Vector3 = Vector3.ZERO
var _brace_timer: float = 0.0 var _brace_timer: float = 0.0
var _step_timer: float = 0.0 var _step_timer: float = 0.0
var _dodge_cd: float = 0.0 var _dodge_cd: float = 0.0
var _will_dodge: bool = true
var _ole_player: AudioStreamPlayer = null
var _death_player: AudioStreamPlayer = null
var _blood_burst: CPUParticles3D = null
@onready var _mesh: Node3D = $matador_v02 @onready var _mesh: Node3D = $matador_v02
@onready var _hit_area: Area3D = $HitArea @onready var _hit_area: Area3D = $HitArea
@@ -42,6 +48,17 @@ func _ready() -> void:
str(_anim_player.get_animation_list())) str(_anim_player.get_animation_list()))
_hit_area.body_entered.connect(_on_body_entered) _hit_area.body_entered.connect(_on_body_entered)
_pick_wander_target() _pick_wander_target()
_setup_blood_burst()
if ResourceLoader.exists("res://sounds/ole.ogg"):
_ole_player = AudioStreamPlayer.new()
_ole_player.stream = load("res://sounds/ole.ogg")
_ole_player.volume_db = 0.0
add_child(_ole_player)
if ResourceLoader.exists("res://sounds/matador_death.ogg"):
_death_player = AudioStreamPlayer.new()
_death_player.stream = load("res://sounds/matador_death.ogg")
_death_player.volume_db = 2.0
add_child(_death_player)
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
@@ -84,7 +101,7 @@ func _update_ai_state() -> void:
pass # step timer drives transition pass # step timer drives transition
# Bull is moving fast and aimed within ~50° of the matador # Bull is moving fast and aimed within ~30° of the matador
func _is_charge_incoming() -> bool: func _is_charge_incoming() -> bool:
var bull_flat := Vector3(_bull.velocity.x, 0.0, _bull.velocity.z) var bull_flat := Vector3(_bull.velocity.x, 0.0, _bull.velocity.z)
if bull_flat.length() < DP.f("mat_charge_speed"): if bull_flat.length() < DP.f("mat_charge_speed"):
@@ -93,7 +110,7 @@ func _is_charge_incoming() -> bool:
to_me.y = 0.0 to_me.y = 0.0
if to_me.length() > DP.f("mat_brace_range"): if to_me.length() > DP.f("mat_brace_range"):
return false return false
return bull_flat.normalized().dot(to_me.normalized()) > 0.65 return bull_flat.normalized().dot(to_me.normalized()) > 0.85
func _tick_wander(delta: float) -> void: func _tick_wander(delta: float) -> void:
@@ -147,7 +164,8 @@ func _start_brace() -> void:
charge_dir = (_bull.global_position - global_position) charge_dir = (_bull.global_position - global_position)
charge_dir.y = 0.0 charge_dir.y = 0.0
charge_dir = charge_dir.normalized() charge_dir = charge_dir.normalized()
# Decide which side to step to now, so the choice is fixed before the bull arrives # Decide whether to dodge at all and which side — fixed before the bull arrives
_will_dodge = randf() < DP.f("mat_dodge_chance")
var side := 1.0 if randf() > 0.5 else -1.0 var side := 1.0 if randf() > 0.5 else -1.0
_step_dir = charge_dir.rotated(Vector3.UP, PI * 0.5 * side) _step_dir = charge_dir.rotated(Vector3.UP, PI * 0.5 * side)
_brace_timer = DP.f("mat_brace_duration") _brace_timer = DP.f("mat_brace_duration")
@@ -170,8 +188,16 @@ func _tick_brace(delta: float) -> void:
var dist := global_position.distance_to(_bull.global_position) var dist := global_position.distance_to(_bull.global_position)
# Execute the step when the bull is almost on top or the brace window expires # Execute the step when the bull is almost on top or the brace window expires
if dist < DP.f("mat_commit_dist") or _brace_timer <= 0.0: if dist < DP.f("mat_commit_dist") or _brace_timer <= 0.0:
_state = State.SIDESTEP if _will_dodge:
_step_timer = DP.f("mat_step_duration") _state = State.SIDESTEP
_step_timer = DP.f("mat_step_duration")
if _ole_player:
_ole_player.pitch_scale = randf_range(0.88, 1.12)
_ole_player.play()
else:
# Stand and eat it — no juke
_state = State.FLEE
_dodge_cd = DP.f("mat_dodge_cooldown")
# Pase phase: sharp lateral step as the bull commits to its line # Pase phase: sharp lateral step as the bull commits to its line
@@ -196,36 +222,6 @@ func _tick_ragdoll(_delta: float) -> void:
move_and_slide() move_and_slide()
func _unhandled_input(event: InputEvent) -> void:
if not (event is InputEventKey):
return
var key := event as InputEventKey
if key.keycode == KEY_R and key.pressed and not key.echo:
_reset()
func _reset() -> void:
_state = State.WANDER
velocity = Vector3.ZERO
collision_layer = 1
global_position = Vector3(0.0, 1.0, 0.0)
if _sim:
_sim.physical_bones_stop_simulation()
_sim.active = false
if _anim_player and _anim_player.has_animation(_IDLE_ANIM):
_anim_player.stop()
_anim_player.play(_IDLE_ANIM)
_anim_player.seek(0.0, true)
_dodge_cd = 0.0
_brace_timer = 0.0
_step_timer = 0.0
_idle_timer = 0.0
_pick_wander_target()
func _on_body_entered(body: Node3D) -> void: func _on_body_entered(body: Node3D) -> void:
if _state == State.RAGDOLL: if _state == State.RAGDOLL:
return return
@@ -242,12 +238,21 @@ func _on_body_entered(body: Node3D) -> void:
func _enter_ragdoll(hit_dir: Vector3, bull_speed: float) -> void: func _enter_ragdoll(hit_dir: Vector3, bull_speed: float) -> void:
_state = State.RAGDOLL _state = State.RAGDOLL
killed.emit()
var _t := get_tree().create_timer(4.0)
_t.timeout.connect(func() -> void:
if is_instance_valid(self):
queue_free()
)
hit_dir.y = 0.0 hit_dir.y = 0.0
hit_dir = hit_dir.normalized() hit_dir = hit_dir.normalized()
# Arc upward so the body lifts before falling — feels like a real goring throw # Arc upward so the body lifts before falling — feels like a real goring throw
var throw_dir := (hit_dir + Vector3(0.0, 0.5, 0.0)).normalized() var throw_dir := (hit_dir + Vector3(0.0, 0.5, 0.0)).normalized()
_spawn_blood_burst(hit_dir) _spawn_blood_burst(hit_dir)
if _death_player:
_death_player.pitch_scale = randf_range(0.9, 1.1)
_death_player.play()
var cam := _bull.get_node_or_null("Camera3D") var cam := _bull.get_node_or_null("Camera3D")
if cam: if cam:
@@ -279,23 +284,40 @@ func _enter_ragdoll(hit_dir: Vector3, bull_speed: float) -> void:
_sim.active = true _sim.active = true
_sim.physical_bones_start_simulation() _sim.physical_bones_start_simulation()
var strength := DP.f("mat_ragdoll_impulse") * clampf(bull_speed / 15.0, 0.4, 1.3) var strength := DP.f("mat_ragdoll_impulse") * clampf(bull_speed / 15.0, 0.4, 1.3)
var right := throw_dir.cross(Vector3.UP).normalized()
for child: Node in _sim.get_children(): for child: Node in _sim.get_children():
if child is PhysicalBone3D: if not (child is PhysicalBone3D):
var scatter := Vector3( continue
randf_range(-0.12, 0.12), var pb := child as PhysicalBone3D
randf_range(-0.05, 0.08), var impulse := Vector3.ZERO
randf_range(-0.12, 0.12)) match pb.bone_name:
(child as PhysicalBone3D).apply_central_impulse( "COG", "matador":
(throw_dir + scatter).normalized() * strength) # Core of mass takes the full hit
impulse = throw_dir * strength
"chest":
impulse = (throw_dir + Vector3.UP * 0.3).normalized() * strength * 0.9
"head":
impulse = (throw_dir + Vector3.UP * 0.5).normalized() * strength * 0.7
"leg_L":
impulse = (throw_dir * 0.4 + right * 0.6 + Vector3.UP * 0.4).normalized() * strength * 0.6
"leg_R":
impulse = (throw_dir * 0.4 - right * 0.6 + Vector3.UP * 0.4).normalized() * strength * 0.6
"arm_L":
impulse = (throw_dir * 0.3 + right * 0.8 + Vector3.UP * 0.5).normalized() * strength * 0.5
"arm_R":
impulse = (throw_dir * 0.3 - right * 0.8 + Vector3.UP * 0.5).normalized() * strength * 0.5
_:
# Distal bones (forearms, shins, hands, feet) get no direct impulse;
# they trail naturally from the joints above them
continue
# Small random noise per bone so no two look identical
var noise := Vector3(randf_range(-0.15, 0.15), randf_range(-0.08, 0.15), randf_range(-0.15, 0.15))
pb.apply_central_impulse(impulse + noise * strength * 0.2)
# ── Blood burst ─────────────────────────────────────────────────────────────── # ── Blood burst ───────────────────────────────────────────────────────────────
func _spawn_blood_burst(hit_dir: Vector3) -> void: func _setup_blood_burst() -> void:
var p := CPUParticles3D.new()
get_tree().current_scene.add_child(p)
p.global_position = global_position + Vector3(0.0, 0.9, 0.0)
var mat := StandardMaterial3D.new() var mat := StandardMaterial3D.new()
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
@@ -318,25 +340,30 @@ func _spawn_blood_burst(hit_dir: Vector3) -> void:
scale_curve.add_point(Vector2(0.6, 0.5)) scale_curve.add_point(Vector2(0.6, 0.5))
scale_curve.add_point(Vector2(1.0, 0.0)) scale_curve.add_point(Vector2(1.0, 0.0))
p.mesh = sphere _blood_burst = CPUParticles3D.new()
p.color_ramp = ramp _blood_burst.mesh = sphere
p.scale_amount_curve = scale_curve _blood_burst.color_ramp = ramp
p.one_shot = true _blood_burst.scale_amount_curve = scale_curve
p.explosiveness = 0.9 _blood_burst.one_shot = true
p.amount = 60 _blood_burst.explosiveness = 0.9
p.lifetime = 1.1 _blood_burst.amount = 25
p.randomness = 0.4 _blood_burst.lifetime = 1.1
p.local_coords = false _blood_burst.randomness = 0.4
p.direction = (hit_dir * 0.6 + Vector3.UP * 0.4).normalized() _blood_burst.local_coords = false
p.spread = 80.0 _blood_burst.spread = 80.0
p.gravity = Vector3(0.0, -7.0, 0.0) _blood_burst.gravity = Vector3(0.0, -7.0, 0.0)
p.initial_velocity_min = 4.0 _blood_burst.initial_velocity_min = 4.0
p.initial_velocity_max = 11.0 _blood_burst.initial_velocity_max = 11.0
p.scale_amount_min = 0.5 _blood_burst.scale_amount_min = 0.5
p.scale_amount_max = 1.6 _blood_burst.scale_amount_max = 1.6
p.emitting = true _blood_burst.emitting = false
add_child(_blood_burst)
get_tree().create_timer(p.lifetime + 0.3).timeout.connect(p.queue_free)
func _spawn_blood_burst(hit_dir: Vector3) -> void:
_blood_burst.global_position = global_position + Vector3(0.0, 0.9, 0.0)
_blood_burst.direction = (hit_dir * 0.6 + Vector3.UP * 0.4).normalized()
_blood_burst.restart()
# ── Animation helpers ───────────────────────────────────────────────────────── # ── Animation helpers ─────────────────────────────────────────────────────────
@@ -356,11 +383,6 @@ func _play_anim(anim_name: StringName) -> void:
_anim_player.play(anim_name) _anim_player.play(anim_name)
func _reset_bone_poses() -> void:
for i: int in _skeleton.get_bone_count():
_skeleton.set_bone_pose_rotation(i, Quaternion.IDENTITY)
func _pick_wander_target() -> void: func _pick_wander_target() -> void:
var radius := DP.f("mat_wander_radius") var radius := DP.f("mat_wander_radius")
var angle := randf() * TAU var angle := randf() * TAU
@@ -409,8 +431,8 @@ func _setup_physical_bones() -> PhysicalBoneSimulator3D:
pb.bone_name = bname pb.bone_name = bname
pb.joint_type = PhysicalBone3D.JOINT_TYPE_PIN pb.joint_type = PhysicalBone3D.JOINT_TYPE_PIN
pb.mass = 0.4 pb.mass = 0.4
pb.linear_damp = 0.4 pb.linear_damp = 0.1
pb.angular_damp = 0.8 pb.angular_damp = 0.2
pb.collision_layer = 1 pb.collision_layer = 1
pb.collision_mask = 1 pb.collision_mask = 1
var cs := CollisionShape3D.new() var cs := CollisionShape3D.new()
+37 -3
View File
@@ -1,15 +1,49 @@
extends Node3D extends Node3D
signal matador_killed
const MATADOR := preload("res://Matador.tscn") const MATADOR := preload("res://Matador.tscn")
const RESPAWN_COOLDOWN := 8.0
var _respawn_cooldown: float = 0.0
func _ready() -> void: func _ready() -> void:
add_to_group(&"matador_spawn")
_spawn.call_deferred() _spawn.call_deferred()
func _process(delta: float) -> void:
_respawn_cooldown = maxf(0.0, _respawn_cooldown - delta)
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and not event.echo:
if event.physical_keycode == KEY_R and _respawn_cooldown <= 0.0:
_respawn_cooldown = RESPAWN_COOLDOWN
reset_spawn()
func _spawn() -> void: func _spawn() -> void:
var count: int = int(DP.f("mat_spawn_count")) var count: int = int(DP.f("mat_spawn_count"))
for i: int in count: for i: int in count:
var m: Node3D = MATADOR.instantiate() _spawn_one()
m.position = Vector3(0.0, 1.0, 0.0)
get_parent().add_child(m)
func _spawn_one() -> void:
var m: Node3D = MATADOR.instantiate()
m.position = Vector3(0.0, 1.0, 0.0)
get_parent().add_child(m)
m.killed.connect(_on_matador_killed)
func _on_matador_killed() -> void:
matador_killed.emit()
_spawn_one.call_deferred()
func reset_spawn() -> void:
for m: Node in get_tree().get_nodes_in_group(&"matador"):
m.queue_free()
await get_tree().process_frame
_spawn()
+75 -31
View File
@@ -14,18 +14,24 @@ const HOOF_OFFSETS: Array = [
var _hoof_emitters: Array[CPUParticles3D] = [] var _hoof_emitters: Array[CPUParticles3D] = []
var _legs: Node var _legs: Node
var _kick_timer: float = 0.0 var _kick_timer: float = 0.0
var _was_on_floor: bool = false var _was_on_floor: bool = false
var _pre_slide_vel_y: float = 0.0 var _pre_slide_vel_y: float = 0.0
var _charge_dir: Vector3 = Vector3.ZERO var _charge_dir: Vector3 = Vector3.ZERO
var _both_held: bool = false var _charge_hold_time: float = 0.0
var _both_held: bool = false
var _thrust_left_charge: float = 0.0 var _thrust_left_charge: float = 0.0
var _thrust_right_charge: float = 0.0 var _thrust_right_charge: float = 0.0
var _charge_was_full: bool = false var _charge_was_full: bool = false
var _charge_overlay: ColorRect = null var _charge_overlay: ColorRect = null
var _charge_ready_emitter: CPUParticles3D = null var _charge_ready_emitter: CPUParticles3D = null
var _huff_player: AudioStreamPlayer = null
var _crowd_player: AudioStreamPlayer = null
var _huff_timer: float = 0.0
var _roll_damping: float = 0.15
enum DustState { NONE, WALK, CHARGE } enum DustState { NONE, WALK, CHARGE }
var _dust_state: DustState = DustState.NONE var _dust_state: DustState = DustState.NONE
@@ -35,7 +41,9 @@ func _ready() -> void:
_setup_hoof_dust() _setup_hoof_dust()
_setup_legs() _setup_legs()
_setup_charge_indicators() _setup_charge_indicators()
_setup_audio()
DP.any_changed.connect(_on_dp_changed) DP.any_changed.connect(_on_dp_changed)
_roll_damping = DP.f("roll_damping")
func _setup_legs() -> void: func _setup_legs() -> void:
@@ -144,6 +152,23 @@ func _setup_charge_indicators() -> void:
cube_guy.add_child(_charge_ready_emitter) cube_guy.add_child(_charge_ready_emitter)
func _setup_audio() -> void:
if ResourceLoader.exists("res://sounds/bull_huff.ogg"):
_huff_player = AudioStreamPlayer.new()
_huff_player.stream = load("res://sounds/bull_huff.ogg")
_huff_player.volume_db = 0.0
add_child(_huff_player)
if ResourceLoader.exists("res://sounds/crowd_ambient.ogg"):
_crowd_player = AudioStreamPlayer.new()
var s := load("res://sounds/crowd_ambient.ogg") as AudioStreamOggVorbis
if s:
s.loop = true
_crowd_player.stream = s
_crowd_player.volume_db = -14.0
_crowd_player.autoplay = true
add_child(_crowd_player)
func _set_dust_state(new_state: DustState) -> void: func _set_dust_state(new_state: DustState) -> void:
if new_state == _dust_state: if new_state == _dust_state:
return return
@@ -171,6 +196,7 @@ func _set_dust_state(new_state: DustState) -> void:
func _on_dp_changed(_key: String, _val: Variant) -> void: func _on_dp_changed(_key: String, _val: Variant) -> void:
_roll_damping = DP.f("roll_damping")
if _hoof_emitters.is_empty() or _dust_state == DustState.NONE: if _hoof_emitters.is_empty() or _dust_state == DustState.NONE:
return return
var prev := _dust_state var prev := _dust_state
@@ -194,41 +220,27 @@ func _apply_thrust(dir: Vector3) -> void:
velocity.z *= s velocity.z *= s
func _apply_kick(direction: Vector3, charging: bool) -> void: func _apply_kick(direction: Vector3) -> void:
var base := DP.f("kick_impulse") * (DP.f("charge_kick_mult") if charging else 1.0) var force := DP.f("kick_impulse") * randf_range(1.0 - DP.f("kick_force_var"), 1.0 + DP.f("kick_force_var"))
# Random force variance — each kick punches a different amount
var force := base * randf_range(1.0 - DP.f("kick_force_var"), 1.0 + DP.f("kick_force_var"))
# Random angle spread — slight mis-kick like a real ball
var spread := deg_to_rad(randf_range(-DP.f("kick_spread"), DP.f("kick_spread"))) var spread := deg_to_rad(randf_range(-DP.f("kick_spread"), DP.f("kick_spread")))
var kick_dir := direction.rotated(Vector3.UP, spread) var kick_dir := direction.rotated(Vector3.UP, spread)
velocity.x += kick_dir.x * force velocity.x += kick_dir.x * force
velocity.z += kick_dir.z * force velocity.z += kick_dir.z * force
# Vertical arc — only when grounded so arcs don't chain infinitely in the air
if is_on_floor(): if is_on_floor():
velocity.y += DP.f("kick_vertical") * randf_range(0.75, 1.25) velocity.y += DP.f("kick_vertical") * randf_range(0.75, 1.25)
# Cap immediately after kick so charge doesn't overshoot by too much
var flat := Vector2(velocity.x, velocity.z) var flat := Vector2(velocity.x, velocity.z)
var spd := flat.length() var spd := flat.length()
var cap := DP.f("max_speed") * (DP.f("charge_kick_mult") if charging else 1.0) if spd > DP.f("max_speed"):
if spd > cap: var s := DP.f("max_speed") / spd
var s := cap / spd
velocity.x *= s velocity.x *= s
velocity.z *= s velocity.z *= s
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
# ── Gravity & jump ──────────────────────────────────────────────────────── # ── Gravity ───────────────────────────────────────────────────────────────
if not is_on_floor(): if not is_on_floor():
velocity += get_gravity() * delta velocity += get_gravity() * delta
if Input.is_action_just_pressed(&"jump") and is_on_floor():
velocity.y = DP.f("jump_velocity")
# ── Camera-relative input direction ─────────────────────────────────────── # ── Camera-relative input direction ───────────────────────────────────────
var input_dir := Input.get_vector("move_left", "move_right", "move_forward", "move_back") var input_dir := Input.get_vector("move_left", "move_right", "move_forward", "move_back")
var cam_basis := camera_pivot.global_transform.basis var cam_basis := camera_pivot.global_transform.basis
@@ -236,8 +248,7 @@ func _physics_process(delta: float) -> void:
var flat_right := Vector3(cam_basis.x.x, 0.0, cam_basis.x.z).normalized() var flat_right := Vector3(cam_basis.x.x, 0.0, cam_basis.x.z).normalized()
var direction := (flat_forward * -input_dir.y + flat_right * input_dir.x).normalized() var direction := (flat_forward * -input_dir.y + flat_right * input_dir.x).normalized()
var charging := Input.is_action_pressed(&"charge") var on_floor := is_on_floor()
var on_floor := is_on_floor()
# ── Mouse button actions ────────────────────────────────────────────────── # ── Mouse button actions ──────────────────────────────────────────────────
# Both held → charge: lock direction, ramp speed, lower head # Both held → charge: lock direction, ramp speed, lower head
@@ -250,12 +261,24 @@ func _physics_process(delta: float) -> void:
if both_held and not _both_held: if both_held and not _both_held:
var raw := cube_guy.global_transform.basis.z var raw := cube_guy.global_transform.basis.z
_charge_dir = Vector3(raw.x, 0.0, raw.z).normalized() _charge_dir = Vector3(raw.x, 0.0, raw.z).normalized()
if _huff_player:
_huff_player.pitch_scale = randf_range(0.9, 1.1)
_huff_player.play()
_huff_timer = randf_range(1.4, 2.2)
if both_held: if both_held:
_thrust_left_charge = 0.0 _thrust_left_charge = 0.0
_thrust_right_charge = 0.0 _thrust_right_charge = 0.0
velocity.x += _charge_dir.x * DP.f("bull_charge_accel") * delta _charge_hold_time += delta
velocity.z += _charge_dir.z * DP.f("bull_charge_accel") * delta _huff_timer -= delta
if _huff_timer <= 0.0 and _huff_player and not _huff_player.playing:
_huff_player.pitch_scale = randf_range(0.9, 1.1)
_huff_player.play()
_huff_timer = randf_range(1.4, 2.2)
var ramp := minf(_charge_hold_time / DP.f("charge_ramp_time"), 1.0)
var accel := DP.f("bull_charge_accel") * lerpf(0.2, 1.0, ramp)
velocity.x += _charge_dir.x * accel * delta
velocity.z += _charge_dir.z * accel * delta
var flat_c := Vector2(velocity.x, velocity.z) var flat_c := Vector2(velocity.x, velocity.z)
var spd_c := flat_c.length() var spd_c := flat_c.length()
if spd_c > DP.f("bull_charge_max_speed"): if spd_c > DP.f("bull_charge_max_speed"):
@@ -263,6 +286,7 @@ func _physics_process(delta: float) -> void:
velocity.z *= DP.f("bull_charge_max_speed") / spd_c velocity.z *= DP.f("bull_charge_max_speed") / spd_c
_legs.set(&"charge_pitch_target", DP.f("charge_head_pitch")) _legs.set(&"charge_pitch_target", DP.f("charge_head_pitch"))
else: else:
_charge_hold_time = 0.0
_legs.set(&"charge_pitch_target", 0.0) _legs.set(&"charge_pitch_target", 0.0)
if left_held and not right_held: if left_held and not right_held:
@@ -305,11 +329,11 @@ func _physics_process(delta: float) -> void:
# ── Periodic kick ───────────────────────────────────────────────────────── # ── Periodic kick ─────────────────────────────────────────────────────────
_kick_timer = maxf(0.0, _kick_timer - delta) _kick_timer = maxf(0.0, _kick_timer - delta)
if direction and _kick_timer <= 0.0 and not both_held: if direction and _kick_timer <= 0.0 and not both_held:
_apply_kick(direction, charging) _apply_kick(direction)
_kick_timer = DP.f("kick_interval") _kick_timer = DP.f("kick_interval")
# ── Rolling friction (exponential, frame-rate independent) ──────────────── # ── Rolling friction (exponential, frame-rate independent) ────────────────
var retain := pow(DP.f("roll_damping"), delta) var retain := pow(_roll_damping, delta)
velocity.x *= retain velocity.x *= retain
velocity.z *= retain velocity.z *= retain
@@ -321,8 +345,26 @@ func _physics_process(delta: float) -> void:
cube_guy.rotation.y, target_angle, delta * DP.f("visual_turn_speed")) cube_guy.rotation.y, target_angle, delta * DP.f("visual_turn_speed"))
_pre_slide_vel_y = velocity.y _pre_slide_vel_y = velocity.y
var pre_wall_vel := Vector3(velocity.x, 0.0, velocity.z)
move_and_slide() move_and_slide()
# ── Wall bounce — no sliding, guaranteed exit ────────────────────────────
# pre_wall_vel is captured before move_and_slide strips the into-wall component,
# so into_spd correctly reflects how hard the bull hit the wall even when stationary.
for i in get_slide_collision_count():
var col := get_slide_collision(i)
var normal := col.get_normal()
if abs(normal.y) < 0.5:
var flat_n := Vector3(normal.x, 0.0, normal.z).normalized()
var into_spd := -pre_wall_vel.dot(flat_n)
var exit_spd := maxf(into_spd * DP.f("wall_bounce_restitution"),
DP.f("wall_min_bounce_speed"))
velocity.x = flat_n.x * exit_spd
velocity.z = flat_n.z * exit_spd
pre_wall_vel = Vector3(velocity.x, 0.0, velocity.z)
if both_held and _charge_dir.dot(flat_n) < 0.0:
_charge_dir = _charge_dir.reflect(flat_n)
# ── Bounce on landing ───────────────────────────────────────────────────── # ── Bounce on landing ─────────────────────────────────────────────────────
if is_on_floor() and not _was_on_floor: if is_on_floor() and not _was_on_floor:
var impact := -_pre_slide_vel_y var impact := -_pre_slide_vel_y
@@ -336,3 +378,5 @@ func _physics_process(delta: float) -> void:
_set_dust_state(DustState.WALK) _set_dust_state(DustState.WALK)
else: else:
_set_dust_state(DustState.NONE) _set_dust_state(DustState.NONE)
# ── Hoof sounds ───────────────────────────────────────────────────────────
+1 -1
View File
@@ -11,7 +11,7 @@ config_version=5
[application] [application]
config/name="Bullosseum" config/name="Bullosseum"
run/main_scene="uid://b7afbx36ltb3f" run/main_scene="res://scene.tscn"
config/features=PackedStringArray("4.7", "Forward Plus") config/features=PackedStringArray("4.7", "Forward Plus")
config/icon="res://icon.svg" config/icon="res://icon.svg"
config/run/main_scene="res://scene.tscn" config/run/main_scene="res://scene.tscn"
+15
View File
@@ -4,6 +4,9 @@ uniform sampler2D SCREEN_TEXTURE : hint_screen_texture, filter_nearest;
uniform float pixel_scale : hint_range(1.0, 8.0, 1.0) = 4.0; uniform float pixel_scale : hint_range(1.0, 8.0, 1.0) = 4.0;
uniform float color_depth : hint_range(2.0, 8.0, 1.0) = 5.0; uniform float color_depth : hint_range(2.0, 8.0, 1.0) = 5.0;
uniform float dither_strength : hint_range(0.0, 2.0, 0.05) = 0.8; uniform float dither_strength : hint_range(0.0, 2.0, 0.05) = 0.8;
uniform float scanline_strength : hint_range(0.0, 1.0, 0.05) = 0.2;
uniform float roll_speed : hint_range(0.0, 10.0, 0.1) = 3.0;
uniform float roll_strength : hint_range(0.0, 1.0, 0.05) = 1.0;
float bayer4(ivec2 p) { float bayer4(ivec2 p) {
int x = p.x & 3; int x = p.x & 3;
@@ -28,5 +31,17 @@ void fragment() {
float levels = exp2(color_depth) - 1.0; float levels = exp2(color_depth) - 1.0;
col = clamp(floor(col * levels + t + 0.5) / levels, 0.0, 1.0); col = clamp(floor(col * levels + t + 0.5) / levels, 0.0, 1.0);
if (scanline_strength > 0.0) {
// Rolling gradient mask scrolling top-to-bottom
float screen_y = FRAGCOORD.y * SCREEN_PIXEL_SIZE.y;
float roll_mask = sin(screen_y * TAU - TIME * roll_speed) * 0.5 + 0.5;
// Scanlines modulated by the roll: strong at peak, faint at trough
float effective_strength = scanline_strength * mix(1.0 - roll_strength, 1.0, roll_mask);
float row_frac = fract(FRAGCOORD.y / pixel_scale);
float scan = smoothstep(0.0, 0.3, row_frac) * (1.0 - smoothstep(0.7, 1.0, row_frac));
col *= 1.0 - effective_strength * (1.0 - scan);
}
COLOR = vec4(col, 1.0); COLOR = vec4(col, 1.0);
} }
+9
View File
@@ -0,0 +1,9 @@
extends Node3D
func _ready() -> void:
for child in get_children():
var anim := child.get_node_or_null(^"AnimationPlayer") as AnimationPlayer
if anim:
anim.speed_scale = randf_range(0.5, 1.5)
anim.play(&"ArmatureAction")
+21 -211
View File
@@ -2,12 +2,14 @@
[ext_resource type="PackedScene" uid="uid://crtm0xtiql3r8" path="res://Player.tscn" id="1_ulcgi"] [ext_resource type="PackedScene" uid="uid://crtm0xtiql3r8" path="res://Player.tscn" id="1_ulcgi"]
[ext_resource type="PackedScene" uid="uid://dio67r8ambe7h" path="res://Assets/arena_placeholder_v01.glb" id="2_nxogm"] [ext_resource type="PackedScene" uid="uid://dio67r8ambe7h" path="res://Assets/arena_placeholder_v01.glb" id="2_nxogm"]
[ext_resource type="Script" uid="uid://8b1qil754yd3" path="res://matador_spawn.gd" id="3_spawn"] [ext_resource type="Script" uid="uid://dou5ar6tkmng1" path="res://matador_spawn.gd" id="3_spawn"]
[ext_resource type="Shader" uid="uid://d3xyyy5bh0ma" path="res://ps1_filter.gdshader" id="4_ps1shader"] [ext_resource type="Shader" uid="uid://d3xyyy5bh0ma" path="res://ps1_filter.gdshader" id="4_ps1shader"]
[ext_resource type="PackedScene" uid="uid://cmxqocsdbgufr" path="res://Animations/mees_plaksutab.glb" id="5_m7jmp"] [ext_resource type="PackedScene" uid="uid://cmxqocsdbgufr" path="res://Animations/mees_plaksutab.glb" id="5_m7jmp"]
[ext_resource type="Script" uid="uid://1ggy0u2gppqa" path="res://animation_player.gd" id="6_y2354"]
[ext_resource type="PackedScene" uid="uid://1y07gn65ktsi" path="res://Animations/ANIM_publik_mees.glb" id="7_xlvrw"] [ext_resource type="PackedScene" uid="uid://1y07gn65ktsi" path="res://Animations/ANIM_publik_mees.glb" id="7_xlvrw"]
[ext_resource type="Script" uid="uid://dr6phggarm73e" path="res://Animations/anim_publik_mees.gd" id="8_73fnb"] [ext_resource type="Script" uid="uid://wj6tgh8nb0ka" path="res://Animations/anim_publik_mees.gd" id="8_73fnb"]
[ext_resource type="Script" uid="uid://bs682ey3p1ivj" path="res://publikum_controller.gd" id="9_pubctrl"]
[ext_resource type="Script" path="res://hud.gd" id="10_hud"]
[sub_resource type="BoxShape3D" id="BoxShape3D_ulcgi"] [sub_resource type="BoxShape3D" id="BoxShape3D_ulcgi"]
@@ -39,6 +41,9 @@ shape = SubResource("BoxShape3D_ulcgi")
[node name="MatadorSpawner" type="Node3D" parent="." unique_id=-1293967295] [node name="MatadorSpawner" type="Node3D" parent="." unique_id=-1293967295]
script = ExtResource("3_spawn") script = ExtResource("3_spawn")
[node name="HUD" type="CanvasLayer" parent="." unique_id=1100000001]
script = ExtResource("10_hud")
[node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1032421313] [node name="CanvasLayer" type="CanvasLayer" parent="." unique_id=1032421313]
layer = 10 layer = 10
@@ -52,528 +57,333 @@ grow_vertical = 2
[node name="publikum" type="Node3D" parent="." unique_id=1311444475] [node name="publikum" type="Node3D" parent="." unique_id=1311444475]
transform = Transform3D(0.70069104, 0, 0.7134648, 0, 1, 0, -0.7134648, 0, 0.70069104, -9.04294, 3.6553268, -10.339719) transform = Transform3D(0.70069104, 0, 0.7134648, 0, 1, 0, -0.7134648, 0, 0.70069104, -9.04294, 3.6553268, -10.339719)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum" unique_id=1787142704 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum" unique_id=1787142704 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum" unique_id=330098781 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum" unique_id=330098781 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum" unique_id=1406686735 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum" unique_id=1406686735 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="Skeleton3D" parent="publikum/mees_plaksutab3/Armature" parent_id_path=PackedInt32Array(1406686735, 1318143576) index="0" unique_id=442686347]
bones/1/rotation = Quaternion(-0.10298401, 0, 0, 0.994683)
bones/3/rotation = Quaternion(7.604868e-08, 1.5964908e-07, -0.7448834, 0.66719466)
bones/4/rotation = Quaternion(7.604868e-08, -1.5964908e-07, 0.7448834, 0.66719466)
bones/5/position = Vector3(0.46006465, 0.43647012, 1.2648242e-07)
bones/5/rotation = Quaternion(6.7269e-08, 5.5318736e-08, -0.78074276, 0.6248526)
bones/6/rotation = Quaternion(3.2569765e-09, 2.2182128e-07, -0.0056677586, 0.999984)
bones/7/rotation = Quaternion(2.516006e-08, -1.2671407e-07, -0.058700815, 0.99827564)
bones/8/position = Vector3(-0.46006465, 0.43647012, 1.2648242e-07)
bones/8/rotation = Quaternion(6.7269e-08, -5.5318736e-08, 0.78074276, 0.6248526)
bones/9/rotation = Quaternion(3.2569765e-09, -2.2182128e-07, 0.0056677586, 0.999984)
bones/10/rotation = Quaternion(2.516006e-08, 1.2671407e-07, 0.058700815, 0.99827564)
bones/11/rotation = Quaternion(0.708021, 0.037048426, 0.70338005, 0.050894286)
bones/11/scale = Vector3(1.0000018, 1.0000004, 1.0000626)
bones/12/rotation = Quaternion(-0.005897117, 0.0055166623, 0.07266944, 0.9973234)
bones/13/rotation = Quaternion(0.036049426, 0.031416826, -0.69784415, 0.7146517)
bones/14/rotation = Quaternion(0.70801884, -0.037049755, -0.70338225, 0.050892603)
bones/15/rotation = Quaternion(-0.005905506, -0.0055130036, -0.07266689, 0.99732363)
bones/16/rotation = Quaternion(0.036049888, -0.03142004, 0.6978437, 0.71465194)
[node name="AnimationPlayer" parent="publikum/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum" unique_id=132494522 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum" unique_id=132494522 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum" unique_id=2101925215 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum" unique_id=2101925215 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum" unique_id=403179328 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum" unique_id=403179328 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum2" type="Node3D" parent="." unique_id=813507078] [node name="publikum2" type="Node3D" parent="." unique_id=813507078]
transform = Transform3D(-0.91522944, 0, -0.4029331, 0, 1, 0, 0.4029331, 0, -0.91522944, 4.195425, 3.6553268, 13.885913) transform = Transform3D(-0.91522944, 0, -0.4029331, 0, 1, 0, 0.4029331, 0, -0.91522944, 4.195425, 3.6553268, 13.885913)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum2" unique_id=1052467743 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum2" unique_id=1052467743 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum2/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum2" unique_id=1015461330 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum2" unique_id=1015461330 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum2/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum2" unique_id=1089134459 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum2" unique_id=1089134459 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum2/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum2" unique_id=322028795 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum2" unique_id=322028795 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum2/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum2" unique_id=482889095 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum2" unique_id=482889095 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum2/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum2" unique_id=944445851 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum2" unique_id=944445851 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum2/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum4" type="Node3D" parent="." unique_id=68365083] [node name="publikum4" type="Node3D" parent="." unique_id=68365083]
transform = Transform3D(-0.629974, 0, -0.77661633, 0, 1, 0, 0.77661633, 0, -0.629974, 9.842437, 3.6553268, 10.401334) transform = Transform3D(-0.629974, 0, -0.77661633, 0, 1, 0, 0.77661633, 0, -0.629974, 9.842437, 3.6553268, 10.401334)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum4" unique_id=222379180 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum4" unique_id=222379180 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum4/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum4" unique_id=1871765797 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum4" unique_id=1871765797 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum4/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum4" unique_id=10437017 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum4" unique_id=10437017 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum4/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum4" unique_id=901414927 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum4" unique_id=901414927 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum4/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum4" unique_id=2077358822 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum4" unique_id=2077358822 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum4/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum4" unique_id=1131238522 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum4" unique_id=1131238522 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum4/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum5" type="Node3D" parent="." unique_id=1254884314] [node name="publikum5" type="Node3D" parent="." unique_id=1254884314]
transform = Transform3D(-0.39064395, 0, 0.920542, 0, 1, 0, -0.920542, 0, -0.39064395, -14.538336, 3.6553268, 3.9378712) transform = Transform3D(-0.39064395, 0, 0.920542, 0, 1, 0, -0.920542, 0, -0.39064395, -14.538336, 3.6553268, 3.9378712)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum5" unique_id=1914156014 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum5" unique_id=1914156014 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum5/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum5" unique_id=602140062 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum5" unique_id=602140062 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum5/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum5" unique_id=224404749 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum5" unique_id=224404749 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum5/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum5" unique_id=958300982 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum5" unique_id=958300982 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum5/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum5" unique_id=860025476 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum5" unique_id=860025476 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum5/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum5" unique_id=1052988416 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum5" unique_id=1052988416 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum5/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum6" type="Node3D" parent="." unique_id=709827517] [node name="publikum6" type="Node3D" parent="." unique_id=709827517]
transform = Transform3D(-0.7681126, 0, 0.64031476, 0, 1, 0, -0.64031476, 0, -0.7681126, -11.103292, 3.6553288, 9.335619) transform = Transform3D(-0.7681126, 0, 0.64031476, 0, 1, 0, -0.64031476, 0, -0.7681126, -11.103292, 3.6553288, 9.335619)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum6" unique_id=1007939702 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum6" unique_id=1007939702 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum6/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum6" unique_id=860884329 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum6" unique_id=860884329 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum6/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum6" unique_id=1928974579 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum6" unique_id=1928974579 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum6/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum6" unique_id=547889733 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum6" unique_id=547889733 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum6/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum6" unique_id=1501877017 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum6" unique_id=1501877017 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum6/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum6" unique_id=1951764566 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum6" unique_id=1951764566 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum6/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum7" type="Node3D" parent="." unique_id=1483978907] [node name="publikum7" type="Node3D" parent="." unique_id=1483978907]
transform = Transform3D(0.55061686, 0, -0.8347584, 0, 1, 0, 0.8347584, 0, 0.55061686, 13.163043, 3.4379854, -5.268345) transform = Transform3D(0.55061686, 0, -0.8347584, 0, 1, 0, 0.8347584, 0, 0.55061686, 13.163043, 3.4379854, -5.268345)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum7" unique_id=788603784 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum7" unique_id=788603784 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum7/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum7" unique_id=1537286096 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum7" unique_id=1537286096 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum7/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum7" unique_id=1957279061 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum7" unique_id=1957279061 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum7/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum7" unique_id=1379894897 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum7" unique_id=1379894897 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum7/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum7" unique_id=1920281402 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum7" unique_id=1920281402 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum7/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum7" unique_id=811906038 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum7" unique_id=811906038 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum7/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum8" type="Node3D" parent="." unique_id=1073953916] [node name="publikum8" type="Node3D" parent="." unique_id=1073953916]
transform = Transform3D(0.85247177, 0, -0.5227735, 0, 1, 0, 0.5227735, 0, 0.85247177, 11.217102, 4.568224, -10.151715) transform = Transform3D(0.85247177, 0, -0.5227735, 0, 1, 0, 0.5227735, 0, 0.85247177, 11.217102, 4.568224, -10.151715)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum8" unique_id=641607406 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum8" unique_id=641607406 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum8/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum8" unique_id=740439664 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum8" unique_id=740439664 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum8/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum8" unique_id=1896496635 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum8" unique_id=1896496635 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum8/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum8" unique_id=1787601370 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum8" unique_id=1787601370 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum8/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum8" unique_id=1153730967 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum8" unique_id=1153730967 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum8/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum8" unique_id=1023874478 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum8" unique_id=1023874478 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum8/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum3" type="Node3D" parent="." unique_id=71842083] [node name="publikum3" type="Node3D" parent="." unique_id=71842083]
transform = Transform3D(0.8698311, 0, 0.49334967, 0, 1, 0, -0.49334967, 0, 0.8698311, -4.8910522, 4.627474, -14.224113) transform = Transform3D(0.8698311, 0, 0.49334967, 0, 1, 0, -0.49334967, 0, 0.8698311, -4.8910522, 4.627474, -14.224113)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum3" unique_id=1585155222 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum3" unique_id=1585155222 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum3/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum3" unique_id=1301960990 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum3" unique_id=1301960990 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum3/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum3" unique_id=1481094020 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum3" unique_id=1481094020 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum3/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum3" unique_id=1958614289 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum3" unique_id=1958614289 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum3/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum3" unique_id=318927325 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum3" unique_id=318927325 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum3/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum3" unique_id=492002897 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum3" unique_id=492002897 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum3/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum9" type="Node3D" parent="." unique_id=1844757155] [node name="publikum9" type="Node3D" parent="." unique_id=1844757155]
transform = Transform3D(0.9760592, 0, 0.21750516, 0, 1, 0, -0.21750516, 0, 0.9760592, -2.1318102, 3.6553268, -13.557504) transform = Transform3D(0.9760592, 0, 0.21750516, 0, 1, 0, -0.21750516, 0, 0.9760592, -2.1318102, 3.6553268, -13.557504)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum9" unique_id=896469763 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum9" unique_id=896469763 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum9/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum9" unique_id=1412552760 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum9" unique_id=1412552760 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum9/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum9" unique_id=59611810 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum9" unique_id=59611810 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum9/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum9" unique_id=1161683450 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum9" unique_id=1161683450 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum9/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum9" unique_id=1706050589 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum9" unique_id=1706050589 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum9/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum9" unique_id=1929239115 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum9" unique_id=1929239115 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum9/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum11" type="Node3D" parent="." unique_id=727404993] [node name="publikum11" type="Node3D" parent="." unique_id=727404993]
transform = Transform3D(-0.95107377, 0, -0.30896416, 0, 1, 0, 0.30896416, 0, -0.95107377, 2.4321594, 3.6553268, 14.119543) transform = Transform3D(-0.95107377, 0, -0.30896416, 0, 1, 0, 0.30896416, 0, -0.95107377, 2.4321594, 3.6553268, 14.119543)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum11" unique_id=36716174 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum11" unique_id=36716174 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum11/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum11" unique_id=2117684869 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum11" unique_id=2117684869 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum11/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum11" unique_id=684167492 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum11" unique_id=684167492 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum11/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum11" unique_id=678520535 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum11" unique_id=678520535 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum11/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum11" unique_id=1746700688 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum11" unique_id=1746700688 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum11/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum11" unique_id=462492236 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum11" unique_id=462492236 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum11/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum13" type="Node3D" parent="." unique_id=1816403209] [node name="publikum13" type="Node3D" parent="." unique_id=1816403209]
transform = Transform3D(-0.2962035, 0, 0.95512486, 0, 1, 0, -0.95512486, 0, -0.2962035, -14.037817, 3.6553268, 2.0647745) transform = Transform3D(-0.2962035, 0, 0.95512486, 0, 1, 0, -0.95512486, 0, -0.2962035, -14.037817, 3.6553268, 2.0647745)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum13" unique_id=1252057421 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum13" unique_id=1252057421 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum13/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum13" unique_id=1096867731 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum13" unique_id=1096867731 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.1134007, 0, 0.6326933) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.1134007, 0, 0.6326933)
[node name="AnimationPlayer" parent="publikum13/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum13" unique_id=1130631283 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum13" unique_id=1130631283 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum13/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum13" unique_id=2008334523 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum13" unique_id=2008334523 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum13/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum13" unique_id=1185367656 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum13" unique_id=1185367656 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum13/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum13" unique_id=649140591 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum13" unique_id=649140591 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="AnimationPlayer" parent="publikum13/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="publikum15" type="Node3D" parent="." unique_id=926602558] [node name="publikum15" type="Node3D" parent="." unique_id=926602558]
transform = Transform3D(0.43092924, 0, -0.90238583, 0, 1, 0, 0.90238583, 0, 0.43092924, 14.766085, 4.568224, -2.378694) transform = Transform3D(0.43092924, 0, -0.90238583, 0, 1, 0, 0.90238583, 0, 0.43092924, 14.766085, 4.568224, -2.378694)
script = ExtResource("9_pubctrl")
[node name="mees_plaksutab" parent="publikum15" unique_id=2043094085 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab" parent="publikum15" unique_id=2043094085 instance=ExtResource("5_m7jmp")]
[node name="AnimationPlayer" parent="publikum15/mees_plaksutab" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab2" parent="publikum15" unique_id=1927429095 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab2" parent="publikum15" unique_id=1927429095 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.8139224, 0, -0.33299255)
[node name="AnimationPlayer" parent="publikum15/mees_plaksutab2" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab3" parent="publikum15" unique_id=1660696957 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab3" parent="publikum15" unique_id=1660696957 instance=ExtResource("5_m7jmp")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.5662975, 0, 0.3316717)
[node name="AnimationPlayer" parent="publikum15/mees_plaksutab3" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab4" parent="publikum15" unique_id=1684596154 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab4" parent="publikum15" unique_id=1684596154 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -8.003071, 0, 1.5986013)
[node name="AnimationPlayer" parent="publikum15/mees_plaksutab4" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab5" parent="publikum15" unique_id=1401913487 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab5" parent="publikum15" unique_id=1401913487 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595) transform = Transform3D(0.89589787, 0, 0.44426048, 0, 1, 0, -0.44426048, 0, 0.89589787, -7.1850557, 0.8316374, 0.36604595)
[node name="AnimationPlayer" parent="publikum15/mees_plaksutab5" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="mees_plaksutab6" parent="publikum15" unique_id=1893327164 instance=ExtResource("5_m7jmp")] [node name="mees_plaksutab6" parent="publikum15" unique_id=1893327164 instance=ExtResource("5_m7jmp")]
transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679) transform = Transform3D(0.97025216, 0, 0.24209678, 0, 1, 0, -0.24209678, 0, 0.97025216, -4.039103, 0.8316374, -0.8892679)
[node name="Skeleton3D" parent="publikum15/mees_plaksutab6/Armature" parent_id_path=PackedInt32Array(1893327164, 1318143576) index="0" unique_id=442686347]
bones/1/rotation = Quaternion(-0.10298401, 0, 0, 0.994683)
bones/3/rotation = Quaternion(7.604868e-08, 1.5964908e-07, -0.7448834, 0.66719466)
bones/4/rotation = Quaternion(7.604868e-08, -1.5964908e-07, 0.7448834, 0.66719466)
bones/5/position = Vector3(0.46006465, 0.43647012, 1.2648242e-07)
bones/5/rotation = Quaternion(6.7269e-08, 5.5318736e-08, -0.78074276, 0.6248526)
bones/6/rotation = Quaternion(3.2569765e-09, 2.2182128e-07, -0.0056677586, 0.999984)
bones/7/rotation = Quaternion(2.516006e-08, -1.2671407e-07, -0.058700815, 0.99827564)
bones/8/position = Vector3(-0.46006465, 0.43647012, 1.2648242e-07)
bones/8/rotation = Quaternion(6.7269e-08, -5.5318736e-08, 0.78074276, 0.6248526)
bones/9/rotation = Quaternion(3.2569765e-09, -2.2182128e-07, 0.0056677586, 0.999984)
bones/10/rotation = Quaternion(2.516006e-08, 1.2671407e-07, 0.058700815, 0.99827564)
bones/11/rotation = Quaternion(0.708021, 0.037048426, 0.70338005, 0.050894286)
bones/11/scale = Vector3(1.0000018, 1.0000004, 1.0000626)
bones/12/rotation = Quaternion(-0.005897117, 0.0055166623, 0.07266944, 0.9973234)
bones/13/rotation = Quaternion(0.036049426, 0.031416826, -0.69784415, 0.7146517)
bones/14/rotation = Quaternion(0.70801884, -0.037049755, -0.70338225, 0.050892603)
bones/15/rotation = Quaternion(-0.005905506, -0.0055130036, -0.07266689, 0.99732363)
bones/16/rotation = Quaternion(0.036049888, -0.03142004, 0.6978437, 0.71465194)
[node name="AnimationPlayer" parent="publikum15/mees_plaksutab6" index="1" unique_id=531770777]
script = ExtResource("6_y2354")
[node name="ANIM_publik_mees" parent="." unique_id=413106028 instance=ExtResource("7_xlvrw")] [node name="ANIM_publik_mees" parent="." unique_id=413106028 instance=ExtResource("7_xlvrw")]
transform = Transform3D(-0.9976194, 0, 0.0689602, 0, 1, 0, -0.0689602, 0, -0.9976194, -2.9310942, 4.1751385, 14.861324) transform = Transform3D(-0.9976194, 0, 0.0689602, 0, 1, 0, -0.0689602, 0, -0.9976194, -2.9310942, 4.1751385, 14.861324)
[node name="Skeleton3D" parent="ANIM_publik_mees/Armature" parent_id_path=PackedInt32Array(413106028, 1136394170) index="0" unique_id=1839101693]
bones/0/position = Vector3(0, 0.6373217, 0)
bones/1/rotation = Quaternion(0.05165638, 0, 0, 0.9986649)
bones/2/rotation = Quaternion(0.0467884, -0.007151068, -0.0023395747, 0.9988765)
bones/3/rotation = Quaternion(-0.0168481, 0.13404384, -0.2485799, 0.9591436)
bones/4/rotation = Quaternion(-0.0860416, 0.017696053, 0.5403073, 0.8368702)
bones/5/position = Vector3(0.38391373, 0.6666955, 0.040625155)
bones/5/rotation = Quaternion(0.2632044, 0.019492915, -0.037973158, 0.96379536)
bones/6/rotation = Quaternion(-0.109360956, -0.011976268, 0.07206647, 0.9913139)
bones/7/rotation = Quaternion(-0.019670848, -0.019123819, 0.03803797, 0.9988997)
bones/8/position = Vector3(-0.4359017, 0.5307818, 0.08790784)
bones/8/rotation = Quaternion(0.20758, 0.010464023, 0.32930654, 0.9210637)
bones/9/rotation = Quaternion(-0.27831092, -0.27721447, -0.51944846, 0.7588601)
bones/10/rotation = Quaternion(0.04120763, 0.061236493, 0.4645908, 0.8824441)
bones/11/rotation = Quaternion(0.6924937, 0.16049999, 0.6852941, 0.15831752)
bones/11/scale = Vector3(1.0000014, 1.0000005, 1.0000628)
bones/12/rotation = Quaternion(-0.036127698, 0.0049481466, 0.44519103, 0.89469284)
bones/13/rotation = Quaternion(0.05766885, 0.03606452, -0.8380579, 0.541325)
bones/14/rotation = Quaternion(0.6924919, -0.16051489, -0.6852961, 0.15830123)
bones/15/rotation = Quaternion(-0.036179353, -0.004945656, -0.44518653, 0.8946931)
bones/16/rotation = Quaternion(0.057686523, -0.03608453, 0.8380555, 0.54132533)
[node name="AnimationPlayer" parent="ANIM_publik_mees" index="1" unique_id=392530549]
script = ExtResource("8_73fnb") script = ExtResource("8_73fnb")
[editable path="publikum/mees_plaksutab"] [editable path="publikum/mees_plaksutab"]
[editable path="publikum/mees_plaksutab2"] [editable path="publikum/mees_plaksutab2"]
[editable path="publikum/mees_plaksutab3"] [editable path="publikum/mees_plaksutab3"]
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dhcr48rm0wy3o"
path="res://.godot/imported/bull_huff.ogg-6df51b9bb7b90a2b004ecf393f681865.oggvorbisstr"
[deps]
source_file="res://sounds/bull_huff.ogg"
dest_files=["res://.godot/imported/bull_huff.ogg-6df51b9bb7b90a2b004ecf393f681865.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://don2b32xiq60j"
path="res://.godot/imported/crowd_ambient.ogg-27288d402877e4b55c8baec23d7ee8a3.oggvorbisstr"
[deps]
source_file="res://sounds/crowd_ambient.ogg"
dest_files=["res://.godot/imported/crowd_ambient.ogg-27288d402877e4b55c8baec23d7ee8a3.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
Binary file not shown.
BIN
View File
Binary file not shown.
+19
View File
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://3ocnywvipl1x"
path="res://.godot/imported/ole.ogg-354fe92955fd8cdee52db7c574f0b653.oggvorbisstr"
[deps]
source_file="res://sounds/ole.ogg"
dest_files=["res://.godot/imported/ole.ogg-354fe92955fd8cdee52db7c574f0b653.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4